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
@@ -0,0 +1,384 @@
1
+ # 收敛性审计细则
2
+
3
+ ## 核心原则:反迷惑设计
4
+
5
+ > 黄金法则:证据 > 声明。永远不要相信文档中的任何断言,必须通过可验证的证据确认。
6
+
7
+ ### AI 容易被迷惑的场景(必须防范)
8
+
9
+ | 迷惑场景 | AI 错误行为 | 正确行为 |
10
+ |----------|-------------|----------|
11
+ | 文档写 `Status: Done` | 相信已完成 | 验证:测试是否真的全绿?证据是否存在? |
12
+ | AC 矩阵全部 `[x]` | 相信全覆盖 | 验证:每个 AC 对应的测试文件是否存在且通过? |
13
+ | 文档写"测试通过" | 相信通过 | 验证:实际运行测试或检查 CI 日志时间戳 |
14
+ | `evidence/` 目录存在 | 相信有证据 | 验证:目录非空?内容是否为有效测试日志? |
15
+ | tasks.md 全部 `[x]` | 相信已实现 | 验证:对应代码文件是否存在且有实质内容? |
16
+ | 提交信息说"修复了" | 相信已修复 | 验证:相关测试是否从红变绿? |
17
+
18
+ ### 反迷惑三原则
19
+
20
+ ```
21
+ 1. 声明存疑(Distrust Declarations)
22
+ - 任何文档中的"完成/通过/覆盖"声明都是待验证的假设
23
+ - 默认立场:声明可能是错误的、过时的、或乐观的
24
+
25
+ 2. 证据优先(Evidence First)
26
+ - 代码/测试结果是唯一真理
27
+ - 日志时间戳必须晚于最后一次代码修改
28
+ - 空目录/空文件 = 无证据
29
+
30
+ 3. 交叉验证(Cross Validation)
31
+ - 声明 vs 证据:检查是否一致
32
+ - 代码 vs 测试:检查是否匹配
33
+ - 多个文档:检查是否矛盾
34
+ ```
35
+
36
+ ---
37
+
38
+ ## 验证检查清单(逐项执行)
39
+
40
+ ### 检查 1:Status 字段真实性验证
41
+
42
+ 文档声明:`verification.md` 中 `Status: Done` 或 `Status: Verified`
43
+
44
+ 验证步骤:
45
+ ```bash
46
+ # 1. 检查 verification.md 是否存在
47
+ [[ -f "verification.md" ]] || echo "❌ verification.md 不存在"
48
+
49
+ # 2. 检查 evidence/green-final/ 是否有内容
50
+ if [[ -z "$(ls -A evidence/green-final/ 2>/dev/null)" ]]; then
51
+ echo "❌ Status 声称完成,但 evidence/green-final/ 为空"
52
+ fi
53
+
54
+ # 3. 检查证据时间戳是否晚于代码最后修改
55
+ code_mtime=$(stat -f %m src/ 2>/dev/null || stat -c %Y src/)
56
+ evidence_mtime=$(stat -f %m evidence/green-final/* 2>/dev/null | sort -n | tail -1)
57
+ if [[ $evidence_mtime -lt $code_mtime ]]; then
58
+ echo "❌ 证据时间早于代码修改,证据可能过时"
59
+ fi
60
+ ```
61
+
62
+ 迷惑检测:
63
+ - ⚠️ Status=Done 但 evidence/ 为空 → 假完成
64
+ - ⚠️ Status=Done 但证据时间戳过旧 → 过时证据
65
+ - ⚠️ Status=Done 但测试实际运行失败 → 虚假状态
66
+
67
+ ---
68
+
69
+ ### 检查 2:AC 覆盖矩阵真实性验证
70
+
71
+ 文档声明:AC 矩阵中 `[x]` 表示已覆盖
72
+
73
+ 验证步骤:
74
+ ```bash
75
+ # 1. 提取所有声称已覆盖的 AC
76
+ grep -E '^\| AC-[0-9]+.*\[x\]' verification.md | while read line; do
77
+ ac_id=$(echo "$line" | grep -oE 'AC-[0-9]+')
78
+ test_id=$(echo "$line" | grep -oE 'T-[0-9]+')
79
+
80
+ # 2. 验证对应测试是否存在
81
+ if ! grep -rq "$test_id\|$ac_id" tests/; then
82
+ echo "❌ $ac_id 声称已覆盖,但找不到对应测试"
83
+ fi
84
+ done
85
+
86
+ # 3. 实际运行测试验证(最可靠)
87
+ npm test 2>&1 | tee /tmp/test-output.log
88
+ if grep -q "FAIL\|Error\|failed" /tmp/test-output.log; then
89
+ echo "❌ AC 声称全覆盖,但测试实际有失败"
90
+ fi
91
+ ```
92
+
93
+ 迷惑检测:
94
+ - ⚠️ AC 打勾但对应测试文件不存在 → 虚假覆盖
95
+ - ⚠️ AC 打勾但测试实际失败 → 假绿
96
+ - ⚠️ AC 打勾但测试内容为空/占位符 → 占位符测试
97
+
98
+ ---
99
+
100
+ ### 检查 3:tasks.md 完成度真实性验证
101
+
102
+ 文档声明:tasks.md 中 `[x]` 表示已完成
103
+
104
+ 验证步骤:
105
+ ```bash
106
+ # 1. 提取所有声称已完成的任务
107
+ grep -E '^\- \[x\]' tasks.md | while read line; do
108
+ # 2. 提取任务描述中的关键词(函数名/文件名/功能)
109
+ keywords=$(echo "$line" | grep -oE '[A-Za-z]+[A-Za-z0-9]*' | head -5)
110
+
111
+ # 3. 验证代码中是否有对应实现
112
+ for kw in $keywords; do
113
+ if ! grep -rq "$kw" src/; then
114
+ echo "⚠️ 任务声称完成,但代码中找不到关键词: $kw"
115
+ fi
116
+ done
117
+ done
118
+
119
+ # 4. 检查是否有"骨架代码"(只有函数签名没有实现)
120
+ grep -rE 'throw new Error\(.*not implemented|TODO|FIXME|pass$|\.\.\.}' src/ && \
121
+ echo "⚠️ 发现未实现的占位符代码"
122
+ ```
123
+
124
+ 迷惑检测:
125
+ - ⚠️ 任务打勾但代码不存在 → 虚假完成
126
+ - ⚠️ 任务打勾但代码是占位符 → 骨架代码
127
+ - ⚠️ 任务打勾但功能不可调用 → 死代码
128
+
129
+ ---
130
+
131
+ ### 检查 4:证据有效性验证
132
+
133
+ 文档声明:`evidence/` 目录包含测试证据
134
+
135
+ 验证步骤:
136
+ ```bash
137
+ # 1. 检查目录是否存在且非空
138
+ if [[ ! -d "evidence" ]] || [[ -z "$(ls -A evidence/)" ]]; then
139
+ echo "❌ evidence/ 不存在或为空"
140
+ exit 1
141
+ fi
142
+
143
+ # 2. 检查证据文件是否有实质内容
144
+ for f in evidence/**/*; do
145
+ if [[ -f "$f" ]]; then
146
+ lines=$(wc -l < "$f")
147
+ if [[ $lines -lt 5 ]]; then
148
+ echo "⚠️ 证据文件内容过少: $f ($lines 行)"
149
+ fi
150
+
151
+ # 3. 检查是否为有效测试日志(包含测试框架输出特征)
152
+ if ! grep -qE 'PASS|FAIL|✓|✗|passed|failed|test|spec' "$f"; then
153
+ echo "⚠️ 证据文件不像测试日志: $f"
154
+ fi
155
+ fi
156
+ done
157
+
158
+ # 4. 检查 red-baseline 证据是否真的是红色(有失败)
159
+ if [[ -d "evidence/red-baseline" ]]; then
160
+ if ! grep -rqE 'FAIL|Error|✗|failed' evidence/red-baseline/; then
161
+ echo "❌ red-baseline 声称是红色,但没有失败记录"
162
+ fi
163
+ fi
164
+
165
+ # 5. 检查 green-final 证据是否真的是绿色(全通过)
166
+ if [[ -d "evidence/green-final" ]]; then
167
+ if grep -rqE 'FAIL|Error|✗|failed' evidence/green-final/; then
168
+ echo "❌ green-final 声称是绿色,但包含失败记录"
169
+ fi
170
+ fi
171
+ ```
172
+
173
+ 迷惑检测:
174
+ - ⚠️ evidence/ 存在但内容为空 → 空证据
175
+ - ⚠️ 证据文件太小(< 5 行)→ 占位符证据
176
+ - ⚠️ red-baseline 没有失败记录 → 伪造红色
177
+ - ⚠️ green-final 包含失败记录 → 伪造绿色
178
+
179
+ ---
180
+
181
+ ### 检查 5:Git 历史交叉验证
182
+
183
+ 原理:Git 历史不会撒谎,用它来验证文档声明
184
+
185
+ 验证步骤:
186
+ ```bash
187
+ # 1. 检查声称完成的变更是否有对应的代码提交
188
+ change_id="xxx"
189
+ commits=$(git log --oneline --all --grep="$change_id" | wc -l)
190
+ if [[ $commits -eq 0 ]]; then
191
+ echo "❌ 变更 $change_id 声称完成,但 git 历史中没有相关提交"
192
+ fi
193
+
194
+ # 2. 检查测试文件是否在代码之后添加(TDD 违规检测)
195
+ for test_file in tests/**/*.test.*; do
196
+ test_added=$(git log --format=%at --follow -- "$test_file" | tail -1)
197
+ # 找到对应的源文件
198
+ src_file=$(echo "$test_file" | sed 's/tests/src/' | sed 's/.test//')
199
+ if [[ -f "$src_file" ]]; then
200
+ src_added=$(git log --format=%at --follow -- "$src_file" | tail -1)
201
+ if [[ $test_added -gt $src_added ]]; then
202
+ echo "⚠️ 测试后于代码添加(非 TDD): $test_file"
203
+ fi
204
+ fi
205
+ done
206
+
207
+ # 3. 检查是否有"一次性大提交"(可能是绕过流程)
208
+ git log --oneline -20 | while read line; do
209
+ commit=$(echo "$line" | cut -d' ' -f1)
210
+ files_changed=$(git show --stat "$commit" | grep -E '[0-9]+ file' | grep -oE '[0-9]+' | head -1)
211
+ if [[ $files_changed -gt 20 ]]; then
212
+ echo "⚠️ 大提交检测: $commit 修改了 $files_changed 个文件,可能绕过增量验证"
213
+ fi
214
+ done
215
+ ```
216
+
217
+ 迷惑检测:
218
+ - ⚠️ 声称完成但无 git 提交 → 虚假变更
219
+ - ⚠️ 测试后于代码添加 → 事后补测试
220
+ - ⚠️ 大量文件一次提交 → 绕过增量验证
221
+
222
+ ---
223
+
224
+ ### 检查 6:实时测试运行验证(最可靠)
225
+
226
+ 原理:不信任任何日志,实际运行测试
227
+
228
+ 验证步骤:
229
+ ```bash
230
+ # 1. 运行完整测试
231
+ echo "=== 实时测试验证 ==="
232
+ npm test 2>&1 | tee /tmp/live-test.log
233
+
234
+ # 2. 检查结果
235
+ if grep -qE 'FAIL|Error|failed' /tmp/live-test.log; then
236
+ echo "❌ 实时测试失败,文档声明不可信"
237
+ grep -E 'FAIL|Error|failed' /tmp/live-test.log
238
+ else
239
+ echo "✅ 实时测试通过"
240
+ fi
241
+
242
+ # 3. 对比实时结果与证据文件
243
+ if [[ -f "evidence/green-final/latest.log" ]]; then
244
+ live_pass=$(grep -c 'PASS|✓|passed' /tmp/live-test.log)
245
+ evidence_pass=$(grep -c 'PASS|✓|passed' evidence/green-final/latest.log)
246
+ if [[ $live_pass -ne $evidence_pass ]]; then
247
+ echo "⚠️ 实时通过数 ($live_pass) ≠ 证据通过数 ($evidence_pass)"
248
+ fi
249
+ fi
250
+ ```
251
+
252
+ 迷惑检测:
253
+ - ⚠️ 证据说绿色但实时运行失败 → 过时证据/假绿
254
+ - ⚠️ 实时通过数与证据不符 → 证据伪造/环境差异
255
+
256
+ ---
257
+
258
+ ## 综合评分算法
259
+
260
+ ### 可信度评分(0-100)
261
+
262
+ ```python
263
+ def calculate_trustworthiness(checks):
264
+ score = 100
265
+
266
+ # 严重问题(每个 -20 分)
267
+ critical = [
268
+ "证据为空",
269
+ "实时测试失败",
270
+ "Status 声称完成但测试失败",
271
+ "green-final 包含失败记录"
272
+ ]
273
+
274
+ # 警告问题(每个 -10 分)
275
+ warnings = [
276
+ "证据时间戳过旧",
277
+ "AC 对应测试不存在",
278
+ "占位符代码",
279
+ "大提交检测"
280
+ ]
281
+
282
+ # 轻微问题(每个 -5 分)
283
+ minor = [
284
+ "测试后于代码添加",
285
+ "证据文件过小"
286
+ ]
287
+
288
+ for issue in checks.critical_issues:
289
+ score -= 20
290
+ for issue in checks.warnings:
291
+ score -= 10
292
+ for issue in checks.minor_issues:
293
+ score -= 5
294
+
295
+ return max(0, score)
296
+ ```
297
+
298
+ ### 收敛性判定
299
+
300
+ | 可信度 | 判定 | 建议 |
301
+ |--------|------|------|
302
+ | 90-100 | ✅ 可信收敛 | 继续当前流程 |
303
+ | 70-89 | ⚠️ 部分可信 | 需要补充验证 |
304
+ | 50-69 | 🟠 存疑 | 需要返工部分环节 |
305
+ | < 50 | 🔴 不可信 | 西西弗斯困境,需要全面审查 |
306
+
307
+ ---
308
+
309
+ ## 输出格式
310
+
311
+ ```markdown
312
+ # DevBooks 收敛性审计报告(反迷惑版)
313
+
314
+ ## 审计原则
315
+ 本报告采用"证据优先、声明存疑"原则,所有结论基于可验证证据,而非文档声明。
316
+
317
+ ## 声明 vs 证据对比
318
+
319
+ | 检查项 | 文档声明 | 实际验证 | 结论 |
320
+ |--------|----------|----------|------|
321
+ | Status | Done | 测试实际失败 | ❌ 假完成 |
322
+ | AC 覆盖 | 5/5 已打勾 | 2 个 AC 无对应测试 | ❌ 虚假覆盖 |
323
+ | 测试状态 | 全绿 | 实时运行 3 个失败 | ❌ 过时证据 |
324
+ | tasks.md | 10/10 完成 | 3 个任务代码不存在 | ❌ 虚假完成 |
325
+ | evidence/ | 存在 | 目录非空,内容有效 | ✅ 有效 |
326
+
327
+ ## 可信度评分
328
+
329
+ **总分**:45/100 🔴 不可信
330
+
331
+ **扣分明细**:
332
+ - -20:Status=Done 但实时测试失败
333
+ - -20:AC 声称全覆盖但 2 个无测试
334
+ - -10:tasks.md 3 个任务无代码
335
+ - -5:证据时间戳早于代码修改
336
+
337
+ ## 迷惑检测结果
338
+
339
+ ### 🔴 检测到的假完成
340
+ 1. `change-auth`:Status=Done,但 `npm test` 失败 3 个
341
+ 2. `fix-cache`:AC-003 打勾,但 `tests/cache.test.ts` 不存在
342
+
343
+ ### 🟡 可疑项
344
+ 1. `refactor-api`:evidence/green-final/ 时间戳早于最后代码提交 2 天
345
+ 2. `feature-login`:tasks.md 全部打勾,但 `src/login.ts` 包含 TODO
346
+
347
+ ## 真实状态判定
348
+
349
+ | 变更包 | 声明状态 | 真实状态 | 差距 |
350
+ |--------|----------|----------|------|
351
+ | change-auth | Done | 测试失败 | 🔴 严重 |
352
+ | fix-cache | Verified | 覆盖不全 | 🟠 中等 |
353
+ | refactor-api | Ready | 证据过时 | 🟡 轻微 |
354
+
355
+ ## 建议行动
356
+
357
+ ### 立即行动
358
+ 1. 将 `change-auth` 状态回退到 `In Progress`
359
+ 2. 为 `fix-cache` 的 AC-003 补充测试
360
+
361
+ ### 短期改进
362
+ 1. 建立证据时效性检查(证据必须晚于代码)
363
+ 2. AC 打勾前强制运行对应测试
364
+
365
+ ### 流程改进
366
+ 1. 禁止手动修改 Status,只能通过脚本验证后自动更新
367
+ 2. CI 集成收敛性检查,阻止假完成合入
368
+ ```
369
+
370
+ ---
371
+
372
+ ## 完成状态
373
+
374
+ **状态**:✅ AUDIT_COMPLETED
375
+
376
+ **核心发现**:
377
+ - 文档声明可信度:X%
378
+ - 检测到的假完成:N 个
379
+ - 需要返工的变更:M 个
380
+
381
+ **下一步**:
382
+ - 假完成 → 立即回退状态,重新验证
383
+ - 存疑项 → 补充证据或重新运行测试
384
+ - 可信项 → 继续当前流程
@@ -14,228 +14,34 @@ allowed-tools:
14
14
 
