dev-playbooks-cn 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +50 -1
  2. package/README.md +15 -6
  3. package/bin/devbooks.js +5 -9
  4. package/package.json +1 -1
  5. package/scripts/config-discovery.sh +1 -1
  6. package/scripts/detect-mcp.sh +86 -0
  7. package/skills/_shared/MCP/345/242/236/345/274/272/346/250/241/346/235/277.md +17 -127
  8. package/skills/_shared/references//344/272/272/347/261/273/345/273/272/350/256/256/346/240/241/345/207/206/346/217/220/347/244/272/350/257/215.md +27 -0
  9. package/skills/devbooks-archiver/SKILL.md +27 -413
  10. package/skills/devbooks-archiver/references//345/275/222/346/241/243/346/265/201/347/250/213/344/270/216/350/247/204/345/210/231.md +401 -0
  11. package/skills/devbooks-brownfield-bootstrap/SKILL.md +34 -35
  12. package/skills/devbooks-brownfield-bootstrap/scripts/cod-update.sh +0 -2
  13. package/skills/devbooks-coder/SKILL.md +25 -18
  14. package/skills/devbooks-convergence-audit/SKILL.md +26 -382
  15. package/skills/devbooks-convergence-audit/references//346/224/266/346/225/233/346/200/247/345/256/241/350/256/241/347/273/206/345/210/231.md +384 -0
  16. package/skills/devbooks-delivery-workflow/SKILL.md +31 -225
  17. package/skills/devbooks-delivery-workflow/references//347/274/226/346/216/222/347/246/201/344/273/244/344/270/216/351/230/266/346/256/265/350/241/250.md +185 -0
  18. package/skills/devbooks-design-doc/SKILL.md +19 -4
  19. package/skills/devbooks-docs-consistency/SKILL.md +19 -6
  20. package/skills/devbooks-entropy-monitor/SKILL.md +19 -6
  21. package/skills/devbooks-impact-analysis/SKILL.md +25 -12
  22. package/skills/devbooks-implementation-plan/SKILL.md +19 -6
  23. package/skills/devbooks-proposal-author/SKILL.md +19 -4
  24. package/skills/devbooks-proposal-challenger/SKILL.md +19 -6
  25. package/skills/devbooks-proposal-judge/SKILL.md +19 -6
  26. package/skills/devbooks-reviewer/SKILL.md +20 -7
  27. package/skills/devbooks-router/SKILL.md +26 -333
  28. package/skills/devbooks-router/references//350/267/257/347/224/261/350/247/204/345/210/231/344/270/216/346/250/241/346/235/277.md +317 -0
  29. package/skills/devbooks-spec-contract/SKILL.md +19 -6
  30. package/skills/devbooks-test-owner/SKILL.md +30 -29
  31. package/skills/devbooks-test-reviewer/SKILL.md +19 -10
  32. package/templates/dev-playbooks/README.md +1 -9
@@ -11,336 +11,29 @@ allowed-tools:
11
11
 
12
12
  # DevBooks:工作流入口引导(Router)
13
13
 
