dev-playbooks-cn 1.0.20 → 1.2.1

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 (41) hide show
  1. package/README.md +41 -62
  2. package/bin/devbooks.js +228 -0
  3. package/package.json +1 -1
  4. package/skills/Skills/344/275/277/347/224/250/350/257/264/346/230/216.md +8 -73
  5. package/skills/_shared/mcp-enhancement-template.md +1 -4
  6. package/skills/_shared/references//345/201/217/347/246/273/346/243/200/346/265/213/344/270/216/350/267/257/347/224/261/345/215/217/350/256/256.md +199 -0
  7. package/skills/_shared/workflow-next-steps.md +111 -0
  8. package/skills/devbooks-brownfield-bootstrap/SKILL.md +2 -2
  9. package/skills/devbooks-brownfield-bootstrap/scripts/cod-update.sh +1 -1
  10. package/skills/devbooks-code-review/SKILL.md +34 -1
  11. package/skills/devbooks-coder/SKILL.md +103 -2
  12. package/skills/devbooks-delivery-workflow/SKILL.md +2 -2
  13. package/skills/devbooks-design-backport/SKILL.md +1 -1
  14. package/skills/devbooks-design-doc/SKILL.md +38 -1
  15. package/skills/devbooks-docs-sync/SKILL.md +338 -0
  16. package/skills/devbooks-entropy-monitor/SKILL.md +1 -1
  17. package/skills/devbooks-impact-analysis/SKILL.md +2 -2
  18. package/skills/devbooks-implementation-plan/SKILL.md +43 -1
  19. package/skills/devbooks-proposal-author/SKILL.md +41 -1
  20. package/skills/devbooks-proposal-author/references//346/217/220/346/241/210/346/222/260/345/206/231/346/217/220/347/244/272/350/257/215.md +10 -0
  21. package/skills/devbooks-proposal-challenger/SKILL.md +1 -1
  22. package/skills/devbooks-proposal-judge/SKILL.md +1 -1
  23. package/skills/devbooks-router/SKILL.md +45 -14
  24. package/skills/devbooks-spec-contract/SKILL.md +36 -2
  25. package/skills/devbooks-spec-gardener/SKILL.md +1 -1
  26. package/skills/devbooks-test-owner/SKILL.md +204 -1
  27. package/skills/devbooks-test-reviewer/SKILL.md +27 -1
  28. package/templates/claude-agents/devbooks-coder.md +21 -0
  29. package/templates/claude-agents/devbooks-explorer.md +21 -0
  30. package/templates/claude-agents/devbooks-reviewer.md +21 -0
  31. package/templates/claude-agents/devbooks-test-owner.md +21 -0
  32. package/templates/dev-playbooks/README.md +4 -14
  33. package/templates/dev-playbooks/docs/DevBooks/351/205/215/347/275/256/346/214/207/345/215/227.md +1 -14
  34. package/skills/devbooks-federation/SKILL.md +0 -264
  35. package/skills/devbooks-federation/scripts/federation-check.sh +0 -144
  36. package/skills/devbooks-federation/templates/federation.yaml +0 -89
  37. package/skills/devbooks-index-bootstrap/SKILL.md +0 -240
  38. package/skills/devbooks-proposal-debate-workflow/SKILL.md +0 -78
  39. package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/345/267/245/344/275/234/346/265/201.md +0 -24
  40. package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/346/250/241/346/235/277.md +0 -35
  41. package/skills/devbooks-proposal-debate-workflow/scripts/proposal-debate-check.sh +0 -102
package/README.md CHANGED
@@ -27,22 +27,7 @@ AI 编码助手很强大,但往往**不可预测**:
27
27
  - **基于证据的完成**:完成由测试/构建/证据定义,而非 AI 自我评估
28
28
  - **强制角色隔离**:Test Owner 与 Coder 必须在独立对话中工作
29
29
  - **多重质量闸门**:Green 证据检查、任务完成率、角色边界检查
