| name | meeting-notes |
| description | Use when turning raw meeting notes, a transcript, or an ASR/recording dump into a structured record โ separating discussion / decisions / action items, extracting owned action items with verbatim grounding, mapping related docs and tickets, and recommending a next step per action item. Triggers include ํ์๋ก ์ ๋ฆฌ, ํ์ ์ ๋ฆฌํด์ค, ์ด ํ์๋ก์์ ์ก์
์์ดํ
๋ฝ์์ค, ๋ฏธํ
๋
ธํธ ์ ๋ฆฌ, ํ์ ๋
น์ทจ๋ก ์ ๋ฆฌ, transcript to action items, meeting notes to action items, summarize this meeting, standup/retro/decision meeting notes. |
Meeting-Notes โ Raw Meeting to Structured Record Pipeline
A synthesis pipeline that turns a raw meeting transcript (ASR dump, notes, recording) into ONE structured markdown report: a type-aware summary that separates discussion / decisions / action items, action items extracted under a validity gate and grounded in verbatim quotes, related artifacts discovered live and mapped to specific items, and a per-action next-step recommendation. It PROPOSES; it never executes an action item.
Foundational Principle
A meeting record is a record of what was DECIDED and what will be DONE โ not a transcript of what was said. Every stage separates ๋
ผ์ (discussion โ context that was exchanged) / ๊ฒฐ์ (decision โ what the conversation settled) / ์ก์
์์ดํ
(action item โ a concrete task derived from a decision). When the transcript does not support a claim, the record says so with an explicit marker ([๋ฏธ๋ฐฐ์ ], [๊ธฐํ ๋ฏธ์ ], confidence: low) rather than inventing it.
Violating the letter of the anti-fabrication rules is violating the spirit. A fabricated owner, an ungrounded action item, or a hedged commitment promoted to firm is a pipeline FAILURE, not a helpful extra โ see Inline Gates.
Pipeline Overview
The pipeline runs in seven sequential stages:
detect type
โ summarize (type-routed) (READ references/type-schemas.md at this stage)
โ extract action items (2-gate + owner/due recovery โ READ references/extract-actionitems.md)
โ validate (3 layers) (grounding / completeness / abstention โ inline gate, detail in the same reference)
โ discover + map (live artifacts mapped to specific items โ READ references/gather-crosslink.md)
โ recommend next step (per action item, from the LIVE available-skills list)
โ render (write ONE markdown file to $OMT_DIR/meeting-notes/{slug}.md)
Each stage is described below. The 3-layer validation (Stage 4) is a hard inline gate โ a trust boundary against hallucination that is never simplified away. See Inline Gates.
Single-meeting scope: one meeting per run. Cross-meeting action-item merge/dedup is out of scope (an unsolved problem โ do not attempt owner+task similarity merging across meetings).
Tool-agnostic principle (stated once): the judgment body names abstract source TYPES (collaboration-docs, PM, messenger) and abstract write-steps only. Concrete MCP/tool identifiers (mcp__notion__โฆ, mcp__linear__โฆ, mcp__slack__โฆ) are never named in this skill โ each abstract type is bound to whatever MCP is wired at runtime (Stage 5), and the report file is written at Stage 7.
Stage 1: Detect Meeting Type
Detect the meeting type from content, keyed to the meeting's native output (the deliverable this meeting exists to produce). The six types and what each yields:
| Type | Native output | Keep | Discard by default |
|---|
| ์คํ ๋์
(standup) | status + blockers | blockers, today's commitments | status narration, chatter |
| ์์ฌ๊ฒฐ์ ยท๊ธฐํ (decision / planning) | the confirmed decision | decision + rationale + rejected alternatives | the debate transcript |
| ํ๊ณ (retrospective) | 1โ3 owned action items | action items | the feedback grid (after synthesis) |
| 1:1 | (rarely shared) | private follow-ups | shareability itself |
| ๋ธ๋ ์ธ์คํ ๋ฐ (brainstorming) | the full idea inventory | every idea | filtering (convergence is separate) |
| ์ธํฐ๋ทฐยท๋ฆฌ์์น (interview / research) | verbatim quotes | source quotes, observations | paraphrased summary |
Detection is by native output, not keyword. Ask: what single deliverable is this meeting producing? Route the summary schema accordingly (Stage 2).
Confidence gate: when the content is mixed or the native output is ambiguous (e.g. a planning meeting that drifts into brainstorming), do NOT silently pick. Ask the user ONE confirmation question naming the two most likely types, then proceed with the confirmed type. A clear single type needs no confirmation.
Fits none of the six? A meeting whose native output matches none of the six (e.g. an all-hands announcement, a kickoff) routes to the general fallback schema (references/type-schemas.md ยง3.7) with a general type slug โ this is not the ambiguous-between-two case, so no confirmation is needed.
Stage 2: Summarize (Type-Routed)
Read references/type-schemas.md now (using the Read tool with path references/type-schemas.md). It contains the common report skeleton (dual layout: topic chapters + flat lists), the per-type schema overrides for the core three (decision/planning with DACI, retro, standup), the brainstorming reversal (Gate 2 OFF), and the general fallback schema. Follow it in full.
Apply the routed schema to produce the summary sections. Enforce the 3-way split: ๋
ผ์ / ๊ฒฐ์ / ์ก์
์์ดํ
never conflate. A decision-meeting summary preserves rejected/deferred alternatives with their reasons (the most-often-dropped, most-valuable field). A brainstorming summary preserves every idea and clusters them โ it does NOT force action items.
Stage 3: Extract Action Items
Read references/extract-actionitems.md now (using the Read tool with path references/extract-actionitems.md). It contains the 2-gate extraction procedure (Gate 1 recall signals โ Gate 2 validity filter), the context-near-utterance owner/due recovery rule, and the 3-layer validation detail used by Stage 4. Follow it in full.
Extraction runs Gate 1 (catch every commitment signal โ recall first) then Gate 2 (keep only real action items โ the 3-part test, verb-form filter, independent-completion, uptake/agreement gate, hedge filter). Recover a missing owner or due date ONLY from adjacent turns and diarized speaker labels (context-near-utterance) โ never from an external system.
Stage 4: Validate (3 Layers) โ Trust Boundary
The three validation layers are a hard gate. They are detailed in references/extract-actionitems.md (already loaded in Stage 3) and enforced here and in Inline Gates:
- Grounding โ every action item cites a verbatim transcript quote (
๊ทผ๊ฑฐ: "..."). An item that cannot cite one is DROPPED, not emitted.
- Completeness โ the three fields (owner / task / due) are present or explicitly marked
[๋ฏธ๋ฐฐ์ ] / [๊ธฐํ ๋ฏธ์ ]. No blank field is left silent, and no field is fabricated.
- Abstention โ a hedged, implicit, or unclear-owner item is marked
confidence: low and routed to human review, not promoted to a firm action item.
This layer is never skipped and never softened. It is the difference between a record and a hallucination.
Stage 5: Discover + Map
Read references/gather-crosslink.md now (using the Read tool with path references/gather-crosslink.md). It contains the gather bound, the gather-then-judge ordering, source-unreachable graceful-skip, the forbidden curation anti-patterns, and the ## ๊ด๋ จ ์๋ฃ reference format. Follow it in full.
Two adaptations for the meeting domain (stated in that file): the search seed is the meeting's decisions, action items, and topics (not a single issue's requirement); the link target is each individual action item / decision (each mapped artifact attaches to a specific item, not to one issue).
Discovery is bounded and curated. Zero related artifacts is a valid outcome. An unwired source is skipped with a one-line note. Never emit a numeric relevance-score table or ranking.
Stage 6: Recommend Next Step
For each extracted action item, recommend how to make progress on it, drawn from the live available-skills list in this session โ the skills and agents actually offered to you right now, not a hardcoded catalog.
- Scan the live list, match the action item to a skill/agent by its stated trigger, and emit a prose bullet: a one-line plan + a literal
Skill(skill: "...") (or agent) hint + a one-line rationale for the match.
- No fit? Say so honestly: label the item a manual / external action (e.g. "manual: read the vendor doc", "external: waiting on another team"). Never invent a skill name to fill the slot.
- Decision follow-ups are optional: a decision may get a light record/notify follow-up bullet, but a decision is never force-fit with an execution tool. If nothing natural fits a decision, leave it with no recommendation.
This mirrors the live-list, no-hardcoded-catalog idiom used by goal and deep-interview Phase 5.
Stage 7: Render
Assemble the summary (Stage 2), validated action items (Stages 3โ4), the mapping (Stage 5), and the recommendations (Stage 6) into ONE markdown report, and write it to a file.
Path: $OMT_DIR/meeting-notes/{date}-{type}-{topic}.md
- slug =
{date}-{type}-{topic} in kebab-case. date = YYYYMMDD; type = the detected type in a short English slug (decision, retro, standup, brainstorming, interview, 1on1, or general for a meeting that took the ยง3.7 general fallback); topic = a 2โ4 word kebab summary of the subject (e.g. 20260708-decision-payment-installment).
- Collision: if the target path already exists, append
-2 (-3, โฆ) to the slug.
- Missing meeting metadata: parse date/topic from the transcript; if absent, do NOT fabricate. Mark the report body
[๋ ์ง ๋ฏธ์] / [๋ฏธ์]. For the slug's date specifically, ask the user ONCE for the meeting date; if they cannot supply it, use nodate in the slug and [๋ ์ง ๋ฏธ์] in the body. Likewise, if no subject can be derived, use notopic in the slug and [๋ฏธ์] in the body โ never fabricate a topic to fill the slug.
The report body is Korean-first (the team's working language); this skill's own instructions stay English. Output markdown only โ no HTML render.
Proposal-only: the report ends here. Creating issues, pushing to a docs tool, or notifying anyone is a separate, user-approved step this skill never performs.
Inline Gates
These gates apply before Stage 7 renders. Failing any gate blocks the render of the offending item โ fix or drop it, then continue.
Anti-Fabrication Gate (the trust boundary)
The 3-layer validation (Stage 4) exists because a capable agent, told to "summarize this meeting and extract action items", will over-reach to be helpful: it fills owners it doesn't know, promotes tentative talk to firm tasks, and presents outside research as meeting facts. Each of those is a fabrication.
Owner and due recovery is bounded to the transcript. Recover a missing owner/due from adjacent turns + diarized speaker labels ONLY. If the transcript does not name who owns an item, it is [๋ฏธ๋ฐฐ์ ] โ full stop.
Rationalization table โ every excuse below means "mark the honest marker, do not fabricate":
| Rationalization | Reality |
|---|
| "The transcript doesn't say who, but the Linear ticket for this is assigned to X, so the owner is X" | The mapping stage (Stage 5) finds related artifacts; it does NOT assign owners. Owner identity comes from the transcript only. Unknown โ [๋ฏธ๋ฐฐ์ ]. |
| "The diarization label is generic ('Developer'), but I can guess the real name from Slack" | A generic speaker label is the owner as-recorded. Do not resolve it to a real identity via external correlation. Keep the label or mark [๋ฏธ๋ฐฐ์ ]; note the ambiguity. |
| "This commitment is hedged ('์๋ง โฆํด์ผ ํ ๊ฒ ๊ฐ์์'), but it's clearly the intent, so I'll list it as a firm action" | Hedged = not yet committed. Mark confidence: low โ human review. Promoting it is the exact failure this gate blocks. |
| "I found the answer to the meeting's open question in an external doc โ I'll present it as a resolved decision" | The record captures what THIS meeting decided. An external finding may appear in ## ๊ด๋ จ ์๋ฃ as a mapped artifact, never as a decision the meeting did not make. |
| "No verbatim quote fits this item, but it's obviously implied" | No verbatim quote โ drop the item. "Obviously implied" is the hallucination boundary. |
| "A due date wasn't stated, but 'internal' urgency suggests end of week" | Unstated due โ [๊ธฐํ ๋ฏธ์ ]. Inferred urgency is not a due date. |
Red Flags โ STOP, you are fabricating
- You are writing an owner name that never appears in the transcript.
- You are resolving a generic speaker label ("Developer") to a real person via Linear/Slack/calendar.
- You are listing a hedged or tentative commitment as a firm action item without
confidence: low.
- An action item has no
๊ทผ๊ฑฐ: "..." verbatim quote.
- The mapping stage's external findings are appearing as decisions or action items the meeting did not produce.
All of these mean: mark the honest marker ([๋ฏธ๋ฐฐ์ ] / [๊ธฐํ ๋ฏธ์ ] / confidence: low) or drop the item. The transcript is the sole source of what the meeting decided and who owns what.
Type-Fit Gate
- A brainstorming transcript with Gate 2 forced ON (idea inventory squeezed into action items) is a FAILURE โ brainstorming keeps every idea and forces no action items.
- A decision meeting rendered without its rejected/deferred alternatives is a FAILURE โ that field is the most valuable and the most often dropped.
Reference Files
references/type-schemas.md: the six meeting types and native-output detection, the common report skeleton (dual layout), the per-type schema overrides for the core three (decision/planning DACI, retro, standup), the brainstorming Gate-2-OFF reversal, the interview/1:1 notes, and the general fallback schema. Read at Stage 2.
references/extract-actionitems.md: the 2-gate extraction procedure (Gate 1 recall signals, Gate 2 validity filter), the context-near-utterance owner/due recovery rule, the action-item render contract, and the 3-layer validation detail. Read at Stage 3 and enforced at Stage 4.
references/gather-crosslink.md: the gather bound (per-source cap, recency window, logs strict bound), gather-then-judge ordering, source-unreachable graceful-skip, curation rules with forbidden anti-patterns (no relevance-score table / numeric ranking / typed dependency graph), and the ## ๊ด๋ จ ์๋ฃ reference format with per-entry justification โ adapted for the meeting domain (seed = decisions/actions/topics; target = each action item/decision). Read at Stage 5.