14
- ## 定位说明
15
-
16
- > **重要**:Router 的职责是**入口引导**,而非每步路由。
17
-
18
- | 场景 | 是否使用 Router |
19
- |------|:---------------:|
20
- | "我该从哪开始?" | ✅ 使用 |
21
- | "项目当前状态?" | ✅ 使用 |
22
- | "coder 完成后下一步?" | ❌ 不使用(coder 自己输出) |
23
- | "这个 skill 完成后呢?" | ❌ 不使用(各 skill 自己输出) |
24
-
25
- **原则**:每个 skill 完成时会输出自己的下一步推荐,遵循 `_shared/references/偏离检测与路由协议.md`。
26
-
27
- ---
28
-
29
- ## 前置:配置发现(协议无关)
30
-
31
- - `<truth-root>`:当前真理目录根
32
- - `<change-root>`:变更包目录根
33
-
34
- 执行前**必须**按以下顺序查找配置(找到后停止):
35
- 1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
36
- 2. `dev-playbooks/project.md`(如存在)→ Dev-Playbooks 协议,使用默认映射
37
- 3. `project.md`(如存在)→ template 协议,使用默认映射
38
- 4. 若仍无法确定 → **停止并询问用户**
39
-
40
- **关键约束**:
41
- - 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**再执行任何操作
42
- - 禁止猜测目录根
43
- - 禁止跳过规则文档阅读
44
-
45
- ## 前置:图索引健康检查(自动)
46
-
47
- **在路由前自动执行**,检查 CKB 图索引状态:
48
-
49
- 1. 调用 `mcp__ckb__getStatus` 检查 SCIP 后端
50
- 2. 如果 `backends.scip.healthy = false`:
51
- - 提示用户:「检测到代码图索引未激活,影响分析/调用图等图基能力不可用」
52
- - 提供手动生成索引的命令(见下方脚本)
53
- - 继续路由但标注「图基能力降级」
54
-
55
- 3. 如果 `backends.scip.healthy = true`:
56
- - 静默通过,继续路由
57
-
58
- **检查脚本**(供参考):
59
- ```bash
60
- # 检测语言并生成索引
61
- if [ -f "tsconfig.json" ]; then
62
- scip-typescript index --output index.scip
63
- elif [ -f "pyproject.toml" ]; then
64
- scip-python index . --output index.scip
65
- elif [ -f "go.mod" ]; then
66
- scip-go --output index.scip
67
- fi
68
- ```
69
-
70
- **降级模式说明**:
71
- - 无索引时,`devbooks-impact-analysis` 退化为 Grep 文本搜索(准确度下降)
72
- - 无索引时,`devbooks-reviewer` 无法获取调用图上下文
73
- - 建议在 Apply 阶段前完成索引生成
74
-
75
- ## 你要做的事
76
-
77
- 把用户的自然语言请求映射成:
78
- 1) 现在处于哪个阶段(proposal / apply / review / archive)
79
- 2) 本次变更的“必产物”(proposal/design/tasks/verification)与“按需产物”(spec deltas/contract/c4/evidence)
80
- 3) 下一步该用哪个(或哪些)`devbooks-*` Skills
81
- 4) 每个产物应落到哪个文件路径
82
-
83
- ## 输出要求(强制)
84
-
85
- 1) **先问清楚 2 个最小关键问题**(若上下文里已有答案则不问):
86
- - `<change-id>` 是什么?
87
- - `<truth-root>` / `<change-root>` 在该项目最终取值是什么?
88
- 2) 给出“下一步路由结果”(3–6 条即可):
89
- - 每条包含:要用的 Skill + 产物路径 + 为什么需要
90
- 3) 如果用户明确要你"直接开始产出文件内容",再进入对应 Skill 的输出模式。
91
-
92
- ---
93
-
94
- ## Impact 画像解析(AC-003 / AC-012)
95
-
96
- 当 `proposal.md` 存在时,Router **应自动解析** Impact 章节以生成更精确的执行计划。
97
-
98
- ### Impact Profile 结构
99
-
100
- ```yaml
101
- impact_profile:
102
- external_api: true/false # 对外 API 变更
103
- architecture_boundary: true/false # 架构边界变更
104
- data_model: true/false # 数据模型变更
105
- cross_repo: true/false # 跨仓库影响
106
- risk_level: high/medium/low # 风险等级
107
- affected_modules: # 受影响模块列表
108
- - name: <module-path>
109
- type: add/modify/delete
110
- files: <count>
111
- ```
112
-
113
- ### 解析流程
114
-
115
- 1. 检测 `proposal.md` 是否存在
116
- 2. 若存在,查找 `## Impact` 章节
117
- 3. 提取 `impact_profile:` YAML 块
118
- 4. 验证必填字段:`external_api`、`risk_level`、`affected_modules`
119
-
120
- ### 基于 Impact 画像的路由增强
121
-
122
- | Impact 字段 | 值 | 自动追加 Skill |
123
- |-------------|-----|---------------|
124
- | `external_api: true` | - | `devbooks-spec-contract` |
125
- | `architecture_boundary: true` | - | `devbooks-design-doc`(确保 Architecture Impact 章节完整) |
126
- | `cross_repo: true` | - | 手动分析跨仓库影响 |
127
- | `risk_level: high` | - | `devbooks-proposal-challenger` + `devbooks-proposal-judge` |
128
- | `affected_modules` 数量 > 5 | - | `devbooks-impact-analysis`(深度分析) |
129
-
130
- ### 执行计划输出格式
131
-
132
- ```markdown
133
- ## 执行计划(基于 Impact 画像)
134
-
135
- ### 必须执行
136
- 1. `devbooks-proposal-author skill` → proposal.md(提案已存在,跳过)
137
- 2. `devbooks-design-doc skill` → design.md(必须)
138
- 3. `devbooks-implementation-plan skill` → tasks.md(必须)
139
-
140
- ### 建议执行(基于 Impact 分析)
141
- 4. `devbooks-spec-contract skill` → specs/**(检测到 external_api: true)
142
- 5. `devbooks-design-doc skill` → design.md Architecture Impact 章节(检测到 architecture_boundary: true)
143
-
144
- ### 可选执行
145
- 6. `devbooks-impact-analysis skill` → 深度影响分析(affected_modules > 5)
146
- ```
147
-
148
- ### 解析失败处理(AC-012)
149
-
150
- **无 Impact 画像时**:
151
-
152
- ```
153
- ⚠️ proposal.md 中未找到 Impact 画像。
154
-
155
- 缺失项:
156
- - Impact 章节不存在
157
- - 或 impact_profile YAML 块缺失
158
-
159
- 建议动作:
160
- 1. 运行 `devbooks-impact-analysis skill` 生成影响分析
161
- 2. 或直接使用相应 skill
162
-
163
- skill 列表:
164
- - devbooks-design-doc skill → 设计文档
165
- - devbooks-implementation-plan skill → 编码计划
166
- - devbooks-spec-contract skill → 规格定义
167
- ```
168
-
169
- **YAML 解析失败时**:
170
-
171
- ```
172
- ⚠️ Impact 画像解析失败。
173
-
174
- 错误:<具体错误信息>
175
-
176
- 建议动作:
177
- 1. 检查 proposal.md 中 impact_profile YAML 格式
178
- 2. 或直接使用相应 skill 绕过 Router
179
- ```
180
-
181
- ---
182
-
183
- ## 路由规则(质量优先默认)
184
-
185
- ### A) Proposal(提案阶段)
186
-
187
- 触发信号:用户说“提案/为什么要改/范围/风险/坏味道重构/要不要做/先别写代码”等。
188
-
189
- 默认路由:
190
- - `devbooks-proposal-author` → `(<change-root>/<change-id>/proposal.md)`(必须)
191
- - `devbooks-design-doc` → `(<change-root>/<change-id>/design.md)`(非小改动必须;只写 What/Constraints + AC-xxx)
192
- - `devbooks-implementation-plan` → `(<change-root>/<change-id>/tasks.md)`(必须;只从设计推导)
193
-
194
- 按需追加(满足条件才加):
195
- - **跨模块/影响不清晰**:`devbooks-impact-analysis`(建议写回 proposal Impact)
196
- - **风险/争议/取舍明显**:`devbooks-proposal-challenger` + `devbooks-proposal-judge`(独立对话,对辩后写回 Decision Log)
197
- - **对外行为/契约/数据不变量变化**:`devbooks-spec-contract` → `(<change-root>/<change-id>/specs/**)` + `design.md` Contract 章节
198
- - 若需要"确定性创建 spec delta 文件/避免路径写错":`change-spec-delta-scaffold.sh <change-id> <capability> ...`
199
- - **模块边界/依赖方向/架构形态变化**:确保 `devbooks-design-doc` 输出完整的 Architecture Impact 章节 → 归档时由 `devbooks-archiver` 合并到 `(<truth-root>/architecture/c4.md)`
200
-
201
- 硬约束提醒:
202
- - proposal 阶段禁止写实现代码;实现发生在 apply 阶段并以测试/闸门为完成判据。
203
- - 若需要“确定性落盘骨架/避免漏文件”:优先运行 `devbooks-delivery-workflow` 的脚本
204
- - `change-scaffold.sh <change-id> ...`
205
- - `change-check.sh <change-id> --mode proposal ...`
206
-
207
- ### B) Apply(实现阶段:Test Owner / Coder)
208
-
209
- 触发信号:用户说“开始实现/跑测试/修复失败/按 tasks 做/让闸门全绿”等。
210
-
211
- 默认路由(强制角色隔离):
212
- - Test Owner(独立对话/独立实例):`devbooks-test-owner`
213
- - 产物:`(<change-root>/<change-id>/verification.md)` + `tests/**`
214
- - 先跑出 **Red** 基线,并记录证据(如 `(<change-root>/<change-id>/evidence/**)`)
215
- - Coder(独立对话/独立实例):`devbooks-coder`
216
- - 输入:`tasks.md` + 测试报错 + 代码库
217
- - 禁止修改 `tests/**`
218
-
219
- apply 阶段的确定性检查(推荐):
220
- - Test Owner:`change-check.sh <change-id> --mode apply --role test-owner ...`
221
- - Test Owner(证据落盘):`change-evidence.sh <change-id> --label red-baseline -- <test-command>`
222
- - Coder:`change-check.sh <change-id> --mode apply --role coder ...`(会额外检查 git diff 下 `tests/**` 未被修改)
223
-
224
- LSC(大规模同质化修改)建议:
225
- - 先用 `change-codemod-scaffold.sh <change-id> --name <codemod-name> ...` 生成 codemod 脚本骨架,再用脚本批量变更并记录 evidence
226
-
227
- ### C) Review(评审阶段)
228
-
229
- 触发信号:用户说"review/坏味道/可维护性/依赖风险/一致性"等。
230
-
231
- 默认路由:
232
- - `devbooks-reviewer`(输出可执行建议;不改业务结论、不改 tests)
233
- - `devbooks-test-reviewer`(评审测试质量、覆盖率、边界条件)
234
-
235
- ### D) Docs Sync(文档同步)
236
-
237
- 触发信号:用户说"更新文档/同步文档/README 更新/API 文档"等。
238
-
239
- 默认路由:
240
- - `devbooks-docs-consistency`(维护用户文档与代码一致性)
241
- - 增量模式:在变更包上下文中,只更新本次 change 相关的文档
242
- - 全局模式:带 --global 参数,扫描全部文档并生成差异报告
243
-
244
- **触发条件**(非每次 change 都需要):
245
- - 新增/修改/删除公共 API
246
- - 变更用户可见行为
247
- - 修改配置项
248
- - 变更 CLI 命令
249
-
250
- ### E) Archive(归档阶段)
251
-
252
- 触发信号:用户说"归档/合并 specs/关账/收尾"等。
253
-
254
- 默认路由:
255
- - 若本次产生了 spec delta:`devbooks-archiver`(先修剪 `<truth-root>/**` 再归档合并)
256
- - 若需要回写设计决策:`devbooks-design-backport`(按需)
257
- - 若影响用户文档:`devbooks-docs-consistency`(确保文档与代码一致)
258
-
259
- 归档前的确定性检查(推荐):
260
- - `change-check.sh <change-id> --mode strict ...`(要求:proposal 已 Approved、tasks 全勾选、trace matrix 无 TODO、结构守门决策已填写)
261
-
262
- ### F) Prototype(原型模式)
263
-
264
- > 来源:《人月神话》第11章"未雨绸缪" — "第一个开发的系统并不合用...为舍弃而计划"
265
-
266
- 触发信号:用户说"先做原型/快速验证/spike/--prototype/扔掉式原型/Plan to Throw One Away"等。
267
-
268
- **原型模式适用场景**:
269
- - 技术方案不确定,需要快速验证可行性
270
- - 第一次做某类功能,预期会重写
271
- - 需要探索 API/库/框架的实际行为
272
-
273
- **默认路由(原型轨道约束)**:
274
-
275
- 1. 创建原型骨架:
276
- - `change-scaffold.sh <change-id> --prototype ...`
277
- - 产物:`(<change-root>/<change-id>/prototype/)`
278
-
279
- 2. Test Owner(独立对话)使用 `devbooks-test-owner --prototype`:
280
- - 产物:`(<change-root>/<change-id>/prototype/characterization/)`
281
- - 生成**表征测试**(记录实际行为)而非验收测试
282
- - **不需要 Red 基线**——表征测试断言的是"现状"
283
-
284
- 3. Coder(独立对话)使用 `devbooks-coder --prototype`:
285
- - 输出路径:`(<change-root>/<change-id>/prototype/src/)`
286
- - 允许绕过 lint/复杂度阈值
287
- - **禁止直接落到仓库 `src/`**
288
-
289
- **硬约束(必须遵守)**:
290
- - 原型代码与生产代码**物理隔离**(不同目录)
291
- - Test Owner 与 Coder 仍必须**独立对话/独立实例**(角色隔离不变)
292
- - 原型提升到生产需要**显式触发** `prototype-promote.sh <change-id>`
293
-
294
- **原型提升到生产的前置条件**:
295
- 1. 创建生产级 `design.md`(从原型学习中提炼 What/Constraints/AC-xxx)
296
- 2. Test Owner 产出验收测试 `verification.md`(替代表征测试)
297
- 3. 完成 `prototype/PROTOTYPE.md` 中的提升检查清单
298
- 4. 运行 `prototype-promote.sh <change-id>` 并通过所有闸门
299
-
300
- **原型丢弃流程**:
301
- 1. 记录学习到的关键洞察到 `proposal.md` 的 Decision Log
302
- 2. 删除 `prototype/` 目录
303
-
304
- ## DevBooks Skill 适配
305
-
306
- DevBooks 使用 `devbooks-proposal-author skill`、`devbooks-test-owner/coder skill`、`devbooks-archiver skill` 作为入口。
307
- 按上述 A/B/C/D 路由即可,产物路径以项目指路牌里 `<truth-root>/<change-root>` 的映射为准。
308
-
309
- ---
310
-
311
- ## 上下文感知
312
-
313
- 本 Skill 在执行前自动检测上下文,选择合适的路由策略。
314
-
315
- 检测规则参考:`skills/_shared/上下文检测模板.md`
316
-
317
- ### 检测流程
318
-
319
- 1. 检测变更包是否存在
320
- 2. 检测已有产物(proposal/design/tasks/verification)
321
- 3. 推断当前阶段(proposal/apply/archive)
322
- 4. 根据阶段选择默认路由
323
-
324
- ### 本 Skill 支持的模式
325
-
326
- | 模式 | 触发条件 | 行为 |
327
- |------|----------|------|
328
- | **新变更** | 变更包不存在或为空 | 路由到 proposal 阶段,建议创建 proposal.md |
329
- | **进行中** | 变更包存在,有部分产物 | 根据缺失产物推荐下一步 |
330
- | **待归档** | 闸门通过,`evidence/green-final/` 存在 | 路由到 archive 阶段 |
331
-
332
- ### 检测输出示例
333
-
334
- ```
335
- 检测结果:
336
- - 变更包状态:存在
337
- - 已有产物:proposal.md ✓, design.md ✓, tasks.md ✓, verification.md ✗
338
- - 当前阶段:apply
339
- - 建议路由:devbooks-test-owner(先建立 Red 基线)
340
- ```
341
-
342
- ---
343
-
344
- ## MCP 说明
345
-
346
- 本 Skill 不依赖 MCP 服务,无需运行时检测。
14
+ ## 渐进披露
15
+ ### 基础层(必读)
16
+ 目标:判定当前阶段并给出最短闭环路由(Skill + 产物路径 + 理由)。
17
+ 输入:用户请求、配置映射(truth-root/change-root)、已有产物与变更包状态。
18
+ 输出:最小关键问题 + 3–6 条路由结果 + 下一步建议。
19
+ 边界:不直接产出变更包文件;不替代其他 Skill;必须先读取 agents_doc。
20
+ 证据:路由结果中引用的产物路径与检测结论。
21
+
22
+ ### 进阶层(可选)
23
+ 适用:需要 Impact 画像解析、降级策略或详细路由规则时。
24
+
25
+ ### 扩展层(可选)
26
+ 适用:需要原型轨道、归档前检查或上下文检测细则时。
27
+
28
+ ## 核心要点
29
+ - 先做配置发现(优先读取 `.devbooks/config.yaml`)与规则文档读取,再进入路由判断。
30
+ - 输出 2 个最小关键问题 + 3–6 条路由结果(含路径与理由)。
31
+ - 用户要求“直接开始产出”时,切换到目标 Skill 的输出模式。
32
+
33
+ ## 参考资料
34
+ - `skills/devbooks-router/references/路由规则与模板.md`:入口定位、配置发现、Impact 画像、路由规则、原型模式与上下文检测。
35
+
36
+ ## 推荐 MCP 能力类型
37
+ - 代码检索(code-search)
38
+ - 引用追踪(reference-tracking)
39
+ - 影响分析(impact-analysis)
@@ -0,0 +1,317 @@
1
+ # 路由规则与模板
2
+
3
+ ## 定位说明
4
+
5
+ > 重要:Router 的职责是入口引导,而非每步路由。
6
+
7
+ | 场景 | 是否使用 Router |
8
+ |------|:---------------:|
9
+ | "我该从哪开始?" | ✅ 使用 |
10
+ | "项目当前状态?" | ✅ 使用 |
11
+ | "coder 完成后下一步?" | ❌ 不使用(coder 自己输出) |
12
+ | "这个 skill 完成后呢?" | ❌ 不使用(各 skill 自己输出) |
13
+
14
+ 原则:每个 skill 完成时会输出自己的下一步推荐,遵循 `_shared/references/偏离检测与路由协议.md`。
15
+
16
+ ---
17
+
18
+ ## 前置:配置发现(协议无关)
19
+
20
+ - `<truth-root>`:当前真理目录根
21
+ - `<change-root>`:变更包目录根
22
+
23
+ 执行前必须按以下顺序查找配置(找到后停止):
24
+ 1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
25
+ 2. `dev-playbooks/project.md`(如存在)→ Dev-Playbooks 协议,使用默认映射
26
+ 3. `project.md`(如存在)→ template 协议,使用默认映射
27
+ 4. 若仍无法确定 → 停止并询问用户
28
+
29
+ 关键约束:
30
+ - 如果配置中指定了 `agents_doc`(规则文档),必须先阅读该文档再执行任何操作
31
+ - 禁止猜测目录根
32
+ - 禁止跳过规则文档阅读
33
+
34
+ ---
35
+
36
+ ## 前置:结构化分析能力检查(自动)
37
+
38
+ 在路由前自动执行,检查结构化代码分析能力是否可用(如依赖关系或引用追踪):
39
+
40
+ 1. 若能力不可用:
41
+ - 提示用户:「检测到结构化分析能力不可用,影响分析/审查将退化为文本检索」
42
+ - 继续路由但标注「结构化能力降级」
43
+ 2. 若能力可用:静默通过,继续路由
44
+
45
+ 降级模式说明:
46
+ - 结构化能力不可用时,`devbooks-impact-analysis` 退化为 Grep 文本搜索(准确度下降)
47
+ - 结构化能力不可用时,`devbooks-reviewer` 无法获取调用关系上下文
48
+ - 建议在 Apply 阶段前补齐结构化分析能力
49
+
50
+ ---
51
+
52
+ ## 你要做的事
53
+
54
+ 把用户的自然语言请求映射成:
55
+ 1) 现在处于哪个阶段(proposal / apply / review / archive)
56
+ 2) 本次变更的“必产物”(proposal/design/tasks/verification)与“按需产物”(spec deltas/contract/c4/evidence)
57
+ 3) 下一步该用哪个(或哪些)`devbooks-*` Skills
58
+ 4) 每个产物应落到哪个文件路径
59
+
60
+ ## 输出要求(强制)
61
+
62
+ 1) 先问清楚 2 个最小关键问题(若上下文里已有答案则不问):
63
+ - `<change-id>` 是什么?
64
+ - `<truth-root>` / `<change-root>` 在该项目最终取值是什么?
65
+ 2) 给出“下一步路由结果”(3–6 条即可):
66
+ - 每条包含:要用的 Skill + 产物路径 + 为什么需要
67
+ 3) 如果用户明确要你"直接开始产出文件内容",再进入对应 Skill 的输出模式。
68
+
69
+ ---
70
+
71
+ ## Impact 画像解析(AC-003 / AC-012)
72
+
73
+ 当 `proposal.md` 存在时,Router 应自动解析 Impact 章节以生成更精确的执行计划。
74
+
75
+ ### Impact Profile 结构
76
+
77
+ ```yaml
78
+ impact_profile:
79
+ external_api: true/false # 对外 API 变更
80
+ architecture_boundary: true/false # 架构边界变更
81
+ data_model: true/false # 数据模型变更
82
+ cross_repo: true/false # 跨仓库影响
83
+ risk_level: high/medium/low # 风险等级
84
+ affected_modules: # 受影响模块列表
85
+ - name: <module-path>
86
+ type: add/modify/delete
87
+ files: <count>
88
+ ```
89
+
90
+ ### 解析流程
91
+
92
+ 1. 检测 `proposal.md` 是否存在
93
+ 2. 若存在,查找 `## Impact` 章节
94
+ 3. 提取 `impact_profile:` YAML 块
95
+ 4. 验证必填字段:`external_api`、`risk_level`、`affected_modules`
96
+
97
+ ### 基于 Impact 画像的路由增强
98
+
99
+ | Impact 字段 | 值 | 自动追加 Skill |
100
+ |-------------|-----|---------------|
101
+ | `external_api: true` | - | `devbooks-spec-contract` |
102
+ | `architecture_boundary: true` | - | `devbooks-design-doc`(确保 Architecture Impact 章节完整) |
103
+ | `cross_repo: true` | - | 手动分析跨仓库影响 |
104
+ | `risk_level: high` | - | `devbooks-proposal-challenger` + `devbooks-proposal-judge` |
105
+ | `affected_modules` 数量 > 5 | - | `devbooks-impact-analysis`(深度分析) |
106
+
107
+ ### 执行计划输出格式
108
+
109
+ ```markdown
110
+ ## 执行计划(基于 Impact 画像)
111
+
112
+ ### 必须执行
113
+ 1. `devbooks-proposal-author skill` → proposal.md(提案已存在,跳过)
114
+ 2. `devbooks-design-doc skill` → design.md(必须)
115
+ 3. `devbooks-implementation-plan skill` → tasks.md(必须)
116
+
117
+ ### 建议执行(基于 Impact 分析)
118
+ 4. `devbooks-spec-contract skill` → specs/**(检测到 external_api: true)
119
+ 5. `devbooks-design-doc skill` → design.md Architecture Impact 章节(检测到 architecture_boundary: true)
120
+
121
+ ### 可选执行
122
+ 6. `devbooks-impact-analysis skill` → 深度影响分析(affected_modules > 5)
123
+ ```
124
+
125
+ ### 解析失败处理(AC-012)
126
+
127
+ 无 Impact 画像时:
128
+
129
+ ```
130
+ ⚠️ proposal.md 中未找到 Impact 画像。
131
+
132
+ 缺失项:
133
+ - Impact 章节不存在
134
+ - 或 impact_profile YAML 块缺失
135
+
136
+ 建议动作:
137
+ 1. 运行 `devbooks-impact-analysis skill` 生成影响分析
138
+ 2. 或直接使用相应 skill
139
+
140
+ skill 列表:
141
+ - devbooks-design-doc skill → 设计文档
142
+ - devbooks-implementation-plan skill → 编码计划
143
+ - devbooks-spec-contract skill → 规格定义
144
+ ```
145
+
146
+ YAML 解析失败时:
147
+
148
+ ```
149
+ ⚠️ Impact 画像解析失败。
150
+
151
+ 错误:<具体错误信息>
152
+
153
+ 建议动作:
154
+ 1. 检查 proposal.md 中 impact_profile YAML 格式
155
+ 2. 或直接使用相应 skill 绕过 Router
156
+ ```
157
+
158
+ ---
159
+
160
+ ## 路由规则(质量优先默认)
161
+
162
+ ### A) Proposal(提案阶段)
163
+
164
+ 触发信号:用户说“提案/为什么要改/范围/风险/坏味道重构/要不要做/先别写代码”等。
165
+
166
+ 默认路由:
167
+ - `devbooks-proposal-author` → `(<change-root>/<change-id>/proposal.md)`(必须)
168
+ - `devbooks-design-doc` → `(<change-root>/<change-id>/design.md)`(非小改动必须;只写 What/Constraints + AC-xxx)
169
+ - `devbooks-implementation-plan` → `(<change-root>/<change-id>/tasks.md)`(必须;只从设计推导)
170
+
171
+ 按需追加(满足条件才加):
172
+ - 跨模块/影响不清晰:`devbooks-impact-analysis`(建议写回 proposal Impact)
173
+ - 风险/争议/取舍明显:`devbooks-proposal-challenger` + `devbooks-proposal-judge`(独立对话,对辩后写回 Decision Log)
174
+ - 对外行为/契约/数据不变量变化:`devbooks-spec-contract` → `(<change-root>/<change-id>/specs/**)` + `design.md` Contract 章节
175
+ - 若需要"确定性创建 spec delta 文件/避免路径写错":`change-spec-delta-scaffold.sh <change-id> <capability> ...`
176
+ - 模块边界/依赖方向/架构形态变化:确保 `devbooks-design-doc` 输出完整的 Architecture Impact 章节 → 归档时由 `devbooks-archiver` 合并到 `(<truth-root>/architecture/c4.md)`
177
+
178
+ 硬约束提醒:
179
+ - proposal 阶段禁止写实现代码;实现发生在 apply 阶段并以测试/闸门为完成判据。
180
+ - 若需要“确定性落盘骨架/避免漏文件”:优先运行 `devbooks-delivery-workflow` 的脚本
181
+ - `change-scaffold.sh <change-id> ...`
182
+ - `change-check.sh <change-id> --mode proposal ...`
183
+
184
+ ### B) Apply(实现阶段:Test Owner / Coder)
185
+
186
+ 触发信号:用户说“开始实现/跑测试/修复失败/按 tasks 做/让闸门全绿”等。
187
+
188
+ 默认路由(强制角色隔离):
189
+ - Test Owner(独立对话/独立实例):`devbooks-test-owner`
190
+ - 产物:`(<change-root>/<change-id>/verification.md)` + `tests/**`
191
+ - 先跑出 Red 基线,并记录证据(如 `(<change-root>/<change-id>/evidence/**)`)
192
+ - Coder(独立对话/独立实例):`devbooks-coder`
193
+ - 输入:`tasks.md` + 测试报错 + 代码库
194
+ - 禁止修改 `tests/**`
195
+
196
+ apply 阶段的确定性检查(推荐):
197
+ - Test Owner:`change-check.sh <change-id> --mode apply --role test-owner ...`
198
+ - Test Owner(证据落盘):`change-evidence.sh <change-id> --label red-baseline -- <test-command>`
199
+ - Coder:`change-check.sh <change-id> --mode apply --role coder ...`(会额外检查 git diff 下 `tests/**` 未被修改)
200
+
201
+ LSC(大规模同质化修改)建议:
202
+ - 先用 `change-codemod-scaffold.sh <change-id> --name <codemod-name> ...` 生成 codemod 脚本骨架,再用脚本批量变更并记录 evidence
203
+
204
+ ### C) Review(评审阶段)
205
+
206
+ 触发信号:用户说"review/坏味道/可维护性/依赖风险/一致性"等。
207
+
208
+ 默认路由:
209
+ - `devbooks-reviewer`(输出可执行建议;不改业务结论、不改 tests)
210
+ - `devbooks-test-reviewer`(评审测试质量、覆盖率、边界条件)
211
+
212
+ ### D) Docs Sync(文档同步)
213
+
214
+ 触发信号:用户说"更新文档/同步文档/README 更新/API 文档"等。
215
+
216
+ 默认路由:
217
+ - `devbooks-docs-consistency`(维护用户文档与代码一致性)
218
+ - 增量模式:在变更包上下文中,只更新本次 change 相关的文档
219
+ - 全局模式:带 --global 参数,扫描全部文档并生成差异报告
220
+
221
+ 触发条件(非每次 change 都需要):
222
+ - 新增/修改/删除公共 API
223
+ - 变更用户可见行为
224
+ - 修改配置项
225
+ - 变更 CLI 命令
226
+
227
+ ### E) Archive(归档阶段)
228
+
229
+ 触发信号:用户说"归档/合并 specs/关账/收尾"等。
230
+
231
+ 默认路由:
232
+ - 若本次产生了 spec delta:`devbooks-archiver`(先修剪 `<truth-root>/**` 再归档合并)
233
+ - 若需要回写设计决策:`devbooks-design-backport`(按需)
234
+ - 若影响用户文档:`devbooks-docs-consistency`(确保文档与代码一致)
235
+
236
+ 归档前的确定性检查(推荐):
237
+ - `change-check.sh <change-id> --mode strict ...`(要求:proposal 已 Approved、tasks 全勾选、trace matrix 无 TODO、结构守门决策已填写)
238
+
239
+ ### F) Prototype(原型模式)
240
+
241
+ > 来源:《人月神话》第11章"未雨绸缪" — "第一个开发的系统并不合用...为舍弃而计划"
242
+
243
+ 触发信号:用户说"先做原型/快速验证/spike/--prototype/扔掉式原型/Plan to Throw One Away"等。
244
+
245
+ 原型模式适用场景:
246
+ - 技术方案不确定,需要快速验证可行性
247
+ - 第一次做某类功能,预期会重写
248
+ - 需要探索 API/库/框架的实际行为
249
+
250
+ 默认路由(原型轨道约束):
251
+
252
+ 1. 创建原型骨架:
253
+ - `change-scaffold.sh <change-id> --prototype ...`
254
+ - 产物:`(<change-root>/<change-id>/prototype/)`
255
+
256
+ 2. Test Owner(独立对话)使用 `devbooks-test-owner --prototype`:
257
+ - 产物:`(<change-root>/<change-id>/prototype/characterization/)`
258
+ - 生成表征测试(记录实际行为)而非验收测试
259
+ - 不需要 Red 基线——表征测试断言的是"现状"
260
+
261
+ 3. Coder(独立对话)使用 `devbooks-coder --prototype`:
262
+ - 输出路径:`(<change-root>/<change-id>/prototype/src/)`
263
+ - 允许绕过 lint/复杂度阈值
264
+ - 禁止直接落到仓库 `src/`
265
+
266
+ 硬约束(必须遵守):
267
+ - 原型代码与生产代码物理隔离(不同目录)
268
+ - Test Owner 与 Coder 仍必须独立对话/独立实例(角色隔离不变)
269
+ - 原型提升到生产需要显式触发 `prototype-promote.sh <change-id>`
270
+
271
+ 原型提升到生产的前置条件:
272
+ 1. 创建生产级 `design.md`(从原型学习中提炼 What/Constraints/AC-xxx)
273
+ 2. Test Owner 产出验收测试 `verification.md`(替代表征测试)
274
+ 3. 完成 `prototype/PROTOTYPE.md` 中的提升检查清单
275
+ 4. 运行 `prototype-promote.sh <change-id>` 并通过所有闸门
276
+
277
+ 原型丢弃流程:
278
+ 1. 记录学习到的关键洞察到 `proposal.md` 的 Decision Log
279
+ 2. 删除 `prototype/` 目录
280
+
281
+ ## DevBooks Skill 适配
282
+
283
+ DevBooks 使用 `devbooks-proposal-author skill`、`devbooks-test-owner/coder skill`、`devbooks-archiver skill` 作为入口。
284
+ 按上述 A/B/C/D 路由即可,产物路径以项目指路牌里 `<truth-root>/<change-root>` 的映射为准。
285
+
286
+ ---
287
+
288
+ ## 上下文感知
289
+
290
+ 本 Skill 在执行前自动检测上下文,选择合适的路由策略。
291
+
292
+ 检测规则参考:`skills/_shared/上下文检测模板.md`
293
+
294
+ ### 检测流程
295
+
296
+ 1. 检测变更包是否存在
297
+ 2. 检测已有产物(proposal/design/tasks/verification)
298
+ 3. 推断当前阶段(proposal/apply/archive)
299
+ 4. 根据阶段选择默认路由
300
+
301
+ ### 本 Skill 支持的模式
302
+
303
+ | 模式 | 触发条件 | 行为 |
304
+ |------|----------|------|
305
+ | 新变更 | 变更包不存在或为空 | 路由到 proposal 阶段,建议创建 proposal.md |
306
+ | 进行中 | 变更包存在,有部分产物 | 根据缺失产物推荐下一步 |
307
+ | 待归档 | 闸门通过,`evidence/green-final/` 存在 | 路由到 archive 阶段 |
308
+
309
+ ### 检测输出示例
310
+
311
+ ```
312
+ 检测结果:
313
+ - 变更包状态:存在
314
+ - 已有产物:proposal.md ✓, design.md ✓, tasks.md ✓, verification.md ✗
315
+ - 当前阶段:apply
316
+ - 建议路由:devbooks-test-owner(先建立 Red 基线)
317
+ ```