Meeting Prep
Version 1.0.0 (2026-09-20): first release — the content contract
for meeting preparation (requirements R1–R12), the 64-factor
inventory, six structure variants, reader profiles, the debrief half,
and a mechanical prep linter (scripts/prep_lint.py).
An agent preparing a principal for a meeting is not a summarizer. It
is the principal's chief of staff for one room: it figures out what
the room needs, what the principal wants, what could go wrong, and
puts exactly that on one scannable page. The content contract lives
in references/requirements.md — R1–R12
are normative. This file is the operating protocol.
1. Configuration contract
All person-specific state lives outside the skill, in private paths
the skill reads at load time:
~/.synthesis/meeting-prep/principal.json # role, goals, authority, tells
~/.synthesis/meeting-prep/readers/<id>.md # per-person reader profiles (R12)
principal.json holds what the skill must know about the principal:
current role and org, professional and personal goals, what they can
commit in a room, their known positions, and their tells under
pressure. Reader profiles hold relationship, technical depth, what
the person cares about, what they have already been told, and what
landed last time. Both are scaffolded by scripts/prep_init.py
(init once, add-reader per regular) and finished by interview
the first time the skill runs for a principal — never copied from
another machine's private files. Missing config degrades gracefully:
the skill asks the three questions it cannot proceed without (who is
the reader to you, how technical, what is the meeting's job) and
drafts anyway.
2. The prep loop
For every meeting, in order:
- Gather. Pull the knowledge factors (inventory §4): workspace
OKF base, prior transcripts with these participants, comms since,
tickets/commits/deliverables, docs and decks, reader profiles,
2–3 samples of the principal's own writing to a comparable
reader (R13 — required; if none exists, say so in the pack),
external research for new faces, and re-verified numbers.
Record the basis (R10) as you go — source, date, what it
contributed.
- Model. Write the audience model first (R2): each key
participant's relationship, technical depth, and cares; the power
map; the disclosure boundary. Then weigh the factor inventory and
name the drivers (§6, factor 63) — the 3–5 factors that set this
pack's shape. If a factor is unknown and material, say so; never
fill a material gap with a guess presented as fact (factor 62).
- Size. Duration, format, prep budget, and energy set the length
(factors 4, 31, 32, 57). State the sizing in one line on the pack.
- Draft. Pick the structure variant
(structures.md), drop inapplicable
sections, and write to R1–R9: discuss-forward, dense, translated
accomplishments, strategic altitude, specific credit, grounded
register, scannable, positive framing. Mark confidence inline —
fact, inference, guess.
- Lint. Run
scripts/prep_lint.py on the draft. It checks the
mechanical half of the contract: footer placement, register leaks
(ticket numbers and infrastructure terms for non-technical
readers), empty-sentence patterns, name-drop openers, unverified
numbers, missing basis. Fix every finding or record why it is
wrong — the linter is a backstop, not the author.
- Deliver. The pack plus its capture half, filed where the
principal's workflow expects it (workspace
meeting-preps/ by
default, <date>-<slug>-prep.md), and the two-line drivers note
in chat. Never deliver brackets for the principal to fill in —
assembled packages, not assembly kits.
3. The debrief loop
After the meeting, when a transcript or notes exist:
- Verify the record. Transcript-primary: the verbatim record is
the only source for attribution-bearing claims. Never derive who
said or decided what from a summary.
- Extract. Decisions (verbatim where it matters), commitments
with owner and date — no ownerless commits — quotes worth keeping,
and the prep-vs-reality gap: what the prep missed or mis-weighted.
- Draft the follow-ups. Assembled, in the principal's register,
ready to send — not a list of "follow up on X."
- Update the profiles. Fold the gap into the reader profiles:
what landed, what didn't, what they were told. This is how prep
compounds.
- Capture durable facts. Anything that belongs in the workspace
knowledge base goes there now, with provenance — not "later."
4. Integration seams
- Daily rituals (
synthesis-daily-rituals lead-time prep packs)
own the scheduling machinery — which meetings need packs by when.
This skill is the content contract that machinery drafts against.
- Meeting transcripts (
synthesis-meeting-transcripts) own
transcript fetch, naming, and the transcript-primary rule the
debrief depends on.
- OKF (
synthesis-okf) is the workspace knowledge interface
for factor 37.
- Console renders packs filed under
meeting-preps/; the basis
statement is what makes them trustworthy there.
5. What the skill refuses
- Prep for a reader it has not modeled — no model, no draft.
- Numbers it has not re-verified — stale figures kill credibility.
- Guesses presented as facts — mark confidence or cut the line.
- Prep that contradicts the principal's recorded positions.
- Anything that crosses the disclosure boundary for the room's
least-trusted attendee.
1---2name: synthesis-meeting-prep3description: Prepare a principal for any meeting the way a wise chief of staff would: weigh 60+ factors across the meeting, participants, principal's position, knowledge, and risk; model the readers before drafting; deliver a dense, scannable pack with a capture half; then debrief the transcript into decisions, commitments, and reader-profile updates. Use for 1:1s, reviews, forums, external meetings, interviews, and post-meeting follow-through.4license: CC0-1.05---67# Meeting Prep89**Version 1.0.0** (2026-09-20): first release — the content contract10for meeting preparation (requirements R1–R12), the 64-factor11inventory, six structure variants, reader profiles, the debrief half,12and a mechanical prep linter (`scripts/prep_lint.py`).1314An agent preparing a principal for a meeting is not a summarizer. It15is the principal's chief of staff for one room: it figures out what16the room needs, what the principal wants, what could go wrong, and17puts exactly that on one scannable page. The content contract lives18in [references/requirements.md](references/requirements.md) — R1–R1219are normative. This file is the operating protocol.2021## 1. Configuration contract2223All person-specific state lives outside the skill, in private paths24the skill reads at load time:2526```27~/.synthesis/meeting-prep/principal.json # role, goals, authority, tells28~/.synthesis/meeting-prep/readers/<id>.md # per-person reader profiles (R12)29```3031`principal.json` holds what the skill must know about the principal:32current role and org, professional and personal goals, what they can33commit in a room, their known positions, and their tells under34pressure. Reader profiles hold relationship, technical depth, what35the person cares about, what they have already been told, and what36landed last time. Both are scaffolded by `scripts/prep_init.py`37(`init` once, `add-reader` per regular) and finished by interview38the first time the skill runs for a principal — never copied from39another machine's private files. Missing config degrades gracefully:40the skill asks the three questions it cannot proceed without (who is41the reader to you, how technical, what is the meeting's job) and42drafts anyway.4344## 2. The prep loop4546For every meeting, in order:47481. **Gather.** Pull the knowledge factors (inventory §4): workspace49 OKF base, prior transcripts with these participants, comms since,50 tickets/commits/deliverables, docs and decks, reader profiles,51 2–3 samples of the principal's own writing to a comparable52 reader (R13 — required; if none exists, say so in the pack),53 external research for new faces, and re-verified numbers.54 Record the basis (R10) as you go — source, date, what it55 contributed.562. **Model.** Write the audience model first (R2): each key57 participant's relationship, technical depth, and cares; the power58 map; the disclosure boundary. Then weigh the factor inventory and59 name the drivers (§6, factor 63) — the 3–5 factors that set this60 pack's shape. If a factor is unknown and material, say so; never61 fill a material gap with a guess presented as fact (factor 62).623. **Size.** Duration, format, prep budget, and energy set the length63 (factors 4, 31, 32, 57). State the sizing in one line on the pack.644. **Draft.** Pick the structure variant65 ([structures.md](references/structures.md)), drop inapplicable66 sections, and write to R1–R9: discuss-forward, dense, translated67 accomplishments, strategic altitude, specific credit, grounded68 register, scannable, positive framing. Mark confidence inline —69 fact, inference, guess.705. **Lint.** Run `scripts/prep_lint.py` on the draft. It checks the71 mechanical half of the contract: footer placement, register leaks72 (ticket numbers and infrastructure terms for non-technical73 readers), empty-sentence patterns, name-drop openers, unverified74 numbers, missing basis. Fix every finding or record why it is75 wrong — the linter is a backstop, not the author.766. **Deliver.** The pack plus its capture half, filed where the77 principal's workflow expects it (workspace `meeting-preps/` by78 default, `<date>-<slug>-prep.md`), and the two-line drivers note79 in chat. Never deliver brackets for the principal to fill in —80 assembled packages, not assembly kits.8182## 3. The debrief loop8384After the meeting, when a transcript or notes exist:85861. **Verify the record.** Transcript-primary: the verbatim record is87 the only source for attribution-bearing claims. Never derive who88 said or decided what from a summary.892. **Extract.** Decisions (verbatim where it matters), commitments90 with owner and date — no ownerless commits — quotes worth keeping,91 and the prep-vs-reality gap: what the prep missed or mis-weighted.923. **Draft the follow-ups.** Assembled, in the principal's register,93 ready to send — not a list of "follow up on X."944. **Update the profiles.** Fold the gap into the reader profiles:95 what landed, what didn't, what they were told. This is how prep96 compounds.975. **Capture durable facts.** Anything that belongs in the workspace98 knowledge base goes there now, with provenance — not "later."99100## 4. Integration seams101102- **Daily rituals** (`synthesis-daily-rituals` lead-time prep packs)103 own the scheduling machinery — which meetings need packs by when.104 This skill is the content contract that machinery drafts against.105- **Meeting transcripts** (`synthesis-meeting-transcripts`) own106 transcript fetch, naming, and the transcript-primary rule the107 debrief depends on.108- **OKF** (`synthesis-okf`) is the workspace knowledge interface109 for factor 37.110- **Console** renders packs filed under `meeting-preps/`; the basis111 statement is what makes them trustworthy there.112113## 5. What the skill refuses114115- Prep for a reader it has not modeled — no model, no draft.116- Numbers it has not re-verified — stale figures kill credibility.117- Guesses presented as facts — mark confidence or cut the line.118- Prep that contradicts the principal's recorded positions.119- Anything that crosses the disclosure boundary for the room's120 least-trusted attendee.