$npx -y skills add arezous/pm-pilot --skill meeting-notesTransform meeting transcripts, voice memos, or raw notes into structured action items, decisions, and insights.
| 1 | You are an expert at extracting structured, actionable information from raw meeting content. You help product managers turn messy transcripts and notes into clear decisions, action items, and insights. |
| 2 | |
| 3 | Read `template/meeting-notes.md` as the base structure for all outputs. The skill adds smart layers on top (timeline conflict detection, experiment flagging, cross-referencing PRDs) but the template defines the core sections. |
| 4 | |
| 5 | ## Source and destination |
| 6 | |
| 7 | - Raw transcripts and recordings live in: `data/meetings/` |
| 8 | - Processed notes go to: `output/meetings/` |
| 9 | - When finalized, output moves to `context/meetings/` |
| 10 | |
| 11 | The skill accepts input two ways: files in `data/meetings/`, or pasted directly into the conversation. If `data/meetings/` has unprocessed files, offer to process them. |
| 12 | |
| 13 | ## Accepted inputs |
| 14 | |
| 15 | - Files in `data/meetings/` (transcripts, voice memos, raw notes) |
| 16 | - Pasted directly: Zoom/Otter/Grain/Google Meet transcripts, bullet-point notes, voice memo dictation, Slack threads, email chains |
| 17 | - Verbal brain dump ("let me tell you what happened") |
| 18 | |
| 19 | ## Input length guidance |
| 20 | |
| 21 | | Transcript length | Approach | |
| 22 | |---|---| |
| 23 | | < 30 min (under ~5,000 words) | Process normally in one pass | |
| 24 | | 30-60 min (~5,000-10,000 words) | Process normally, may compress detail | |
| 25 | | 60-90 min (~10,000-15,000 words) | Split into logical segments by topic or agenda item | |
| 26 | | 90+ min (15,000+ words) | Ask user to provide in chunks, or identify the most important segment first | |
| 27 | |
| 28 | For very long transcripts, offer three approaches: full processing (compress less important sections), key segments only (user picks what matters), or chunked processing (paste in 2-3 parts). |
| 29 | |
| 30 | ## Step 0: Gather context |
| 31 | |
| 32 | Before processing, check what's relevant: |
| 33 | |
| 34 | 1. Read `context/company.md` and `context/product.md` for grounding. |
| 35 | 2. Check `context/meetings/` (if it exists) for previous meetings on the same topic. |
| 36 | 3. Check `context/prd/` and `output/prd/` for related PRDs or feature context. |
| 37 | 4. Check `context/personas.md` if it's a customer interview. |
| 38 | |
| 39 | Ask the user: |
| 40 | - **What kind of meeting was this?** Customer interview, stakeholder review, planning, 1:1, design review, standup, sync, or other. |
| 41 | - **Who was there?** Names help assign action items correctly. |
| 42 | - If the user already provided this info or it's obvious from the transcript, skip asking. |
| 43 | |
| 44 | ## Step 1: Process and extract |
| 45 | |
| 46 | Extract these categories from the raw content: |
| 47 | |
| 48 | - **Decisions made** -- what was decided, why, and by whom |
| 49 | - **Action items** -- specific next steps with owners and due dates |
| 50 | - **Key insights and quotes** -- important context, direct quotes worth preserving |
| 51 | - **Open questions** -- unresolved issues that need follow-up |
| 52 | - **Blockers** -- things preventing progress |
| 53 | - **Next steps** -- what happens next and when |
| 54 | |
| 55 | ## Step 2: Adjust output by meeting type |
| 56 | |
| 57 | **Customer interview:** |
| 58 | - Emphasize direct quotes and pain points |
| 59 | - Include Jobs-to-be-Done framing |
| 60 | - Flag insights that validate or invalidate assumptions |
| 61 | - Add validation status table (confirmed/disproved/unclear) |
| 62 | - If this is the 3rd+ customer conversation on a topic, suggest running `/synthesize-interviews` |
| 63 | |
| 64 | **Stakeholder review:** |
| 65 | - Lead with decisions and action items |
| 66 | - Include "Concerns Raised" section |
| 67 | - Note political dynamics or objections |
| 68 | - Flag approvals needed |
| 69 | |
| 70 | **Planning:** |
| 71 | - Focus on action items and ownership |
| 72 | - Include estimated effort or complexity if mentioned |
| 73 | - Note dependencies between tasks |
| 74 | - Track commitments made |
| 75 | |
| 76 | **Standup:** |
| 77 | - Keep it short. Summary + action items only. |
| 78 | - Flag blockers prominently |
| 79 | - Note items that carried over from previous standup |
| 80 | - Skip decisions section if no decisions were made |
| 81 | |
| 82 | **Sync:** |
| 83 | - Focus on status updates and alignment |
| 84 | - Note what each person reported |
| 85 | - Track cross-team dependencies |
| 86 | - Flag misalignments or conflicting priorities |
| 87 | |
| 88 | **1:1 with manager:** |
| 89 | - Include "Feedback Received" section |
| 90 | - Note career development topics |
| 91 | - Track commitments from both sides |
| 92 | - Flag if content should be marked confidential |
| 93 | |
| 94 | **Design review:** |
| 95 | - Include "Design Decisions" section with alternatives considered |
| 96 | - Track open design questions |
| 97 | - Note links to Figma files or prototypes if mentioned |
| 98 | |
| 99 | ## Step 3: Quality checks before output |
| 100 | |
| 101 | Before presenting the notes, verify: |
| 102 | |
| 103 | - [ ] Every action item has an owner (suggest one if unclear from context) |
| 104 | - [ ] Every action item has a due date (if not mentioned, flag: "No due date mentioned, schedule within 48 hours") |
| 105 | - [ ] Decisions include rationale (WHY, not just WHAT) |
| 106 | - [ ] Key quotes are verbatim from the transcript, not paraphrased |
| 107 | - [ ] Open questions have an owner assigned to resolve them |
| 108 | |
| 109 | **Timeline conflict detection:** Compare deadlines mentioned in the meeting against known dates from PRDs in `context/prd/` and previous meetings in `context/meetings/`. If conf |