{"id":"c0e45996-8d88-4f26-862e-16ff95250f33","shortId":"JRuJyS","kind":"skill","title":"meeting-autopilot","tagline":"Turn meeting transcripts into operational outputs — action items, decisions, follow-up email drafts, and ticket drafts. Not a summarizer. An operator. Accepts VTT, SRT, or plain text. Multi-pass LLM extraction.","description":"# ✈️ Meeting Autopilot\n\nTurn meeting transcripts into structured operational outputs — NOT just summaries.\n\n## Activation\n\nThis skill activates when the user mentions:\n- \"meeting transcript\", \"meeting notes\", \"meeting autopilot\"\n- \"action items from meeting\", \"meeting follow-up\"\n- \"process this transcript\", \"analyze this meeting\"\n- \"extract decisions from meeting\", \"meeting email draft\"\n- Uploading or pasting a VTT, SRT, or text transcript\n\n## Permissions\n\n```yaml\npermissions:\n  exec: true          # Run extraction scripts\n  read: true          # Read transcript files\n  write: true         # Save history and reports\n  network: true       # LLM API calls (Anthropic or OpenAI)\n```\n\n## Requirements\n\n- **bash**, **jq**, **python3**, **curl** (typically pre-installed)\n- **ANTHROPIC_API_KEY** or **OPENAI_API_KEY** environment variable\n\n## Agent Workflow\n\n### Step 1: Get the Transcript\n\nAsk the user for their meeting transcript. Accept any of:\n- A **file path** to a VTT, SRT, or TXT file\n- **Pasted text** directly in the conversation\n- A **file upload**\n\nThe skill auto-detects the format (VTT, SRT, or plain text).\n\n**Important:** This skill does NOT do audio transcription. If the user has an audio/video file, suggest they use:\n- Zoom/Google Meet/Teams built-in transcription\n- Otter.ai or Fireflies.ai for recording + transcription\n- `whisper.cpp` for local transcription\n\n### Step 2: Get Optional Context\n\nAsk for (but don't require):\n- **Meeting title** — helps with email subject lines and report headers\n- If not provided, the skill derives it from the filename or uses \"Meeting [date]\"\n\n### Step 3: Run the Autopilot\n\nSave the transcript to a temporary file if pasted, then run:\n\n```bash\nbash \"$SKILL_DIR/scripts/meeting-autopilot.sh\" <transcript_file> --title \"Meeting Title\"\n```\n\nOr from stdin:\n```bash\necho \"$TRANSCRIPT\" | bash \"$SKILL_DIR/scripts/meeting-autopilot.sh\" - --title \"Meeting Title\"\n```\n\nThe script handles all three passes automatically:\n1. **Parse** — normalize the transcript format\n2. **Extract** — pull out decisions, action items, questions via LLM\n3. **Generate** — create email drafts, ticket drafts, beautiful report\n\n### Step 4: Present the Report\n\nThe script outputs a complete Markdown report to stdout. Present it directly — the formatting is designed to look great in Slack, email, or any Markdown renderer.\n\nThe report includes:\n- 📊 Overview table (counts by category)\n- ✅ Decisions with rationale\n- 📋 Action items table (owner, deadline, status)\n- ❓ Open questions\n- 🅿️ Parking lot items\n- 📧 Follow-up email draft(s) — ready to send\n- 🎫 Ticket/issue drafts — ready to file\n\n### Discord v2 Delivery Mode (OpenClaw v2026.2.14+)\n\nWhen the conversation is happening in a Discord channel:\n\n- Send a compact first summary (decision count, action-item count, top owners), then ask if the user wants full report sections.\n- Keep the first response under ~1200 characters and avoid long tables in the first message.\n- If Discord components are available, include quick actions:\n  - `Show Action Items`\n  - `Show Follow-Up Email Draft`\n  - `Show Ticket Drafts`\n- If components are not available, provide the same follow-ups as a numbered list.\n- Prefer short follow-up chunks (<=15 lines per message) for long reports.\n\n### Step 5: Offer Next Steps\n\nAfter presenting the report, offer:\n1. \"Want me to refine any of the email drafts?\"\n2. \"Should I adjust any action item assignments?\"\n3. \"Want to save this report to a file?\"\n4. \"I can also process another meeting — transcripts from different meetings build up a tracking history.\"\n\n### Error Handling\n\n| Situation | Behavior |\n|-----------|----------|\n| No API key set | Print branded error with setup instructions |\n| Transcript too short (<20 chars) | Suggest pasting more content or checking file path |\n| Empty LLM response | Report API issue, suggest checking key/network |\n| No items extracted | Report \"meeting may not have had actionable content\" — still show key points if any |\n| Unsupported file format | Suggest --format txt to force plain text parsing |\n\n### Notes for the Agent\n\n- **The report is the star.** Present it in full. Don't summarize the summary.\n- **Follow-up emails are the WOW moment.** Highlight them — they're ready to copy and send.\n- **Be proactive:** After the report, suggest specific improvements based on what was found.\n- **Cross-meeting tracking:** Items are automatically saved to `~/.meeting-autopilot/history/`. Mention this — it's a preview of the v1.1 feature that tracks commitments across meetings.\n- If the transcript has no speaker labels, mention that adding \"Speaker: text\" format improves attribution accuracy.\n\n## References\n\n- `scripts/meeting-autopilot.sh` — Main orchestrator (the only entry point you need)\n- `scripts/parse-transcript.sh` — Transcript parser (VTT/SRT/TXT → JSONL)\n- `scripts/extract-items.sh` — LLM extraction + classification\n- `scripts/generate-outputs.sh` — Operational output generation + report formatting","tags":["meeting","autopilot","cacheforge","skills","cacheforge-ai","agent-skills","ai-agents","clawhub","devops","discord-v2","kubernetes","openclaw"],"capabilities":["skill","source-cacheforge-ai","skill-meeting-autopilot","topic-agent-skills","topic-ai-agents","topic-cacheforge","topic-clawhub","topic-devops","topic-discord-v2","topic-kubernetes","topic-openclaw","topic-prometheus"],"categories":["cacheforge-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cacheforge-ai/cacheforge-skills/meeting-autopilot","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cacheforge-ai/cacheforge-skills","source_repo":"https://github.com/cacheforge-ai/cacheforge-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (4,978 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:04.508Z","embedding":null,"createdAt":"2026-05-18T13:14:38.462Z","updatedAt":"2026-05-18T19:09:04.508Z","lastSeenAt":"2026-05-18T19:09:04.508Z","tsv":"'/.meeting-autopilot/history':664 '1':141,297,500 '1200':432 '15':483 '2':221,303,510 '20':560 '3':256,313,518 '4':323,527 '5':491 'accept':26,152 'accuraci':695 'across':678 'action':10,63,308,364,413,449,451,515,588 'action-item':412 'activ':49,52 'ad':689 'adjust':513 'agent':138,610 'also':530 'analyz':74 'anoth':532 'anthrop':117,129 'api':115,130,134,548,574 'ask':145,225,419 'assign':517 'attribut':694 'audio':192 'audio/video':199 'auto':177 'auto-detect':176 'automat':296,661 'autopilot':3,38,62,259 'avail':446,466 'avoid':435 'base':650 'bash':121,271,272,281,284 'beauti':320 'behavior':546 'brand':552 'build':538 'built':207 'built-in':206 'call':116 'categori':360 'channel':404 'char':561 'charact':433 'check':567,577 'chunk':482 'classif':714 'commit':677 'compact':407 'complet':331 'compon':444,463 'content':565,589 'context':224 'convers':170,398 'copi':639 'count':358,411,415 'creat':315 'cross':656 'cross-meet':655 'curl':124 'date':254 'deadlin':368 'decis':12,78,307,361,410 'deliveri':392 'deriv':246 'design':342 'detect':178 'differ':536 'dir/scripts/meeting-autopilot.sh':274,286 'direct':167,338 'discord':390,403,443 'draft':17,20,83,317,319,380,386,458,461,509 'echo':282 'email':16,82,235,316,348,379,457,508,628 'empti':570 'entri':702 'environ':136 'error':543,553 'exec':96 'extract':36,77,99,304,581,713 'featur':674 'file':105,156,164,172,200,266,389,526,568,597 'filenam':250 'fireflies.ai':212 'first':408,429,440 'follow':14,69,377,455,471,480,626 'follow-up':13,68,376,454,470,479,625 'forc':603 'format':180,302,340,598,600,692,720 'found':654 'full':424,619 'generat':314,718 'get':142,222 'great':345 'handl':292,544 'happen':400 'header':240 'help':233 'highlight':633 'histori':109,542 'import':186 'improv':649,693 'includ':355,447 'instal':128 'instruct':556 'issu':575 'item':11,64,309,365,375,414,452,516,580,659 'jq':122 'jsonl':710 'keep':427 'key':131,135,549,592 'key/network':578 'label':686 'line':237,484 'list':476 'llm':35,114,312,571,712 'local':218 'long':436,488 'look':344 'lot':374 'main':698 'markdown':332,351 'may':584 'meet':2,5,37,40,57,59,61,66,67,76,80,81,150,231,253,276,288,533,537,583,657,679 'meet/teams':205 'meeting-autopilot':1 'mention':56,665,687 'messag':441,486 'mode':393 'moment':632 'multi':33 'multi-pass':32 'need':705 'network':112 'next':493 'normal':299 'note':60,607 'number':475 'offer':492,499 'open':370 'openai':119,133 'openclaw':394 'oper':8,25,44,716 'option':223 'orchestr':699 'otter.ai':210 'output':9,45,329,717 'overview':356 'owner':367,417 'park':373 'pars':298,606 'parser':708 'pass':34,295 'past':86,165,268,563 'path':157,569 'per':485 'permiss':93,95 'plain':30,184,604 'point':593,703 'pre':127 'pre-instal':126 'prefer':477 'present':324,336,496,616 'preview':670 'print':551 'proactiv':643 'process':71,531 'provid':243,467 'pull':305 'python3':123 'question':310,371 'quick':448 'rational':363 're':636 'read':101,103 'readi':382,387,637 'record':214 'refer':696 'refin':504 'render':352 'report':111,239,321,326,333,354,425,489,498,523,573,582,612,646,719 'requir':120,230 'respons':430,572 'run':98,257,270 'save':108,260,521,662 'script':100,291,328 'scripts/extract-items.sh':711 'scripts/generate-outputs.sh':715 'scripts/meeting-autopilot.sh':697 'scripts/parse-transcript.sh':706 'section':426 'send':384,405,641 'set':550 'setup':555 'short':478,559 'show':450,453,459,591 'situat':545 'skill':51,175,188,245,273,285 'skill-meeting-autopilot' 'slack':347 'source-cacheforge-ai' 'speaker':685,690 'specif':648 'srt':28,89,161,182 'star':615 'status':369 'stdin':280 'stdout':335 'step':140,220,255,322,490,494 'still':590 'structur':43 'subject':236 'suggest':201,562,576,599,647 'summar':23,622 'summari':48,409,624 'tabl':357,366,437 'temporari':265 'text':31,91,166,185,605,691 'three':294 'ticket':19,318,460 'ticket/issue':385 'titl':232,275,277,287,289 'top':416 'topic-agent-skills' 'topic-ai-agents' 'topic-cacheforge' 'topic-clawhub' 'topic-devops' 'topic-discord-v2' 'topic-kubernetes' 'topic-openclaw' 'topic-prometheus' 'track':541,658,676 'transcript':6,41,58,73,92,104,144,151,193,209,215,219,262,283,301,534,557,682,707 'true':97,102,107,113 'turn':4,39 'txt':163,601 'typic':125 'unsupport':596 'up':472 'upload':84,173 'use':203,252 'user':55,147,196,422 'v1.1':673 'v2':391 'v2026.2.14':395 'variabl':137 'via':311 'vtt':27,88,160,181 'vtt/srt/txt':709 'want':423,501,519 'whisper.cpp':216 'workflow':139 'wow':631 'write':106 'yaml':94 'zoom/google':204 '🅿️':372","prices":[{"id":"fdca80b7-b584-4d97-bf1e-3f558d2bec2a","listingId":"c0e45996-8d88-4f26-862e-16ff95250f33","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cacheforge-ai","category":"cacheforge-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:38.462Z"}],"sources":[{"listingId":"c0e45996-8d88-4f26-862e-16ff95250f33","source":"github","sourceId":"cacheforge-ai/cacheforge-skills/meeting-autopilot","sourceUrl":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/meeting-autopilot","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:38.462Z","lastSeenAt":"2026-05-18T19:09:04.508Z"}],"details":{"listingId":"c0e45996-8d88-4f26-862e-16ff95250f33","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cacheforge-ai","slug":"meeting-autopilot","github":{"repo":"cacheforge-ai/cacheforge-skills","stars":8,"topics":["agent-skills","ai-agents","cacheforge","clawhub","devops","discord-v2","kubernetes","openclaw","prometheus"],"license":"mit","html_url":"https://github.com/cacheforge-ai/cacheforge-skills","pushed_at":"2026-02-22T20:49:48Z","description":"⚡ SOTA agent skills for OpenClaw — observability, security, code quality, incident response, and more. Built by Anvil AI.","skill_md_sha":"c47ceeb57c4055e1b1de53333244c86dbf42787e","skill_md_path":"skills/meeting-autopilot/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/meeting-autopilot"},"layout":"multi","source":"github","category":"cacheforge-skills","frontmatter":{"name":"meeting-autopilot","description":"Turn meeting transcripts into operational outputs — action items, decisions, follow-up email drafts, and ticket drafts. Not a summarizer. An operator. Accepts VTT, SRT, or plain text. Multi-pass LLM extraction."},"skills_sh_url":"https://skills.sh/cacheforge-ai/cacheforge-skills/meeting-autopilot"},"updatedAt":"2026-05-18T19:09:04.508Z"}}