dev-playbooks-cn 1.0.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.
- package/LICENSE +21 -0
- package/README.md +466 -0
- package/bin/devbooks.js +987 -0
- package/package.json +43 -0
- package/skills/Skills/344/275/277/347/224/250/350/257/264/346/230/216.md +446 -0
- package/skills/Skill/345/274/200/345/217/221/346/214/207/345/215/227.md +248 -0
- package/skills/_shared/context-detection-template.md +315 -0
- package/skills/_shared/mcp-enhancement-template.md +144 -0
- package/skills/_shared/references//351/200/232/347/224/250/345/256/210/351/227/250/345/215/217/350/256/256.md +114 -0
- package/skills/_template/config-discovery-template.md +126 -0
- package/skills/devbooks-brownfield-bootstrap/SKILL.md +167 -0
- package/skills/devbooks-brownfield-bootstrap/references//344/273/243/347/240/201/345/257/274/350/210/252/347/255/226/347/225/245.md +203 -0
- package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226.md +96 -0
- package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226/346/217/220/347/244/272/350/257/215.md +115 -0
- package/skills/devbooks-brownfield-bootstrap/references//346/234/257/350/257/255/350/241/250/346/250/241/346/235/277.md +42 -0
- package/skills/devbooks-brownfield-bootstrap/scripts/cod-update.sh +357 -0
- package/skills/devbooks-brownfield-bootstrap/templates/project-profile-template.md +172 -0
- package/skills/devbooks-c4-map/SKILL.md +151 -0
- package/skills/devbooks-c4-map/references/C4/346/236/266/346/236/204/345/234/260/345/233/276/346/217/220/347/244/272/350/257/215.md +33 -0
- package/skills/devbooks-c4-map/references//345/210/206/345/261/202/347/272/246/346/235/237/346/243/200/346/237/245/346/270/205/345/215/225.md +185 -0
- package/skills/devbooks-code-review/SKILL.md +175 -0
- package/skills/devbooks-code-review/references/PR/346/250/241/346/235/277/344/270/216/346/214/207/345/215/227.md +321 -0
- package/skills/devbooks-code-review/references//344/273/243/347/240/201/350/257/204/345/256/241/346/217/220/347/244/272/350/257/215.md +100 -0
- package/skills/devbooks-code-review/references//345/235/217/345/221/263/351/201/223/351/200/237/346/237/245/350/241/250.md +495 -0
- package/skills/devbooks-code-review/references//350/265/204/346/272/220/347/256/241/347/220/206/345/256/241/346/237/245/346/270/205/345/215/225.md +311 -0
- package/skills/devbooks-coder/SKILL.md +219 -0
- package/skills/devbooks-coder/references//344/273/243/347/240/201/345/256/236/347/216/260/346/217/220/347/244/272/350/257/215.md +70 -0
- package/skills/devbooks-coder/references//344/275/216/351/243/216/351/231/251/346/224/271/345/212/250/346/212/200/346/234/257.md +275 -0
- package/skills/devbooks-coder/references//346/227/245/345/277/227/350/247/204/350/214/203.md +329 -0
- package/skills/devbooks-coder/references//347/274/226/347/240/201/351/243/216/346/240/274/347/273/206/345/210/231.md +351 -0
- package/skills/devbooks-coder/references//351/224/231/350/257/257/347/240/201/350/247/204/350/214/203.md +463 -0
- package/skills/devbooks-delivery-workflow/SKILL.md +217 -0
- package/skills/devbooks-delivery-workflow/references//344/272/244/344/273/230/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +256 -0
- package/skills/devbooks-delivery-workflow/references//345/216/237/345/236/213-/347/224/237/344/272/247/345/217/214/350/275/250/346/250/241/345/274/217.md +168 -0
- package/skills/devbooks-delivery-workflow/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +133 -0
- package/skills/devbooks-delivery-workflow/scripts/ac-trace-check.sh +330 -0
- package/skills/devbooks-delivery-workflow/scripts/audit-scope.sh +262 -0
- package/skills/devbooks-delivery-workflow/scripts/change-check.sh +1040 -0
- package/skills/devbooks-delivery-workflow/scripts/change-codemod-scaffold.sh +135 -0
- package/skills/devbooks-delivery-workflow/scripts/change-evidence.sh +152 -0
- package/skills/devbooks-delivery-workflow/scripts/change-scaffold.sh +442 -0
- package/skills/devbooks-delivery-workflow/scripts/change-spec-delta-scaffold.sh +136 -0
- package/skills/devbooks-delivery-workflow/scripts/constitution-check.sh +237 -0
- package/skills/devbooks-delivery-workflow/scripts/env-match-check.sh +128 -0
- package/skills/devbooks-delivery-workflow/scripts/fitness-check.sh +387 -0
- package/skills/devbooks-delivery-workflow/scripts/guardrail-check.sh +519 -0
- package/skills/devbooks-delivery-workflow/scripts/handoff-check.sh +141 -0
- package/skills/devbooks-delivery-workflow/scripts/hygiene-check.sh +340 -0
- package/skills/devbooks-delivery-workflow/scripts/migrate-from-openspec.sh +385 -0
- package/skills/devbooks-delivery-workflow/scripts/migrate-to-v2-gates.sh +202 -0
- package/skills/devbooks-delivery-workflow/scripts/progress-dashboard.sh +319 -0
- package/skills/devbooks-delivery-workflow/scripts/prototype-promote.sh +341 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-preview.sh +203 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-promote.sh +118 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-rollback.sh +124 -0
- package/skills/devbooks-delivery-workflow/scripts/spec-stage.sh +117 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-all.sh +78 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-npm-package.sh +123 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-openspec-free.sh +81 -0
- package/skills/devbooks-delivery-workflow/scripts/verify-slash-commands.sh +146 -0
- package/skills/devbooks-delivery-workflow/templates/handoff.md +50 -0
- package/skills/devbooks-design-backport/SKILL.md +73 -0
- package/skills/devbooks-design-backport/references//345/233/236/345/206/231/350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +196 -0
- package/skills/devbooks-design-doc/SKILL.md +121 -0
- package/skills/devbooks-design-doc/references//345/276/256/346/234/215/345/212/241/350/256/276/350/256/241/346/270/205/345/215/225.md +149 -0
- package/skills/devbooks-design-doc/references//350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +189 -0
- package/skills/devbooks-design-doc/references//351/232/220/347/247/201/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +240 -0
- package/skills/devbooks-entropy-monitor/SKILL.md +188 -0
- package/skills/devbooks-entropy-monitor/references//347/206/265/345/272/246/351/207/217/346/226/271/346/263/225/350/256/272.md +223 -0
- package/skills/devbooks-entropy-monitor/scripts/entropy-measure.sh +449 -0
- package/skills/devbooks-entropy-monitor/scripts/entropy-report.sh +303 -0
- package/skills/devbooks-entropy-monitor/templates/thresholds.json +99 -0
- package/skills/devbooks-federation/SKILL.md +264 -0
- package/skills/devbooks-federation/scripts/federation-check.sh +144 -0
- package/skills/devbooks-federation/templates/federation.yaml +89 -0
- package/skills/devbooks-impact-analysis/SKILL.md +135 -0
- package/skills/devbooks-impact-analysis/references//345/275/261/345/223/215/345/210/206/346/236/220/346/217/220/347/244/272/350/257/215.md +82 -0
- package/skills/devbooks-impact-analysis/scripts/graph-cache.sh +214 -0
- package/skills/devbooks-implementation-plan/SKILL.md +83 -0
- package/skills/devbooks-implementation-plan/references//347/274/226/347/240/201/350/256/241/345/210/222/346/217/220/347/244/272/350/257/215.md +99 -0
- package/skills/devbooks-index-bootstrap/SKILL.md +240 -0
- package/skills/devbooks-proposal-author/SKILL.md +83 -0
- 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 +66 -0
- package/skills/devbooks-proposal-challenger/SKILL.md +86 -0
- package/skills/devbooks-proposal-challenger/references//344/274/246/347/220/206/344/270/216/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +176 -0
- package/skills/devbooks-proposal-challenger/references//346/217/220/346/241/210/350/264/250/347/226/221/346/217/220/347/244/272/350/257/215.md +57 -0
- package/skills/devbooks-proposal-debate-workflow/SKILL.md +78 -0
- 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 +24 -0
- 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 +35 -0
- package/skills/devbooks-proposal-debate-workflow/scripts/proposal-debate-check.sh +102 -0
- package/skills/devbooks-proposal-judge/SKILL.md +78 -0
- package/skills/devbooks-proposal-judge/references//346/217/220/346/241/210/350/243/201/345/206/263/346/217/220/347/244/272/350/257/215.md +37 -0
- package/skills/devbooks-router/SKILL.md +346 -0
- package/skills/devbooks-spec-contract/SKILL.md +191 -0
- package/skills/devbooks-spec-contract/references/API/350/256/276/350/256/241/346/214/207/345/215/227.md +349 -0
- package/skills/devbooks-spec-contract/references//345/245/221/347/272/246/344/270/216/346/225/260/346/215/256/345/256/232/344/271/211/346/217/220/347/244/272/350/257/215.md +85 -0
- package/skills/devbooks-spec-contract/references//350/247/204/346/240/274/345/217/230/346/233/264/346/217/220/347/244/272/350/257/215.md +63 -0
- package/skills/devbooks-spec-contract/references//351/232/220/345/274/217/345/217/230/346/233/264/346/243/200/346/265/213/346/217/220/347/244/272/350/257/215.md +183 -0
- package/skills/devbooks-spec-contract/scripts/implicit-change-detect.sh +378 -0
- package/skills/devbooks-spec-gardener/SKILL.md +72 -0
- package/skills/devbooks-spec-gardener/references//350/247/204/346/240/274/345/233/255/344/270/201/346/217/220/347/244/272/350/257/215.md +41 -0
- package/skills/devbooks-test-owner/SKILL.md +172 -0
- package/skills/devbooks-test-owner/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +228 -0
- package/skills/devbooks-test-owner/references//345/274/202/346/255/245/347/263/273/347/273/237/346/265/213/350/257/225/347/255/226/347/225/245.md +316 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/344/273/243/347/240/201/346/217/220/347/244/272/350/257/215.md +208 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/345/210/206/345/261/202/347/255/226/347/225/245.md +281 -0
- package/skills/devbooks-test-owner/references//346/265/213/350/257/225/351/251/261/345/212/250.md +394 -0
- package/skills/devbooks-test-owner/references//350/247/243/344/276/235/350/265/226/346/212/200/346/234/257/351/200/237/346/237/245/350/241/250.md +432 -0
- package/skills/devbooks-test-reviewer/SKILL.md +189 -0
- package/templates/.devbooks/config.yaml +88 -0
- package/templates/claude-commands/devbooks/apply.md +38 -0
- package/templates/claude-commands/devbooks/archive.md +33 -0
- package/templates/claude-commands/devbooks/backport.md +19 -0
- package/templates/claude-commands/devbooks/bootstrap.md +19 -0
- package/templates/claude-commands/devbooks/c4.md +19 -0
- package/templates/claude-commands/devbooks/challenger.md +19 -0
- package/templates/claude-commands/devbooks/code.md +19 -0
- package/templates/claude-commands/devbooks/debate.md +19 -0
- package/templates/claude-commands/devbooks/delivery.md +19 -0
- package/templates/claude-commands/devbooks/design.md +19 -0
- package/templates/claude-commands/devbooks/entropy.md +19 -0
- package/templates/claude-commands/devbooks/federation.md +19 -0
- package/templates/claude-commands/devbooks/gardener.md +19 -0
- package/templates/claude-commands/devbooks/impact.md +19 -0
- package/templates/claude-commands/devbooks/index.md +19 -0
- package/templates/claude-commands/devbooks/judge.md +19 -0
- package/templates/claude-commands/devbooks/plan.md +19 -0
- package/templates/claude-commands/devbooks/proposal.md +19 -0
- package/templates/claude-commands/devbooks/quick.md +42 -0
- package/templates/claude-commands/devbooks/review.md +19 -0
- package/templates/claude-commands/devbooks/router.md +19 -0
- package/templates/claude-commands/devbooks/spec.md +19 -0
- package/templates/claude-commands/devbooks/test-review.md +19 -0
- package/templates/claude-commands/devbooks/test.md +19 -0
- package/templates/dev-playbooks/README.md +458 -0
- package/templates/dev-playbooks/changes/.gitkeep +1 -0
- package/templates/dev-playbooks/constitution.md +116 -0
- package/templates/dev-playbooks/project.md +96 -0
- package/templates/dev-playbooks/scripts/.gitkeep +1 -0
- package/templates/dev-playbooks/specs/_meta/anti-patterns/.gitkeep +2 -0
- package/templates/dev-playbooks/specs/_meta/glossary.md +47 -0
- package/templates/dev-playbooks/specs/_meta/project-profile.md +79 -0
- package/templates/dev-playbooks/specs/architecture/fitness-rules.md +95 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devbooks-router
|
|
3
|
+
description: devbooks-router:DevBooks 工作流路由与下一步建议:根据用户请求(提案/设计/规格/计划/测试/实现/评审/归档,或 DevBooks proposal/apply/archive)选择应使用的 devbooks-* Skills,并给出产物落点与最短闭环。用户说"下一步怎么做/路由到合适 skill/按 devbooks 跑闭环"等时使用。
|
|
4
|
+
tools:
|
|
5
|
+
- Glob
|
|
6
|
+
- Grep
|
|
7
|
+
- Read
|
|
8
|
+
- Bash
|
|
9
|
+
- mcp__ckb__getStatus
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# DevBooks:工作流路由(Router)
|
|
13
|
+
|
|
14
|
+
## 前置:配置发现(协议无关)
|
|
15
|
+
|
|
16
|
+
- `<truth-root>`:当前真理目录根
|
|
17
|
+
- `<change-root>`:变更包目录根
|
|
18
|
+
|
|
19
|
+
执行前**必须**按以下顺序查找配置(找到后停止):
|
|
20
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
|
|
21
|
+
2. `dev-playbooks/project.md`(如存在)→ DevBooks 2.0 协议,使用默认映射
|
|
22
|
+
4. `project.md`(如存在)→ template 协议,使用默认映射
|
|
23
|
+
5. 若仍无法确定 → **停止并询问用户**
|
|
24
|
+
|
|
25
|
+
**关键约束**:
|
|
26
|
+
- 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**再执行任何操作
|
|
27
|
+
- 禁止猜测目录根
|
|
28
|
+
- 禁止跳过规则文档阅读
|
|
29
|
+
|
|
30
|
+
## 前置:图索引健康检查(自动)
|
|
31
|
+
|
|
32
|
+
**在路由前自动执行**,检查 CKB 图索引状态:
|
|
33
|
+
|
|
34
|
+
1. 调用 `mcp__ckb__getStatus` 检查 SCIP 后端
|
|
35
|
+
2. 如果 `backends.scip.healthy = false`:
|
|
36
|
+
- 提示用户:「检测到代码图索引未激活,影响分析/调用图等图基能力不可用」
|
|
37
|
+
- 询问是否现在生成索引(约 1-5 分钟)
|
|
38
|
+
- 若用户同意,执行 `devbooks-index-bootstrap` 流程
|
|
39
|
+
- 若用户拒绝,继续路由但标注「图基能力降级」
|
|
40
|
+
|
|
41
|
+
3. 如果 `backends.scip.healthy = true`:
|
|
42
|
+
- 静默通过,继续路由
|
|
43
|
+
|
|
44
|
+
**检查脚本**(供参考):
|
|
45
|
+
```bash
|
|
46
|
+
# 检测语言并生成索引
|
|
47
|
+
if [ -f "tsconfig.json" ]; then
|
|
48
|
+
scip-typescript index --output index.scip
|
|
49
|
+
elif [ -f "pyproject.toml" ]; then
|
|
50
|
+
scip-python index . --output index.scip
|
|
51
|
+
elif [ -f "go.mod" ]; then
|
|
52
|
+
scip-go --output index.scip
|
|
53
|
+
fi
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**降级模式说明**:
|
|
57
|
+
- 无索引时,`devbooks-impact-analysis` 退化为 Grep 文本搜索(准确度下降)
|
|
58
|
+
- 无索引时,`devbooks-code-review` 无法获取调用图上下文
|
|
59
|
+
- 建议在 Apply 阶段前完成索引生成
|
|
60
|
+
|
|
61
|
+
## 你要做的事
|
|
62
|
+
|
|
63
|
+
把用户的自然语言请求映射成:
|
|
64
|
+
1) 现在处于哪个阶段(proposal / apply / review / archive)
|
|
65
|
+
2) 本次变更的“必产物”(proposal/design/tasks/verification)与“按需产物”(spec deltas/contract/c4/evidence)
|
|
66
|
+
3) 下一步该用哪个(或哪些)`devbooks-*` Skills
|
|
67
|
+
4) 每个产物应落到哪个文件路径
|
|
68
|
+
|
|
69
|
+
## 输出要求(强制)
|
|
70
|
+
|
|
71
|
+
1) **先问清楚 2 个最小关键问题**(若上下文里已有答案则不问):
|
|
72
|
+
- `<change-id>` 是什么?
|
|
73
|
+
- `<truth-root>` / `<change-root>` 在该项目最终取值是什么?
|
|
74
|
+
2) 给出“下一步路由结果”(3–6 条即可):
|
|
75
|
+
- 每条包含:要用的 Skill + 产物路径 + 为什么需要
|
|
76
|
+
3) 如果用户明确要你"直接开始产出文件内容",再进入对应 Skill 的输出模式。
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Impact 画像解析(AC-003 / AC-012)
|
|
81
|
+
|
|
82
|
+
当 `proposal.md` 存在时,Router **应自动解析** Impact 章节以生成更精确的执行计划。
|
|
83
|
+
|
|
84
|
+
### Impact Profile 结构
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
impact_profile:
|
|
88
|
+
external_api: true/false # 对外 API 变更
|
|
89
|
+
architecture_boundary: true/false # 架构边界变更
|
|
90
|
+
data_model: true/false # 数据模型变更
|
|
91
|
+
cross_repo: true/false # 跨仓库影响
|
|
92
|
+
risk_level: high/medium/low # 风险等级
|
|
93
|
+
affected_modules: # 受影响模块列表
|
|
94
|
+
- name: <module-path>
|
|
95
|
+
type: add/modify/delete
|
|
96
|
+
files: <count>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 解析流程
|
|
100
|
+
|
|
101
|
+
1. 检测 `proposal.md` 是否存在
|
|
102
|
+
2. 若存在,查找 `## Impact` 章节
|
|
103
|
+
3. 提取 `impact_profile:` YAML 块
|
|
104
|
+
4. 验证必填字段:`external_api`、`risk_level`、`affected_modules`
|
|
105
|
+
|
|
106
|
+
### 基于 Impact 画像的路由增强
|
|
107
|
+
|
|
108
|
+
| Impact 字段 | 值 | 自动追加 Skill |
|
|
109
|
+
|-------------|-----|---------------|
|
|
110
|
+
| `external_api: true` | - | `devbooks-spec-contract` |
|
|
111
|
+
| `architecture_boundary: true` | - | `devbooks-c4-map` |
|
|
112
|
+
| `cross_repo: true` | - | `devbooks-federation` |
|
|
113
|
+
| `risk_level: high` | - | `devbooks-proposal-debate-workflow` |
|
|
114
|
+
| `affected_modules` 数量 > 5 | - | `devbooks-impact-analysis`(深度分析) |
|
|
115
|
+
|
|
116
|
+
### 执行计划输出格式
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
## 执行计划(基于 Impact 画像)
|
|
120
|
+
|
|
121
|
+
### 必须执行
|
|
122
|
+
1. `/devbooks:proposal` → proposal.md(提案已存在,跳过)
|
|
123
|
+
2. `/devbooks:design` → design.md(必须)
|
|
124
|
+
3. `/devbooks:plan` → tasks.md(必须)
|
|
125
|
+
|
|
126
|
+
### 建议执行(基于 Impact 分析)
|
|
127
|
+
4. `/devbooks:spec` → specs/**(检测到 external_api: true)
|
|
128
|
+
5. `/devbooks:c4` → architecture/c4.md(检测到 architecture_boundary: true)
|
|
129
|
+
|
|
130
|
+
### 可选执行
|
|
131
|
+
6. `/devbooks:impact` → 深度影响分析(affected_modules > 5)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 解析失败处理(AC-012)
|
|
135
|
+
|
|
136
|
+
**无 Impact 画像时**:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
⚠️ proposal.md 中未找到 Impact 画像。
|
|
140
|
+
|
|
141
|
+
缺失项:
|
|
142
|
+
- Impact 章节不存在
|
|
143
|
+
- 或 impact_profile YAML 块缺失
|
|
144
|
+
|
|
145
|
+
建议动作:
|
|
146
|
+
1. 运行 `/devbooks:impact` 生成影响分析
|
|
147
|
+
2. 或直接使用直达命令 `/devbooks:<skill>`
|
|
148
|
+
|
|
149
|
+
直达命令列表:
|
|
150
|
+
- /devbooks:design → 设计文档
|
|
151
|
+
- /devbooks:plan → 编码计划
|
|
152
|
+
- /devbooks:spec → 规格定义
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**YAML 解析失败时**:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
⚠️ Impact 画像解析失败。
|
|
159
|
+
|
|
160
|
+
错误:<具体错误信息>
|
|
161
|
+
|
|
162
|
+
建议动作:
|
|
163
|
+
1. 检查 proposal.md 中 impact_profile YAML 格式
|
|
164
|
+
2. 或使用直达命令 `/devbooks:<skill>` 绕过 Router
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 路由规则(质量优先默认)
|
|
170
|
+
|
|
171
|
+
### A) Proposal(提案阶段)
|
|
172
|
+
|
|
173
|
+
触发信号:用户说“提案/为什么要改/范围/风险/坏味道重构/要不要做/先别写代码”等。
|
|
174
|
+
|
|
175
|
+
默认路由:
|
|
176
|
+
- `devbooks-proposal-author` → `(<change-root>/<change-id>/proposal.md)`(必须)
|
|
177
|
+
- `devbooks-design-doc` → `(<change-root>/<change-id>/design.md)`(非小改动必须;只写 What/Constraints + AC-xxx)
|
|
178
|
+
- `devbooks-implementation-plan` → `(<change-root>/<change-id>/tasks.md)`(必须;只从设计推导)
|
|
179
|
+
|
|
180
|
+
按需追加(满足条件才加):
|
|
181
|
+
- **跨模块/影响不清晰**:`devbooks-impact-analysis`(建议写回 proposal Impact)
|
|
182
|
+
- **风险/争议/取舍明显**:`devbooks-proposal-debate-workflow`(Author/Challenger/Judge,对辩后写回 Decision Log)
|
|
183
|
+
- **对外行为/契约/数据不变量变化**:`devbooks-spec-contract` → `(<change-root>/<change-id>/specs/**)` + `design.md` Contract 章节
|
|
184
|
+
- 若需要"确定性创建 spec delta 文件/避免路径写错":`change-spec-delta-scaffold.sh <change-id> <capability> ...`
|
|
185
|
+
- **模块边界/依赖方向/架构形态变化**:`devbooks-c4-map` → `(<truth-root>/architecture/c4.md)`
|
|
186
|
+
|
|
187
|
+
硬约束提醒:
|
|
188
|
+
- proposal 阶段禁止写实现代码;实现发生在 apply 阶段并以测试/闸门为完成判据。
|
|
189
|
+
- 若需要“确定性落盘骨架/避免漏文件”:优先运行 `devbooks-delivery-workflow` 的脚本
|
|
190
|
+
- `change-scaffold.sh <change-id> ...`
|
|
191
|
+
- `change-check.sh <change-id> --mode proposal ...`
|
|
192
|
+
|
|
193
|
+
### B) Apply(实现阶段:Test Owner / Coder)
|
|
194
|
+
|
|
195
|
+
触发信号:用户说“开始实现/跑测试/修复失败/按 tasks 做/让闸门全绿”等。
|
|
196
|
+
|
|
197
|
+
默认路由(强制角色隔离):
|
|
198
|
+
- Test Owner(独立对话/独立实例):`devbooks-test-owner`
|
|
199
|
+
- 产物:`(<change-root>/<change-id>/verification.md)` + `tests/**`
|
|
200
|
+
- 先跑出 **Red** 基线,并记录证据(如 `(<change-root>/<change-id>/evidence/**)`)
|
|
201
|
+
- Coder(独立对话/独立实例):`devbooks-coder`
|
|
202
|
+
- 输入:`tasks.md` + 测试报错 + 代码库
|
|
203
|
+
- 禁止修改 `tests/**`
|
|
204
|
+
|
|
205
|
+
apply 阶段的确定性检查(推荐):
|
|
206
|
+
- Test Owner:`change-check.sh <change-id> --mode apply --role test-owner ...`
|
|
207
|
+
- Test Owner(证据落盘):`change-evidence.sh <change-id> --label red-baseline -- <test-command>`
|
|
208
|
+
- Coder:`change-check.sh <change-id> --mode apply --role coder ...`(会额外检查 git diff 下 `tests/**` 未被修改)
|
|
209
|
+
|
|
210
|
+
LSC(大规模同质化修改)建议:
|
|
211
|
+
- 先用 `change-codemod-scaffold.sh <change-id> --name <codemod-name> ...` 生成 codemod 脚本骨架,再用脚本批量变更并记录 evidence
|
|
212
|
+
|
|
213
|
+
### C) Review(评审阶段)
|
|
214
|
+
|
|
215
|
+
触发信号:用户说“review/坏味道/可维护性/依赖风险/一致性”等。
|
|
216
|
+
|
|
217
|
+
默认路由:
|
|
218
|
+
- `devbooks-code-review`(输出可执行建议;不改业务结论、不改 tests)
|
|
219
|
+
|
|
220
|
+
### D) Archive(归档阶段)
|
|
221
|
+
|
|
222
|
+
触发信号:用户说"归档/合并 specs/关账/收尾"等。
|
|
223
|
+
|
|
224
|
+
默认路由:
|
|
225
|
+
- 若本次产生了 spec delta:`devbooks-spec-gardener`(先修剪 `<truth-root>/**` 再归档合并)
|
|
226
|
+
- 若需要回写设计决策:`devbooks-design-backport`(按需)
|
|
227
|
+
|
|
228
|
+
归档前的确定性检查(推荐):
|
|
229
|
+
- `change-check.sh <change-id> --mode strict ...`(要求:proposal 已 Approved、tasks 全勾选、trace matrix 无 TODO、结构守门决策已填写)
|
|
230
|
+
|
|
231
|
+
### E) Prototype(原型模式)
|
|
232
|
+
|
|
233
|
+
> 来源:《人月神话》第11章"未雨绸缪" — "第一个开发的系统并不合用...为舍弃而计划"
|
|
234
|
+
|
|
235
|
+
触发信号:用户说"先做原型/快速验证/spike/--prototype/扔掉式原型/Plan to Throw One Away"等。
|
|
236
|
+
|
|
237
|
+
**原型模式适用场景**:
|
|
238
|
+
- 技术方案不确定,需要快速验证可行性
|
|
239
|
+
- 第一次做某类功能,预期会重写
|
|
240
|
+
- 需要探索 API/库/框架的实际行为
|
|
241
|
+
|
|
242
|
+
**默认路由(原型轨道约束)**:
|
|
243
|
+
|
|
244
|
+
1. 创建原型骨架:
|
|
245
|
+
- `change-scaffold.sh <change-id> --prototype ...`
|
|
246
|
+
- 产物:`(<change-root>/<change-id>/prototype/)`
|
|
247
|
+
|
|
248
|
+
2. Test Owner(独立对话)使用 `devbooks-test-owner --prototype`:
|
|
249
|
+
- 产物:`(<change-root>/<change-id>/prototype/characterization/)`
|
|
250
|
+
- 生成**表征测试**(记录实际行为)而非验收测试
|
|
251
|
+
- **不需要 Red 基线**——表征测试断言的是"现状"
|
|
252
|
+
|
|
253
|
+
3. Coder(独立对话)使用 `devbooks-coder --prototype`:
|
|
254
|
+
- 输出路径:`(<change-root>/<change-id>/prototype/src/)`
|
|
255
|
+
- 允许绕过 lint/复杂度阈值
|
|
256
|
+
- **禁止直接落到仓库 `src/`**
|
|
257
|
+
|
|
258
|
+
**硬约束(必须遵守)**:
|
|
259
|
+
- 原型代码与生产代码**物理隔离**(不同目录)
|
|
260
|
+
- Test Owner 与 Coder 仍必须**独立对话/独立实例**(角色隔离不变)
|
|
261
|
+
- 原型提升到生产需要**显式触发** `prototype-promote.sh <change-id>`
|
|
262
|
+
|
|
263
|
+
**原型提升到生产的前置条件**:
|
|
264
|
+
1. 创建生产级 `design.md`(从原型学习中提炼 What/Constraints/AC-xxx)
|
|
265
|
+
2. Test Owner 产出验收测试 `verification.md`(替代表征测试)
|
|
266
|
+
3. 完成 `prototype/PROTOTYPE.md` 中的提升检查清单
|
|
267
|
+
4. 运行 `prototype-promote.sh <change-id>` 并通过所有闸门
|
|
268
|
+
|
|
269
|
+
**原型丢弃流程**:
|
|
270
|
+
1. 记录学习到的关键洞察到 `proposal.md` 的 Decision Log
|
|
271
|
+
2. 删除 `prototype/` 目录
|
|
272
|
+
|
|
273
|
+
## DevBooks 命令适配
|
|
274
|
+
|
|
275
|
+
DevBooks 使用 `/devbooks:proposal`、`/devbooks:apply`、`/devbooks:archive` 作为入口。
|
|
276
|
+
按上述 A/B/C/D 路由即可,产物路径以项目指路牌里 `<truth-root>/<change-root>` 的映射为准。
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 上下文感知
|
|
281
|
+
|
|
282
|
+
本 Skill 在执行前自动检测上下文,选择合适的路由策略。
|
|
283
|
+
|
|
284
|
+
检测规则参考:`skills/_shared/context-detection-template.md`
|
|
285
|
+
|
|
286
|
+
### 检测流程
|
|
287
|
+
|
|
288
|
+
1. 检测变更包是否存在
|
|
289
|
+
2. 检测已有产物(proposal/design/tasks/verification)
|
|
290
|
+
3. 推断当前阶段(proposal/apply/archive)
|
|
291
|
+
4. 根据阶段选择默认路由
|
|
292
|
+
|
|
293
|
+
### 本 Skill 支持的模式
|
|
294
|
+
|
|
295
|
+
| 模式 | 触发条件 | 行为 |
|
|
296
|
+
|------|----------|------|
|
|
297
|
+
| **新变更** | 变更包不存在或为空 | 路由到 proposal 阶段,建议创建 proposal.md |
|
|
298
|
+
| **进行中** | 变更包存在,有部分产物 | 根据缺失产物推荐下一步 |
|
|
299
|
+
| **待归档** | 闸门通过,`evidence/green-final/` 存在 | 路由到 archive 阶段 |
|
|
300
|
+
|
|
301
|
+
### 检测输出示例
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
检测结果:
|
|
305
|
+
- 变更包状态:存在
|
|
306
|
+
- 已有产物:proposal.md ✓, design.md ✓, tasks.md ✓, verification.md ✗
|
|
307
|
+
- 当前阶段:apply
|
|
308
|
+
- 建议路由:devbooks-test-owner(先建立 Red 基线)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## MCP 增强
|
|
314
|
+
|
|
315
|
+
本 Skill 支持 MCP 运行时增强,自动检测并启用高级功能。
|
|
316
|
+
|
|
317
|
+
MCP 增强规则参考:`skills/_shared/mcp-enhancement-template.md`
|
|
318
|
+
|
|
319
|
+
### 依赖的 MCP 服务
|
|
320
|
+
|
|
321
|
+
| 服务 | 用途 | 超时 |
|
|
322
|
+
|------|------|------|
|
|
323
|
+
| `mcp__ckb__getStatus` | 检测 CKB 索引可用性 | 2s |
|
|
324
|
+
|
|
325
|
+
### 检测流程
|
|
326
|
+
|
|
327
|
+
1. 调用 `mcp__ckb__getStatus`(2s 超时)
|
|
328
|
+
2. 若 CKB 可用 → 在路由建议中标注"图基能力已激活"
|
|
329
|
+
3. 若超时或失败 → 在路由建议中标注"图基能力降级",建议运行 /devbooks:index
|
|
330
|
+
|
|
331
|
+
### 增强模式 vs 基础模式
|
|
332
|
+
|
|
333
|
+
| 功能 | 增强模式 | 基础模式 |
|
|
334
|
+
|------|----------|----------|
|
|
335
|
+
| 影响分析推荐 | 使用 CKB 精确分析 | 使用 Grep 文本搜索 |
|
|
336
|
+
| 代码导航 | 符号级跳转可用 | 文件级搜索 |
|
|
337
|
+
| 热点检测 | CKB 实时分析 | 不可用 |
|
|
338
|
+
|
|
339
|
+
### 降级提示
|
|
340
|
+
|
|
341
|
+
当 MCP 不可用时,输出以下提示:
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
⚠️ CKB 索引未激活,图基能力(影响分析、调用图等)将降级。
|
|
345
|
+
建议运行 /devbooks:index 生成索引以启用完整功能。
|
|
346
|
+
```
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devbooks-spec-contract
|
|
3
|
+
description: devbooks-spec-contract:定义对外行为规格与契约(Requirements/Scenarios/API/Schema/兼容策略/迁移),并建议或生成 contract tests。合并了原 spec-delta 和 contract-data 的功能。用户说"写规格/spec/契约/OpenAPI/Schema/兼容策略/contract tests"等时使用。
|
|
4
|
+
tools:
|
|
5
|
+
- Glob
|
|
6
|
+
- Grep
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Bash
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# DevBooks:规格与契约(Spec & Contract)
|
|
14
|
+
|
|
15
|
+
> 本 skill 合并了原 `devbooks-spec-delta` 和 `devbooks-contract-data` 的功能,减少选择困难。
|
|
16
|
+
|
|
17
|
+
## 前置:配置发现(协议无关)
|
|
18
|
+
|
|
19
|
+
- `<truth-root>`:当前真理目录根
|
|
20
|
+
- `<change-root>`:变更包目录根
|
|
21
|
+
|
|
22
|
+
执行前**必须**按以下顺序查找配置(找到后停止):
|
|
23
|
+
1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
|
|
24
|
+
2. `dev-playbooks/project.md`(如存在)→ DevBooks 2.0 协议,使用默认映射
|
|
25
|
+
4. `project.md`(如存在)→ template 协议,使用默认映射
|
|
26
|
+
5. 若仍无法确定 → **停止并询问用户**
|
|
27
|
+
|
|
28
|
+
**关键约束**:
|
|
29
|
+
- 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**再执行任何操作
|
|
30
|
+
- 禁止猜测目录根
|
|
31
|
+
- 禁止跳过规则文档阅读
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 产物落点
|
|
36
|
+
|
|
37
|
+
| 产物类型 | 落点路径 |
|
|
38
|
+
|----------|----------|
|
|
39
|
+
| 规格 delta | `<change-root>/<change-id>/specs/<capability>/spec.md` |
|
|
40
|
+
| 契约计划 | `<change-root>/<change-id>/design.md`(Contract 章节)或独立 `contract-plan.md` |
|
|
41
|
+
| Contract Test IDs | 写入 `verification.md` 的追溯矩阵 |
|
|
42
|
+
| 隐式变更报告 | `<change-root>/<change-id>/evidence/implicit-changes.json` |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 使用场景判断
|
|
47
|
+
|
|
48
|
+
| 场景 | 需要做什么 |
|
|
49
|
+
|------|-----------|
|
|
50
|
+
| 只有行为变化(无 API/Schema) | 只输出 spec.md(Requirements/Scenarios) |
|
|
51
|
+
| 有 API/Schema/事件变化 | 输出 spec.md + 契约计划 + Contract Test IDs |
|
|
52
|
+
| 有兼容性风险 | 额外输出兼容策略、弃用策略、迁移方案 |
|
|
53
|
+
| 依赖/配置/构建变更 | 运行隐式变更检测 |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 执行方式
|
|
58
|
+
|
|
59
|
+
### 标准流程
|
|
60
|
+
|
|
61
|
+
1) 先阅读并遵守:`_shared/references/通用守门协议.md`
|
|
62
|
+
2) 规格部分:按 `references/规格变更提示词.md` 输出 Requirements/Scenarios
|
|
63
|
+
3) 契约部分:按 `references/契约与数据定义提示词.md` 输出契约计划
|
|
64
|
+
4) **隐式变更检测(按需)**:`references/隐式变更检测提示词.md`
|
|
65
|
+
|
|
66
|
+
### 输出结构(一次性产出)
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
## 规格 Delta(Spec)
|
|
70
|
+
|
|
71
|
+
### Requirements
|
|
72
|
+
- REQ-XXX-001: <需求描述>
|
|
73
|
+
|
|
74
|
+
### Scenarios
|
|
75
|
+
- SC-001: <场景描述>
|
|
76
|
+
- Given: ...
|
|
77
|
+
- When: ...
|
|
78
|
+
- Then: ...
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 契约计划(Contract)
|
|
83
|
+
|
|
84
|
+
### API 变更
|
|
85
|
+
- 新增/修改端点:`POST /api/v1/orders`
|
|
86
|
+
- OpenAPI diff 位置:`contracts/openapi/orders.yaml`
|
|
87
|
+
|
|
88
|
+
### 兼容策略
|
|
89
|
+
- 向后兼容:是/否
|
|
90
|
+
- 弃用策略:<如有>
|
|
91
|
+
- 迁移方案:<如有>
|
|
92
|
+
|
|
93
|
+
### Contract Test IDs
|
|
94
|
+
| Test ID | 类型 | 覆盖场景 |
|
|
95
|
+
|---------|------|----------|
|
|
96
|
+
| CT-001 | schema | REQ-XXX-001 |
|
|
97
|
+
| CT-002 | behavior | SC-001 |
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 脚本
|
|
103
|
+
|
|
104
|
+
- 隐式变更检测:`scripts/implicit-change-detect.sh <change-id> [--base <commit>] [--project-root <dir>] [--change-root <dir>]`
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 上下文感知
|
|
109
|
+
|
|
110
|
+
本 Skill 在执行前自动检测上下文,选择合适的运行模式。
|
|
111
|
+
|
|
112
|
+
检测规则参考:`skills/_shared/context-detection-template.md`
|
|
113
|
+
|
|
114
|
+
### 检测流程
|
|
115
|
+
|
|
116
|
+
1. 检测 `<change-root>/<change-id>/specs/` 是否存在
|
|
117
|
+
2. 若存在,判断完整性(是否有占位符、REQ 是否有 Scenario)
|
|
118
|
+
3. 根据检测结果选择运行模式
|
|
119
|
+
|
|
120
|
+
### 本 Skill 支持的模式
|
|
121
|
+
|
|
122
|
+
| 模式 | 触发条件 | 行为 |
|
|
123
|
+
|------|----------|------|
|
|
124
|
+
| **从零创建** | `specs/` 目录不存在或为空 | 创建完整规格文档结构,包含 Requirements/Scenarios |
|
|
125
|
+
| **补漏模式** | `specs/` 存在但不完整(有 `[TODO]`、REQ 缺 Scenario) | 补充缺失的 Requirement/Scenario,保留已有内容 |
|
|
126
|
+
| **同步模式** | `specs/` 完整,需要与实现同步 | 检查实现与规格一致性,输出 diff 报告 |
|
|
127
|
+
|
|
128
|
+
### 检测输出示例
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
检测结果:
|
|
132
|
+
- 产物存在性:specs/ 存在
|
|
133
|
+
- 完整性:不完整(缺失项:REQ-002 无 Scenario)
|
|
134
|
+
- 当前阶段:apply
|
|
135
|
+
- 运行模式:补漏模式
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 隐式变更检测(扩展功能)
|
|
141
|
+
|
|
142
|
+
> 来源:《人月神话》第7章"巴比伦塔" — "小组慢慢地修改自己程序的功能,隐含地更改了约定"
|
|
143
|
+
|
|
144
|
+
隐式变更 = 没有显式声明但会改变系统行为的变更。
|
|
145
|
+
|
|
146
|
+
**检测范围**:
|
|
147
|
+
- 依赖变更(package.json / requirements.txt / go.mod 等)
|
|
148
|
+
- 配置变更(*.env / *.config.* / *.yaml 等)
|
|
149
|
+
- 构建变更(tsconfig.json / Dockerfile / CI 配置等)
|
|
150
|
+
|
|
151
|
+
**与 change-check.sh 集成**:
|
|
152
|
+
- 在 `apply` / `archive` / `strict` 模式下自动检查隐式变更报告
|
|
153
|
+
- 高风险隐式变更需在 `design.md` 中声明
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## MCP 增强
|
|
158
|
+
|
|
159
|
+
本 Skill 支持 MCP 运行时增强,自动检测并启用高级功能。
|
|
160
|
+
|
|
161
|
+
MCP 增强规则参考:`skills/_shared/mcp-enhancement-template.md`
|
|
162
|
+
|
|
163
|
+
### 依赖的 MCP 服务
|
|
164
|
+
|
|
165
|
+
| 服务 | 用途 | 超时 |
|
|
166
|
+
|------|------|------|
|
|
167
|
+
| `mcp__ckb__findReferences` | 检测契约引用范围 | 2s |
|
|
168
|
+
| `mcp__ckb__getStatus` | 检测 CKB 索引可用性 | 2s |
|
|
169
|
+
|
|
170
|
+
### 检测流程
|
|
171
|
+
|
|
172
|
+
1. 调用 `mcp__ckb__getStatus`(2s 超时)
|
|
173
|
+
2. 若 CKB 可用 → 使用 `findReferences` 检测契约符号的引用范围
|
|
174
|
+
3. 若超时或失败 → 降级到 Grep 文本搜索
|
|
175
|
+
|
|
176
|
+
### 增强模式 vs 基础模式
|
|
177
|
+
|
|
178
|
+
| 功能 | 增强模式 | 基础模式 |
|
|
179
|
+
|------|----------|----------|
|
|
180
|
+
| 引用检测 | 符号级精确匹配 | Grep 文本搜索 |
|
|
181
|
+
| 契约影响范围 | 调用图分析 | 直接引用统计 |
|
|
182
|
+
| 兼容性风险 | 自动评估 | 手动判断 |
|
|
183
|
+
|
|
184
|
+
### 降级提示
|
|
185
|
+
|
|
186
|
+
当 MCP 不可用时,输出以下提示:
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
⚠️ CKB 不可用,使用 Grep 文本搜索检测契约引用。
|
|
190
|
+
结果可能不够精确,建议运行 /devbooks:index 生成索引。
|
|
191
|
+
```
|