Meeting Notes — Transcript-to-Artifact Generator
Purpose
Transforms raw meeting transcripts (pasted text, audio transcription output, or file references) into structured, stakeholder-enriched meeting notes. Not generic summaries — these cross-reference project context, known stakeholders, and existing artifacts to produce notes that integrate into the project's documentation ecosystem.
Process
Step 1: Determine Input Source
From user request:
| Input |
How to Handle |
| Transcript pasted in chat |
Process directly |
| File path provided |
Read the file |
/pmstudio-meeting-notes <path> |
Read file at path |
/pmstudio-meeting-notes <path> <output-dir> |
Read file, write to specified directory |
| No transcript provided |
Ask: "Paste the transcript or provide a file path" |
Step 2: Read Project Context
Always read (skip any that don't exist):
CLAUDE.local.md — critical for:
- Folder structure & routing guide (determines where to save notes)
- Recent Changes (avoid duplicating known information)
- Key Decisions (cross-reference decisions mentioned in transcript)
- Open Questions (check if any were answered in this meeting)
- File naming conventions
Stakeholder Directory — scan for:
**/Stakeholder*.xlsx or **/Stakeholder*.md
**/Data/Stakeholder*
- Known stakeholder names, roles, emails, groups
Recent meeting notes — read the last 1-2 meeting note files to:
- Match format and depth conventions
- Identify follow-ups from previous meetings
- Detect recurring topics
PRD files — scan for **/*PRD*.html or **/*PRD*.md to:
- Know current PRD version
- Identify if meeting content impacts requirements
Step 3: Extract & Enrich
Process the transcript to extract:
3a. Metadata
- Date — from transcript or user context. Use absolute date (YYYY-MM-DD), never relative.
- Attendees — every person mentioned or speaking. Cross-reference against stakeholder directory to enrich with:
- Full name (resolve first-name-only references)
- Title/Role
- Group/Team
- If NOT in directory → flag as "New Stakeholder"
- Duration — estimate from transcript length if not stated (~150 words/minute for conversation)
- Subject — synthesize from discussion topics
3b. Content Extraction
| Element |
What to Capture |
How to Identify |
| Key Discussion Topics |
Major themes discussed, numbered with detail |
Topic shifts, agenda items, extended discussion |
| Decisions Made |
Explicit choices, agreements, approvals |
"We'll go with...", "Let's do...", "Agreed", "Decision:" |
| Action Items |
Tasks assigned with owner and deadline |
"Can you...", "I'll...", "Next step is...", "Action:" |
| Direct Quotes |
Significant statements worth preserving verbatim |
Strategic vision, strong opinions, commitments, memorable framing |
| New Information |
Facts, data points, context not previously documented |
Numbers, dates, names, technical details, process descriptions |
| New Stakeholders |
People mentioned who aren't in the stakeholder directory |
Names with roles/context that suggest ongoing involvement |
| Open Questions |
Questions raised but not answered |
"We need to find out...", "TBD", "I'll check...", unanswered questions |
| Emotional/Political Signals |
Frustrations, enthusiasm, concerns, tensions |
Strong language, repeated emphasis, criticism, praise |
3c. Cross-Reference
- Against CLAUDE.local.md Open Questions: Did this meeting answer any? Mark as "Resolved" with the answer.
- Against CLAUDE.local.md Key Decisions: Did this meeting produce new decisions? Capture with date.
- Against PRD: Does anything discussed change requirements, scope, timeline, or stakeholders?
- Against previous meeting action items: Were any completed or discussed?
Step 4: Generate Meeting Notes
File naming convention: YYYY-MM-DD-Attendee1-Attendee2.md (date-first for chronological sort, key attendee names for identification)
If 3+ attendees, use the most senior or topic-relevant names, not all names.
Output Structure
# Meeting Notes — {Topic / Key Attendees}
**Date:** {YYYY-MM-DD} ({Day of Week})
**Attendees:** {Name1 (Role)}, {Name2 (Role)}, {Name3 (Role)}
**Subject:** {Project} — {Topic Summary}
**Duration:** ~{N} minutes
---
## Summary
{2-3 sentence executive summary: what was the meeting about, what was decided, what's the main takeaway}
---
## {N}. {Topic Title}
{Detailed notes on this topic. Include:
- Context and background discussed
- Key points made by specific people (attribute statements)
- Data points, numbers, dates mentioned
- Sub-sections if the topic has distinct parts}
### {Sub-topic if needed}
- {Detail}
- {Detail}
> **"{Direct quote}"** — {Speaker Name}
{Repeat for each major topic}
---
## Decisions Made
| # | Decision | Made By | Impact | Notes |
|---|----------|---------|--------|-------|
| 1 | {Decision} | {Person} | {What it affects} | {Context} |
---
## New Stakeholders Identified
| Name | Role | Email | Context |
|------|------|-------|---------|
| {Name} | {Role} | {email or TBD} | {How they came up in discussion} |
*Omit this section if no new stakeholders were identified.*
---
## Action Items
| # | Action | Owner | Due | Status |
|---|--------|-------|-----|--------|
| 1 | {Action} | {Name} | {Date or "TBD"} | Pending |
---
## Open Questions
- {Question that wasn't answered — include who raised it and why it matters}
---
## Key Takeaways for Artifacts
{Flag what needs updating in other project documents. Be specific:}
| Artifact | What Needs Updating | Priority |
|----------|-------------------|----------|
| {PRD vX.Y} | {Specific section or requirement} | {High/Med/Low} |
| {Presentation} | {Specific slide or section} | {High/Med/Low} |
| {Architecture Map} | {Specific view or layer} | {High/Med/Low} |
| {Stakeholder Directory} | {New people to add} | {High/Med/Low} |
*Omit this section if no artifact impacts identified.*
---
## Transcript Notes
- {Note about transcript quality: complete/partial, any gaps, audio issues}
- {Which portions of the meeting are covered vs. missing}
Step 5: Route Output File
Use the routing guide from CLAUDE.local.md to determine the correct output directory:
Routing logic:
- If meeting is about ProductB / Tax / {Stakeholder} →
ProductB-Control-Framework/Meeting-Notes/
- If meeting is about ProductA / ComplianceApp / {Stakeholder} / {Stakeholder} →
ProductA-Steady-State/
- If meeting is about platform / cross-cutting →
Platform-Overview/
- If routing guide doesn't exist or doesn't match → ask the user
- If output directory was specified in the command → use that
Before writing: Show the user:
- Proposed file name
- Proposed output location
- Brief summary of what will be in the notes
Then write the file.
Step 6: Propose CLAUDE.local.md Update
After writing the meeting notes, propose a Recent Changes entry for CLAUDE.local.md:
- [YYYY-MM-DD] `{relative-path-to-notes}` — **NEW FILE**: {Meeting type} notes from {date} {attendees} call (~{N} min). {1-2 sentence summary of key topics}. {Count} action items. {Key decision or stakeholder if notable}.
Also propose updates to:
- Key Decisions section — if new decisions were made
- Open Questions section — if questions were answered or new ones raised
Ask: "Should I update CLAUDE.local.md with this entry?"
Step 7: Surface Sync Opportunities
If the meeting produced information that should propagate to other documents, mention it:
"This meeting discussed {topic} which may impact:
- {PRD vX.Y} — {what section}
- {Presentation} — {what slide}
Run
/pmstudio-sync to propagate changes, or I can update specific artifacts now."
Quality Rules
- Attribute statements to speakers. Don't write "it was discussed that..." — write "{Stakeholder} explained that..." or "{Stakeholder} noted that..."
- Preserve significant quotes verbatim. If someone said something strategic, memorable, or committal, quote it exactly with attribution.
- Convert relative dates to absolute. "Next Thursday" → "2026-03-20 (Thursday)". "Last week" → "week of 2026-03-10".
- Don't invent information. If the transcript is unclear or incomplete, say so. Use "[inaudible]" or "[unclear]" markers.
- Don't over-summarize. Meeting notes should be comprehensive enough that someone who wasn't there can understand what happened. Err on the side of more detail, not less.
- Separate facts from interpretation. Use clear language: "{Stakeholder} stated..." (fact) vs. "This suggests..." (interpretation).
- Action items need owners. If an action was discussed but no owner assigned, flag it: "Owner: TBD — needs assignment".
- Match existing format. If prior meeting notes exist in the project, match their depth, style, and section structure for consistency.
- Handle partial transcripts. If the transcript is clearly incomplete (starts mid-conversation, cuts off), note what's missing in the Transcript Notes section.
- Cross-reference, don't duplicate. If a topic was covered extensively in previous meeting notes, reference that file rather than re-explaining: "See 2026-03-13-{Stakeholder1}-{Stakeholder2}.md §3 for full {Audit Firm} tool walkthrough."
Handling Edge Cases
| Scenario |
Approach |
| Multiple meetings in one transcript |
Split into separate files, one per meeting |
| Very short meeting (<10 min) |
Use abbreviated format: Summary + Decisions + Actions only |
| No clear decisions or actions |
Still capture — note "Informational/exploratory call — no decisions or actions" |
| Sensitive/privileged content |
Flag to user: "This transcript contains potentially privileged content (legal, litigation). Confirm before writing to file." |
| Poor transcript quality |
Do your best, mark uncertain sections with [?], note quality issues prominently |
| Attendees not in stakeholder directory |
List them in "New Stakeholders" table with whatever context is available |
| Meeting references documents not yet read |
Note: "{Stakeholder} referenced {document} — not yet reviewed. Action: obtain and review." |
Integration with PM Studio
This skill is part of the PM Studio ecosystem:
| Related Skill |
When to Suggest |
/pmstudio-sync |
Meeting produced changes that should propagate to PRD/deck/architecture |
/pmstudio-changelog |
Meeting produced a significant decision or change worth logging |
/pmstudio-comms |
Meeting requires a follow-up communication (status update, stakeholder notification) |
/pmstudio-prd |
Meeting revealed requirements not yet in the PRD |
/pmstudio-nfr |
After processing several meetings, audit document completeness |
1---2name: pmstudio-meeting-notes3description: Generate structured meeting notes from transcripts or pasted text. Use when someone says "meeting notes", "process this transcript", "summarize this call", "notes from today's meeting", or pastes/references a meeting transcript. Auto-enriches attendees from stakeholder directory, routes output to correct project subfolder, flags downstream artifact impacts (PRD, deck, architecture), and proposes CLAUDE.local.md updates. Produces date-first Markdown files.4---56# Meeting Notes — Transcript-to-Artifact Generator78## Purpose910Transforms raw meeting transcripts (pasted text, audio transcription output, or file references) into structured, stakeholder-enriched meeting notes. Not generic summaries — these cross-reference project context, known stakeholders, and existing artifacts to produce notes that integrate into the project's documentation ecosystem.1112## Process1314### Step 1: Determine Input Source1516From user request:1718| Input | How to Handle |19|-------|---------------|20| Transcript pasted in chat | Process directly |21| File path provided | Read the file |22| `/pmstudio-meeting-notes <path>` | Read file at path |23| `/pmstudio-meeting-notes <path> <output-dir>` | Read file, write to specified directory |24| No transcript provided | Ask: "Paste the transcript or provide a file path" |2526### Step 2: Read Project Context2728**Always read (skip any that don't exist):**29301. **`CLAUDE.local.md`** — critical for:31 - Folder structure & routing guide (determines where to save notes)32 - Recent Changes (avoid duplicating known information)33 - Key Decisions (cross-reference decisions mentioned in transcript)34 - Open Questions (check if any were answered in this meeting)35 - File naming conventions36372. **Stakeholder Directory** — scan for:38 - `**/Stakeholder*.xlsx` or `**/Stakeholder*.md`39 - `**/Data/Stakeholder*`40 - Known stakeholder names, roles, emails, groups41423. **Recent meeting notes** — read the last 1-2 meeting note files to:43 - Match format and depth conventions44 - Identify follow-ups from previous meetings45 - Detect recurring topics46474. **PRD files** — scan for `**/*PRD*.html` or `**/*PRD*.md` to:48 - Know current PRD version49 - Identify if meeting content impacts requirements5051### Step 3: Extract & Enrich5253Process the transcript to extract:5455#### 3a. Metadata56- **Date** — from transcript or user context. Use absolute date (YYYY-MM-DD), never relative.57- **Attendees** — every person mentioned or speaking. Cross-reference against stakeholder directory to enrich with:58 - Full name (resolve first-name-only references)59 - Title/Role60 - Group/Team61 - If NOT in directory → flag as "New Stakeholder"62- **Duration** — estimate from transcript length if not stated (~150 words/minute for conversation)63- **Subject** — synthesize from discussion topics6465#### 3b. Content Extraction6667| Element | What to Capture | How to Identify |68|---------|----------------|-----------------|69| **Key Discussion Topics** | Major themes discussed, numbered with detail | Topic shifts, agenda items, extended discussion |70| **Decisions Made** | Explicit choices, agreements, approvals | "We'll go with...", "Let's do...", "Agreed", "Decision:" |71| **Action Items** | Tasks assigned with owner and deadline | "Can you...", "I'll...", "Next step is...", "Action:" |72| **Direct Quotes** | Significant statements worth preserving verbatim | Strategic vision, strong opinions, commitments, memorable framing |73| **New Information** | Facts, data points, context not previously documented | Numbers, dates, names, technical details, process descriptions |74| **New Stakeholders** | People mentioned who aren't in the stakeholder directory | Names with roles/context that suggest ongoing involvement |75| **Open Questions** | Questions raised but not answered | "We need to find out...", "TBD", "I'll check...", unanswered questions |76| **Emotional/Political Signals** | Frustrations, enthusiasm, concerns, tensions | Strong language, repeated emphasis, criticism, praise |7778#### 3c. Cross-Reference7980- **Against CLAUDE.local.md Open Questions**: Did this meeting answer any? Mark as "Resolved" with the answer.81- **Against CLAUDE.local.md Key Decisions**: Did this meeting produce new decisions? Capture with date.82- **Against PRD**: Does anything discussed change requirements, scope, timeline, or stakeholders?83- **Against previous meeting action items**: Were any completed or discussed?8485### Step 4: Generate Meeting Notes8687**File naming convention:** `YYYY-MM-DD-Attendee1-Attendee2.md` (date-first for chronological sort, key attendee names for identification)8889**If 3+ attendees**, use the most senior or topic-relevant names, not all names.9091#### Output Structure9293```markdown94# Meeting Notes — {Topic / Key Attendees}9596**Date:** {YYYY-MM-DD} ({Day of Week})97**Attendees:** {Name1 (Role)}, {Name2 (Role)}, {Name3 (Role)}98**Subject:** {Project} — {Topic Summary}99**Duration:** ~{N} minutes100101---102103## Summary104105{2-3 sentence executive summary: what was the meeting about, what was decided, what's the main takeaway}106107---108109## {N}. {Topic Title}110111{Detailed notes on this topic. Include:112- Context and background discussed113- Key points made by specific people (attribute statements)114- Data points, numbers, dates mentioned115- Sub-sections if the topic has distinct parts}116117### {Sub-topic if needed}118- {Detail}119- {Detail}120121> **"{Direct quote}"** — {Speaker Name}122123{Repeat for each major topic}124125---126127## Decisions Made128129| # | Decision | Made By | Impact | Notes |130|---|----------|---------|--------|-------|131| 1 | {Decision} | {Person} | {What it affects} | {Context} |132133---134135## New Stakeholders Identified136137| Name | Role | Email | Context |138|------|------|-------|---------|139| {Name} | {Role} | {email or TBD} | {How they came up in discussion} |140141*Omit this section if no new stakeholders were identified.*142143---144145## Action Items146147| # | Action | Owner | Due | Status |148|---|--------|-------|-----|--------|149| 1 | {Action} | {Name} | {Date or "TBD"} | Pending |150151---152153## Open Questions154155- {Question that wasn't answered — include who raised it and why it matters}156157---158159## Key Takeaways for Artifacts160161{Flag what needs updating in other project documents. Be specific:}162163| Artifact | What Needs Updating | Priority |164|----------|-------------------|----------|165| {PRD vX.Y} | {Specific section or requirement} | {High/Med/Low} |166| {Presentation} | {Specific slide or section} | {High/Med/Low} |167| {Architecture Map} | {Specific view or layer} | {High/Med/Low} |168| {Stakeholder Directory} | {New people to add} | {High/Med/Low} |169170*Omit this section if no artifact impacts identified.*171172---173174## Transcript Notes175176- {Note about transcript quality: complete/partial, any gaps, audio issues}177- {Which portions of the meeting are covered vs. missing}178```179180### Step 5: Route Output File181182Use the routing guide from `CLAUDE.local.md` to determine the correct output directory:183184**Routing logic:**1851. If meeting is about ProductB / Tax / {Stakeholder} → `ProductB-Control-Framework/Meeting-Notes/`1862. If meeting is about ProductA / ComplianceApp / {Stakeholder} / {Stakeholder} → `ProductA-Steady-State/`1873. If meeting is about platform / cross-cutting → `Platform-Overview/`1884. If routing guide doesn't exist or doesn't match → ask the user1895. If output directory was specified in the command → use that190191**Before writing:** Show the user:192- Proposed file name193- Proposed output location194- Brief summary of what will be in the notes195196Then write the file.197198### Step 6: Propose CLAUDE.local.md Update199200After writing the meeting notes, propose a `Recent Changes` entry for `CLAUDE.local.md`:201202```markdown203- [YYYY-MM-DD] `{relative-path-to-notes}` — **NEW FILE**: {Meeting type} notes from {date} {attendees} call (~{N} min). {1-2 sentence summary of key topics}. {Count} action items. {Key decision or stakeholder if notable}.204```205206**Also propose updates to:**207- **Key Decisions** section — if new decisions were made208- **Open Questions** section — if questions were answered or new ones raised209210Ask: "Should I update CLAUDE.local.md with this entry?"211212### Step 7: Surface Sync Opportunities213214If the meeting produced information that should propagate to other documents, mention it:215216> "This meeting discussed {topic} which may impact:217> - **{PRD vX.Y}** — {what section}218> - **{Presentation}** — {what slide}219> Run `/pmstudio-sync` to propagate changes, or I can update specific artifacts now."220221## Quality Rules2222231. **Attribute statements to speakers.** Don't write "it was discussed that..." — write "{Stakeholder} explained that..." or "{Stakeholder} noted that..."2242. **Preserve significant quotes verbatim.** If someone said something strategic, memorable, or committal, quote it exactly with attribution.2253. **Convert relative dates to absolute.** "Next Thursday" → "2026-03-20 (Thursday)". "Last week" → "week of 2026-03-10".2264. **Don't invent information.** If the transcript is unclear or incomplete, say so. Use "[inaudible]" or "[unclear]" markers.2275. **Don't over-summarize.** Meeting notes should be comprehensive enough that someone who wasn't there can understand what happened. Err on the side of more detail, not less.2286. **Separate facts from interpretation.** Use clear language: "{Stakeholder} stated..." (fact) vs. "This suggests..." (interpretation).2297. **Action items need owners.** If an action was discussed but no owner assigned, flag it: "Owner: TBD — needs assignment".2308. **Match existing format.** If prior meeting notes exist in the project, match their depth, style, and section structure for consistency.2319. **Handle partial transcripts.** If the transcript is clearly incomplete (starts mid-conversation, cuts off), note what's missing in the Transcript Notes section.23210. **Cross-reference, don't duplicate.** If a topic was covered extensively in previous meeting notes, reference that file rather than re-explaining: "See 2026-03-13-{Stakeholder1}-{Stakeholder2}.md §3 for full {Audit Firm} tool walkthrough."233234## Handling Edge Cases235236| Scenario | Approach |237|----------|----------|238| **Multiple meetings in one transcript** | Split into separate files, one per meeting |239| **Very short meeting (<10 min)** | Use abbreviated format: Summary + Decisions + Actions only |240| **No clear decisions or actions** | Still capture — note "Informational/exploratory call — no decisions or actions" |241| **Sensitive/privileged content** | Flag to user: "This transcript contains potentially privileged content (legal, litigation). Confirm before writing to file." |242| **Poor transcript quality** | Do your best, mark uncertain sections with [?], note quality issues prominently |243| **Attendees not in stakeholder directory** | List them in "New Stakeholders" table with whatever context is available |244| **Meeting references documents not yet read** | Note: "{Stakeholder} referenced {document} — not yet reviewed. Action: obtain and review." |245246## Integration with PM Studio247248This skill is part of the PM Studio ecosystem:249250| Related Skill | When to Suggest |251|---------------|----------------|252| `/pmstudio-sync` | Meeting produced changes that should propagate to PRD/deck/architecture |253| `/pmstudio-changelog` | Meeting produced a significant decision or change worth logging |254| `/pmstudio-comms` | Meeting requires a follow-up communication (status update, stakeholder notification) |255| `/pmstudio-prd` | Meeting revealed requirements not yet in the PRD |256| `/pmstudio-nfr` | After processing several meetings, audit document completeness |