15
15
  # DevBooks:交付验收工作流(完整闭环编排器)
16
16
 
17
- > **定位**:本 Skill 是**纯编排层**,不是执行层。它只负责**调用子 Agent**,绝不自己执行任何变更工作。
18
-
19
- ---
20
-
21
- ## 🚨 绝对禁令(ABSOLUTE RULES)
22
-
23
- > **这些规则没有例外,违反即失败。**
24
-
25
- ### 禁令 1:禁止主 Agent 直接工作
26
-
27
- ```
28
- 禁止:主 Agent 自己写 proposal.md / design.md / tests/ / src/
29
- ❌ 禁止:主 Agent 直接修改任何变更包内容
30
- ❌ 禁止:主 Agent 跳过子 Agent 调用
31
-
32
- 必须:所有工作通过 Task 工具调用子 Agent 完成
33
- 必须:每个阶段都有对应的子 Agent 调用
34
- 必须:主 Agent 只做编排、等待、验证
35
- ```
36
-
37
- ### 禁令 2:禁止跳过任何强制阶段
38
-
39
- ```
40
- 禁止:跳过 Challenger/Judge 阶段
41
- 禁止:跳过 Test-Reviewer 阶段
42
- 禁止:跳过 Code-Review 阶段
43
- ❌ 禁止:跳过 Green-Verify 阶段
44
- 禁止:未通过 strict 检查就归档
45
-
46
- 必须:完整执行 12 个强制阶段
47
- 必须:每个阶段的子 Agent 返回成功才能继续
48
- ```
49
-
50
- ### 禁令 3:禁止假完成归档
51
-
52
- ```
53
- ❌ 禁止:evidence/green-final/ 不存在或为空时归档
54
- ❌ 禁止:verification.md AC 覆盖率 < 100% 时归档
55
- ❌ 禁止:tasks.md 存在未完成任务时归档
56
- ❌ 禁止:change-check.sh --mode strict 失败时归档
57
-
58
- ✅ 必须:Archiver 子 Agent 先运行检查脚本
59
- ✅ 必须:所有检查通过后才执行归档
60
- ```
61
-
62
- ### 禁令 4:禁止演示模式(NO DEMO MODE)
63
-
64
- ```
65
- ❌ 禁止:将工作流当作"演示"或"展示"
66
- ❌ 禁止:输出"演示已完成"、"工作流演示"等措辞
67
- ❌ 禁止:声称完成但实际产物不存在或为空
68
- ❌ 禁止:用"模拟"、"假设"、"如果"代替实际执行
69
-
70
- ✅ 必须:每个阶段都要产出真实的、可验证的产物
71
- ✅ 必须:产物必须写入文件系统(可通过 ls/cat 验证)
72
- ✅ 必须:使用"执行"、"完成"、"已创建"等真实动作词汇
73
- ✅ 必须:如果无法真实执行,立即停止并告知用户
74
- ```
75
-
76
- **检测演示模式的信号**:
77
- - 使用"演示"、"展示"、"模拟"等词汇
78
- - 声称完成但没有实际文件写入
79
- - 提供"选项 A/B"而非执行下一步
80
- - 输出"后续建议"而非继续执行
81
-
82
- ### 禁令 5:禁止忽略 REVISE REQUIRED
83
-
84
- ```
85
- ❌ 禁止:收到 REVISE REQUIRED 后继续下一阶段
86
- ❌ 禁止:收到 REVISE REQUIRED 后声称"已完成"
87
- ❌ 禁止:收到 REVISE REQUIRED 后提供"选项"让用户选择
88
- ❌ 禁止:收到 REJECTED 后继续执行
89
-
90
- ✅ 必须:Judge 返回 REVISE → 回到阶段 1 重写提案
91
- ✅ 必须:Judge 返回 REJECTED → 停止流程,告知用户
92
- ✅ 必须:Test-Review 返回 REVISE REQUIRED → 回到阶段 7 修复测试
93
- ✅ 必须:Code-Review 返回 REVISE REQUIRED → 回到阶段 8 修复代码
94
- ✅ 必须:修复后重新执行评审阶段,直到通过
95
- ```
96
-
97
- ### 禁令 6:禁止部分完成前进
98
-
99
- ```
100
- ❌ 禁止:tasks.md 任务完成率 < 100% 时进入下一阶段
101
- ❌ 禁止:测试覆盖率 < AC 要求时进入下一阶段
102
- ❌ 禁止:存在空壳测试(skip/todo/not_implemented)时进入 Code 阶段
103
- ❌ 禁止:存在未实现函数(raise NotImplementedError)时进入 Review 阶段
104
-
105
- ✅ 必须:阶段 7 完成时,所有测试必须是真实的、可执行的
106
- ✅ 必须:阶段 8 完成时,tasks.md 所有任务 100% 完成
107
- ✅ 必须:如果发现范围过大,必须拆分变更包,不能部分完成
108
- ```
109
-
110
- ---
111
-
112
- ## 前置:配置发现
113
-
114
- 执行前**必须**按以下顺序查找配置:
115
- 1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
116
- 2. `dev-playbooks/project.md`(如存在)→ Dev-Playbooks 协议
117
- 3. `project.md`(如存在)→ template 协议
118
- 4. 若仍无法确定 → **停止并询问用户**
119
-
120
- ---
121
-
122
- ## 完整闭环流程(12 个强制阶段)
123
-
124
- ```
125
- ┌──────────────────────────────────────────────────────────────────────────┐
126
- │ 强制流程(无可选阶段) │
127
- ├──────────────────────────────────────────────────────────────────────────┤
128
- │ │
129
- │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌─────────┐ │
130
- │ │1.Propose│──▶│2.Challenge│──▶│ 3.Judge │──▶│4.Design │ │
131
- │ └─────────┘ └───────────┘ └─────────┘ └─────────┘ │
132
- │ │ │ │
133
- │ │ ┌─────────────────────────────┘ │
134
- │ │ ▼ │
135
- │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
136
- │ │ │ 5.Spec │──▶│ 6.Plan │──▶│7.Test-R │ │
137
- │ │ └─────────┘ └─────────┘ └─────────┘ │
138
- │ │ │ │
139
- │ │ ┌───────────────────────────┘ │
140
- │ │ ▼ │
141
- │ │ ┌─────────┐ ┌──────────┐ ┌──────────┐ │
142
- │ │ │ 8.Code │──▶│9.TestRev │──▶│10.CodeRev│ │
143
- │ │ └─────────┘ └──────────┘ └──────────┘ │
144
- │ │ │ │
145
- │ │ ┌─────────────────────────────┘ │
146
- │ │ ▼ │
147
- │ │ ┌───────────┐ ┌─────────┐ │
148
- │ └───────▶│11.GreenV │──▶│12.Archive│ │
149
- │ └───────────┘ └─────────┘ │
150
- │ │
151
- └──────────────────────────────────────────────────────────────────────────┘
152
- ```
153
-
154
- ### 阶段详解与子 Agent 调用
155
-
156
- | # | 阶段 | 子 Agent | Skill | 产物 | 强制 |
157
- |---|------|----------|-------|------|------|
158
- | 1 | Propose | `devbooks-proposal-author` | devbooks-proposal-author | proposal.md | ✅ |
159
- | 2 | Challenge | `devbooks-challenger` | devbooks-proposal-challenger | 质疑意见 | ✅ |
160
- | 3 | Judge | `devbooks-judge` | devbooks-proposal-judge | Decision Log | ✅ |
161
- | 4 | Design | `devbooks-designer` | devbooks-design-doc | design.md | ✅ |
162
- | 5 | Spec | `devbooks-spec-owner` | devbooks-spec-contract | specs/*.md | ✅ |
163
- | 6 | Plan | `devbooks-planner` | devbooks-implementation-plan | tasks.md | ✅ |
164
- | 7 | Test-Red | `devbooks-test-owner` | devbooks-test-owner | verification.md + tests/ | ✅ |
165
- | 8 | Code | `devbooks-coder` | devbooks-coder | src/ 实现 | ✅ |
166
- | 9 | Test-Review | `devbooks-reviewer` | devbooks-test-reviewer | 测试评审意见 | ✅ |
167
- | 10 | Code-Review | `devbooks-reviewer` | devbooks-reviewer | 代码评审意见 | ✅ |
168
- | 11 | Green-Verify | `devbooks-test-owner` | devbooks-test-owner | evidence/green-final/ | ✅ |
169
- | 12 | Archive | `devbooks-archiver` | devbooks-archiver | 归档到 archive/ | ✅ |
170
-
171
- ---
172
-
173
- ## 📚 参考文档
174
-
175
- ### 必读(立即阅读)
176
-
177
- 1. **子 Agent 调用规范**:`references/子Agent调用规范.md`
178
- - 调用格式和示例
179
- - 角色隔离约束
180
- - 何时阅读:开始编排前
181
-
182
- 2. **编排逻辑伪代码**:`references/编排逻辑伪代码.md`
183
- - 完整的编排逻辑
184
- - 12 个阶段的详细实现
185
- - 何时阅读:需要理解编排逻辑时
186
-
187
- ### 按需阅读
188
-
189
- 3. **闸门检查与错误处理**:`references/闸门检查与错误处理.md`
190
- - 阶段闸门检查点
191
- - 错误处理流程
192
- - 回退执行规则
193
- - 何时阅读:遇到错误或需要回退时
194
-
195
- 4. **交付验收工作流**:`references/交付验收工作流.md`
196
- - 完整的工作流说明
197
- - 何时阅读:需要详细了解工作流时
198
-
199
- 5. **变更验证与追溯模板**:`references/变更验证与追溯模板.md`
200
- - 验证模板
201
- - 何时阅读:需要模板参考时
202
-
203
- ---
204
-
205
- ## 上下文感知
206
-
207
- ### 检测流程
208
-
209
- 1. 检测变更包是否存在
210
- 2. 检测当前阶段(哪些阶段已完成)
211
- 3. 从断点继续执行
212
-
213
- ### 断点续跑
214
-
215
- 若变更包已存在部分产物,从最近完成的阶段继续:
216
-
217
- ```
218
- 检测结果:
219
- - 变更包:存在
220
- - 已完成阶段:1-6(proposal, challenge, judge, design, spec, plan)
221
- - 下一阶段:7(Test-Red)
222
- - 运行模式:断点续跑
223
- ```
224
-
225
- ---
226
-
227
- ## MCP 说明
228
-
229
- 本 Skill 不依赖 MCP 服务,无需运行时检测。
230
-
231
- ---
232
-
233
- ## 可选检查脚本
234
-
235
- 脚本位于本 Skill 的 `scripts/` 目录:
236
-
237
- - 初始化变更包骨架:`change-scaffold.sh`
238
- - 一键校验变更包:`change-check.sh`
239
- - 结构守门决策校验:`guardrail-check.sh`
240
- - 证据采集:`change-evidence.sh`
241
- - 进度仪表板:`progress-dashboard.sh`
17
+ ## 渐进披露
18
+ ### 基础层(必读)
19
+ 目标:以主 Agent 纯编排方式完成 12 阶段闭环交付。
20
+ 输入:用户目标、配置映射、已有变更包产物与阶段状态。
21
+ 输出:子 Agent 调用序列、阶段进度与结果汇总。
22
+ 边界:主 Agent 不直接改文件;必须通过 Task 调用子 Agent;遵守角色隔离与闸门规则。
23
+ 证据:各阶段产物路径、脚本输出与评审结果记录。
24
+
25
+ ### 进阶层(可选)
26
+ 适用:需要禁令细则、阶段表或断点续跑规则时。
27
+
28
+ ### 扩展层(可选)
29
+ 适用:需要闸门处理、追溯模板或脚本工具指引时。
30
+
31
+ ## 核心要点
32
+ - 只负责编排,不直接产出提案/设计/测试/代码。
33
+ - 12 阶段强制闭环,任一阶段失败必须回退修复。
34
+ - 先完成配置发现(优先读取 `.devbooks/config.yaml`),再执行子 Agent 调用。
35
+
36
+ ## 参考资料
37
+ - `skills/devbooks-delivery-workflow/references/编排禁令与阶段表.md`:绝对禁令、12 阶段流程与断点续跑。
38
+ - `skills/devbooks-delivery-workflow/references/子Agent调用规范.md`:子 Agent 调用格式与隔离要求。
39
+ - `skills/devbooks-delivery-workflow/references/编排逻辑伪代码.md`:编排主逻辑。
40
+ - `skills/devbooks-delivery-workflow/references/闸门检查与错误处理.md`:闸门检查点与回退策略。
41
+ - `skills/devbooks-delivery-workflow/references/交付验收工作流.md`:完整交付流程说明。
42
+ - `skills/devbooks-delivery-workflow/references/变更验证与追溯模板.md`:验证与追溯模板。
43
+
44
+ ## 推荐 MCP 能力类型
45
+ - 代码检索(code-search)
46
+ - 引用追踪(reference-tracking)
47
+ - 影响分析(impact-analysis)