Skip to main content
skill CX Codex

foundation-meeting-synthesize — Claude Code skill: meeting archaeology

This skill reads several meeting recaps from a period and surfaces what no single meeting shows: how decisions shifted, where people disagree, what stalled.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add product-on-purpose/pm-skills --skill foundation-meeting-synthesize -a claude-code
Open on GitHub

What foundation-meeting-synthesize does

Point it at a set of meeting recaps, or raw notes if that is all you have. It builds a chronological timeline by meeting date, clusters recurring topics and marks confidence by frequency (a theme in 5 of 5 meetings is high, one mention is low), tracks each named stakeholder from their first position to the current one, and consolidates decisions into a single table.

Two outputs stay separate: decision evolution, where a later decision supersedes an earlier one on the same topic, and unresolved contradictions, which get a ⚠ marker and need reconciliation. Version 1.1.0 split them because the earlier version flagged intentional scope changes as contradictions in exec contexts. The skill also records where each meeting type came from — an explicit field, model inference, or nothing — and states that mix in the Scope section. If you filter by meeting_type, that mix is worth checking first.

It never blocks on questions. You get an inference summary first (meeting count after filters, detected time range, per-source input quality), then it waits for go or corrections before producing the synthesis. Passing --go skips the summary. Format hints — board-prep, onboarding, retro-input, exec-brief — reorder and trim sections without changing the underlying analysis.

What it helps with

  • turn ten meeting recaps into one timeline of an initiative
  • find out why a project stalled across several meetings
  • prepare board prep material from a long meeting sequence
  • onboard someone into who said what and when
  • catch contradictions between decisions that single-meeting reviews missed

Example prompts for the agent

  • Synthesize all recaps from the quarter, use the board-prep format
  • Read the notes in meetings/ and show me where the thread stalled
  • Run the synthesis on these files, filter by stakeholder — Anna

How to install foundation-meeting-synthesize

1Skills CLI (Vercel)

npx skills add product-on-purpose/pm-skills --skill foundation-meeting-synthesize -a claude-code

2Manually: put the files in place

~/.claude/skills/foundation-meeting-synthesize/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/foundation-meeting-synthesize/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about foundation-meeting-synthesize

How do I install foundation-meeting-synthesize in Claude?

Run npx skills add product-on-purpose/pm-skills --skill foundation-meeting-synthesize -a claude-code. The skill lands at ~/.claude/skills/foundation-meeting-synthesize/SKILL.md.

What does foundation-meeting-synthesize do?

It reads multiple meeting recaps over a period and produces a timeline, themes with confidence markers, stakeholder positions, a consolidated decision list, contradiction flags, open items and prioritized follow-ups.

How is it different from /discover-interview-synthesis?

That skill handles user-research conversations with research frameworks. This one works on internal org meetings: stakeholder alignment, decision evolution, project history.

Source text

SKILL.md · Apache-2.0
---
name: foundation-meeting-synthesize
description: Cross-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 a plain-text timeline, themes with confidence markers, stakeholder position tracking, consolidated decision list, contradiction flags, open items, narrative summary, and prioritized follow-ups.
license: Apache-2.0
metadata:
  classification: foundation
  version: "1.2.0"
  updated: 2026-07-05
  category: meeting
  frameworks: [meeting-skills-family]
  author: product-on-purpose
---
<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->
# Meeting Synthesize

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.

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).

This skill belongs to the Meeting Skills Family. It conforms to the [Meeting Skills Family Contract](../../docs/reference/skill-families/meeting-skills-contract.md).

## When to Use

- Board prep or exec-brief preparation across a meeting sequence
- Onboarding a new team member into the history of an initiative
- Project retrospective input (the story of how we got here)
- Investigating why a multi-meeting initiative has stalled
- Quarterly review of a topic that has crossed many meetings
- Surfacing contradictions that no single-meeting reviewer caught

## When NOT to Use

- Single-meeting summary. Use `foundation-meeting-recap` instead.
- Communicating outcomes outward. Use `foundation-stakeholder-update`.
- User research conversation synthesis. Use `discover-interview-synthesis`.

## Zero-friction execution

Per the family contract, this skill never blocks on interrogation. Default flow:

1. Load all provided source files (recaps preferred, raw notes accepted with lower input-quality flag)
2. Apply any filters (time range, topic, stakeholder)
3. Run inference on themes, stakeholder evolution, contradictions
4. Present a brief inference summary (meeting count after filter, time range detected, per-source input quality, scope filter applied)
5. Accept `go` or corrections
6. Produce the synthesis

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.

## Instructions

When asked to create a meeting synthesis, follow these steps:

1. **Load sources**
   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).

   **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.

2. **Apply filters**
   If time range, topic, or stakeholder filter provided, narrow the source set before proceeding. Record the filter applied in frontmatter `scope_filter`.

3. **Present go-mode inference summary**
   Meeting count after filter, time range detected from source metadata, per-source input quality levels, scope filter description.

4. **Build the plain-text timeline**
   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).

5. **Extract themes**
   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).

6. **Track stakeholder positions**
   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.

7. **Consolidate decisions**
   Cross-meeting, sorted chronologically. Table format: Date | Decision | Context | Meeting | Confidence.

