Reflects the real-world fixes and new capabilities from the first live
invocation of internal-meeting-brief (Oshkosh GO Transit kickoff): PDF
generation, end-agency enrichment, channel/pricing confidentiality rule,
print-CSS fix, SO/PO scoping correction, contact/part-number lookup,
improved manifest schema, transcript archival, and the Plaud connector
root-cause fix. See README Changelog for the full list.
Bryan, two related requests:
1. When a topic has a real end-client agency, the skill should resolve
its full identity -- not just whatever name got said in the meeting.
Added as a new standing step: check the MPM Technical Reference
System first (agency-roster.md, clients-and-partners.md -- cheap,
already-vetted), fall back to public web research, resolve BOTH the
legal entity name and the separate transit brand name distinctly
(validated pattern, confirmed against MPM's own FTA filings for
Oshkosh: 'City of Oshkosh, Wisconsin, dba: GO Transit'), re-host the
logo as a data URI rather than hotlinking it, and capture general
agency contact info. Gets its own 'End Agency' card, separate from
individual attendees.
2. Pricing shown in the Oshkosh brief was correct for an internal
audience, but Bryan flagged that an external-facing version must
never show the end agency MPM's price to the reseller -- they aren't
privy to it. Documented as a new Hard Rule, grounded directly in the
Technical Reference System's own reseller-channel.md (MPM's contract
of record is with the reseller, not the agency, on channel accounts)
rather than invented from scratch. Doesn't change internal-meeting-
brief's current behavior (it's internal by definition) -- recorded
here as the binding rule for vendor-partner-brief and kickoff-brief's
external-client variant, neither built yet.
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).