关于 asciinema-converter
asciinema-converter 是面向 Claude Code 用户的 Skill,可将 asciinema .cast 终端录制转换为便于搜索的纯文本,并支持单文件与批量处理。它会清除终端控制码和 JSON 结构,便于使用 Read 和 Grep 分析录制内容。
主要功能
- 01转换 .cast 为 .txt
- 02批量转换目录中的录制
- 03移除 ANSI 控制码与 JSON 结构
- 04可选添加时间戳索引
- 05检查 asciinema 版本与输入文件
适用场景
- 01为 Claude Code 的 Read 和 Grep 准备录制内容
- 02批量整理终端会话录制
- 03从含 ANSI 控制码的输出中提取文本
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill asciinema-converter安装后在 Claude Code 中输入/asciinema-converter确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/anti-patterns.mdbatch-processing.mdbatch-workflow.mdevolution-log.mdintegration-guide.mdpost-change-checklist.mdtask-templates.mdworkflow-phases.mdtests/converter-integration.batsconverter.test.tstests/fixtures/simple.castwith spaces.cast详细介绍
asciinema-converter
将 asciinema .cast 录制文件转换为干净的 .txt 文件,以供 Claude Code 分析。通过剥离 ANSI 代码和 JSON 结构,实现 950:1 的压缩率(3.8GB -> 4MB)。
平台:macOS、Linux(需要 asciinema CLI v2.4+)
自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要采用变通方法,请立即修复此文件,不要拖延。只针对真实且可复现的问题进行更新。
何时使用此技能
在以下情况使用此技能:
- 将 .cast 录制文件转换为可搜索的 .txt 格式
- 为 Claude Code Read/Grep 工具准备录制文件
- 批量转换多个录制文件
- 减少会话归档的存储空间
- 从使用 ANSI 编码的终端输出中提取干净文本
为什么要转换?
| 格式 | 大小(22 小时会话) | 与 Claude Code 兼容 | 可搜索 |
|---|---|---|---|
| .cast | 3.8GB | 否(NDJSON + ANSI) | 可通过 jq 搜索 |
| .txt | ~4MB | 是(干净文本) | Grep/Read |
主要优势:Claude Code 的 Read 和 Grep 工具可以直接处理 .txt 输出。
要求
| 组件 | 必需 | 安装方式 | 备注 |
|---|---|---|---|
| asciinema | 是 | brew install asciinema | convert 命令需要 v2.4+ |
工作流概览
重要提示:所有阶段均为必需。不要跳过任何阶段。每个决策点都必须使用 AskUserQuestion。
单文件模式(阶段 0-6)
| 阶段 | 目的 | 关键操作 |
|---|---|---|
| 0 | 预检 | 验证 asciinema CLI v2.4+ |
| 1 | 文件发现与选择 | AskUserQuestion:选择要转换的文件 |
| 2 | 输出选项 | AskUserQuestion:选择转换选项 |
| 3 | 输出位置 | AskUserQuestion:选择保存位置 |
| 4 | 执行转换 | asciinema convert -f txt |
| 5 | 时间戳索引 | 可选的 [HH:MM:SS] 索引 |
| 6 | 后续步骤 | AskUserQuestion:接下来要做什么 |
完整实现细节:工作流阶段
批量模式(阶段 7-10)
通过 --batch 标志启用。转换目录中的所有 .cast 文件,并整理输出。
| 阶段 | 目的 | 关键操作 |
|---|---|---|
| 7 | 选择源目录 | AskUserQuestion(如果指定了 --source,则跳过) |
| 8 | 整理输出 | AskUserQuestion(如果指定了 --output-dir,则跳过) |
| 9 | 执行批量转换 | 转换所有文件并报告进度 |
| 10 | 批量转换后的下一步 | AskUserQuestion:接下来要做什么 |
完整实现细节:批量工作流
iTerm2 文件名格式
iTerm2 自动记录的文件遵循以下格式:
{creationTimeString}.{profileName}.{termid}.{iterm2.pid}.{autoLogId}.cast
示例:20260118_232025.Claude Code.w0t1p1.70C05103-2F29-4B42-8067-BE475DB6126A.68721.4013739999.cast
| 组成部分 | 描述 | 示例 |
|---|---|---|
| creationTimeString | YYYYMMDD_HHMMSS | 20260118_232025 |
| profileName | iTerm2 配置文件名称(可能包含点号) | Claude Code |
| termid | 窗口/标签页/面板标识符 | w0t1p1 |
| iterm2.pid | iTerm2 进程 UUID | 70C05103-2F29-4B42-8067-BE475DB6126A |
| autoLogId | 会话自动记录标识符 | 68721.4013739999 |
CLI 快速参考
# Basic conversion
asciinema convert -f txt recording.cast recording.txt
# Check asciinema version
asciinema --version
# Verify convert command exists
asciinema convert --help
参考文档
内部参考
- 工作流阶段 - 单文件模式的阶段 0-6,含完整脚本
- 批处理工作流 - 批处理模式的阶段 7-10,含完整脚本
- 任务模板 - 单文件和批处理模式的 TodoWrite 模板
- 修改后检查清单 - 修改后的验证
- 反模式 - 应避免的常见错误
- 批处理 - 批量转换模式
- 集成指南 - 与 analyze/summarize 串联
外部参考
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 找不到 convert 命令 | asciinema 版本过旧 | 升级:brew upgrade asciinema(需要 v2.4+) |
| 未安装 asciinema | 缺少 CLI | brew install asciinema |
| 输出文件为空 | .cast 输入已损坏 | 验证 .cast 文件是否具有有效的 NDJSON 结构 |
| 转换失败 | cast 格式无效 | 使用 jq 检查标头行是否为有效 JSON |
| 找不到 numfmt | macOS 缺少 coreutils | 使用原始字节数,或运行 brew install coreutils |
| stat 语法错误 | Linux 与 macOS 的差异 | 脚本可处理两者;检查 stat 版本 |
| 批处理跳过所有文件 | 所有 .txt 文件均已存在 | 使用 --skip-existing=false 重新转换 |
| 输出时权限被拒绝 | 目录不可写 | 检查输出目录权限 |
执行后反思
此技能完成后,结束前请检查:
- 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
- 参数或输出是否发生变化? — 如果底层工具的接口发生变化,请相应更新用法示例和参数表。
- 是否需要变通处理? — 如果你不得不临时处理(使用不同的标志、增加额外步骤),请更新此 SKILL.md,避免下次调用时遇到同样的问题。
只有在问题真实且可复现时才更新,不要基于猜测进行修改。