name: minutes-record description: Start or stop recording a meeting, call, or voice memo. Use this whenever the user says "record", "start recording", "capture this meeting", "stop recording", "I'm in a meeting", "take notes on this call", or wants to transcribe live audio. Also use when they ask about recording status or want to know if something is being recorded. triggers:
- record
- start recording
- capture this meeting
- stop recording
- I'm in a meeting
- take notes on this call
user_invocable: true
metadata:
display_name: Minutes Record
short_description: Start or stop recording a meeting, call, or voice memo. Use this whenever the user says "record", "start recording", "capture this meeting", "stop recording", "I'm in a meeting", "take notes on this call", or wants to transcribe live audio. Also use when they ask about recording status or want to know if something is being recorded.
default_prompt: Use Minutes Record for this task.
site_category: Capture
site_example: /minutes-record
site_best_for: Start or stop a meeting, call, or voice memo recording.
assets:
scripts: []
templates: []
references:
- references/audio-devices.md output: claude: path: .claude/plugins/minutes/skills/minutes-record/SKILL.md codex: path: .agents/skills/minutes/minutes-record/SKILL.md tests: golden: true lint_commands: true
/minutes-record
Record audio from the microphone, transcribe it locally (whisper.cpp or parakeet.cpp), and save as searchable markdown.
How it works
Recording is a two-step process — start and stop. Between those two commands, audio is captured continuously from the default input device.
Start recording:
minutes record
# Or with a title:
minutes record --title "Weekly standup with Alex"
The process runs in the foreground. It captures audio from whatever input device is active — the built-in MacBook mic for in-person conversations, or a BlackHole virtual audio device for system audio (Zoom, Meet, Teams calls).
Stop recording:
minutes stop
This sends a signal to the recording process, which then:
- Stops audio capture
- Transcribes the audio locally via whisper.cpp or parakeet.cpp (no cloud, no data leaves the machine)
- Saves the transcript as a markdown file in
~/meetings/ - Prints the output path and word count as JSON
Live transcript during recording:
While recording, Minutes streams a real-time transcript to ~/.minutes/live-transcript.jsonl. You can read it with:
minutes transcript # all lines
minutes transcript --since 42 # lines after cursor
minutes transcript --since 5m # last 5 minutes
minutes transcript --status # check if active
This lets you follow what's being discussed mid-meeting. The live output is rougher than the final transcript produced after stop -- it prioritizes speed over accuracy.
Check status:
minutes status
Returns JSON: {"recording": true, "pid": 12345} or {"recording": false}
What you get
A markdown file at ~/meetings/YYYY-MM-DD-title.md with:
- YAML frontmatter (title, date, duration, type)
- Timestamped transcript
- Summary, decisions, and action items (if LLM summarization is configured)
File permissions are set to 0600 (owner-only) because transcripts contain sensitive content.
First-time setup
If the user hasn't set up minutes before, they need a speech model:
Whisper (default):
minutes setup --model small
This downloads a ~466MB model. For faster but lower quality: --model tiny (75MB). For best quality: --model large-v3 (3.1GB).
Parakeet (opt-in, lower WER, fast on Apple Silicon):
minutes setup --parakeet # English (tdt-ctc-110m, ~220MB)
minutes setup --parakeet --parakeet-model tdt-600m # Multilingual v3 (~1.2GB)
Requires parakeet.cpp installed. See docs/PARAKEET.md for full setup.
Gotchas
- "model not found" → Run
minutes setup --model small(whisper) orminutes setup --parakeet(parakeet). This is the most common first-run error. - "already recording" → Run
minutes stopfirst, orminutes statusto check. If the PID file is stale (process crashed),minutes stopwill clean it up. - No audio captured / empty transcript → Check that the right input device is selected in System Settings > Sound. On MacBooks, the default mic works for in-person conversations but won't capture system audio.
- For Zoom/Meet/Teams audio → You need BlackHole to capture system audio. See
references/audio-devices.mdin this skill folder for the full setup guide. - Recording runs but transcription is garbage → The
tinymodel is fast but low quality. Upgrade tosmallormediumfor real meetings:minutes setup --model small. - "permission denied" on output file → Output files are
0600(owner-only). This is intentional — transcripts contain sensitive content. Don't chmod them to be world-readable. - Long meetings (>2 hours) → Transcription time scales with duration. A 2-hour meeting with the
smallmodel takes ~3-5 minutes on Apple Silicon. Thetinymodel is ~4x faster but much less accurate. - Recording process disappeared → If you close the terminal tab where
minutes recordis running, the recording stops but may not process. Always useminutes stopfrom another terminal.