asciinema-recorder
Generate ready-to-copy commands for recording Claude Code sessions with asciinema. Dynamically creates filenames based on workspace and datetime.
Platform: macOS, Linux (requires asciinema CLI)
Why This Skill?
This skill generates ready-to-copy recording commands with:
Dynamic workspace-based filename Datetime stamp for uniqueness Saves to project's tmp/ folder (gitignored) Requirements Component Required Installation asciinema CLI Yes brew install asciinema Workflow Phases Phase 0: Preflight Check
Purpose: Verify asciinema is installed.
Check asciinema CLI
which asciinema && asciinema --version
If asciinema is NOT installed, use AskUserQuestion:
question: "asciinema not found. How would you like to proceed?" header: "Setup" multiSelect: false options: label: "Install asciinema (Recommended)" description: "Run: brew install asciinema (macOS) or apt install asciinema (Linux)" label: "Show manual instructions" description: "Display installation commands for all platforms" label: "Cancel" description: "Exit without recording"
Based on selection:
"Install asciinema" → Run appropriate install command based on OS:
macOS
brew install asciinema
Linux (apt)
sudo apt install asciinema
Linux (pip)
pip install asciinema
Then proceed to Phase 1.0.
"Show manual instructions" → Display the commands above, then exit skill.
"Cancel" → Exit skill without action.
Phase 1.0: Recording Location
Purpose: Let user choose where to save the recording.
Use AskUserQuestion:
question: "Where should the recording be saved?" header: "Location" multiSelect: false options: label: "$PWD/tmp/ (Recommended)" description: "Project tmp directory (gitignored)" label: "~/asciinema/" description: "Global recordings directory" label: "Custom path" description: "Specify your own directory"
Based on selection:
"$PWD/tmp/" → Set OUTPUT_DIR="$PWD/tmp" "~/asciinema/" → Set OUTPUT_DIR="$HOME/asciinema" and create if missing: mkdir -p ~/asciinema "Custom path" → Use user's "Other" input as OUTPUT_DIR Phase 1.1: Recording Options
Purpose: Let user configure recording behavior.
Use AskUserQuestion:
question: "Which recording options would you like?" header: "Options" multiSelect: true options: label: "Add title/description" description: "Include session title in recording metadata (-t flag)" label: "Disable idle time limit" description: "Keep full pauses instead of 2s max (--idle-time-limit 0)" label: "Quiet mode" description: "Suppress asciinema status messages (-q flag)"
Based on selections, build command flags:
"Add title" → Continue to title selection question, add -t "title" flag "Disable idle time limit" → Add --idle-time-limit 0 flag "Quiet mode" → Add -q flag
If "Add title" was selected, follow up with:
question: "Enter a title for this recording:" header: "Title" multiSelect: false options: label: "Use workspace name" description: "Title: ${WORKSPACE}" label: "Use workspace + datetime" description: "Title: ${WORKSPACE} ${DATETIME}" label: "Custom title" description: "Enter your own title"
Based on title selection:
"Use workspace name" → Set TITLE="${WORKSPACE}" "Use workspace + datetime" → Set TITLE="${WORKSPACE} ${DATETIME}" "Custom title" → Use user's "Other" input as TITLE Phase 1.2: Detect Context & Generate Command
Purpose: Generate a copy-paste ready recording command.
Step 1.2.1: Detect Workspace
Extract workspace name from $PWD:
/usr/bin/env bash << 'SKILL_SCRIPT_EOF' WORKSPACE=$(basename "$PWD") echo "Workspace: $WORKSPACE" SKILL_SCRIPT_EOF
Step 1.2.2: Generate Datetime /usr/bin/env bash << 'SKILL_SCRIPT_EOF_2' DATETIME=$(date +%Y-%m-%d_%H-%M) echo "Datetime: $DATETIME" SKILL_SCRIPT_EOF_2
Step 1.2.3: Ensure Output Directory Exists
Create the output directory selected in Phase 1.0:
mkdir -p "${OUTPUT_DIR}"
Step 1.2.4: Construct Command
Build the recording command using:
OUTPUT_DIR from Phase 1.0 (location selection) Flags from Phase 1.1 (options selection) TITLE if "Add title" was selected
Base command
CMD="asciinema rec"
Add flags from Phase 1.1 options
(Claude builds this based on user selections)
Final command format:
asciinema rec ${FLAGS} "${OUTPUT_DIR}/${WORKSPACE}_${DATETIME}.cast"
Example outputs:
Default (no options selected):
asciinema rec /home/user/projects/my-app/tmp/my-app_2025-12-21_14-30.cast
With title + quiet mode:
asciinema rec -t "my-app Demo" -q /home/user/projects/my-app/tmp/my-app_2025-12-21_14-30.cast
With all options:
asciinema rec -t "my-app 2025-12-21 14:30" -q --idle-time-limit 0 ~/asciinema/my-app_2025-12-21_14-30.cast
Phase 2: User Guidance
Purpose: Explain the recording workflow step-by-step.
Present these instructions:
Recording Instructions
- Exit Claude Code - Type
exitor pressCtrl+D - Copy the command shown above
- Paste and run in your terminal (starts a recorded shell)
- Run
claudeto start Claude Code inside the recording - Work normally - everything is captured
- Exit Claude Code - Type
exitor pressCtrl+D - Exit the recording shell - Type
exitor pressCtrl+Dagain
Your recording will be saved to:
$PWD/tmp/{workspace}_{datetime}.cast
Phase 3: Additional Info
Purpose: Provide helpful tips for after recording.
Tips
- Environment variable:
ASCIINEMA_REC=1is set during recording - Playback: Use
asciinema-playerskill orasciinema play file.cast - Upload (optional):
asciinema upload file.cast(requires account) - Markers: Add
asciinema markerduring recording for navigation points
TodoWrite Task Templates Template: Record Claude Code Session 1. [Preflight] Check asciinema CLI installed 2. [Preflight] Offer installation if missing 3. [Context] Detect current workspace from $PWD 4. [Context] Generate datetime slug 5. [Context] Ensure tmp/ directory exists 6. [Command] Construct full recording command 7. [Guidance] Display step-by-step instructions 8. [Guidance] Show additional tips (playback, upload) 9. Verify against Skill Quality Checklist
Post-Change Checklist
After modifying this skill:
Command generation still uses $PWD (no hardcoded paths) Guidance steps remain clear and platform-agnostic TodoWrite template matches actual workflow README.md entry remains accurate Validate with quick_validate.py CLI Options Reference Option Flag Description Title -t Recording title (for asciinema.org) Quiet -q Suppress status messages Append -a Append to existing recording Troubleshooting "Cannot record from within Claude Code"
Cause: asciinema must wrap the program, not be started from inside.
Fix: Exit Claude Code first, then run the generated command.
"Recording file too large"
Cause: Long sessions produce large files.
Fix:
Use asciinema upload to store online instead of locally Split long sessions into smaller recordings "Playback shows garbled output"
Cause: Terminal size mismatch.
Fix: Use -r flag during playback to resize terminal.
Reference Documentation asciinema rec Usage asciinema CLI Options asciinema Markers