‹ 首页

meeting-notes

@toongri · 收录于 昨天 · 上游提交 昨天

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.

适合你,如果经常需要整理会议记录并清晰提炼讨论要点和待办事项

/ 通过 npx 安装 校验哈希
npx oh-my-skill add toongri/oh-my-toong-playground/meeting-notes
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- toongri/oh-my-toong-playground/meeting-notes
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify toongri/oh-my-toong-playground/meeting-notes
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
25GitHub stars
~3.4K最小装载
~9.6K含声明引用
~9.6K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 731a80a · 表述以原文为准
它做什么

装上后,Claude 会把原始会议记录(转录文本、笔记等)转化为一篇结构化的 Markdown 报告,分离讨论、决定和行动项,提取行动项并附上原文引证,关联相关文档和工单,为每个行动项推荐下一步操作。只生成报告,不执行任何操作。

什么时候触发

当用户要求整理会议记录、提取行动项、总结会议时触发,例如说“회의록 정리”、“회의 정리해줘”、“transcript to action items”等。

装好后可以这样说
会输出结构化的报告,包含讨论、决定和行动项。
会关联相关文档和工单,并推荐后续步骤。
会验证行动项真实性,未明确的标记为待定。
技能原文 SKILL.md作者撰写 · MIT · 731a80a

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:

  1. Grounding — every action item cites a verbatim transcript quote (근거: "..."). An item that cannot cite one is DROPPED, not emitted.
  2. Completeness — the three fields (owner / task / due) are present or explicitly marked [미배정] / [기한 미정]. No blank field is left silent, and no field is fabricated.
  3. 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.
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。