8. **Separate decision evolution from unresolved contradictions** (v1.1.0)
   Two distinct outputs, not one combined "contradictions" section:
   - **Decision evolution** (resolved): earlier decision → later decision on the same topic, where the later one supersedes. This is historical context, not a red flag. No `⚠` emphasis.
   - **Unresolved contradictions**: decisions or positions currently in conflict that need reconciliation. Use `⚠` visual emphasis. For each:
     - Earlier reference (meeting + date + decision)
     - Later reference (meeting + date + decision that conflicts)
     - Status: unresolved / needs reconciliation
   
   The distinction matters because v1.0.0 conflated them, creating false-positive "contradictions" in exec contexts where the "contradiction" was actually intentional scope evolution.

9. **Identify open items and stalled threads**
   Topics surfacing 2+ times without resolution. When they last appeared.

10. **Draft narrative summary**
    2-3 paragraphs: what happened, what changed, where we are, what is at stake. The "story" of the meeting set.

11. **Prioritize follow-up suggestions**
    - High: unblocking now; suggested owner or forum
    - Medium: important but not blocking
    - Low: monitor
    Each with rationale.

12. **Apply format hint** (if provided)
    One process generates the full synthesis data. The hint controls section ordering and truncation for the specific use case:
    - `board-prep`: lead with narrative + contradictions + prioritized follow-ups; shorter timeline
    - `onboarding`: lead with narrative + stakeholder tracking; full timeline
    - `retro-input`: lead with themes + stalled threads + meeting-quality aggregate
    - `exec-brief`: TL;DR + top 3 items only

13. **Render TEMPLATE.md and validate**
    - `source_meetings` list is non-empty
    - `time_range.start` ≤ `time_range.end`
    - Every theme has a confidence marker
    - Every contradiction has before/after source citations
    - At least 1 prioritized follow-up

## Project Memory Contract

Active only when `.claude/pm-skills.local.md` exists. With no file, ignore this section entirely
and behave exactly as described above.

- **Reads:** `active_initiative` and prior `interpretation` artifacts on the same topic, so the synthesis shows movement rather than restating what is already recorded.
- **Writes:** the synthesis as an `interpretation` artifact.
- **Posture:** propose the entry and wait for confirmation before writing, unless
  `memory_auto_append: true` is set, in which case append and echo what was written.
- **Write discipline:** re-read the file immediately before writing, never from the copy that
  produced the proposal. If it changed in between, merge your entry into the current state and
  re-propose rather than overwriting; add only your own entry and leave every other field and
  section byte-identical. Nothing enforces this at runtime and the file is gitignored, so a
  careless whole-file write loses another session's work with no way to recover it.

This complements the family's filename-based chaining rather than replacing it: filenames still locate the sibling artifacts of one meeting, while project memory carries the durable product context across meetings.
## Quality Checklist

- [ ] Source meetings listed with filename + date + per-source input quality
- [ ] Time range populated and sensible
- [ ] Scope filter described (or "none applied")
- [ ] Timeline is plain-text markdown (no binary images)
- [ ] Themes include confidence markers tied to frequency
- [ ] Stakeholder position tracking shows evolution (initial → current), not just snapshot
- [ ] Consolidated decision list is chronological with source citations
- [ ] Contradictions are flagged in their own first-class section (not buried)
- [ ] Narrative summary is 2-3 paragraphs, not bullets
- [ ] Follow-ups are prioritized (High / Medium / Low) with rationale
- [ ] Frontmatter omits single-meeting fields (meeting_title, meeting_date, etc.)
- [ ] Sources and References weights input quality across sources

## See also

- [Meeting Skills Family Contract](../../docs/reference/skill-families/meeting-skills-contract.md)
- [`foundation-meeting-recap`](../foundation-meeting-recap/SKILL.md). upstream: primary input source
- [`/discover-interview-synthesis`](../discover-interview-synthesis/SKILL.md). sibling pattern for user-research conversations (different domain)

© product-on-purpose · Apache-2.0 · product-on-purpose/pm-skills

Similar skills

All skills for Notes, tasks and projects →

From the same set68

foundation-meeting-agenda Builds an attendee-facing meeting agenda with time-boxed topics, owners and goals, plus a short summary for Slack or email. CX Codex +1 703installs foundation-stakeholder-update Turns meeting outcomes into an async update for people who missed the room, with the CTA up front and jargon translated for the audience. CX Codex +1 693installs foundation-meeting-recap Turns a transcript or notes into a topic-segmented meeting recap: decisions flagged, actions with owners and due dates captured inside each topic. CX Codex +1 691installs utility-pm-skill-validate Audits an existing pm-skills skill against repo conventions and quality criteria, then hands back a report you can act on or feed to another skill. CX Codex +1 690installs utility-pm-skill-iterate Applies targeted edits to an existing pm-skills skill from a validation report or your own feedback: reads the files, previews before/after, writes on confirmation. CX Codex +1 688installs foundation-meeting-brief Creates a private tactical preparation brief before high-stakes meetings. It maps stakeholder positions, key messages, and prepared responses. CX Codex +1 686installs utility-update-pm-skills Checks for newer pm-skills releases, compares versions, previews what changes, and updates local files after you confirm. CX Codex +1 685installs measure-okr-grader Scores each KR at the end of an OKR cycle, checks how solid the evidence is, and turns the results into input for the next cycle. Useful when the team argues over whether a score is good. CX Codex +1 674installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor