用途:审计并规范化一组相关的 JSON 或 JSONL mock fixtures,使各文件共享相同的结构、格式与冗余程度。该技能只处理“形状”,不修改语义或业务值,除非用户显式要求 shrink。
主要能力:
- 模式检测:解析参数 mode path [flags],mode 可为 analyze、normalize、shrink、trim;若首 token 为路径(以 /、./ 或 ~ 开头)则视为 path,mode 默认 analyze。
- 四阶段流程:Phase 0 解析语料(目录 glob **/.json 与 **/.jsonl,排除 node_modules/、dist/、.next/、coverage/;单文件扩展为同目录同基名同组文件;少于 2 个文件则停止);Phase 1 用 scripts/shape.py 提取每个文件的结构指纹;Phase 2 用 scripts/diff-shapes.py 聚类并检测漂移,多数簇作为参考,离群簇按编辑距离评分并列出差异键路径;Phase 3 按模式应用。
- 各模式副作用:analyze 只读报告;normalize 重写文件(2 空格缩进、键排序、末尾换行、LF,可选 --fill-missing null);shrink 截断超过阈值的字符串字段,拒绝处理 id、hash、actionId、threadId、userId 或匹配 Id$ 的字段;trim 仅限制 artifacts. 子树内的数据点数组长度,保留顺序,字符串一律不改。
使用方式:脚本为纯 Python 3 标准库,无需 pip 安装,从仓库根目录运行。示例命令:SKILL_DIR="$HOME/.claude/skills/optimize-mock-data";python3 "$SKILL_DIR/scripts/shape.py" path/to/mock.json;python3 "$SKILL_DIR/scripts/diff-shapes.py" path/to/mocks/;python3 "$SKILL_DIR/scripts/normalize.py" --in-place path/to/mock.json;python3 "$SKILL_DIR/scripts/shrink.py" --max-string 200 --in-place path/to/mock.json;python3 "$SKILL_DIR/scripts/trim.py" --in-place path/to/mock.json。
限制:不编辑字段值(normalize 模式);不排序数组元素;不截断 Id 或 hash 字段;JSONL 每行单独取指纹,不当作单个 JSON 文档;需至少 2 个文件才能检测漂移;trim 仅进入 artifacts.,不处理顶层 messages、thread.*,也不处理 panels、widgets、queries 等结构数组;不修改 trim 下的任何字符串。所有重写文件必须能重新解析,且重写后漂移不得比之前更差,否则回滚。无网络、无依赖,可在沙箱、CI 或 pre-commit 中运行。运行失败或结果不理想时可用 /create-skill diagnose optimize-mock-data 进行诊断。