skills/team/transcript-capture/SKILL.md
Converts raw Zoom/Slack AI-generated transcripts into structured capture documents for spec-driven development. Uses per-block human review to filter small talk and off-topic content. The PM guides what is in scope; the skill structures that judgment. Use when given a raw Zoom transcript, Slack AI-generated meeting summary, or pasted meeting notes that need to be converted into a structured capture document for spec-driven development.
npx skillsauth add michaelalber/ai-toolkit transcript-captureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
"Information is not knowledge. The map is not the territory. The transcript is not the meeting." -- Adapted from Alfred Korzybski
"The problem with AI-generated meeting summaries is not that they are wrong. It is that they are confidently, plausibly, usefully wrong in exactly the right places."
Zoom, Slack, and Teams AI summaries are high-noise artifacts. They contain small talk, tangential discussions, resolved disagreements, social coordination, and meeting logistics alongside genuine requirements. An AI that processes them without human guidance will extract all of it — or worse, hallucinate a synthesis that sounds like requirements but reflects the model's priors rather than the stakeholder's intent.
This skill does not replace PM judgment. It structures it. The PM provides context before filtering begins, reviews candidates block by block, and annotates ambiguous items. The skill organizes the judgment workflow so nothing is silently dropped and every accepted item is traceable to its source.
What this skill does: Accepts raw transcript text or a file path, segments into topical conversation blocks, scores each block for relevance, presents each to the PM for accept/reject/annotate decision, produces a structured capture markdown with DRAFT-NNN IDs.
What this skill does NOT do: Auto-accept any block, invent requirements from ambiguous phrasing, filter silently, or push to Confluence without explicit PM instruction.
The full domain-principle set, AI discipline rules, anti-pattern catalog, and error-recovery
procedures live in references/discipline-and-recovery.md. Signal-type definitions live in
references/signal-types.md.
| Query | When to Call |
|-------|-------------|
| search_knowledge("requirements extraction meeting transcript interview") | Start of FILTER — ground extraction heuristics in authoritative requirements engineering practices |
| search_knowledge("acceptance criteria given when then format") | Before OUTPUT — confirm output format for extracted requirements |
| search_knowledge("stakeholder requirements elicitation ambiguity") | When flagging uncertain blocks — calibrate uncertainty thresholds |
Do not repeat the same query within a session. Cite the source path if a heuristic is drawn from KB content.
The INTAKE–FILTER–REVIEW–OUTPUT loop. Fill-in templates for every phase are in
references/capture-templates.md.
.txt or .md)references/capture-templates.md) — all six fieldsDo not proceed to FILTER without all six context fields. If the PM skips a field, ask for it specifically. The capture sensitivity field (standard | thorough) sets how aggressively soft signals are captured — see the template reference.
search_knowledge("requirements extraction meeting transcript interview") to calibrateB-001, ...), Speaker(s), Timestamp / line range, Topic summary, Relevance score, Relevance reason, Signal type(s)Relevance Scoring:
| Score | Criteria |
|-------|----------|
| HIGH | Directly names a feature, constraint, requirement, or decision within in-scope topics. Speaker is an authoritative stakeholder. |
| MEDIUM | Touches an in-scope topic but with uncertainty, indirectly, or from a non-authoritative speaker. |
| LOW | Tangentially related. Requires PM judgment. |
| SKIP | Clearly out-of-scope: logistics, small talk, unrelated project discussion, repeated content. |
SKIP blocks are not presented for review — they are logged in the drop log, available on request.
Present each non-SKIP block individually using the Per-Block Presentation Format
(references/capture-templates.md). Do not present the next block until the PM responds to the
current one. Order: HIGH → MEDIUM → LOW.
Review Rules: Present one block at a time and wait. If the PM requests full block context, provide 10 additional lines. If the PM requests the SKIP log, show it immediately. Allow re-review of previously decided blocks without friction. Do not editorialize on PM decisions. After all blocks are reviewed, post a brief summary (accepted / rejected / flagged / skipped counts) before OUTPUT.
search_knowledge("acceptance criteria given when then format") to confirm output formatDRAFT-NNN IDs to all extracted requirements<transcript-capture-state>
phase: intake | filter | review | output
project: [project or client name]
meeting: [meeting name and date]
capture_sensitivity: standard | thorough
blocks_total: N
blocks_high: N
blocks_medium: N
blocks_low: N
blocks_skip: N
blocks_reviewed: N
blocks_accepted: N
blocks_rejected: N
blocks_flagged: N
current_block: B-[NNN] | complete
output_path: [file path, or "pending"]
last_action: [what was just done]
next_action: [what should happen next]
</transcript-capture-state>
Default output path: captures/[YYYY-MM-DD]-[meeting-slug].md.
Header: # [Meeting Name] — [Date] — [Project / Client]
Sections: Participants | Summary (2–3 sentences) | Key Decisions (statement + source attribution) | Requirements Extracted (DRAFT-NNN + statement + source, with ⚠ [UNCERTAIN] or 🔍 [NEEDS-CLARIFICATION] tags) | Open Questions (question + owner) | Action Items (owner + due date) | Drop Log (Block / Score / Reason / PM Decision).
Session Opening: Explain the 4-phase process (intake → filter → review → output), state that nothing is silently dropped, ask for transcript location, meeting purpose, and project. Emit the initial <transcript-capture-state> with phase: intake.
Full document template and session-opening detail: references/capture-templates.md.
email-capture — Use when the intake source is an email thread instead of a meeting transcript. Both produce the same DRAFT-NNN format; use capture-consolidate to merge outputs.capture-consolidate — Run after one or more capture sessions to assign canonical REQ-XXX IDs, deduplicate overlapping requirements, and surface contradictions.jira-review — After capture-consolidate produces the final bundle, assess whether requirements are ready to decompose into Jira tickets.confluence-guide-writer — If the final capture document should be published as a stakeholder-facing artifact, use this skill to format and publish it after PM approval.development
Interviews the user relentlessly about a plan, decision, or idea — one question at a time, each with a recommended answer. Shared engine behind "grill-me" and "grill-with-docs". Use on any "grill" trigger phrase or to stress-test thinking. Do NOT use to build the plan; it ends at shared understanding, not implementation.
testing
Runs a relentless interview to sharpen a plan or design, capturing the decisions as ADRs and a glossary along the way. Use when the user wants to be grilled AND wants the session to leave durable domain documentation behind. Do NOT use for a throwaway stress-test with no artifacts; use grill-me instead.
tools
OWASP-based security review of Vue/TypeScript front-ends. Detects framework (Vite/Vue CLI/Nuxt), entry points, and data flows; scans the OWASP Top 10 (2025) mapped to Vue client-side risks (raw-HTML XSS via v-html, URL/protocol injection, bundled secrets, insecure token storage, dependency CVEs, missing CSP, open redirects, router guard bypass); emits an exec summary plus graded findings. Use to audit Vue for vulnerabilities. Not for architecture grading (vue-architecture-checklist).
tools
Analyzes legacy Vue codebases and produces actionable modernization plans. Primary migration paths include Options API to Composition API, Vue 2 to Vue 3, Vue CLI to Vite, JavaScript to TypeScript, Vue Test Utils/Karma/Mocha to Vitest + Vue Testing Library, legacy Vuex to Pinia, and removed-in-Vue-3 pattern cleanup (filters, event bus, `$listeners`). Does NOT perform the migration — assesses, quantifies risk, and plans.