仓颉 SKILL 实操手册:把一本书蒸馏成可调用的 AI 技能
面向零基础用户 | 以《重构:改善既有代码的设计》第 2 版(refactoring2-zh)为全程案例读完约需要 30 分钟,跟着做约 2-4 小时跑完一本中等厚度的书前言:这份手册解决什么问题你读完一本书,觉得方法论很好,但两周后忘得差不多了。你想让 Claude / Cursor 在你写代码、做决策时自动用上书里的方法,而不是每次都要你手动复述一遍。仓颉 skill(cangjie-skill)就是干这个的:把一本书里的方法论,拆解成一组原子化、可被 AI 在真实场景下自动调用的技能文件(skill)。本手册教你从零开始,把任意一本书蒸馏成 skill 集。全程以本项目(《重构 改善既有代码的设计》第二版 【在线阅读】http://gausszhou.github.io/refactoring2-zh/)为真实案例,每个步骤都附上本次实际产生的数据和产物路径,你照着走就能复现。能蒸馏什么:方法论 / 决策框架 / 清单 / 原则 / 概念体系(书、长视频转写、播客文字稿、课程均可)。不能蒸馏什么:纯书摘、读后感、作者人设另一个技能 nuwa-skill)。第一章:5 分钟认识 skill1.1 什么是 skillskill是给 AI 装上了外挂其实和Prompts、MCP功能类似都是为大模型提供额外能力如果从技术的厚重程度看博主认为skill是介于Prompts和MCP之间。AI 默认什么都懂一点,但不专。你问它这段代码该怎么重构,它会给你泛泛而谈的建议。但如果你装了一个叫extract-function(提炼函数)的 skill,当你提到这个函数太长时,AI 会自动加载这个 skill,按书里 Martin Fowler 的原话、原步骤、原边界来给你建议--就像请了个读过《重构》的专家。skill 本质就是一个文件夹,里面除了SKILL.md,可能还会包含执行用的脚本语言上下文提示词是对解决某个任务的一整套打包流程。1.2 仓颉 skill 出的 skill vs 普通书摘的区别维度普通书摘/笔记仓颉 skill给谁看给人看给 AI 执行用关键字段故事/金句/感悟trigger(何时触发)/ 可执行步骤 / 判停标准 / 边界(何时别用)失败模式读完就忘trigger 不准 → 永不调用或乱调用成功标准读者有收获真实问题被解决关键差异:skill 必须能回答两个问题--“什么时候该用我”和“用我时具体怎么做”。书摘不需要回答这两个。1.3 一个 skill 长什么样下面是本项目真实产出的extract-function(提炼函数)skill 的核心结构:extract-function/ ├── SKILL.md ← 主体,含六段 └── test-prompts.json ← 压力测试用例(给 darwin 进化用)SKILL.md开头的 frontmatter(宿主 AI 只读这部分决定是否激活):--- name: extract-function description: | 需要花时间浏览一段代码才能弄清它在干什么,或函数超过 6 行散发臭味, 或大函数中一段代码顶上有注释提示它要做什么时,把这段意图清晰的代码 提炼到以用途命名的新函数中。不适用于:被提炼段对局部变量赋值过多…… 关键 trigger: 过长函数 / 6 行就臭 / Extract Method / too long source_book: 《重构改善既有代码的设计》第2版 Martin Fowler ---正文六段(RIA):-R原文引用(≤150 字,标章节)-I用自己的话重写方法论骨架-A1作者在书中亲自用过的案例-A2触发场景(用户什么情境下会需要它)★ 最关键-E可执行步骤(1-2-3,每步带完成标准)-B边界(什么时候别用 作者盲点)1.4 生态定位:三个 skill 各管一摊-nuwa-skill:蒸馏人(思维方式、表达 DNA,比如蒸馏某个博主的语言风格)-cangjie-skill(本手册):蒸馏书(方法论、框架、原则)-darwin-skill:进化任意 skill(用测试用例做自动迭代)三者咬合:cangjie 产出的 skill 带test-prompts.json,可直接喂给 darwin 持续进化。第二章:动手前 10 分钟准备2.1 环境要求-Claude Code(或任何支持加载 skill 的 AI agent,如 Cursor)磁盘空间:一本书的产物约 2-10 MB-关键:你要有书的纯文本。PDF/EPUB 需先转成 txt 或 markdown。本项目源文件是 docs/ch1.md ~ ch12.md。 ⚠️不凭记忆拆书。没文本就停下来先转文本。视频/播客先用字幕下载工具拿转写文本。2.2 安装 cangjie-skill 本体cangjie-skill 本身就是一个 skill。确认它在你的 skills 目录:C:\Users\你的用户名\.claude\skills\cangjie-skill\它的内部结构(你不需要改,只需知道它提供了流水线方法论):cangjie-skill/ ├── SKILL.md ← 触发条件 执行流程总纲 ├── methodology/ ← 6 阶段详细做法(00-07) ├── extractors/ ← 5 个并行提取器的 prompt └── templates/ ← SKILL.md / test-prompts.json 等模板2.3 准备书的元信息记下三个东西,后面目录命名和审计要用:书名 作者 出版年源文件路径内容类型(书 / 视频 / 课程……)本项目元信息:书名:《重构:改善既有代码的设计》第 2 版作者:Martin Fowler(译者:熊节、林从羽)源文件:d:\BaiduNetdiskDownload\电子书\refactoring2-zh\docs\ch1.md ~ ch12.mdslug(短标识):refactoring2-zh2.4 决定产出放哪cangjie-skill 会在你指定的目录下建books/slug/放流水线产物。但最终交付的 skill 要装到 skills 目录才能被调用。建议:-构建产物目录(流水线产出 文档):任意位置,本项目用 C:\Users\Hooya\.claude\refactoring2-zh-skill\-安装目录(让 AI 能加载):C:\Users\你的用户名\.claude\skills\skill名\(扁平结构,每个 skill 一个直接子目录)第三章:六阶段实操流程(核心,跟着做) 仓颉 skill 的方法论叫RIA-TV:RIA 拆书骨架 TV 三重验证 面向 agent 的 E(执行)/ B(边界)扩展 压力测试。六阶段流水线:阶段0 整书理解 → 阶段1 并行提取 → 阶段1.5 三重验证 → 阶段2 RIA构造 → 阶段3 链接 → 阶段4 压测 → 阶段5 交付每个阶段我会给出:目标 / 操作 / 产出 / 检查点 / 本项目实际数据。阶段 0:整书理解(Adler 分析阅读)目标:动手拆之前先真正读懂这本书,否则拆出来的 skill 会带作者盲点却不自知。操作:读全书(大文件分章节读)。本项目读了ch1.md ~ ch12.md共约 1.5 万行。按 Adler 四步填BOOK_OVERVIEW.md:-结构:书的类型 一句话主旨 骨架(3-7 个一级论点) 作者要解决的核心问题-解释:关键术语(作者本人的用法,非字典义) 核心命题 论证链-批判★ 最重要:作者的时代局限 / 立场盲点 / 未证假设 / 最强反对意见-应用潜力:哪些能 skill 化、预估 skill 数量、优先级排序把BOOK_OVERVIEW.md给用户确认骨架。产出:books/slug/BOOK_OVERVIEW.md检查点:主旨能用一句话说清骨架列出 3-7 个一级论点术语词典 ≥5 条- [ ] 批判阶段 ≥3 条作者局限(这步没做到位就不能继续,它会成为每个 skill 的 Boundary 字段)用户已确认骨架本项目实际:产出主旨:“在不改变软件可观察行为的前提下,用保持行为的小步骤调整代码结构,使其更易理解、更易修改,并把何时重构的诊断(坏味道)也系统化。”骨架 6 个一级论点(定义/时机/坏味道/测试/名录/架构性能)术语 12 条批判 4 条时代局限(2018/JS 语境、无异步并发、OO 视角偏重、设计耐久性未证假说)- 用户确认范围:精选高值集约 25 个 中文名英文 slug(本次最终 28 个) 小白提醒:阶段 0 必须停下来让用户确认骨架对不对 要拆多少个 skill。这一句话确认能避免后面大量返工。本次用户在此选了精选高值集而非全量 65 个,省了几倍工作量。阶段 1:并行提取(5 个 sub-agent 同时跑)目标:不从单一视角读一遍,而是同时从 5 个角度扫描全书,最大化覆盖率。操作:用 Claude Code 的 Agent 工具,一次性并行 spawn 5 个 sub-agent(本书是名录式,适配为 6 个按章节并行):sub-agent找什么产出框架提取器决策框架 / 思维模型candidates/frameworks.md原则提取器原则 / 清单 / 规则candidates/principles.md案例提取器作者亲自用过的实例candidates/cases.md反例提取器作者警告的失败模式candidates/counter-examples.md术语提取器关键概念词典candidates/glossary.md每个 sub-agent 独立读原文、独立提取、独立输出。每个候选单元含最小字段:id: r01 title: 提炼函数 type: framework source_chapter: 第6章 6.1 source_quote: 原文引用 ≤150 字 summary: 自己的话 5-10 行 tags: [long-function, extraction]产出:books/slug/candidates/*.md(候选池,审计用,宁错杀不筛选)检查点:每个 source_quote 是书里原话不改写,≤150 字每个单元标了 source_chapter- [ ]不做筛选--留给阶段 1.5本项目实际:6 个 sub-agent 并行(按章节适配:ch6 / ch7-8 / ch9-10 / ch11-12 / 元方法 / 坏味道术语),产出 27 个候选单元 24 种坏味道卡片 23 条术语。耗时约 4-10 分钟/agent(并行,墙钟约 10 分钟)。 降级方案:如果你的环境不支持并行 sub-agent,就串行跑这 5 个 extractor prompt,产出格式不变,只是慢 5 倍。阶段 1.5:三重验证筛选(质量门)目标:从候选池筛出真正值得做成独立 skill的方法论单元。通不过的降级为 example/引用,不独立成 skill。操作:对每个候选跑三重验证,全部通过才录取:-V1 跨域:这个单元在书里至少 2 个独立语境下有佐证吗?通过:《重构》中提炼函数被 12 坏味道指向、被多个重构的步骤引用 → 真实多语境不通过:某漂亮句子只在一章出现一次 → 降级为金句-V2 预测力:能用它回答一个书里没明说的新问题吗?通过:给一段新代码,能用坏味道诊断判据推出该重构什么不通过:只能得出努力就会成功这类废话 → 降级-V3 独特性:抹掉作者名,一个聪明人也能说出来吗?通过:两顶帽子/行为保持是 BeckFowler 固化的操作约束,非常识不通过:要尊重时间太常识 → 不需要 skill 承载产出:books/slug/verified.md(通过的单元 判定理由)books/slug/rejected/(淘汰的 原因,保留审计轨迹)-用户轻确认 ★:把通过 N 个 淘汰 M 个列表给用户,问有想捞回或砍掉的吗?确认后才进入阶段 2(最耗时)。检查点:每个通过单元有 V1/V2/V3 三项判定淘汰单元写明不通过的是哪一项用户已轻确认名单本项目实际:28 通过 / 3 降级标注(判据偏薄但收录)/ 0 淘汰。本书是名录式参考书,V1/V3 天然成立(每个重构手法本身就是 Fowler 独特命名的全行业词汇表),故验证重心在 V2 预测力的质量分级。3 个降级项(rename-variable / remove-dead-code / decompose-conditional)标注薄,阶段 2 强化 trigger、阶段 4 重点测区分。 数量预期:方法论密集书通过率 30-50%,散文类 5-10%。过低(5%)说明 extractor 质量差要重跑;过高(80%)说明验证太松。名录式参考书是特例。阶段 2:RIA 构造 skill(最耗时)目标:把通过的每个单元,按模板填成完整 SKILL.md。操作:对每个通过的单元填六段:段内容要点|R原文 | 书里原话 ≤150 字 | 必须标章节;中文书用原话不改写 ||I自述 | 自己的话重写 5-15 行 | 禁止照搬原文;读完这段没读过书的人也能懂 ||A1书中案例 | 作者亲自用过的案例 ≥1 条 | 问题→怎么用→结论→结果 ||A2触发场景 ★ | 何时需要它 语言信号 与相邻 skill 区分 | trigger 词中英双写(用户可能英文提问);这是 skill 能否被调用的关键 ||E可执行步骤 | 1-2-3 步骤 | 每步带完成标准;有判停点(若 X 则跳到步骤 N)显式写 ||B边界 | 何时别用 作者警告 作者局限 易混淆邻近方法论 | 来自阶段 0 批判;防止过度调用 |frontmatter:--- name: extract-function description: A2 的浓缩 ≤300 字,含何时用何时不用trigger source_book: 《书名》 作者 source_chapter: 第X章 tags: [...] related_skills: [] # 阶段 3 填 ---产出:每个 skill 一个目录 skill-slug/SKILL.md检查点(质量红线,违反则不合格):R 段 ≤150 字标章节description 明确 trigger 条件(不能是一个关于 X 的 skill)A2 语言信号中英双写E 段每步有完成标准B 段含作者局限(非空)本项目实际:28 个 SKILL.md,分 5 组并行 sub-agent 构造(元方法4 / ch6组7 / ch7-8组7 / ch9-11组8 / ch12组2)。旗舰 code-smell-diagnosis 内嵌完整 24 种坏味道诊断库(343 行)。3 个降级项的 A2 被强制强化:rename-variable:聚焦广作用域变量改名必须先封装非平凡判据,与 change-function-declaration(函数级)三维度区分remove-dead-code:E 段加判停无 VCS/无测试时不可执行decompose-conditional:聚焦专门针对 if 三段三元收敛,与 extract-function 区分阶段 3:Zettelkasten 链接(让 skill 互联成网)目标:把原子 skill 之间的关系显式化,形成可导航网络,不是一堆孤立文件。操作:扫描所有 skill,识别三类关系:-depends-on(依赖):A 的使用前提是先理解 B(如 split-phase depends-on extract-function)-contrasts-with(对比):A 和 B 互逆/对偶,看情境选一(如 extract-function ↔ inline-function;extract-superclass ↔ replace-subclass-with-delegate)-composes-with(组合):A 和 B 经常配合(如 remove-dead-code 是多个重构的收尾步骤)回填每个 SKILL.md 的related_skillsfrontmatter 末尾相关 skills段回填 A2 段的与相邻 skill 的区分(阶段 2 留的初稿改定稿)生成INDEX.md(含 mermaid 引用图 推荐学习顺序)把candidates/glossary.md提升为根目录GLOSSARY.md产出:每个 SKILL.md 的 related_skills 回填INDEX.md(引用图 学习顺序)GLOSSARY.md(共享术语词典)检查点:引用关系是真实的,不硬造(一本书 10 个 skill,合理关系数 8-15 条;5 太独立,25 在硬凑)INDEX.md 含 mermaid 图GLOSSARY.md 在根目录可见本项目实际:28 个 related_skills 全部回填(用 Python 脚本批量处理关系图谱),INDEX.md 含 28 节点 mermaid 图 17 步推荐学习顺序,GLOSSARY.md 23 条术语。 节制原则:两个 skill 没有真正依赖/对比/组合关系,就别写 related_skills。宁可稀疏也别硬凑。阶段 4:压力测试(darwin 兼容,质量门)目标:skill 做得再漂亮,trigger 不准就等于不存在。用一批测试 prompt 验证它被调用的精准度。操作:对每个 skill 写test-prompts.json,至少 6 条:-should_trigger(应调用)3-5 条:正面场景-should_not_trigger(诱饵,不该调用)2-3 条:其中至少 1 条必须是应触发同书另一个 skill的场景(跨 skill 混淆诱饵,防止兄弟 skill 互相抢调用)-edge_case(边界)1-3 条:模糊场景2.独立 sub-agent 盲测:给一个没参与蒸馏的干净 agent,只看 prompt(不给 type/expected),让它判断该激活哪个 skill。模拟真实调用。主流程对照预期判卷:- 100% 通过 → 接受- ≥80% → 分析失败 case,修 skill 的 A2/description- 80% →回炉重做阶段 2(不是小修)修复后重测,直到通过。产出:每个 skill 的test-prompts.json(darwin 兼容格式,可接入自动进化)每个 skill 的test-results.md(通过率 失败分析)检查点:每个 skill 有 test-prompts.json,含诱饵测试至少 1 条诱饵是同书兄弟 skill 场景盲测是独立 sub-agent 做的(非主流程自测)通过率 ≥80%本项目实际:28 个 test-prompts.json,共 279 条 case盲测 5 个 sub-agent 并行,初测 26 个 100% / 2 个 88%盲测诊断出 3 个真实 description 缺陷:-code-smell-diagnosis:把不修改的代码不动放在何时不调用应移到激活后判停-inline-function:缺交叉引用我是 change-function-declaration 迁移式做法的子步骤-encapsulate-variable:与 rename-variable 的接力关系不清- 修补这 3 个 description,重测 →28 个全部 100% 通过 这是最关键的阶段。只测 positive case(应调用)skill 总看起来很好,但部署后会乱激活。诱饵测试(不该调用时是否忍住)才能暴露真实问题。跨 skill 混淆测试是硬性要求。阶段 5:交付(DIGEST 安装)目标:把产物送到两类使用者手里--AI(必须装到 skills 目录)和人类读者(精华长文)。操作:生成DIGEST.md(面向读者的精华长文,5000-10000 字):- 按书的骨架组织(不按 skill 列表)- 每个核心方法论:解决什么问题→核心逻辑→书中案例→何时失效→skill 链接- 必须含陷阱与反例作者局限两节(只报喜是软文不是蒸馏)2.安装 skill 到宿主(只装通过测试的):问用户装哪:用户级~/.claude/skills/或项目级复制或符号链接每个 skill 目录(含 SKILL.md test-prompts.json)抽 1-2 个 skill 用一句 should_trigger prompt 验证宿主能加载触发告知用户可喂给 darwin-skill 持续进化产出:DIGEST.mdskill 安装到 skills 目录PIPELINE_STATE.md标记全部完成检查点:DIGEST.md 有批判/局限部分skill 已安装到 skills 目录(否则永远不会被调用)抽样验证宿主能加载本项目实际:DIGEST.md 约 8000 字(6 论点 7 陷阱 4 局限)- 用户选符号链接安装到 C:\Users\Hooya\.claude\skills\(28 个链接)抽样验证 28 个链接 frontmatter 可读 ⚠️没有安装这步,前面五个阶段就只是一堆躺在仓库里的文件。skill 必须被装到 skills 目录,读者需求由 DIGEST.md 承接。第四章:最终产物长什么样(本项目实例)4.1 目录结构C:\Users\Hooya\.claude\refactoring2-zh-skill\ ← 构建产物根目录 ├── PIPELINE_STATE.md ← 流水线状态(断点续跑用) ├── BOOK_OVERVIEW.md ← 阶段0:主旨/骨架/术语/批判 ├── verified.md ← 阶段1.5:通过三重验证的单元 ├── INDEX.md ← 阶段3:skill总览 mermaid引用图 ├── GLOSSARY.md ← 阶段3:共享术语词典(23条) ├── DIGEST.md ← 阶段5:面向读者的精华长文(8000字) ├── candidates/ ← 阶段1:原始候选池(审计用) ├── rejected/ ← 阶段1.5:淘汰的单元原因(本次为空) ├── scripts/ ← 辅助脚本(关系回填/判卷) ├── extract-function/ ← 一个 skill 目录 │ ├── SKILL.md │ ├── test-prompts.json │ └── test-results.md ├── inline-function/ │ └── ... └── ... (共 28 个 skill 目录)安装目录(符号链接,让 AI 能加载):C:\Users\Hooya\.claude\skills\ ├── cangjie-skill/ ← cangjie 本体(已有) ├── extract-function/ ← → 符号链接到 refactoring2-zh-skill/extract-function ├── inline-function/ ← → 符号链接 ├── code-smell-diagnosis/ ← → 符号链接 └── ... (共 28 个符号链接)4.2 产出的 28 个 skill 清单#skill 名称中文名类别1code-smell-diagnosis代码坏味道诊断 ★旗舰元方法2refactoring-discipline重构纪律元方法3when-to-refactor何时重构 vs 重写 vs 不动元方法4performance-90-percent性能 90% 统计法元方法5extract-function提炼函数第一组 ch66inline-function内联函数第一组 ch67change-function-declaration改变函数声明第一组 ch68encapsulate-variable封装变量第一组 ch69rename-variable变量改名第一组 ch610introduce-parameter-object引入参数对象第一组 ch611split-phase拆分阶段第一组 ch612encapsulate-record封装记录封装 ch713replace-primitive-with-object以对象取代基本类型封装 ch714replace-temp-with-query以查询取代临时变量封装 ch715extract-class提炼类封装 ch716move-function搬移函数搬移 ch817replace-loop-with-pipeline以管道取代循环搬移 ch818remove-dead-code移除死代码搬移 ch819replace-derived-variable-with-query以查询取代派生变量数据 ch920decompose-conditional分解条件表达式条件 ch1021replace-nested-conditional-with-guard-clauses以卫语句取代嵌套条件条件 ch1022replace-conditional-with-polymorphism以多态取代条件表达式条件 ch1023introduce-special-case引入特例条件 ch1024separate-query-from-modifier分离查询与修改函数API ch1125parameterize-function函数参数化API ch1126remove-flag-argument移除标记参数API ch1127extract-superclass提炼超类继承 ch1228replace-subclass-with-delegate以委托取代子类继承 ch124.3 本次蒸馏的数据统计指标数值源书规模12 章 / 约 15000 行 markdown候选单元27 个 24 坏味道 23 术语通过三重验证28 / 降级 3 / 淘汰 0压力测试 case279 条盲测通过率100%(修补 3 个 description 后)精华长文 DIGEST约 8000 字总耗时约 2-3 小时(并行,含 sub-agent 等待)第五章:怎么用这些 skill(应用流程)5.1 安装三种方式选一(本项目选了符号链接):# 方式 A:符号链接(保持单一源,推荐。Windows 需开发者模式或管理员权限) # 用 Python 创建(比 mklink 路径转义更稳): python -c import os; os.symlink(rC:\...\refactoring2-zh-skill\extract-function, rC:\...\.claude\skills\extract-function, target_is_directoryTrue) # 方式 B:复制(文件实体,无权限依赖,但改 skill 要同步两处) cp -r refactoring2-zh-skill/extract-function ~/.claude/skills/ # 方式 C:仅仓库形式(不装,只看文档,不接入自动触发)5.2 触发方式:自然语言提问即可装好后,你不需要记 skill 名字。正常说话,宿主 AI 会根据你的话匹配 skill 的 description,自动激活。下面是本项目的真实对话示例:场景 1:代码评审入口你:“帮我看看这段代码,感觉有点乱,哪里能改进?”→ AI 自动激活code-smell-diagnosis,通读识别坏味道,评估强度,映射重构手法,按优先级给建议。场景 2:长函数你:“这个函数有 200 行,看不下去了,怎么拆?”→ AI 自动激活extract-function,按意图与实现分离原则,找注释提示的好名字,逐步提炼。场景 3:改全局变量名你:“这个全局变量 globalConfig 名字不好想改,但怕漏改引用点。” → AI 自动激活 encapsulate-variable(因为广作用域改名先封装),封装完再激活 rename-variable 改内部名。两个 skill 接力。场景 4:性能争议你:“同事说这段循环慢要换管道,靠谱吗?”→ AI 自动激活performance-90-percent,先说别臆测,先度量找热点,再判断是否真该换管道(若是游戏热点循环,反而保留循环)。场景 5:继承体系你:“这个继承体系,继承只能用一次但又有第二个变化维度。”→ AI 自动激活replace-subclass-with-delegate,并提醒 super.basePrice 搬委托后的无穷递归陷阱。5.3 调用链路你说话 ↓ 宿主 AI 读取所有 skill 的 name description(只读这两字段) ↓ 语义匹配 → 激活最匹配的 skill(可能多个) ↓ 加载该 skill 的完整 SKILL.md 正文(R/I/A1/A2/E/B) ↓ 按 E 段步骤执行,遵守 B 段边界 ↓ 若发现该用相邻 skill,接力调用(如 encapsulate-variable → rename-variable) 关键:宿主只读 frontmatter 的 name description 决定是否激活。所以阶段 2 的 description 写得好不好,直接决定 skill 会不会被调用。这就是阶段 4 压力测试如此重要的原因。5.4 想看精华不读全书直接读DIGEST.md(25 分钟,含 7 个陷阱 4 条作者局限)。想深入某方法点链接进对应 skill。5.5 持续进化每个 skill 带test-prompts.json(darwin 兼容格式)。想让它自我迭代:darwin evolve C:\Users\Hooya\.claude\refactoring2-zh-skill\darwin 会用这些测试用例做 ratcheting(棘轮式只进不退)自动进化。第六章:常见问题与避坑Q1:没有书的纯文本,只有 PDF,能拆吗?不能直接拆。先转文本。PDF 用 pdftotext 或 OCR;视频用字幕下载。cangjie-skill 的红线就是不凭记忆拆书--没文本就停下来问用户要。Q2:skill 拆多少个合适?看书的方法论密度。散文类可能 5-10 个,方法论密集书 20-30 个,名录式参考书(如《重构》)可到 60。建议先试点 1 本验证流程再批量。本项目用户在阶段 0 确认时选了精选高值集 28 个而非全量 65 个,省了几倍工作量且 trigger 更精准(不会互抢)。Q3:trigger 不准(skill 老不调用或乱调用)怎么办?压力测试是唯一能在发布前发现这个的方法。本项目盲测就发现 3 个 description 有歧义(code-smell-diagnosis 结构问题、inline-function 缺交叉引用、encapsulate-variable 接力不清),修补后 88% → 100%。修 skill 不修测试(除非测试本身设计过狠)。Q4:Windows 符号链接创建失败?Windows 符号链接需开发者模式或管理员权限。两种解法:开启开发者模式:设置 → 隐私和安全性 → 开发者选项 → 开发人员模式或改用复制方式(方式 B),文件实体存在,无权限依赖,但改 skill 要同步两处本项目用 Pythonos.symlink创建(比mklink路径转义更稳),28 个链接一次成功。Q5:几个 skill 的 trigger 互相重叠,老抢调用怎么办?这是常见问题。解法:阶段 2 的 A2 段强制写与相邻 skill 的区分阶段 4 强制要求至少 1 条跨 skill 混淆诱饵(测试兄弟 skill 互抢)本项目重点测了 3 个对偶:extract-function↔inline-function、parameterize-function↔remove-flag-argument、extract-superclass↔replace-subclass-with-delegate,都区分清晰Q6:跑一半断了,要重来吗?不用。每完成一个阶段更新 PIPELINE_STATE.md,中断后从状态文件恢复。cangjie-skill 启动时会先检查这个文件。Q7:阶段 0 批判阶段有什么用?不就是挑刺吗?它直接成为每个 skill 的 Boundary(B)字段来源。没有 B 段的 skill 会被过度调用,在不该用的时候被用,反而帮倒忙。本项目的批判(2018/JS 语境、OO 视角偏重、设计耐久性未证)写进了每个 skill 的 B 段,让 AI 知道何时别用这本书的方法。Q8:sub-agent 并行和串行效果一样吗?产出格式一样,但并行快 5 倍。Claude Code 的 Agent 工具支持并行,建议一次 spawn 5 个。不支持就串行,methodology 里有降级方案。本项目 6 个并行,墙钟约 10 分钟完成阶段 1。附录 A:cangjie-skill 文件结构速查cangjie-skill/ ├── SKILL.md ← 入口:何时调用 六阶段总纲 ├── methodology/ │ ├── 00-overview.md ← RIA-TV 设计说明 │ ├── 01-stage0-adler.md ← 阶段0 四步 │ ├── 02-stage1-parallel-extract.md ← 阶段1 并行提取 │ ├── 03-stage1.5-triple-verify.md ← 阶段1.5 三重验证 │ ├── 04-stage2-ria-plus.md ← 阶段2 RIA 六段 │ ├── 05-stage3-zettelkasten.md ← 阶段3 链接 │ ├── 06-stage4-pressure-test.md ← 阶段4 压测 │ └── 07-stage5-deliver.md ← 阶段5 交付 ├── extractors/ │ ├── framework-extractor.md │ ├── principle-extractor.md │ ├── case-extractor.md │ ├── counter-example-extractor.md │ └── glossary-extractor.md └── templates/ ├── BOOK_OVERVIEW.md.template ├── SKILL.md.template ├── test-prompts.json.template ├── INDEX.md.template └── DIGEST.md.template附录 B:术语表术语含义skill给 AI 装的专业大脑模块,一个文件夹含 SKILL.mdcangjie-skill蒸馏书的元 skill,本手册讲的就是它RIA-TV仓颉的方法论:RIA 拆书 TV 三重验证 E/B 扩展R/I/A1/A2/E/BSKILL.md 的六段:原文/自述/书中案例/触发场景/执行步骤/边界triggerskill 的激活条件,写在 description 字段坏味道《重构》术语,代码中可识别的结构迹象,指向重构机会darwin-skill进化 skill 的工具,用 test-prompts.json 做棘轮式迭代断点续跑每阶段更新 PIPELINE_STATE.md,中断后从状态恢复附录 C:一本新书从零到产出的最短路径(给赶时间的人)确认有书的纯文本 元信息(书名/作者/年)对 Claude 说:“用 cangjie-skill 把 路径 这本书蒸馏成 skill”阶段 0:Claude 读完书,产出 BOOK_OVERVIEW.md,确认骨架和 skill 数量范围阶段 1:Claude 并行 spawn 5 个提取器,产出 candidates/5. 阶段 1.5:Claude 跑三重验证,产出 verified.md,你轻确认名单阶段 2:Claude 并行构造各 SKILL.md阶段 3:Claude 回填 related_skills INDEX.md GLOSSARY.md阶段 4:Claude 写 test-prompts.json 盲测,未过回炉9. 阶段 5:Claude 写 DIGEST.md,你选安装方式,安装到 skills 目录抽样验证能触发,完成。可喂 darwin 进化。全程你只需在阶段 0(确认骨架范围)、阶段 1.5(确认名单)、阶段 5(选安装方式)三个点参与决策,其余 Claude 自动跑。