30
- - **21 个 Skills**:覆盖提案、设计、对辩、评审、熵度量、联邦分析等
31
-
32
- ---
33
-
34
- ## DevBooks 对比一览
35
-
36
- | 维度 | DevBooks | OpenSpec | spec-kit | 无规格 |
37
- |------|----------|----------|----------|--------|
38
- | 规格驱动工作流 | 是 | 是 | 是 | 否 |
39
- | 变更产物的可追溯性 | 变更包集中存档(proposal/design/spec/tasks/verification/evidence) | 主要以变更目录/文件组织为主 | 以文档+任务编排为主 | 无 |
40
- | 角色与职责边界 | **强制隔离**(Test Owner / Coder) | 约定为主(不强制) | 约定为主(不强制) | 无 |
41
- | 完成判据(DoD) | **证据驱动 + 闸门**(测试/构建/审计) | 人工定义/人工检查 | 人工定义/人工检查 | 常依赖主观判断 |
42
- | 代码质量保障 | 守门 + 指标(熵度量/热点)+ Review 角色 | 依赖外部工具/人工 review | 依赖外部工具/人工 review | 不稳定 |
43
- | 影响面分析 | CKB 图基能力(可降级 Grep) | 文本搜索/人工推导 | 文本搜索/人工推导 | 容易漏改 |
44
- | 存量项目起步 | 自动生成基线规格/术语表/最小验证锚点 | 手动补齐 | 有限 | - |
45
- | 自动化覆盖面 | 21 个 Skills(提案→实现→归档闭环) | 3 个核心命令 | 工具包(偏 0→1) | - |
30
+ - **18 个 Skills**:覆盖提案、设计、评审、熵度量等完整工作流
46
31
 
47
32
  ---
48
33
 
@@ -174,7 +159,6 @@ DevBooks 使用两个目录根:
174
159
  | `devbooks-impact-analysis` | 跨模块影响分析 |
175
160
  | `devbooks-proposal-challenger` | 质疑和挑战提案 |
176
161
  | `devbooks-proposal-judge` | 裁决提案 |
177
- | `devbooks-proposal-debate-workflow` | 三角对辩(Author/Challenger/Judge) |
178
162
  | `devbooks-design-doc` | 创建设计文档 |
179
163
  | `devbooks-spec-contract` | 定义规格与契约 |
180
164
  | `devbooks-implementation-plan` | 创建实现计划 |
@@ -206,9 +190,7 @@ DevBooks 使用两个目录根:
206
190
  | Skill | 说明 |
207
191
  |-------|------|
208
192
  | `devbooks-entropy-monitor` | 系统熵度量 |
209
- | `devbooks-federation` | 跨仓库联邦分析 |
210
193
  | `devbooks-brownfield-bootstrap` | 存量项目初始化 |
211
- | `devbooks-index-bootstrap` | 生成 SCIP 索引 |
212
194
 
213
195
  ---
214
196
 
@@ -216,54 +198,55 @@ DevBooks 使用两个目录根:
216
198
 
217
199
  ### vs. OpenSpec
218
200
 
