transcribe
Skill0 starsChanged 58 days agoMITView on GitHub
Transcribe a local audio recording and save it as a meeting note. Takes an audio file (mp3/m4a/wav), uploads to OpenAI Whisper, then produces a structured summary written via the `notes` skill schema in `~/work/notes/`.
- Reads credentials
47 other projects use a version of this.
Adopted by
Most recently taken up by
- linxule/carreltheir own version, first seen Nov 8, 2026
- overment/skillstheir own version, first seen Nov 8, 2026
- TserenTserenov/FMT-exocortex-templatetheir own version, first seen Nov 2, 2026
- iwesys/IWEtheir own version, first seen Nov 1, 2026
- thesammykins/skillstheir own version, first seen Nov 1, 2026
- DojoCodingLabs/remotion-superpowerstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use spreadsheet, think and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
JetBrainsSkillspreadsheet
Use when tasks involve creating, editing, analyzing, or formatting spreadsheets (`.xlsx`, `.csv`, `.tsv`) with formula-aware workflows, cached recalculation, and visual review.
Also in 3 projects that use this
vltingSkillthink
Lightweight plan-to-execution pipeline. Explores codebase, runs council deliberation, presents plan for approval, then executes via /run.
Also in 3 projects that use this
robzolkosSkilldone
Reset the working directory for the next task by ensuring no uncommitted changes exist, then switching to the main branch and pulling latest.
Also in 3 projects that use this
JaimeGBASkillingest
Digest an external source (article, paper, transcript, URL, book chapter) and integrate its content into the knowledge base
Also in 3 projects that use this
AnthropicSkillonboarding
Generate an onboarding checklist and first-week plan for a new hire. Use when someone has a start date coming up, building the pre-start task list (accounts, equipment, buddy), scheduling Day 1 and Week 1, or setting 30/60/90-day goals for a new team member.
Also in 3 projects that use this
MicrosoftSkilldiagnose
Use to systematically diagnose why scenarios fail — identifies root causes by analyzing agent traces, codebase, and behavioral patterns
Also in 3 projects that use this
Other versions47 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 47
- openai/skills★ 27ksame name
- gnekt/My-Brain-Is-Full-Crew★ 3.9ksame name
- badlogic/pi-skills★ 2.5ksame name
- greatSumini/cc-system★ 438same name
- JetBrains/skills★ 386same name
- bholmesdev/skills★ 179same name
- DojoCodingLabs/remotion-superpowers★ 153same name
- thiagofinch/mega-brain★ 95same name
- TserenTserenov/FMT-exocortex-template★ 63same name
- jftuga/transcript-critic★ 40same name
37 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- notesSkill
- sign-pdfSkill
- tasksSkill
- voice-modeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 8 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 40 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 60
Never auto-save: before showing the proposed filename + frontmatter + summary preview and getting a "go".
- Distinctive: line 62
Always confirm the meeting: if today's calendar has multiple events that could match - present a numbered list and ask.
- Very specific: line 63
Preserve the raw transcript: Write it to ~/work/recordings/transcripts/<recording-stem>.txt alongside the structured note.
- Distinctive: line 64
Don't chunk silently: If the file is >24 MB, tell the user, then split with ffmpeg into ≤20-minute chunks before uploading.
- Distinctive: line 70
If user passed a path → use it.
- Very specific: line 103
Read the API key from the OPENAI_API_KEY environment variable (or wherever your setup stores it):
- Very specific: line 120
If the response is Thanks for watching!
- Distinctive: line 124
Write the full transcript text to:
- Distinctive: line 132
Read the transcript inline (use the conversation, not a tool).
- Very specific: line 189
No system/call-audio capture - record-call is mic-only, so it gets your side of a call, not the other person's.
- Distinctive: line 190
No speaker diarization - a single-track recording only captures one side clearly unless your recording setup captures both.
- Distinctive: line 191
No automatic Slack/email forwarding of summaries - output is the meeting note file, full stop.
- Distinctive: line 192
No real-time transcription - strictly post-call.
- Very specific: line 193
No re-transcription of the same file unless explicitly asked (the raw .txt from step 5 is the cache).
“Common” is measured: kept by at least 6 in 10 of the 40 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Transcribe
Convert a local audio recording into a structured meeting note. Single-pass: Whisper API for the transcript, then synthesize the note inline using the notes skill's schema. This skill does not require any particular recording tool - bring your own recording (any tool that produces an mp3/m4a/wav file works). On Windows, scripts/record-call.ps1 is included as an optional mic-only call recorder that pairs with it (see Recording with record-call below).
Requirements
- An OpenAI API key with Whisper access, available as the environment variable
OPENAI_API_KEY. How you load that variable into your shell (a.envfile, your OS's secret manager, etc.) is up to you - this skill just expects it to already be set when Claude Code starts, or readable from a file you point it at. curlandjq(or PowerShell's JSON parsing) for calling the API and reading the response.ffmpegon PATH if you ever need to chunk a large file (see step 3), or if you userecord-call(see below).- The
notesskill installed alongside this one - transcribe writes into~/work/notes/using its filename and frontmatter format.
Recording with record-call (optional, Windows only)
scripts/record-call.ps1 starts and stops a mic-only ffmpeg recording in the background and drops finished files straight into the recordings folder this skill reads from. There is no time limit: a recording you forget to stop keeps going until you run record-call stop or the disk fills, so check record-call status if you're not sure. It does not capture system/call audio, only your microphone - so it captures your side of a call, not the other person's, unless your setup routes both into one input device.
record-call start "team sync" # -> ~/work/recordings/2026-05-21_140530_team-sync.mp3
record-call stop
record-call status
record-call list
record-call devices # list audio input devices ffmpeg can seeInstall: copy record-call.ps1, record-call.cmd, and _record-guard.ps1 (from this skill's scripts/ folder) to a folder on your PATH, keeping all three together - record-call.cmd is a thin wrapper so you can type record-call instead of the full PowerShell invocation, and _record-guard.ps1 is a background helper record-call.ps1 spawns, not something you run directly.
Env overrides:
RECORD_CALL_DIR- recordings folder (default~/work/recordings, matching this skill's default).RECORD_CALL_FFMPEG- path toffmpeg.exeif it's not on PATH.RECORD_CALL_MIC- a substring to match your preferred input device name (runrecord-call devicesto see what's available). Without it,record-calljust uses the first device it finds - set this if you have more than one microphone.
Inputs
- Audio file path (optional). If absent, default to the newest
.mp3/.m4a/.wavin~/work/recordings/. - Meeting context (optional). User may pass a meeting name, title, or "for the Tuesday call". If absent, infer from the recording filename slug; if still unclear, ask.
Hard rules
- Never auto-save before showing the proposed filename + frontmatter + summary preview and getting a "go". Same discipline as the
notesskill. - Always use the
notesschema for the output file (frontmatter + filename format defined below). Don't invent a new layout. - Always confirm the meeting if today's calendar has multiple events that could match - present a numbered list and ask. (This step needs a calendar tool wired up; skip it if you don't have one.)
- Preserve the raw transcript. Write it to
~/work/recordings/transcripts/<recording-stem>.txtalongside the structured note. Useful later, cheap to keep. - Don't chunk silently. If the file is >24 MB, tell the user, then split with ffmpeg into ≤20-minute chunks before uploading.
Procedure
1. Resolve the audio file
- If user passed a path → use it. Confirm it exists.
- Else:
Glob ~/work/recordings/*.{mp3,m4a,wav}, sort by mtime, pick newest. Tell the user which file you picked: "Transcribing the latest:2026-05-21_140530_team-sync.mp3(12 min, 4.3 MB). Different file?"
2. Pick / confirm the meeting
Parse the filename slug for hints (team-sync, 1on1-with-sam, etc.) and, if you have a calendar tool wired up, check today's calendar for matching events.
Present matches:
Today's meetings near this recording:
1. 2:00 PM - Team sync (Taylor, Jordan)
2. 4:30 PM - Standup (Morgan, Casey)
Which meeting was this? (or 'none' to fill manually)On a number: prefill title, people, suggested tags from attendee firstnames. On "none": ask the user for title + attendees.
3. Check file size and chunk if needed
size=$(stat -c%s "$file" 2>/dev/null || powershell -c "(Get-Item '$file').Length")- ≤ 24 MB: upload as-is.
24 MB: tell the user the file is too large for a single upload, then chunk with ffmpeg into 20-minute segments at the same encoding:
Upload each chunk separately, concatenate transcripts in order with affmpeg -i "$file" -f segment -segment_time 1200 -c copy "$dir/chunk_%03d.mp3"[chunk N]marker between them.
4. Call Whisper
Read the API key from the OPENAI_API_KEY environment variable (or wherever your setup stores it):
key="$OPENAI_API_KEY"Upload:
curl -s https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $key" \
-F file=@"$file" \
-F model=whisper-1 \
-F response_format=verbose_json \
-F language=enverbose_json gives us segments + timestamps. Parse with jq or PowerShell.
If the response is Thanks for watching! / Japanese / something obviously empty: warn the user the recording was likely silent (mic muted, wrong device, no audio).
5. Save the raw transcript
Write the full transcript text to:
~/work/recordings/transcripts/<recording-stem>.txtWith a small header (file, duration, model). Cheap insurance - never re-pay Whisper for the same file.
6. Synthesize the meeting note
Read the transcript inline (use the conversation, not a tool). Produce a structured summary in this shape:
## Summary
1-3 sentence high-level. What was this call actually about?
## Key decisions
- ...
## Action items
- [ ] @who - what - by when (if mentioned)
## Open questions
- ...
## Raw transcript
See `~/work/recordings/transcripts/<stem>.txt`.Tone: terse, bullet-heavy, no editorializing. If a section has nothing, omit it (don't write "N/A").
7. Confirm and write
Show the proposed:
- Filename (matching
notesschema:YYYY-MM-DD_meeting_<slug>.md) - Full frontmatter block
- The summary body
In one block, then ask: "Save to ~/work/notes/2026-05-21_meeting_team-sync.md? (y / edit / cancel)"
On "y": Write the file. Confirm path back to user.
On "edit": ask what to change, redo from step 6.
On "cancel": don't write. The raw transcript at step 5 is still saved.
Frontmatter
Match notes exactly:
---
type: meeting
date: 2026-05-21
title: Team sync
tags: [#acme-corp, #taylor, #jordan]
people: [taylor, jordan]
source: recording:<absolute-path-to-mp3>
---source: carries the recording path so the user can later trace back to the audio. The transcript file is also implied by the recording stem.
When to ASK vs DECIDE
- Ask: which meeting (if multiple plausible matches today), missing attendees, ambiguous title.
- Decide: file picked from
latestdefault, summary structure, tag suggestions from attendee firstnames (then confirm at step 7).
What this skill does NOT do
- No system/call-audio capture -
record-callis mic-only, so it gets your side of a call, not the other person's. Bring your own mp3/m4a/wav from another tool if you need both sides. - No speaker diarization - a single-track recording only captures one side clearly unless your recording setup captures both.
- No automatic Slack/email forwarding of summaries - output is the meeting note file, full stop.
- No real-time transcription - strictly post-call.
- No re-transcription of the same file unless explicitly asked (the raw
.txtfrom step 5 is the cache).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

