Meeting Recap
Quick facts
Classification: Foundation | Version: 1.0.0 | Category: meeting | License: Apache-2.0
Try it: /meeting-recap "Your context here"
A meeting recap is a post-meeting topic-segmented summary produced for attendees and light distribution. It organizes content by topic rather than chronology, highlights decisions visually, and captures actions inline (with owner, due date, dependencies) per topic segment, plus a consolidated actions view at the end for scannability.
This skill absorbs what would otherwise be a separate “meeting-actions” skill. Actions in this family live alongside the context that makes them meaningful, not in a sibling artifact.
This skill belongs to the Meeting Skills Family. It conforms to the Meeting Skills Family Contract.
When to Use
- After any internal meeting that produces decisions or actions affecting attendees
- When a sibling
/meeting-agendaexists and needs reconciliation (planned vs. actual topics) - When the team needs a topic-organized reference rather than a chronological transcript dump
- When inputs include a transcript (Zoom, Meet, Otter, Fireflies, Krisp MCP) or mixed notes and transcript
When NOT to Use
- Communicating outcomes to non-attendees. Use
/stakeholder-update. recap assumes reader context; stakeholder-update translates to readers without it. - Cross-meeting synthesis (patterns across multiple meetings). Use
/meeting-synthesize. - Live meeting note-taking. This skill consumes finished inputs; it does not transcribe live.
How to Use
Use the /meeting-recap slash command:
/meeting-recap "Your context here"Or reference the skill file directly: skills/foundation-meeting-recap/SKILL.md
Instructions
When asked to create a meeting recap, follow these steps:
-
Parse inputs and detect type Transcript (timestamped speaker-attributed lines), notes (bullet or prose), or hybrid. Note input quality upfront. transcript plus structured notes is high; scrappy bullets is low.
-
Auto-discover related agenda Look in the same directory for a file matching the pattern
{YYYY-MM-DD}_{HH-MMtimezone}_{title-slug}_agenda.md. If found, load it. its topic list is the recap’s topic skeleton and itsdesired_outcomesdrive the meeting-quality reconciliation. -
Present go-mode inference summary Show detected meeting date, title, attendees (if inferred), input quality assessment. Accept
goor corrections. -
Topic-segment the content
- If agenda was loaded, use its topic list as scaffold (plus any emergent topics)
- If no agenda, identify topics from transcript discourse markers (“moving on to”, “the other thing”)
-
Per topic segment, extract
- Discussion summary: 2-3 sentences capturing what was discussed
- Decisions made: bold-flagged visually. Never fabricate. if uncertain, flag “appears to have decided X [confidence: medium]”
- Actions: owner + due date + dependencies. Flag missing owners as
[owner: unassigned]and missing dates as[due: not specified]. Never invent. - Open questions: unresolved items with confidence marker on whether they are truly unresolved or simply not re-raised
-
Consolidate actions by owner Regroup all actions under each owner. Enables single-owner scan (“what do I owe after this meeting?”).
-
Reconcile agenda (if agenda loaded)
topics_planned: from agenda topic listtopics_hit: topics actually discussedtopics_skipped: planned but not discussed, with brief reasontopics_emerged: discussed but not on agenda
-
Assess meeting quality signals
outcomes_achieved: N/M ratio of agendadesired_outcomesmet (when agenda present)started_on_time/ended_on_time: from timestamps when available; skipped when notkey_attendees_present: flag if decision-makers were absent
-
Surface next steps When we reconvene, what needs to happen on the critical path before that.
-
Render TEMPLATE.md and validate
- Every action’s owner appears in
attendeesor is explicitlyunassigned meeting_quality.outcomes_achievedmatchesN/Mpattern when populatedagenda_reconciliationfields present even when empty lists
- Every action’s owner appears in
Output Template
Meeting recap: {{Meeting title}}
Shareable summary
[guidance (v1.1.0 errata): 3-5 short lines, no mini-headers, Slack/email copy-safe. Lead with outcome, inline key decisions, inline top actions. Plain prose + simple bullets only. no nested markdown.]
{{Meeting title}} | {{Date}} {{1-sentence accomplishment summary, optionally naming 1-2 key decisions inline.}} Top actions: {{Owner 1}}: {{action}} ({{due}}); {{Owner 2}}: {{action}} ({{due}}); {{Owner 3}}: {{action}} ({{due}}). {{if unassigned_action_ratio > 0.3 or any high-priority action unassigned:}} ⚠ {{N}} of {{M}} actions need owners. see Ownership reconciliation section. Full recap linked below.
Full recap
Meeting details
- Date: {{Date}}
- Actual duration: {{Duration}} min
- Attendees present: {{Names}}
- Attendees absent: {{Names or “none”}}
- Recording: {{Link or “none”}}
Overall summary
[guidance: 2-3 sentences capturing what this meeting accomplished in plain language]
{{Summary text}}
Agenda reconciliation
[guidance: explicit report of what was planned vs. what actually happened. If no agenda existed, note “no prior agenda loaded”]
- Planned topics: {{list or “no agenda”}}
- Topics addressed: {{list}} ({{N}} of {{M}})
- Topics skipped: {{list or “none”}}. {{brief reason per skip}}
- Topics that emerged: {{list or “none”}}. {{brief context}}
Topics
{{Topic 1}}
Type: {{Discussion | Decision | Information | Working}} (from agenda, if available)
Discussion
{{Summary of what was discussed}}
Decisions made
- {{Decision 1}}. {{brief rationale}}
- {{Decision 2}}. {{brief rationale}} [confidence: {{level}} if inferred]
Actions
- {{Owner}}: {{Action}} | Due: {{Date or “not specified”}} | Dependencies: {{any or “none”}}
- {{Owner or “unassigned”}}: {{Action}} | Due: {{Date or “not specified”}}
Open questions
- {{Unresolved question}} [confidence: {{level}}]
{{Topic 2}}
[guidance: repeat structure]
All actions (consolidated by owner)
{{Owner 1}}
- {{Action}} | Due: {{Date}} | Topic: {{Topic}}
- {{Action}} | Due: {{Date}} | Topic: {{Topic}}
{{Owner 2}}
- {{Action}} | Due: {{Date}} | Topic: {{Topic}}
Unassigned
- {{Action}} | Topic: {{Topic}} | Needs owner
Meeting quality signals
[guidance: lightweight signals supporting downstream retrospective use]
- Outcomes achieved: {{N of M or “no agenda outcomes to reconcile”}}
- Time management: {{brief note on start/end and pacing}}
- Key attendee presence: {{brief note on who was needed and whether they were there}}
Next steps
- When we reconvene: {{Date or cadence}}
- What needs to happen first: {{Critical path items}}
Sources & References
Primary inputs
- {{Source type}}: {{Source name}} (e.g., “transcript via Otter, 48 minutes”)
- {{Source type}}: {{Source name}} (e.g., “user live notes”)
Referenced artifacts
- Agenda: {{filename or “none loaded”}}. {{if loaded, note: used for topic skeleton and desired-outcomes reconciliation}}
- Brief: {{filename if applicable}}
- Prior recaps on this topic: {{filenames or “none”}}
External references
- {{Links mentioned in meeting}}
Generation context
- Generated: {{Timestamp}}
- Skill version: 1.0.0
- Input quality: {{high | medium | low}}. {{rationale}}
- Overall confidence: {{high | medium | low}}. {{rationale}}
- Known gaps: {{list of topics with insufficient detail, or “None identified”}}
- Inferences applied: {{list of inferred values with confidence, e.g., “decision on X inferred from ‘let’s go with X’ [confidence: medium]”}}
- Fabrication check: {{“all action owners appear in attendees list or are explicitly unassigned” | or list of failures}}
Example Output
Meeting recap: Search Feature Kickoff
Meeting recap: Search Feature Kickoff
Shareable summary
Search Feature Kickoff | 2026-04-17 Scope and capacity agreed; timeline deferred to a follow-up next week due to emergent vendor-contract question on the search provider.
Key decisions:
- MVP scope: autocomplete + filters IN; saved searches OUT (defer to v2)
- Q2 eng capacity: 8 sprint-weeks committed; alex owns staffing plan
Top actions:
- alex: publish sprint-week staffing plan (Due: 2026-04-24)
- maria: investigate vendor contract constraints on search provider (Due: 2026-04-22)
- jonathan: schedule follow-up for timeline commitment after vendor answer (Due: 2026-04-25)
Full recap below
Full recap
Meeting details
- Date: 2026-04-17
- Actual duration: 68 min (overran by 8 min)
- Attendees present: jonathan, maria, alex, sarah
- Attendees absent: none
- Recording: https://meet.example/search-kickoff/recording
Overall summary
Agreed on MVP scope (autocomplete + filters in; saved searches deferred) and Q2 engineering capacity (8 sprint-weeks). Timeline commitment deferred to next week because an emergent question on the search-provider vendor contract needs resolution before a date can be committed. Meeting ran 8 minutes over due to the vendor-contract tangent.
Agenda reconciliation
- Planned topics: scope, capacity, timeline, next-steps
- Topics addressed: scope, capacity (2 of 4)
- Topics skipped: timeline. deferred because vendor contract question blocks commitment; next-steps. absorbed into emergent vendor-contract discussion
- Topics that emerged: vendor-contract-review. alex raised a prior email from the search-provider indicating potential licensing limits on usage; needs investigation before timeline is committable
Topics
Scope
Type: Decision (from agenda)
Discussion
Walked the scope draft together. Autocomplete and filters had clear customer-research backing; saved searches was the contested line. Agreed that saved searches solves a narrower user need and can be deferred without losing the MVP value prop.
Decisions made
- MVP scope: autocomplete IN, filters IN, saved searches OUT (defer to v2). rationale: autocomplete + filters cover 80% of the research-identified user need; saved searches adds complexity (accounts, persistence) that costs Q2 engineering time without proportional customer-value gain
Actions
- maria: update scope doc to reflect decision; circulate for final sign-off by EOD Friday | Due: 2026-04-18 | Dependencies: none
- jonathan: add saved-searches to v2 backlog with rationale link | Due: 2026-04-18
Open questions
- None on scope itself; vendor contract issue (see below) may force scope reconsideration if licensing blocks autocomplete
Capacity
Type: Decision (from agenda)
Discussion
Alex walked the Q2 capacity model. 8 sprint-weeks available for search; no backfill needed if scope holds. Flagged that saved-searches would have required 3 additional sprint-weeks, reinforcing the scope decision.
Decisions made
- Q2 engineering capacity: 8 sprint-weeks committed to search feature. rationale: fits within scope agreed in prior topic; no backfill required
Actions
- alex: publish detailed sprint-week staffing plan (who, which sprint) | Due: 2026-04-24
- alex: flag dependencies on design-system team if any emerge | Due: 2026-04-24
Open questions
- None
Vendor-contract-review (emergent)
Type: Discussion (emergent. not on agenda)
Discussion
Alex surfaced a prior email from the search-provider (Algolia) indicating possible licensing limits on query volume at our projected usage. Raised concern that if limits trigger, we could be forced to renegotiate or re-architect. Decision was to investigate before committing to a ship timeline.
Decisions made
- Defer timeline commitment until vendor contract is reviewed [confidence: high]. rationale: committing a date before vendor-licensing risk is known would create rework
Actions
- maria: investigate vendor contract constraints (read licensing terms; query legal if needed) | Due: 2026-04-22 | Dependencies: legal review if terms are ambiguous
- jonathan: schedule 30-min follow-up for the week of 2026-04-21 once maria has vendor answer | Due: 2026-04-25
Open questions
- Does vendor licensing support our projected Q2 query volume? [confidence: high. specific question]
- If limits apply, are they negotiable or hard? [confidence: medium. depends on legal review]
All actions (consolidated by owner)
maria
- Update scope doc to reflect decision; circulate for final sign-off | Due: 2026-04-18 | Topic: scope
- Investigate vendor contract constraints (licensing limits on query volume) | Due: 2026-04-22 | Topic: vendor-contract-review
alex
- Publish detailed sprint-week staffing plan | Due: 2026-04-24 | Topic: capacity
- Flag dependencies on design-system team if any emerge | Due: 2026-04-24 | Topic: capacity
jonathan
- Add saved-searches to v2 backlog with rationale link | Due: 2026-04-18 | Topic: scope
- Schedule 30-min follow-up for week of 2026-04-21 once vendor answer is in | Due: 2026-04-25 | Topic: vendor-contract-review
Meeting quality signals
- Outcomes achieved: 2 of 3 stated outcomes met (scope, capacity; ship-date deferred pending vendor review)
- Time management: Started on time; ended 8 min over due to emergent vendor-contract discussion
- Key attendee presence: All attendees present; decision-maker (jonathan) engaged throughout
Next steps
- When we reconvene: week of 2026-04-21 (30 min, narrow focus: vendor answer + timeline commitment)
- What needs to happen first: maria completes vendor contract investigation
Sources & References
Primary inputs
- Transcript: zoom-recording-2026-04-17 via Otter (68 min, speaker-attributed)
- jonathan’s live notes (supplementary, used for context where transcript was ambiguous on speaker attribution)
Referenced artifacts
- Agenda: 2026-04-17_14-00EST_search-feature-kickoff_agenda.md. used for topic skeleton and desired-outcomes reconciliation
- Brief: 2026-04-17_14-00EST_search-feature-kickoff_brief.md (consulted for stakeholder context)
- Prior recaps on this topic: none (this is a kickoff)
External references
Generation context
- Generated: 2026-04-18T09:15:00Z
- Skill version: 1.0.0
- Input quality: high. transcript plus live notes; all speakers identifiable
- Overall confidence: high. decisions, actions, owners, dates all directly supported in transcript
- Known gaps: None identified
- Inferences applied: topic “vendor-contract-review” emerged during meeting and was not in agenda; labeled as emergent [confidence: high. explicit in transcript]
- Fabrication check: all action owners (maria, alex, jonathan) appear in attendees list; no unassigned actions
Real-World Examples
See this skill applied to three different product contexts:
Storevine (B2B): campaigns-pricing-decision
Prompt:
/meeting-recap @campaigns-pricing-decision-transcript.txt @jonathan-live-notes.mdOutput:
---artifact_type: meeting-recapversion: 1.0generated_at: 2026-04-24T19:30:00Zgenerated_by_skill: foundation-meeting-recap
meeting_title: "Campaigns Pricing Decision"meeting_date: 2026-04-24meeting_start_time: "13:00 EST"meeting_type: decision-making
project: campaignstopics: - tier-structure - grandfathering - rollout-date
attendees: - name: jonathan-pm role: decision-maker - name: maria-eng role: contributor - name: alex-marketing role: contributor - name: sam-data role: contributorattendees_absent: []
related_agenda: 2026-04-24_13-00EST_campaigns-pricing-decision_agenda.mdrelated_brief: null
agenda_reconciliation: topics_planned: [tier-structure, grandfathering, rollout-date] topics_hit: [tier-structure, grandfathering, rollout-date] topics_skipped: [] topics_emerged: [comms-plan-ownership]
meeting_quality: outcomes_achieved: "3/3" started_on_time: true ended_on_time: false key_attendees_present: true
meeting_type_source: explicitunassigned_action_ratio: 0.0
input_quality: highconfidence: highvisibility: teamstatus: draft---
# Meeting recap: Campaigns Pricing Decision
</details>
<details><summary>Brainshelf (Consumer): resurface-scope-cut</summary>
**Prompt:**/meeting-recap @priya-notes.md
**Output:**
```markdown---artifact_type: meeting-recapversion: 1.0generated_at: 2026-04-15T21:45:00Zgenerated_by_skill: foundation-meeting-recap
meeting_title: "Resurface Sprint Scope Cut"meeting_date: 2026-04-15meeting_start_time: "13:00 PT"meeting_type: decision-making
project: resurfacetopics: - scope-cut-decision - kept-scope-confirmation
attendees: - name: priya-pm role: decision-maker - name: elena-algo role: contributor - name: mia-design role: contributorattendees_absent: []
related_agenda: nullrelated_brief: null
agenda_reconciliation: topics_planned: [] topics_hit: [scope-cut-decision, kept-scope-confirmation] topics_skipped: [] topics_emerged: []
meeting_quality: outcomes_achieved: "no agenda outcomes to reconcile" started_on_time: null ended_on_time: null key_attendees_present: true
meeting_type_source: inferredunassigned_action_ratio: 0.0
input_quality: mediumconfidence: mediumvisibility: teamstatus: draft---
# Meeting recap: Resurface Sprint Scope Cut
</details>
<details><summary>Workbench (Enterprise): blueprints-customer-feedback</summary>
**Prompt:**/meeting-recap @zoom-transcript.txt @anna-customer-feedback-notes.md
**Output:**
```markdown---artifact_type: meeting-recapversion: 1.0generated_at: 2026-04-25T19:30:00Zgenerated_by_skill: foundation-meeting-recap
meeting_title: "Blueprints v1.1 Customer Feedback Review"meeting_date: 2026-04-25meeting_start_time: "13:00 EST"meeting_type: stakeholder-review
project: blueprintstopics: - design-walkthrough - customer-feedback-themes - must-fix-items - nice-to-have-items
attendees: - name: david-pm role: decision-maker - name: sasha-designer role: contributor - name: linda-compliance role: contributor - name: raj-eng role: contributor - name: anna-cs role: contributorattendees_absent: []
related_agenda: 2026-04-25_13-00EST_blueprints-v1-1-customer-feedback-review_agenda.mdrelated_brief: null
agenda_reconciliation: topics_planned: [design-walkthrough, customer-feedback-themes, must-fix-items, nice-to-have-items] topics_hit: [design-walkthrough, customer-feedback-themes, must-fix-items, nice-to-have-items] topics_skipped: [] topics_emerged: []
meeting_quality: outcomes_achieved: "3/3" started_on_time: true ended_on_time: true key_attendees_present: true
meeting_type_source: explicitunassigned_action_ratio: 0.0
input_quality: highconfidence: highvisibility: teamstatus: draft---
# Meeting recap: Blueprints v1.1 Customer Feedback Review
</details>
## Quality Checklist
- [ ] Input quality flagged honestly (high / medium / low)- [ ] Agenda auto-discovery attempted; result noted in Generation context- [ ] Every topic segment has Discussion / Decisions / Actions / Open questions subsections- [ ] Decisions are bold-flagged; never invented; confidence marked when inferred- [ ] Every action has owner (or explicit `unassigned`) + due date (or explicit `not specified`)- [ ] Consolidated actions view regrouped by owner- [ ] Agenda reconciliation populated when agenda was loaded- [ ] Meeting quality signals populated with data available; skipped fields flagged- [ ] Shareable summary 5-6 lines, lead with decisions and top actions- [ ] Sources and References Generation context notes transcript source and any missing owners/dates