Bryan: PDF needs to happen automatically, not be a manual export --
not everyone can open the HTML comfortably. This was designed back in
CW-027's Delivery Architecture discussion but never actually built into
this skill; step 7 only produced HTML.
Fixed: step 7 now generates the PDF immediately after the HTML, via
Playwright + headless Chromium (confirmed available at /opt/pw-browsers),
using page.emulate_media('print') so the PDF gets exactly the same print
CSS this skill already ships -- no separate print logic to maintain, no
relying on someone hitting Ctrl+P themselves.
Verified end-to-end before writing this into the spec: patched a real
brief with the current print CSS, rendered to PDF, confirmed correct
Letter pagination (5 pages, no blank-page artifacts) and correct
rendering of the modern CSS (color-mix, gradients, custom properties)
that simpler non-browser PDF converters often get wrong.
Step 8 (archive) updated: both HTML and PDF save to Meeting Briefs/
every time, not PDF-on-request.
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.
Bryan's correction: transcript source shouldn't be Plaud-specific. Google
Meet, Teams, or no transcript at all (fall back to notes/task registry)
are all real cases. Reworked Prerequisites and steps 3-5 so the skill asks
which source applies instead of defaulting to Plaud and treating an empty
result as 'no record exists.' Plaud-specific mechanics (official connector,
id resolution via list_files, of_ prefix, pagination) kept as documented
detail for when Plaud is the actual source, not as the only path.
Root cause found: the web app's recording URL slug is missing the 'of_'
prefix the API's real file_id requires — direct lookup by URL id always
404'd regardless of which connector or account. Fixed by resolving the id
via list_files(query=...) instead. Also: stop using the deprecated
'Plaud MCP' connector entirely, use the official 'Plaud' connector only.
Verified live: pulled the 09-16 meeting transcript for real via the
official connector, content matches the manually-uploaded transcript used
to build the first brief. Recap mode's live data path is now confirmed
working end-to-end, not just designed.
Real-tested 2026-09-21 against the APTA 2026 booth 09-16 planning meeting
(recap mode). Includes:
- skills/internal-meeting-brief/SKILL.md — full workflow: topic resolution,
continuity manifest, agenda/recap branching, attendee capture/normalization,
scoped data pulls, synthesis, render, archive.
- assets/brief-components.css — canonical shared component library (cards,
flow, layerbox/filepill, unitgrid, quad, compare, specbar, actions+status
pills, note callouts x4 tones, colvis/ring), MPM tokens from CW-028,
required light/dark toggle, print rules.
- references/section-structure.md — fixed-vs-dynamic section contract,
explicitly marked unproven beyond one real run.
Known limitation: Plaud MCP connector is currently non-functional (local
server via Claude Desktop, times out). Brief was built from a manually
uploaded transcript, not a live pull.
Five more skills planned, not started: vendor-partner-brief,
status-update-brief, five-whys-brief, kickoff-brief, development-brief.
Full design history in CW-027's Concept.md (Drive).