$npx -y skills add product-on-purpose/pm-skills --skill foundation-meeting-synthesizeCross-meeting archaeology skill. Consumes multiple meeting recaps (or raw notes) over a period and surfaces patterns invisible in any single meeting. Shows how decisions evolved, who has been saying what, where threads are stalling, and where contradictions have emerged. Produces
| 1 | <!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 --> |
| 2 | # Meeting Synthesize |
| 3 | |
| 4 | Meeting synthesis is the archaeology skill for multi-meeting initiatives. It consumes a set of meeting recaps (and optionally raw notes) over a period, and surfaces patterns that no single meeting reveals: how decisions evolved, how stakeholder positions shifted, where threads are stalling, where contradictions have emerged. |
| 5 | |
| 6 | Distinct from `/discover-interview-synthesis`: that skill works on user-research conversations with research-specific frameworks (jobs-to-be-done, buying insights). This skill works on internal org meetings with org-specific patterns (stakeholder alignment, decision evolution, project history). |
| 7 | |
| 8 | This skill belongs to the Meeting Skills Family. It conforms to the [Meeting Skills Family Contract](../../docs/reference/skill-families/meeting-skills-contract.md). |
| 9 | |
| 10 | ## When to Use |
| 11 | |
| 12 | - Board prep or exec-brief preparation across a meeting sequence |
| 13 | - Onboarding a new team member into the history of an initiative |
| 14 | - Project retrospective input (the story of how we got here) |
| 15 | - Investigating why a multi-meeting initiative has stalled |
| 16 | - Quarterly review of a topic that has crossed many meetings |
| 17 | - Surfacing contradictions that no single-meeting reviewer caught |
| 18 | |
| 19 | ## When NOT to Use |
| 20 | |
| 21 | - Single-meeting summary. Use `foundation-meeting-recap` instead. |
| 22 | - Communicating outcomes outward. Use `foundation-stakeholder-update`. |
| 23 | - User research conversation synthesis. Use `discover-interview-synthesis`. |
| 24 | |
| 25 | ## Zero-friction execution |
| 26 | |
| 27 | Per the family contract, this skill never blocks on interrogation. Default flow: |
| 28 | |
| 29 | 1. Load all provided source files (recaps preferred, raw notes accepted with lower input-quality flag) |
| 30 | 2. Apply any filters (time range, topic, stakeholder) |
| 31 | 3. Run inference on themes, stakeholder evolution, contradictions |
| 32 | 4. Present a brief inference summary (meeting count after filter, time range detected, per-source input quality, scope filter applied) |
| 33 | 5. Accept `go` or corrections |
| 34 | 6. Produce the synthesis |
| 35 | |
| 36 | If invoked with `--go`, skip the inference summary. Format hints (`board-prep`, `onboarding`, `retro-input`, `exec-brief`) control output presentation without changing the underlying process. |
| 37 | |
| 38 | ## Instructions |
| 39 | |
| 40 | When asked to create a meeting synthesis, follow these steps: |
| 41 | |
| 42 | 1. **Load sources** |
| 43 | Read all provided recap filenames or note files. Parse frontmatter to extract meeting metadata. Note per-source input quality (recap frontmatter's `input_quality` if available; otherwise assess from content). |
| 44 | |
| 45 | **Metadata source tracking** (v1.1.0): for each recap, also note the `meeting_type_source` field (`explicit | inferred | null`). When synthesizing across mixed sources, the synthesis must document the mix explicitly in the Scope section: "meeting_type values: N explicit, M inferred, K null." This prevents non-reproducible results when filtering by meeting_type across a mix of confidence levels. If filtering by `meeting_type`, state whether the filter includes inferred values and how null values are handled. |
| 46 | |
| 47 | 2. **Apply filters** |
| 48 | If time range, topic, or stakeholder filter provided, narrow the source set before proceeding. Record the filter applied in frontmatter `scope_filter`. |
| 49 | |
| 50 | 3. **Present go-mode inference summary** |
| 51 | Meeting count after filter, time range detected from source metadata, per-source input quality levels, scope filter description. |
| 52 | |
| 53 | 4. **Build the plain-text timeline** |
| 54 | Chronological order by `meeting_date`. Each entry shows date, meeting name, key decision or shift, and confidence or contradiction flag if applicable. Render as markdown (no binary images. must render everywhere). |
| 55 | |
| 56 | 5. **Extract themes** |
| 57 | Cluster recurring topics across sources. For each theme, record description, sources where it appeared, and confidence marker tied to frequency ("appears in 5/5 meetings" → high; "appears in 2/5 meetings" → medium; "mentioned in 1 meeting" → low). |
| 58 | |
| 59 | 6. **Track stakeholder positions** |
| 60 | For each named stakeholder across sources, record initial position → current position, alignment state (aligned / divergent / shifting), and key statements with dates. Flag confidence on each position based on whether it was direct-quoted or paraphrased. |
| 61 | |
| 62 | 7. **Consolidate decisions** |
| 63 | Cros |