219
- [OpenSpec](https://github.com/Fission-AI/OpenSpec) 是轻量级规格驱动框架,用三个核心命令(proposal/apply/archive)对齐人与 AI,按功能文件夹分组变更。
220
-
221
- **DevBooks 新增:**
222
- - **角色隔离**:Test Owner 与 Coder 硬边界(必须独立对话)
223
- - **质量闸门**:5+ 验证闸门拦截伪完成
224
- - **21 个 Skills**:覆盖提案、对辩、评审、熵度量、联邦分析
225
- - **基于证据的完成**:测试/构建定义"完成",而非 AI 自评
201
+ [OpenSpec](https://github.com/Fission-AI/OpenSpec) 是轻量级规格驱动框架,用三个核心命令(proposal/apply/archive)对齐人与 AI
226
202
 
227
- **选择 OpenSpec**:简单规格驱动变更,需要轻量工作流。
203
+ **OpenSpec 的局限**:
204
+ - 缺乏角色隔离,AI 可能自我验证"已完成"
205
+ - 无质量闸门,伪完成难以拦截
206
+ - 只有 3 个命令,复杂变更覆盖不足
228
207
 
229
- **选择 DevBooks**:大型变更、需要角色分离和质量验证。
208
+ **DevBooks 解决方案**:
209
+ - **强制角色隔离**:Test Owner 与 Coder 必须独立对话,杜绝自我验证
210
+ - **5+ 质量闸门**:Green 证据检查、任务完成率、角色边界检查
211
+ - **18 个 Skills**:覆盖提案→实现→归档完整闭环
230
212
 
231
213
  ### vs. spec-kit
232
214
 
233
- [GitHub spec-kit](https://github.com/github/spec-kit) 提供规格驱动开发工具包,有 constitution 文件、多步骤细化和结构化规划。
234
-
235
- **DevBooks 新增:**
236
- - **存量优先**:自动为现有代码库生成基线规格
237
- - **角色隔离**:测试编写与实现强制分离
238
- - **质量闸门**:运行时验证,不只是工作流引导
239
- - **原型模式**:安全实验不污染主 src/
215
+ [GitHub spec-kit](https://github.com/github/spec-kit) 提供规格驱动开发工具包,有 constitution 文件和结构化规划。
240
216
 
241
- **选择 spec-kit**:0→1 绿地项目,使用支持的 AI 工具。
217
+ **spec-kit 的局限**:
218
+ - 偏向 0→1 绿地项目,存量项目支持有限
219
+ - 无强制角色隔离,测试与实现可能混淆
220
+ - 依赖人工检查,缺乏运行时验证
242
221
 
243
- **选择 DevBooks**:存量项目或需要强制质量闸门。
222
+ **DevBooks 解决方案**:
223
+ - **存量优先**:`devbooks-brownfield-bootstrap` 自动生成基线规格
224
+ - **强制角色隔离**:测试编写与实现物理分离
225
+ - **运行时闸门**:自动验证,不依赖人工检查
244
226
 
245
227
  ### vs. Kiro.dev
246
228
 
247
- [Kiro](https://kiro.dev/) 是 AWS 的代理式 IDE,用三阶段工作流(EARS 格式需求、设计、任务),但规格与实现产物分开存储。
229
+ [Kiro](https://kiro.dev/) 是 AWS 的代理式 IDE,用三阶段工作流(需求、设计、任务)。
248
230
 
249
- **DevBooks 差异:**
250
- - **变更包**:每个变更包含 proposal/design/spec/plan/verification/evidence,整个生命周期可在一个位置追溯
251
- - **角色隔离**:Test Owner 与 Coder 强制分离
252
- - **质量闸门**:通过闸门验证,不只是任务完成
231
+ **Kiro 的局限**:
232
+ - 规格与实现产物分开存储,追溯困难
233
+ - 无强制角色隔离
234
+ - 依赖特定 IDE 环境
253
235
 
254
- **选择 Kiro**:想要集成 IDE 体验和 AWS 生态。
255
-
256
- **选择 DevBooks**:想要变更包捆绑所有产物并强制角色边界。
236
+ **DevBooks 解决方案**:
237
+ - **变更包**:proposal/design/spec/plan/verification/evidence 集中存储,完整追溯
238
+ - **强制角色隔离**:Test Owner 与 Coder 硬边界
239
+ - **工具无关**:支持 Claude Code、Codex CLI、Cursor 等多种工具
257
240
 
258
241
  ### vs. 无规格
259
242
 
260
243
  没有规格时,AI 从模糊提示生成代码,导致不可预测的输出、范围蔓延和"幻觉式完成"。
261
244
 
262
245
  **DevBooks 带来:**
263
- - 实现前商定规格
264
- - 验证真实完成的质量闸门
265
- - 防止自我验证的角色隔离
266
- - 每个变更的证据链
246
+ - 实现前商定规格,范围清晰可控
247
+ - 质量闸门验证真实完成
248
+ - 角色隔离防止自我验证
249
+ - 每个变更的完整证据链
267
250
 
268
251
  ---
269
252
 
@@ -349,12 +332,6 @@ DevBooks 跟踪四维系统熵:
349
332
 
350
333
  </details>
351
334
 
352
- <details>
353
- <summary><strong>跨仓库联邦</strong></summary>
354
-
355
- 多仓库分析用 `devbooks-federation`,分析跨仓库边界的契约和依赖,支持协调变更。
356
-
357
- </details>
358
335
 
359
336
  <details>
360
337
  <summary><strong>MCP 自动检测</strong></summary>
@@ -380,19 +357,21 @@ DevBooks Skills 支持 MCP(Model Context Protocol)优雅降级:在没有 M
380
357
  - 超时/失败 → 静默降级到基础模式,不阻塞执行
381
358
  - 无需手动选择"基础/增强"模式
382
359
 
383
- 如需启用增强能力:按 `docs/推荐MCP.md` 配置 CKB,并运行 `devbooks-index-bootstrap` 生成 `index.scip`。
360
+ 如需启用增强能力:按 `docs/推荐MCP.md` 配置 CKB,并手动生成 `index.scip`。
384
361
 
385
362
  </details>
386
363
 
387
364
  <details>
388
- <summary><strong>提案对辩工作流</strong></summary>
365
+ <summary><strong>提案审查流程</strong></summary>
366
+
367
+ 严格提案审查使用独立对话的 Challenger 和 Judge:
389
368
 
390
- 严格提案审查用三角对辩 `devbooks-proposal-debate-workflow`:
369
+ 三个角色(必须独立对话):
370
+ 1. **Author**:创建并捍卫提案(使用 `devbooks-proposal-author`)
371
+ 2. **Challenger**:质疑假设、发现缺口、识别风险(使用 `devbooks-proposal-challenger`)
372
+ 3. **Judge**:做最终决定、记录理由(使用 `devbooks-proposal-judge`)
391
373
 
392
- 三个角色:
393
- 1. **Author**:创建并捍卫提案
394
- 2. **Challenger**:质疑假设、发现缺口、识别风险
395
- 3. **Judge**:做最终决定、记录理由
374
+ **重要**:三个角色必须在**独立对话**中工作,以避免角色混淆和自我验证。
396
375
 
397
376
  决定结果:`Approved`、`Revise`、`Rejected`
398
377
 
package/bin/devbooks.js CHANGED
@@ -305,6 +305,160 @@ function getCliVersion() {
305
305
  }
306
306
  }
307
307
 
308
+ // ============================================================================
309
+ // 自动更新 .gitignore 和 .npmignore
310
+ // ============================================================================
311
+
312
+ const IGNORE_MARKERS = {
313
+ start: '# DevBooks managed - DO NOT EDIT',
314
+ end: '# End DevBooks managed'
315
+ };
316
+
317
+ /**
318
+ * 获取需要添加到 .gitignore 的条目
319
+ * @param {string[]} toolIds - 选择的 AI 工具 ID
320
+ * @returns {string[]} - 需要忽略的条目
321
+ */
322
+ function getGitIgnoreEntries(toolIds) {
323
+ const entries = [
324
+ '# DevBooks 本地配置(包含用户偏好,不应提交)',
325
+ '.devbooks/'
326
+ ];
327
+
328
+ // 根据选择的工具添加对应的 AI 工具目录
329
+ for (const toolId of toolIds) {
330
+ const tool = AI_TOOLS.find(t => t.id === toolId);
331
+ if (!tool) continue;
332
+
333
+ // 添加 slash 命令目录
334
+ if (tool.slashDir) {
335
+ const topDir = tool.slashDir.split('/')[0];
336
+ if (!entries.includes(topDir + '/')) {
337
+ entries.push(`${topDir}/`);
338
+ }
339
+ }
340
+
341
+ // 添加 rules 目录
342
+ if (tool.rulesDir) {
343
+ const topDir = tool.rulesDir.split('/')[0];
344
+ if (!entries.includes(topDir + '/')) {
345
+ entries.push(`${topDir}/`);
346
+ }
347
+ }
348
+
349
+ // 添加 agents 目录(如 .github/instructions 等)
350
+ if (tool.instructionsDir) {
351
+ const topDir = tool.instructionsDir.split('/')[0];
352
+ if (topDir !== '.github') { // .github 目录通常需要保留
353
+ if (!entries.includes(topDir + '/')) {
354
+ entries.push(`${topDir}/`);
355
+ }
356
+ }
357
+ }
358
+ }
359
+
360
+ return entries;
361
+ }
362
+
363
+ /**
364
+ * 获取需要添加到 .npmignore 的条目
365
+ * @returns {string[]} - 需要忽略的条目
366
+ */
367
+ function getNpmIgnoreEntries() {
368
+ return [
369
+ '# DevBooks 开发文档(运行时不需要)',
370
+ 'dev-playbooks/',
371
+ '.devbooks/',
372
+ '',
373
+ '# AI 工具配置目录',
374
+ '.claude/',
375
+ '.cursor/',
376
+ '.windsurf/',
377
+ '.gemini/',
378
+ '.agent/',
379
+ '.opencode/',
380
+ '.continue/',
381
+ '.qoder/',
382
+ '.github/instructions/',
383
+ '.github/copilot-instructions.md',
384
+ '',
385
+ '# DevBooks 指令文件',
386
+ 'CLAUDE.md',
387
+ 'AGENTS.md',
388
+ 'GEMINI.md'
389
+ ];
390
+ }
391
+
392
+ /**
393
+ * 更新 ignore 文件,保留用户自定义内容
394
+ * @param {string} filePath - ignore 文件路径
395
+ * @param {string[]} entries - 需要添加的条目
396
+ * @returns {object} - { updated: boolean, action: 'created' | 'updated' | 'unchanged' }
397
+ */
398
+ function updateIgnoreFile(filePath, entries) {
399
+ const managedBlock = [
400
+ IGNORE_MARKERS.start,
401
+ ...entries,
402
+ IGNORE_MARKERS.end
403
+ ].join('\n');
404
+
405
+ if (!fs.existsSync(filePath)) {
406
+ // 文件不存在,创建新文件
407
+ fs.writeFileSync(filePath, managedBlock + '\n');
408
+ return { updated: true, action: 'created' };
409
+ }
410
+
411
+ const content = fs.readFileSync(filePath, 'utf-8');
412
+ const startIdx = content.indexOf(IGNORE_MARKERS.start);
413
+ const endIdx = content.indexOf(IGNORE_MARKERS.end);
414
+
415
+ if (startIdx !== -1 && endIdx !== -1 && startIdx < endIdx) {
416
+ // 已有托管块,更新它
417
+ const before = content.slice(0, startIdx);
418
+ const after = content.slice(endIdx + IGNORE_MARKERS.end.length);
419
+ const newContent = before + managedBlock + after;
420
+
421
+ if (newContent !== content) {
422
+ fs.writeFileSync(filePath, newContent);
423
+ return { updated: true, action: 'updated' };
424
+ }
425
+ return { updated: false, action: 'unchanged' };
426
+ }
427
+
428
+ // 没有托管块,追加到文件末尾
429
+ const newContent = content.trimEnd() + '\n\n' + managedBlock + '\n';
430
+ fs.writeFileSync(filePath, newContent);
431
+ return { updated: true, action: 'updated' };
432
+ }
433
+
434
+ /**
435
+ * 设置项目的 ignore 文件
436
+ * @param {string[]} toolIds - 选择的 AI 工具 ID
437
+ * @param {string} projectDir - 项目目录
438
+ * @returns {object[]} - 结果数组
439
+ */
440
+ function setupIgnoreFiles(toolIds, projectDir) {
441
+ const results = [];
442
+
443
+ // 更新 .gitignore
444
+ const gitIgnorePath = path.join(projectDir, '.gitignore');
445
+ const gitIgnoreEntries = getGitIgnoreEntries(toolIds);
446
+ const gitResult = updateIgnoreFile(gitIgnorePath, gitIgnoreEntries);
447
+ if (gitResult.updated) {
448
+ results.push({ file: '.gitignore', action: gitResult.action });
449
+ }
450
+
451
+ // 更新 .npmignore
452
+ const npmIgnorePath = path.join(projectDir, '.npmignore');
453
+ const npmIgnoreEntries = getNpmIgnoreEntries();
454
+ const npmResult = updateIgnoreFile(npmIgnorePath, npmIgnoreEntries);
455
+ if (npmResult.updated) {
456
+ results.push({ file: '.npmignore', action: npmResult.action });
457
+ }
458
+
459
+ return results;
460
+ }
461
+
308
462
  function showVersion() {
309
463
  console.log(`${CLI_COMMAND} v${getCliVersion()}`);
310
464
  }
@@ -458,6 +612,52 @@ function installSkills(toolIds, update = false) {
458
612
  return results;
459
613
  }
460
614
 
615
+ // ============================================================================
616
+ // 安装 Claude Code 自定义子代理(解决内置子代理无法访问 Skills 的问题)
617
+ // ============================================================================
618
+
619
+ function installClaudeAgents(toolIds, projectDir, update = false) {
620
+ const results = [];
621
+
622
+ // 只有 Claude Code 需要安装自定义子代理
623
+ if (!toolIds.includes('claude')) return results;
624
+
625
+ const agentsSrcDir = path.join(__dirname, '..', 'templates', 'claude-agents');
626
+ const agentsDestDir = path.join(projectDir, '.claude', 'agents');
627
+
628
+ if (!fs.existsSync(agentsSrcDir)) return results;
629
+
630
+ const agentFiles = fs.readdirSync(agentsSrcDir)
631
+ .filter(name => name.endsWith('.md'));
632
+
633
+ if (agentFiles.length === 0) return results;
634
+
635
+ fs.mkdirSync(agentsDestDir, { recursive: true });
636
+
637
+ let installedCount = 0;
638
+ for (const agentFile of agentFiles) {
639
+ const srcPath = path.join(agentsSrcDir, agentFile);
640
+ const destPath = path.join(agentsDestDir, agentFile);
641
+
642
+ if (fs.existsSync(destPath) && !update) continue;
643
+
644
+ fs.copyFileSync(srcPath, destPath);
645
+ installedCount++;
646
+ }
647
+
648
+ if (installedCount > 0) {
649
+ results.push({
650
+ tool: 'Claude Code',
651
+ type: 'agents',
652
+ count: installedCount,
653
+ total: agentFiles.length,
654
+ path: agentsDestDir
655
+ });
656
+ }
657
+
658
+ return results;
659
+ }
660
+
461
661
  // ============================================================================
462
662
  // 安装 Rules(Cursor, Windsurf, Gemini, Antigravity, OpenCode, Continue)
463
663
  // ============================================================================
@@ -853,6 +1053,14 @@ async function initCommand(projectDir, options) {
853
1053
  console.log(chalk.gray(` └ ${result.tool}: ${result.note}`));
854
1054
  }
855
1055
  }
1056
+
1057
+ // 安装 Claude Code 自定义子代理(解决内置子代理无法访问 Skills 的问题)
1058
+ const agentsResults = installClaudeAgents(fullSupportTools, projectDir);
1059
+ for (const result of agentsResults) {
1060
+ if (result.count > 0) {
1061
+ console.log(chalk.gray(` └ ${result.tool}: ${result.count} 个自定义子代理 → ${result.path}`));
1062
+ }
1063
+ }
856
1064
  }
857
1065
 
858
1066
  // 安装 Rules(Rules 类似系统的工具)
@@ -880,6 +1088,18 @@ async function initCommand(projectDir, options) {
880
1088
  console.log(chalk.gray(` └ ${result.tool}: ${path.relative(projectDir, result.path)}`));
881
1089
  }
882
1090
 
1091
+ // 设置 ignore 文件
1092
+ const ignoreSpinner = ora('配置 ignore 文件...').start();
1093
+ const ignoreResults = setupIgnoreFiles(selectedTools, projectDir);
1094
+ if (ignoreResults.length > 0) {
1095
+ ignoreSpinner.succeed('ignore 文件已配置');
1096
+ for (const result of ignoreResults) {
1097
+ console.log(chalk.gray(` └ ${result.file}: ${result.action === 'created' ? '已创建' : '已更新'}`));
1098
+ }
1099
+ } else {
1100
+ ignoreSpinner.succeed('ignore 文件无需更新');
1101
+ }
1102
+
883
1103
  // 完成
884
1104
  console.log();
885
1105
  console.log(chalk.green('══════════════════════════════════════'));
@@ -946,6 +1166,14 @@ async function updateCommand(projectDir) {
946
1166
  }
947
1167
  }
948
1168
 
1169
+ // 更新 Claude Code 自定义子代理(项目目录)
1170
+ const agentsResults = installClaudeAgents(configuredTools, projectDir, true);
1171
+ for (const result of agentsResults) {
1172
+ if (result.count > 0) {
1173
+ console.log(chalk.green('✓') + ` ${result.tool}: 更新了 ${result.count} 个自定义子代理`);
1174
+ }
1175
+ }
1176
+
949
1177
  // 更新 Rules(项目目录)
950
1178
  const rulesTools = configuredTools.filter(id => {
951
1179
  const tool = AI_TOOLS.find(t => t.id === id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-playbooks-cn",
3
- "version": "1.0.20",
3
+ "version": "1.2.1",
4
4
  "description": "AI-driven spec-based development workflow",
5
5
  "keywords": [
6
6
  "devbooks",
@@ -115,26 +115,6 @@
115
115
 
116
116
  ---
117
117
 
118
- ## `devbooks-proposal-debate-workflow`(Proposal Debate Workflow)
119
-
120
- - 作用:把“提案-质疑-裁决”跑成一套三角对辩流程(Author/Challenger/Judge 角色隔离),并确保 Decision Log 状态明确。
121
- - 使用场景:
122
- - 你想强制三角色对抗来提高提案质量
123
- - 团队里经常“风险没说清就开工”
124
- - 使用话术:
125
- ```text
126
- 你现在是 Proposal Debate Orchestrator。请点名使用 `devbooks-proposal-debate-workflow`。
127
- 先读:`dev-playbooks/project.md`
128
- 约束:Author/Challenger/Judge 必须独立对话/独立实例;如果我无法提供独立对话,你就停止并说明原因。
129
- 目标:最终 `dev-playbooks/changes/<change-id>/proposal.md` 的 Decision Log 状态必须为 Approved/Revise/Rejected(禁止 Pending)。
130
- 请你按工作流逐步告诉我:每一个独立对话里我要复制粘贴的指令是什么,以及每一步需要我把什么结果贴回当前对话。
131
-
132
- 我的需求是:
133
- <一句话需求 + 背景 + 约束>
134
- ```
135
-
136
- ---
137
-
138
118
  ## `devbooks-design-doc`(Design Owner / Design Doc)
139
119
 
140
120
  - 作用:产出 `design.md`,只写 What/Constraints + AC-xxx(禁止写实现步骤),作为测试与计划的黄金真理。
@@ -364,61 +344,16 @@
364
344
 
365
345
  ---
366
346
 
367
- ## `devbooks-index-bootstrap`(Index Bootstrapper)【新】
347
+ ## `devbooks-test-reviewer`(Test Reviewer)【新】
368
348
 
369
- - 作用:自动检测项目语言栈并生成 SCIP 索引,激活图基代码理解能力(调用图、影响分析、符号引用等)。
370
- - **触发条件**:
371
- - 用户说"初始化索引/建立代码图谱/激活图分析"
372
- - `mcp__ckb__getStatus` 返回 SCIP 后端 `healthy: false`
373
- - 进入新项目且 `index.scip` 不存在
349
+ - 作用:以 Test Reviewer 角色评审 tests/ 测试质量(覆盖、边界、可读性、可维护性),只输出评审意见,不修改代码。
374
350
  - 使用场景:
375
- - 想使用 `devbooks-impact-analysis` 的图基分析模式
376
- - 想在 `devbooks-coder`/`devbooks-code-review` 中获得热点感知
377
- - CKB MCP 工具报错"SCIP 后端不可用"
351
+ - Test Owner 完成测试后,需要独立评审测试质量
352
+ - 想发现测试覆盖盲区、边界条件遗漏、测试可维护性问题
378
353
  - 使用话术:
379
354
  ```text
380
- 请点名使用 `devbooks-index-bootstrap`。
381
- 目标:检测项目语言栈,生成 SCIP 索引,激活图基代码理解能力。
382
- 项目根目录:$(pwd)
383
- ```
384
- - 手动生成索引(无需 Skill):
385
- ```bash
386
- # TypeScript/JavaScript
387
- npm install -g @anthropic-ai/scip-typescript
388
- scip-typescript index --output index.scip
389
-
390
- # Python
391
- pip install scip-python
392
- scip-python index . --output index.scip
393
-
394
- # Go
395
- go install github.com/sourcegraph/scip-go@latest
396
- scip-go --output index.scip
397
- ```
398
-
399
- ---
400
-
401
- ## `devbooks-federation`(Federation Analyst)【新】
402
-
403
- - 作用:跨仓库联邦分析与契约同步。检测契约变更、分析跨仓库影响、通知下游消费者。
404
- - **触发条件**:
405
- - 用户说"跨仓库影响/联邦分析/契约同步/上下游依赖/多仓库"
406
- - 变更涉及 `federation.yaml` 中定义的契约文件
407
- - 使用场景:
408
- - 多仓库项目,需要分析变更对下游的影响
409
- - 对外 API/契约变更,需要通知消费者
410
- - 想建立跨仓库的影响追溯
411
- - 前置条件:
412
- - 项目根目录存在 `.devbooks/federation.yaml`(从 `skills/devbooks-federation/templates/federation.yaml` 复制)
413
- - 使用话术:
414
- ```text
415
- 请点名使用 `devbooks-federation`。
416
- 目标:分析本次变更的跨仓库影响,检测契约变更,生成影响报告。
417
- 项目根目录:$(pwd)
418
- 变更文件:<变更的文件列表>
419
- ```
420
- - 脚本支持:
421
- ```bash
422
- # 检查联邦契约变更
423
- bash ~/.claude/skills/devbooks-federation/scripts/federation-check.sh --project-root "$(pwd)"
355
+ 你现在是 Test Reviewer。请点名使用 `devbooks-test-reviewer`。
356
+ 请只做测试质量评审(覆盖率/边界条件/可读性/可维护性),不修改代码。
357
+ 输入:`tests/**` + `dev-playbooks/changes/<change-id>/verification.md`(如有)
358
+ 输出:覆盖盲区 / 边界条件遗漏 / 可维护性风险 / 改进建议。
424
359
  ```
@@ -48,7 +48,7 @@
48
48
 
49
49
  ```
50
50
  ⚠️ CKB 不可用(超时或未配置),使用基础模式执行。
51
- 如需启用增强功能,请运行 devbooks-index-bootstrap skill 生成索引。
51
+ 如需启用增强功能,请手动生成 SCIP 索引。
52
52
  ```
53
53
  ```
54
54
 
@@ -65,7 +65,6 @@
65
65
  - devbooks-proposal-author(纯文档生成)
66
66
  - devbooks-proposal-challenger(纯评审)
67
67
  - devbooks-proposal-judge(纯裁决)
68
- - devbooks-proposal-debate-workflow(流程编排)
69
68
  - devbooks-design-backport(文档回写)
70
69
  - devbooks-spec-gardener(文件整理)
71
70
  - devbooks-test-reviewer(测试评审)
@@ -88,8 +87,6 @@
88
87
  | devbooks-code-review | mcp__ckb__getHotspots | 热点文件高亮 |
89
88
  | devbooks-impact-analysis | mcp__ckb__analyzeImpact, findReferences | 精确影响分析 |
90
89
  | devbooks-brownfield-bootstrap | mcp__ckb__* | COD 模型生成 |
91
- | devbooks-index-bootstrap | mcp__ckb__getStatus | 索引状态检测 |
92
- | devbooks-federation | mcp__ckb__*, mcp__github__* | 跨仓库分析 |
93
90
  | devbooks-router | mcp__ckb__getStatus | 索引可用性检测 |
94
91
  | devbooks-spec-contract | mcp__ckb__findReferences | 引用检测 |
95
92
  | devbooks-entropy-monitor | mcp__ckb__getHotspots | 热点趋势分析 |