meeting-transcript-parse
Paste into Claude Code, Claude.ai, the desktop app, or the browser extension — ⌘/Ctrl+V. ✓ Copied. Switch to Claude and paste — ⌘/Ctrl+V.
Meeting Transcript Parse
Transform raw meeting transcripts and rough notes into a clean, normalized meeting record. The output is a structured markdown document that serves as the source of truth for every downstream artifact: decision log, action register, follow-up email, and Jira push.
When this skill applies
- User pastes a Teams/Zoom auto-caption export, a recording transcript, or a rough notes document
- User provides a file path to a
.txt,.docx,.md, or.vtttranscript - User asks to "pull actions," "clean up the meeting notes," "write a summary," or "who owned what"
- After any client status call, sprint review, steering committee, or internal planning session
Skip when the user already has a clean normalized record — go directly to decision-log-builder, action-item-tracker, or jira-confluence-push.
Workflow
Step 1 — Load and orient
Read all provided files or pasted content. Identify:
- Meeting type: Status call / steering committee / sprint review / discovery workshop / internal / other
- Date and time (extract from transcript metadata or participant timestamps; ask if absent)
- Duration (compute from first/last timestamp if available)
- Participants: extract all named speakers; deduplicate by person, not by message
- Platform context: detect references to Sitecore, Optimizely, Umbraco, Azure DevOps, Jira, Confluence, or specific project names — flag these for downstream use
Confirm participant list and meeting type with the user before proceeding if either is ambiguous.
Step 2 — Segment the transcript
Break the raw content into logical conversation segments. Each segment corresponds to one agenda item, topic shift, or distinct discussion thread. Label each:
[SEGMENT: <topic label>] [<start timestamp or position>]
If no timestamps exist, infer topic boundaries from conversational signals ("moving on," "next item," "let's talk about," "before we close").
Step 3 — Extract and tag content
Within each segment, tag every substantive contribution:
| Tag | Use when |
|---|---|
[DECISION] |
A conclusion was reached and stated (even informally — "ok, we'll go with option B") |
[ACTION] |
A task was assigned or self-assigned with at least an implied owner |
[QUESTION] |
A question was raised that was not answered in this meeting |
[RISK] |
A concern, blocker, or dependency was flagged |
[PARKING LOT] |
Topic was deferred explicitly or implicitly to a future meeting |
[INFO] |
Context, background, or update shared — no action or decision required |
Every [DECISION] must capture: what was decided, who decided it (role, not personal name for client notes), and any conditions or caveats.
Every [ACTION] must capture: what task, who owns it (name + role), and target date (explicit or inferred — flag as [DATE TBD] if absent).
Step 4 — Build the normalized record
Produce the structured meeting record using the template in templates.md. Sections in order:
- Meeting header — type, date, duration, attendees (name + role + org)
- Agenda items covered — bulleted list; mark items not reached as
[NOT REACHED] - Discussion summary — one paragraph per segment; factual, past-tense, no editorializing
- Decisions — numbered list; each entry: decision text, decision-maker role, conditions
- Action items — table: # | Action | Owner | Due Date | Status (Open)
- Unresolved questions — numbered list; each entry: question text, who raised it, what's needed to resolve
- Parking lot — bulleted list; each entry: topic, why deferred, suggested next meeting slot
- Risks and blockers flagged — numbered list; each entry: risk description, raised by role, current status
Step 5 — Self-check
Before returning:
- Every
[DECISION]has a decision-maker role (not just "the group") - Every
[ACTION]has an owner name and a due date (or[DATE TBD]) - No participant is identified by personal name in sections that will be shared with clients; roles are used instead (or first name only for internal-only outputs)
- Parking-lot items are not silently dropped — they appear explicitly
- The action table is sortable by owner (alphabetical by last name or role)
Return the normalized record as a markdown block. Remind the user which downstream skills can consume it: decision-log-builder, action-item-tracker, meeting-followup-draft, jira-confluence-push.
Meeting type adapter notes
| Meeting type | Special handling |
|---|---|
| Status call | Flag any scope change signals — even casual ("we might add...") — as [RISK] |
| Steering committee | Elevate [DECISION] entries — these are formal governance decisions; include quorum note if detectable |
| Sprint review | Link accepted/rejected items to sprint goal if mentioned; flag velocity signals |
| Discovery workshop | See discovery-synthesizer plugin for deeper synthesis; this skill produces the raw record only |
| Internal | Relax client-anonymization rules; names can appear in action table |
Reference files
templates.md— full section templates with placeholder guidance and formatting examples
Technical details
- Plugin
- meeting-to-action
- Author
- Dakota Smith
- Skill name
meeting-transcript-parse- Maturity
- experimental
- Security review
- No security review
- Owners
-
- delivery
- Argument hint
[paste transcript or @file-path] [--type status-call|steering-committee|sprint-review|discovery|internal] [--platform sitecore|optimizely|umbraco|azure|agnostic] [--output markdown|json]- Allowed tools
-
ReadWriteGlob
- Source
plugins/meeting-to-action/skills/meeting-transcript-parse/SKILL.md
Edit this skill on GitHub — opens GitHub's web editor. No git knowledge needed.