asciinema-converter
$
npx mdskill add terrylica/cc-skills/asciinema-converterConverts asciinema .cast files to clean .txt for analysis
- Reduces .cast file size by 950:1 for efficient storage and analysis
- Uses asciinema CLI v2.4+ and standard Unix tools for conversion
- Strips ANSI codes and JSON structure to extract plain text
- Writes output .txt files for direct use with Claude Code Read/Grep tools
SKILL.md
.github/skills/asciinema-converterView on GitHub ↗
---
name: asciinema-converter
description: Convert .cast recordings to .txt for analysis. TRIGGERS - convert cast, cast to txt, strip ANSI, batch convert.
allowed-tools: Read, Bash, Glob, Write, AskUserQuestion
---
# asciinema-converter
Convert asciinema .cast recordings to clean .txt files for Claude Code analysis. Achieves 950:1 compression (3.8GB -> 4MB) by stripping ANSI codes and JSON structure.
> **Platform**: macOS, Linux (requires asciinema CLI v2.4+)
> **Self-Evolving Skill**: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
## When to Use This Skill
Use this skill when:
- Converting .cast recordings to searchable .txt format
- Preparing recordings for Claude Code Read/Grep tools
- Batch converting multiple recordings
- Reducing storage size of session archives
- Extracting clean text from ANSI-coded terminal output
---
## Why Convert?
| Format | Size (22h session) | Claude Code Compatible | Searchable |
| ------ | ------------------ | ---------------------- | ---------- |
| .cast | 3.8GB | No (NDJSON + ANSI) | Via jq |
| .txt | ~4MB | Yes (clean text) | Grep/Read |
**Key benefit**: Claude Code's Read and Grep tools work directly on .txt output.
---
## Requirements
| Component | Required | Installation | Notes |
| ------------- | -------- | ------------------------ | --------------------- |
| **asciinema** | Yes | `brew install asciinema` | v2.4+ for convert cmd |
---
## Workflow Overview
**IMPORTANT**: All phases are MANDATORY. Do NOT skip any phase. AskUserQuestion MUST be used at each decision point.
### Single File Mode (Phases 0-6)
| Phase | Purpose | Key Action |
| ----- | -------------------------- | --------------------------------- |
| 0 | Preflight check | Verify asciinema CLI v2.4+ |
| 1 | File discovery & selection | AskUserQuestion: file to convert |
| 2 | Output options | AskUserQuestion: conversion opts |
| 3 | Output location | AskUserQuestion: save destination |
| 4 | Execute conversion | `asciinema convert -f txt` |
| 5 | Timestamp index | Optional `[HH:MM:SS]` index |
| 6 | Next steps | AskUserQuestion: what's next |
Full implementation details: [Workflow Phases](./references/workflow-phases.md)
### Batch Mode (Phases 7-10)
Activated via `--batch` flag. Converts all .cast files in a directory with organized output.
| Phase | Purpose | Key Action |
| ----- | ------------------- | ---------------------------------------- |
| 7 | Source selection | AskUserQuestion (skip if `--source`) |
| 8 | Output organization | AskUserQuestion (skip if `--output-dir`) |
| 9 | Execute batch | Convert all with progress reporting |
| 10 | Batch next steps | AskUserQuestion: what's next |
Full implementation details: [Batch Workflow](./references/batch-workflow.md)
---
## iTerm2 Filename Format
iTerm2 auto-logged files follow this format:
```
{creationTimeString}.{profileName}.{termid}.{iterm2.pid}.{autoLogId}.cast
```
**Example**: `20260118_232025.Claude Code.w0t1p1.70C05103-2F29-4B42-8067-BE475DB6126A.68721.4013739999.cast`
| Component | Description | Example |
| ------------------ | ------------------------------ | ------------------------------------ |
| creationTimeString | YYYYMMDD_HHMMSS | 20260118_232025 |
| profileName | iTerm2 profile (may have dots) | Claude Code |
| termid | Window/tab/pane identifier | w0t1p1 |
| iterm2.pid | iTerm2 process UUID | 70C05103-2F29-4B42-8067-BE475DB6126A |
| autoLogId | Session auto-log identifier | 68721.4013739999 |
---
## CLI Quick Reference
```bash
# Basic conversion
asciinema convert -f txt recording.cast recording.txt
# Check asciinema version
asciinema --version
# Verify convert command exists
asciinema convert --help
```
---
## Reference Documentation
### Internal References
- [Workflow Phases](./references/workflow-phases.md) - Single file mode phases 0-6 with full scripts
- [Batch Workflow](./references/batch-workflow.md) - Batch mode phases 7-10 with full scripts
- [Task Templates](./references/task-templates.md) - TodoWrite templates for single and batch modes
- [Post-Change Checklist](./references/post-change-checklist.md) - Verification after modifications
- [Anti-Patterns](./references/anti-patterns.md) - Common mistakes to avoid
- [Batch Processing](./references/batch-processing.md) - Patterns for bulk conversion
- [Integration Guide](./references/integration-guide.md) - Chaining with analyze/summarize
### External References
- [asciinema convert command](https://docs.asciinema.org/manual/cli/)
- [asciinema-cast-format skill](../asciinema-cast-format/SKILL.md)
---
## Troubleshooting
| Issue | Cause | Solution |
| --------------------------- | ------------------------- | ---------------------------------------------- |
| convert command not found | asciinema too old | Upgrade: `brew upgrade asciinema` (need v2.4+) |
| asciinema not installed | Missing CLI | `brew install asciinema` |
| Empty output file | Corrupted .cast input | Verify .cast file has valid NDJSON structure |
| Conversion failed | Invalid cast format | Check header line is valid JSON with `jq` |
| numfmt not found | macOS missing coreutils | Use raw byte count or `brew install coreutils` |
| stat syntax error | Linux vs macOS difference | Script handles both; check stat version |
| Batch skipping all files | All .txt already exist | Use `--skip-existing=false` to reconvert |
| Permission denied on output | Directory not writable | Check output directory permissions |
## Post-Execution Reflection
After this skill completes, check before closing:
1. **Did the command succeed?** — If not, fix the instruction or error table that caused the failure.
2. **Did parameters or output change?** — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
3. **Was a workaround needed?** — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.
Only update if the issue is real and reproducible — not speculative.
More from terrylica/cc-skills
- academic-pdf-to-gfmConvert academic PDF papers to GitHub-renderable GFM markdown with math equations. TRIGGERS - PDF, GitHub markdown, math
- adaptive-wfo-epochAdaptive epoch selection for Walk-Forward Optimization. TRIGGERS - WFO epoch, epoch selection, WFE optimization, overfitting epochs.
- adr-code-traceabilityAdd ADR references to code for traceability. TRIGGERS - ADR traceability, code reference, document decision in code.
- adr-graph-easy-architectASCII architecture diagrams for ADRs via graph-easy. TRIGGERS - ADR diagram, architecture diagram, ASCII diagram.
- agent-reach>
- agentic-process-monitorMonitor background processes from Claude Code using sentinel files, heartbeat liveness, and subagent polling. Best practices and.
- alpha-forge-preshipAlpha Forge quality gates for PR review - RNG determinism, URL validation, parameter validation, manifest sync.
- article-extractorExtract MQL5 articles and documentation. TRIGGERS - MQL5 articles, MetaTrader docs, mql5.com resources.
- ascii-diagram-validatorValidate ASCII diagram alignment in markdown. TRIGGERS - diagram alignment, ASCII art, box-drawing diagrams.
- asciinema-analyzerSemantic analysis of asciinema recordings. TRIGGERS - analyze cast, keyword extraction, find patterns in recordings.