2209a19eb7
First test run (Oshkosh GO Transit internal kickoff, via the actual
installed skill, not Claude manually walking the SKILL.md) surfaced real,
fixable gaps. All fixed here:
1. Print CSS bug (root cause, found by Bryan): section{break-inside:
avoid-page} plus whole-table break-inside:avoid caused a 14-page,
mostly-blank PDF. Fixed: sections can split across pages now; only
cards/table-rows avoid splitting, with repeating table headers.
2. SO/PO lookup was wrongly scoped out of this brief type by default.
Wrong -- an internal kickoff about a real sale needs the SO/PO as much
as any external brief would. Scope is now by topic nature (commercial
vs. purely internal), not by brief-type name.
3. Contact-info lookup (not just name resolution) is now an explicit
standing step in attendee capture, starting from a linked SO/PO's own
Odoo contacts when one exists.
4. Added the MPM Technical Reference System (a 131-file Drive registry:
brand, platform, display tech, products, engineering, concepts, proof)
as a standing reference for part-number/product verification --
previously unknown to this skill.
5. Pulled the real run's improved _topic-state.md schema back into the
spec: confidence tags (verified/stated/open), a folder-layout header,
numbered-vs-proposed open items, a Findings/flags section. These
emerged from real use and are now documented, not one-off.
6. Meeting transcript archival (a Meeting Transcripts/ subfolder) is now
a standing step, not something that has to be asked for.
7. section-structure.md: flow and specbar are now marked validated (real
examples: Oshkosh deployment sequence, billing milestones). Added the
meeting-vs-proposed open-items badge pattern and a standard
confidentiality footer note for this brief type.
None of this was a failure of judgment in the moment -- these are gaps
between what the file said and what real use needed, now closed.
74 lines
5.2 KiB
Markdown
74 lines
5.2 KiB
Markdown
# internal-meeting-brief — section structure
|
|
|
|
Derived from the first real run (2026-09-21, APTA 2026 Booth 09-16 recap) and made
|
|
explicit here so every future brief has the same skeleton instead of reinventing its
|
|
structure per meeting. This is the contract — read it before generating a brief.
|
|
|
|
## Always present (fixed, in this order)
|
|
|
|
1. **Header** — title (meeting subject, not the raw Plaud filename), meeting date +
|
|
duration, prepared date, source (transcript / manual notes), mode (Agenda/Recap).
|
|
Also attach relevant deal-identifying context in the header/subhead when the topic
|
|
is a commercial engagement — e.g. the SO/PO numbers and total, as validated in the
|
|
Oshkosh brief — so the document is self-identifying without opening the manifest.
|
|
2. **Attendees** — one card per attendee. Internal MPM people resolved by name where
|
|
possible. If Plaud's speaker diarization didn't resolve a name, render the literal
|
|
transcript label ("Speaker 1," "Speaker 3") — never guess a name. Follow with a
|
|
`note.info` flagging any unresolved speakers explicitly, so it's visible, not buried.
|
|
When external counterparts are named in discussion but weren't present, give them
|
|
their own card group ("Named in discussion, not present") with resolved contact
|
|
info (see SKILL.md step 4) rather than omitting them or burying them in prose.
|
|
3. **Topics Covered** — a `cards` grid, one card per distinct subject actually
|
|
discussed. Card count and grid density (c2/c3/c4) follow the number of real topics —
|
|
don't pad to hit a round number, don't force unrelated topics into one card to save
|
|
space.
|
|
4. **Key Decisions** (recap) or **Discussion Plan** (agenda) — decisions actually made
|
|
(recap) or points to be raised (agenda). Use `quad` when there are 3-5 distinct,
|
|
roughly parallel decisions; use plain prose or a `note` when there's only one or two,
|
|
since forcing a single decision into a quad grid wastes space and implies false
|
|
parallelism.
|
|
5. **Open Items** — an `actions` table with status pills. Every action item needs an
|
|
owner field even if the honest value is "Unassigned" — never leave the column blank,
|
|
since a blank reads as "forgotten to track" rather than "no owner yet." **When the
|
|
brief includes action items Claude is suggesting rather than items the meeting
|
|
itself raised** (validated pattern from the Oshkosh brief), split them into two
|
|
visually distinct tables with a labeled subhead and a badge (e.g. `MEETING` vs.
|
|
`PROPOSED`), and say explicitly that proposed items are suggestions needing an
|
|
owner to accept them — never blend a suggestion into the same table as a committed
|
|
action item where they'd read as equally real.
|
|
6. **Notes & Flags** — one `note` per genuinely separate concern: data-source
|
|
limitations encountered (a failed pull, a missing transcript), naming/identity
|
|
uncertainty, anything that needed a judgment call worth surfacing rather than
|
|
silently resolving. This section exists specifically so the never-fabricate rule has
|
|
somewhere to put its flags, visibly, not as a footnote.
|
|
|
|
## Present only when content genuinely calls for it (dynamic)
|
|
|
|
A dynamic section is content that has a **specific internal structure** the fixed
|
|
sections above would flatten into an unreadable wall of text or an over-long table row.
|
|
Add one only when the meeting's actual content has this shape — never as decoration,
|
|
never because a template "should" have variety.
|
|
|
|
| If sequential, ordered process (3+ steps, each depending on the last) | `flow` | Anti-vandalism 3-tier escalation (09-16 meeting); Oshkosh deployment sequence, client kickoff → survey → mount → install → go-live → acceptance (09-22 meeting) — **validated in real production use** |
|
|
| A named component/system with distinct sub-parts worth breaking out | `layerbox` + `filepill` | (not yet exercised on a real internal-meeting-brief; seen in development-brief-flavored source material) |
|
|
| A genuine two-sided contrast (us/them, before/after, keep/avoid) | `compare` | (not yet exercised on internal-meeting-brief; used in vendor-partner-style source material) |
|
|
| A spec/BOM-style matrix with yes/no or multi-column comparison | `unitgrid` | (not yet exercised) |
|
|
| A handful of headline numbers worth calling out at a glance | `specbar` | Oshkosh billing milestones — three estimate amounts + total, each with its own trigger condition — **validated in real production use** |
|
|
|
|
**Rule of thumb:** if you're reaching for a dynamic section and can't point to the
|
|
specific part of the meeting that has this shape, don't add it. The fixed six sections
|
|
above should carry ordinary meeting content on their own. Dynamic sections are earned
|
|
by unusual content structure, not added for visual variety.
|
|
|
|
## What's still unproven
|
|
|
|
This contract is based on exactly one real run. It hasn't been tested against:
|
|
- Agenda mode (only recap mode has run for real)
|
|
- A meeting with genuinely no clear "topics" (a single-subject deep-dive)
|
|
- A meeting needing more than one dynamic section
|
|
- A recurring topic's second brief (pre-fill/delta-confirm behavior for attendees,
|
|
per CW-027 Concept.md, hasn't been exercised — the 09-16 brief was a topic's first
|
|
run, full interview by necessity)
|
|
|
|
Revise this file after the second real run rather than treating it as settled.
|