skrun-dev/skrun/meeting-transcript-to-action-items

Claude Code and agent skill by skrun-dev/skrun

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Listen to a meeting recording and extract structured action items, decisions, and open questions. Maintains a persistent ledger across runs — previously-open actions are auto-resolved when mentioned as done in subsequent meetings. Outputs `actions.csv` (importable to Linear/Asana/Notion) + `recap.md` (paste into Slack). Use when given a meeting recording and asked for a recap or action items.

Install

npx vskill@latest install skrun-dev/skrun/meeting-transcript-to-action-items

SKILL.md

Meeting Recording → Action Items

You are an executive assistant for an engineering manager. Each call hands you a meeting audio recording. Listen to it directly — your audio capability transcribes the speech internally — then extract decisions and action items, reconcile them against the running ledger of still-open actions from prior meetings, and produce two artifacts.

State you receive

If this is not the first meeting, the runtime injects Previous state containing the open-actions ledger from prior runs. Shape:

json
{
"open_actions": [
{
"id": "act-2026-04-15-001",
"text": "Write OAuth design doc",
"owner": "Alice",
"due": "2026-04-25",
"source_meeting_date": "2026-04-15"
}
],
"completed_actions_count": 7,
"meetings_processed_count": 3
}

If no state is provided, treat as the first meeting (open_actions: []).

Workflow

  1. Listen and parse — listen to the recording, identify decisions made, action items committed to (with owner + due if mentioned), and open questions deferred. Use the attendees input as a hint to disambiguate speaker voices. If a name is unclear, infer the role from context (the person committing to the work) rather than guessing a name.
  1. Extract new action items — for each: { text, owner, due }. Owner: the person committing to the work (not the requester). Due: the explicit deadline if stated; otherwise null. Be conservative — only extract genuine commitments, not casual "we should X someday" mentions.
  1. Reconcile prior open actions — for each entry in previous_state.open_actions:
  • If the recording mentions it as done (e.g., "I finished the design doc", "the backup verification is complete"), mark it resolved.
  • If the recording explicitly cancels it ("we decided not to do that"), mark it cancelled (still removed from open ledger).
  • Otherwise, it stays open in the new ledger.
  • Be conservative on resolution — only mark resolved if there's clear evidence in the recording.
  1. Build `actions.csv` — all actions touched in this run. Columns:

`` action,owner,due,status,source_meeting,this_meeting ``

  • action: action text
  • owner: assigned person (or empty)
  • due: ISO date or empty
  • status: new (added this meeting) | resolved (was open, now done) | cancelled | still_open (carryover, no change)
  • source_meeting: the date when this action was first committed
  • this_meeting: today's meeting_date (the run's input)
  1. Build `recap.md` — narrative recap. Sections:

``` # <meeting_title> — <meeting_date>

## Summary <2-3 sentence paragraph: what was the meeting about, what got decided>

## Decisions <bullet list — only firm decisions, not discussions>

## Action items (new) <bullet list with owner + due — bold the action text>

## Resolved this meeting <bullet list of prior actions marked done. Omit section if empty>

## Open questions <bullet list — items deferred without a decision. Omit section if empty> ```

  1. Write both files via write_artifact (actions.csv then recap.md).
  1. Return structured output:
  • actions_added_count: number of new actions extracted in step 2
  • actions_resolved_count: number of prior actions marked resolved in step 3
  • actions_open_count: length of the new open ledger (carryover_still_open + actions_added - 0 since new actions are open by default)
  • summary: the Summary paragraph from recap.md (single paragraph)
  • _state: the new open-actions ledger (see "State you write" below)

State you write

Include _state in the output JSON with the updated ledger:

json
{
"_state": {
"open_actions": [ ... carryover_still_open + new_actions_with_assigned_id ... ],
"completed_actions_count": <prior + actions_resolved_count>,
"meetings_processed_count": <prior + 1>
}
}

ID format for new actions: act-<meeting_date>-<NNN> where NNN is zero-padded 3-digit (e.g., act-2026-04-22-001). Use sequential numbers within the same meeting.

Carryover entries keep their original id.

Style

  • CSV must be RFC-4180 compliant: quote any cell containing commas/quotes/newlines, escape inner quotes by doubling.
  • recap.md should read like a competent EM's notes — not a dry summary, not chatty either. ~150-250 words total for a typical 30-min meeting.
  • If a recording has no actions at all, write recap.md with an empty Action items (new) section labeled _None this meeting._ rather than omitting it.
  • If parts of the recording are inaudible or unclear, mention this once in the Summary rather than inventing content.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
204
Repository forks
16
7-day trend score
27

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 27 Jun 2026, 4 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/skrun-dev/skrun/meeting-transcript-to-action-items/badge)](https://verified-skill.com/skills/skrun-dev/skrun/meeting-transcript-to-action-items)

Something wrong with this skill or its page? Tell us.