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,248 @@
|
|
|
1
|
+
# DevBooks Skill 开发指南
|
|
2
|
+
|
|
3
|
+
本文档定义了开发新 Skill 时必须遵循的设计原则和约束。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1) 核心设计原则
|
|
8
|
+
|
|
9
|
+
### 1.1 单一职责原则(UNIX 哲学)
|
|
10
|
+
|
|
11
|
+
- **每个 Skill 只做一件事**:一个 Skill 只负责一个明确的职责,不要混合多个职责
|
|
12
|
+
- **通过文件系统传递信息**:Skill 之间通过 `<change-root>/<change-id>/` 目录下的文件交换数据,而非共享内存或会话状态
|
|
13
|
+
- **产物必须是纯文本**:所有产物使用 Markdown/JSON 格式,便于版本控制和人工审查
|
|
14
|
+
|
|
15
|
+
### 1.2 幂等性设计原则(强制)
|
|
16
|
+
|
|
17
|
+
**幂等性定义**:重复执行相同操作得到相同结果,不产生副作用累积。
|
|
18
|
+
|
|
19
|
+
| Skill 类型 | 幂等性要求 | 示例 |
|
|
20
|
+
|------------|------------|------|
|
|
21
|
+
| **验证/检查类** | 必须幂等(不修改文件) | `change-check.sh`、`guardrail-check.sh`、`devbooks-code-review` |
|
|
22
|
+
| **生成类** | 必须明确"覆盖/增量"行为 | `change-scaffold.sh`、`devbooks-design-doc`、`devbooks-proposal-author` |
|
|
23
|
+
| **修改类** | 必须可安全重跑 | `devbooks-spec-gardener`、`devbooks-design-backport` |
|
|
24
|
+
|
|
25
|
+
**验证/检查类 Skill 必须遵守**:
|
|
26
|
+
- [ ] 不修改任何文件(只读操作)
|
|
27
|
+
- [ ] 不修改数据库、缓存或外部状态
|
|
28
|
+
- [ ] 多次运行输出完全相同(给定相同输入)
|
|
29
|
+
- [ ] 失败时不留下部分状态
|
|
30
|
+
|
|
31
|
+
**生成类 Skill 必须遵守**:
|
|
32
|
+
- [ ] 明确声明是"覆盖模式"还是"增量模式"
|
|
33
|
+
- [ ] 覆盖模式:重复运行产生相同结果
|
|
34
|
+
- [ ] 增量模式:重复运行不产生重复内容(需要检测已存在内容)
|
|
35
|
+
- [ ] 失败时回滚到运行前状态(或明确说明无法回滚)
|
|
36
|
+
|
|
37
|
+
**修改类 Skill 必须遵守**:
|
|
38
|
+
- [ ] 修改前备份原文件(或可通过 git 恢复)
|
|
39
|
+
- [ ] 多次运行不产生累积副作用
|
|
40
|
+
- [ ] 提供"dry-run"模式预览变更
|
|
41
|
+
|
|
42
|
+
### 1.3 强制验证前置原则(借鉴 VS Code)
|
|
43
|
+
|
|
44
|
+
**核心要求**:生成/修改类 Skill 在输出文件后,**必须运行验证**,验证失败时禁止进入下一步。
|
|
45
|
+
|
|
46
|
+
| Skill 类型 | 验证要求 | 失败处理 |
|
|
47
|
+
|------------|----------|----------|
|
|
48
|
+
| 代码生成 | 编译检查(TypeScript/ESLint) | 必须修复后才能继续 |
|
|
49
|
+
| 测试生成 | 运行测试(预期 Red 或 Green) | 记录结果到 verification.md |
|
|
50
|
+
| 配置生成 | 格式验证(JSON/YAML schema) | 必须修复后才能继续 |
|
|
51
|
+
| 文档生成 | 链接检查、格式检查 | 警告但可继续 |
|
|
52
|
+
|
|
53
|
+
**强制验证检查清单**:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## 验证前置检查(生成/修改类 Skill 必须执行)
|
|
57
|
+
|
|
58
|
+
- [ ] 输出文件后,立即运行相关验证命令
|
|
59
|
+
- [ ] 验证命令输出必须记录到证据文件
|
|
60
|
+
- [ ] 验证失败时,禁止声明"任务完成"
|
|
61
|
+
- [ ] 验证失败时,必须尝试修复或明确报告失败原因
|
|
62
|
+
- [ ] 禁止"假定成功"——必须实际查看命令输出
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**示例:代码生成后的验证流程**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# 1. 生成代码
|
|
69
|
+
write_code_to_file "$output_file"
|
|
70
|
+
|
|
71
|
+
# 2. 立即验证(强制)
|
|
72
|
+
if ! npm run compile 2>&1 | tee "$evidence_dir/compile.log"; then
|
|
73
|
+
echo "error: compilation failed, cannot proceed" >&2
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# 3. 运行 lint 检查
|
|
78
|
+
if ! npm run lint 2>&1 | tee "$evidence_dir/lint.log"; then
|
|
79
|
+
echo "error: lint failed, cannot proceed" >&2
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
# 4. 验证通过后才能继续
|
|
84
|
+
echo "ok: verification passed"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 1.4 任务输出监控原则
|
|
88
|
+
|
|
89
|
+
**要求**:运行长时任务时,必须主动查看输出,避免"假定成功"的幻觉。
|
|
90
|
+
|
|
91
|
+
- [ ] 后台任务必须有超时机制
|
|
92
|
+
- [ ] 必须检查任务退出码
|
|
93
|
+
- [ ] 必须读取并分析任务输出
|
|
94
|
+
- [ ] 禁止仅凭"命令执行完毕"就声明成功
|
|
95
|
+
|
|
96
|
+
### 1.5 真理源分离原则
|
|
97
|
+
|
|
98
|
+
- **只读真理源**:Skill 只能读取 `<truth-root>/`,不能直接修改(除了 `spec-gardener` 等归档类 Skill)
|
|
99
|
+
- **写入工作区**:Skill 的写入目标是 `<change-root>/<change-id>/`
|
|
100
|
+
- **归档即合并**:归档操作将工作区内容合并回真理源
|
|
101
|
+
|
|
102
|
+
### 1.6 资源清理原则(借鉴 VS Code)
|
|
103
|
+
|
|
104
|
+
**要求**:无论成功失败,必须清理临时资源。
|
|
105
|
+
|
|
106
|
+
- [ ] 临时文件必须在退出时删除
|
|
107
|
+
- [ ] 后台进程必须在退出时终止
|
|
108
|
+
- [ ] 数据库连接必须在退出时关闭
|
|
109
|
+
- [ ] 使用 `trap` 确保异常退出时也能清理
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# 示例:使用 trap 确保清理
|
|
113
|
+
cleanup() {
|
|
114
|
+
rm -rf "$TEMP_DIR"
|
|
115
|
+
kill "$BG_PID" 2>/dev/null || true
|
|
116
|
+
}
|
|
117
|
+
trap cleanup EXIT
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 2) Skill 目录结构
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
skills/
|
|
126
|
+
└── devbooks-<skill-name>/
|
|
127
|
+
├── SKILL.md # Skill 定义(必须)
|
|
128
|
+
├── references/ # 参考文档(可选)
|
|
129
|
+
│ ├── *.md # 提示词、模板、清单等
|
|
130
|
+
│ └── ...
|
|
131
|
+
└── scripts/ # 可执行脚本(可选)
|
|
132
|
+
├── *.sh # Shell 脚本
|
|
133
|
+
└── ...
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 2.1 SKILL.md 模板
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
---
|
|
140
|
+
name: devbooks-<skill-name>
|
|
141
|
+
description: 一句话描述 Skill 的职责和触发场景
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
# DevBooks:<Skill 名称>
|
|
145
|
+
|
|
146
|
+
## 前置:目录根(协议无关)
|
|
147
|
+
|
|
148
|
+
- `<truth-root>`:当前真理目录根
|
|
149
|
+
- `<change-root>`:变更包目录根
|
|
150
|
+
|
|
151
|
+
## 职责
|
|
152
|
+
|
|
153
|
+
<描述这个 Skill 做什么>
|
|
154
|
+
|
|
155
|
+
## 幂等性声明
|
|
156
|
+
|
|
157
|
+
- 类型:验证类 / 生成类 / 修改类
|
|
158
|
+
- 幂等性:是 / 否(说明原因)
|
|
159
|
+
- 重跑行为:<描述多次运行的行为>
|
|
160
|
+
|
|
161
|
+
## 参考文档
|
|
162
|
+
|
|
163
|
+
- `references/<文档名>.md`
|
|
164
|
+
|
|
165
|
+
## 脚本(如有)
|
|
166
|
+
|
|
167
|
+
- `scripts/<脚本名>.sh`
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 3) 脚本开发规范
|
|
173
|
+
|
|
174
|
+
### 3.1 必须支持的参数
|
|
175
|
+
|
|
176
|
+
所有脚本必须支持以下标准参数:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
--project-root <path> # 项目根目录(必须)
|
|
180
|
+
--change-root <path> # 变更包目录根(必须)
|
|
181
|
+
--truth-root <path> # 真理源目录根(必须)
|
|
182
|
+
--dry-run # 预览模式,不实际修改(推荐)
|
|
183
|
+
--help # 显示帮助信息(必须)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 3.2 退出码规范
|
|
187
|
+
|
|
188
|
+
| 退出码 | 含义 |
|
|
189
|
+
|--------|------|
|
|
190
|
+
| 0 | 成功 |
|
|
191
|
+
| 1 | 一般错误 |
|
|
192
|
+
| 2 | 参数错误 |
|
|
193
|
+
| 3 | 前置条件不满足 |
|
|
194
|
+
| 4 | 验证失败(用于检查类脚本) |
|
|
195
|
+
|
|
196
|
+
### 3.3 输出规范
|
|
197
|
+
|
|
198
|
+
- 正常输出到 stdout
|
|
199
|
+
- 错误信息到 stderr
|
|
200
|
+
- 支持 `--json` 输出机器可读格式(推荐)
|
|
201
|
+
- 不使用 ANSI 颜色码(除非检测到 TTY)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 4) 质量检查清单
|
|
206
|
+
|
|
207
|
+
新 Skill 提交前必须通过以下检查:
|
|
208
|
+
|
|
209
|
+
- [ ] **单一职责**:Skill 只做一件事
|
|
210
|
+
- [ ] **幂等性声明**:SKILL.md 中明确声明幂等性行为
|
|
211
|
+
- [ ] **真理源分离**:不直接修改 `<truth-root>/`(除非是归档类 Skill)
|
|
212
|
+
- [ ] **参数完整**:脚本支持标准参数(`--project-root`、`--change-root`、`--truth-root`)
|
|
213
|
+
- [ ] **帮助信息**:`--help` 输出清晰的使用说明
|
|
214
|
+
- [ ] **退出码正确**:使用标准退出码
|
|
215
|
+
- [ ] **无副作用**:验证类 Skill 不修改文件
|
|
216
|
+
- [ ] **可测试**:提供测试用例或验证方法
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 5) 示例:验证类 Skill 的幂等性实现
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
#!/usr/bin/env bash
|
|
224
|
+
# change-check.sh - 验证类脚本示例
|
|
225
|
+
|
|
226
|
+
set -euo pipefail
|
|
227
|
+
|
|
228
|
+
# 验证类脚本:只读操作,不修改任何文件
|
|
229
|
+
readonly MODE="readonly"
|
|
230
|
+
|
|
231
|
+
check_change() {
|
|
232
|
+
local change_id="$1"
|
|
233
|
+
local change_path="$CHANGE_ROOT/$change_id"
|
|
234
|
+
|
|
235
|
+
# 只读操作:检查文件是否存在
|
|
236
|
+
[[ -f "$change_path/proposal.md" ]] || return 4
|
|
237
|
+
[[ -f "$change_path/design.md" ]] || return 4
|
|
238
|
+
[[ -f "$change_path/tasks.md" ]] || return 4
|
|
239
|
+
|
|
240
|
+
# 只读操作:验证内容格式
|
|
241
|
+
grep -q "^## Acceptance Criteria" "$change_path/design.md" || return 4
|
|
242
|
+
|
|
243
|
+
return 0
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
# 多次运行输出相同,不产生副作用
|
|
247
|
+
check_change "$1"
|
|
248
|
+
```
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# 上下文检测模板 (Context Detection Template)
|
|
2
|
+
|
|
3
|
+
> 本模板为所有 SKILL.md 提供标准化的上下文检测规则。
|
|
4
|
+
>
|
|
5
|
+
> 产物落点:`skills/_shared/context-detection-template.md`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
上下文检测用于自动识别当前工作状态,帮助 Skill 选择正确的运行模式。检测基于文件存在性,不依赖外部服务。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 检测规则
|
|
16
|
+
|
|
17
|
+
### 1. 产物存在性检测
|
|
18
|
+
|
|
19
|
+
检测变更包目录中的关键产物是否存在。
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# 检测脚本示例
|
|
23
|
+
detect_artifacts() {
|
|
24
|
+
local change_root="$1"
|
|
25
|
+
local change_id="$2"
|
|
26
|
+
local change_dir="${change_root}/${change_id}"
|
|
27
|
+
|
|
28
|
+
# 检测关键产物
|
|
29
|
+
local has_proposal=false
|
|
30
|
+
local has_design=false
|
|
31
|
+
local has_tasks=false
|
|
32
|
+
local has_verification=false
|
|
33
|
+
local has_specs=false
|
|
34
|
+
|
|
35
|
+
[[ -f "${change_dir}/proposal.md" ]] && has_proposal=true
|
|
36
|
+
[[ -f "${change_dir}/design.md" ]] && has_design=true
|
|
37
|
+
[[ -f "${change_dir}/tasks.md" ]] && has_tasks=true
|
|
38
|
+
[[ -f "${change_dir}/verification.md" ]] && has_verification=true
|
|
39
|
+
[[ -d "${change_dir}/specs" ]] && has_specs=true
|
|
40
|
+
|
|
41
|
+
echo "proposal:${has_proposal}"
|
|
42
|
+
echo "design:${has_design}"
|
|
43
|
+
echo "tasks:${has_tasks}"
|
|
44
|
+
echo "verification:${has_verification}"
|
|
45
|
+
echo "specs:${has_specs}"
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. 完整性判断规则
|
|
50
|
+
|
|
51
|
+
按 Requirement 块校验 specs/ 的完整性。
|
|
52
|
+
|
|
53
|
+
**完整性判定条件**:
|
|
54
|
+
1. 每个 REQ 必须有至少一个 Scenario
|
|
55
|
+
2. 每个 Scenario 必须有 Given/When/Then
|
|
56
|
+
3. 不存在占位符(`[TODO]`、`[待补充]`、`[TBD]`)
|
|
57
|
+
4. 所有 AC 都有对应的 Requirement
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 完整性检测脚本示例
|
|
61
|
+
# [m-001 修复] 输出格式与 tests/lib/completeness-check.sh 保持一致
|
|
62
|
+
check_spec_completeness() {
|
|
63
|
+
local spec_file="$1"
|
|
64
|
+
|
|
65
|
+
# 如果文件为空或不存在,视为完整
|
|
66
|
+
if [[ ! -f "$spec_file" ]] || [[ ! -s "$spec_file" ]]; then
|
|
67
|
+
echo "complete:无 Req 需校验"
|
|
68
|
+
return 0
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# 检查是否存在占位符
|
|
72
|
+
if grep -qE '\[TODO\]|\[待补充\]|\[TBD\]' "$spec_file"; then
|
|
73
|
+
echo "incomplete:存在占位符"
|
|
74
|
+
return 1
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# 检查 Requirement 块
|
|
78
|
+
local req_count=$(grep -c '^## REQ-' "$spec_file" || echo 0)
|
|
79
|
+
local scenario_count=$(grep -c '^### Scenario' "$spec_file" || echo 0)
|
|
80
|
+
|
|
81
|
+
if [[ $req_count -gt 0 && $scenario_count -eq 0 ]]; then
|
|
82
|
+
echo "incomplete:REQ 缺少 Scenario"
|
|
83
|
+
return 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# 检查 Given/When/Then
|
|
87
|
+
local gwt_count=$(grep -cE '^\s*-\s*(Given|When|Then)' "$spec_file" || echo 0)
|
|
88
|
+
if [[ $scenario_count -gt 0 && $gwt_count -lt $((scenario_count * 3)) ]]; then
|
|
89
|
+
echo "incomplete:Scenario 缺少完整的 Given/When/Then"
|
|
90
|
+
return 1
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
echo "complete:全部校验通过"
|
|
94
|
+
return 0
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 3. 当前阶段检测
|
|
99
|
+
|
|
100
|
+
根据已有产物推断当前阶段。
|
|
101
|
+
|
|
102
|
+
| 阶段 | 判定条件 |
|
|
103
|
+
|------|----------|
|
|
104
|
+
| **proposal** | `proposal.md` 不存在,或存在但未通过 Judge 裁决 |
|
|
105
|
+
| **apply** | `proposal.md` 存在且已裁决,`design.md` 存在,正在实现 |
|
|
106
|
+
| **archive** | 所有闸门通过,准备归档或已归档 |
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# 阶段检测脚本示例
|
|
110
|
+
detect_phase() {
|
|
111
|
+
local change_dir="$1"
|
|
112
|
+
|
|
113
|
+
# 检查产物存在性
|
|
114
|
+
local has_proposal=false
|
|
115
|
+
local has_design=false
|
|
116
|
+
local has_evidence=false
|
|
117
|
+
|
|
118
|
+
[[ -f "${change_dir}/proposal.md" ]] && has_proposal=true
|
|
119
|
+
[[ -f "${change_dir}/design.md" ]] && has_design=true
|
|
120
|
+
[[ -d "${change_dir}/evidence/green-final" ]] && has_evidence=true
|
|
121
|
+
|
|
122
|
+
# 推断阶段
|
|
123
|
+
if ! $has_proposal; then
|
|
124
|
+
echo "proposal"
|
|
125
|
+
elif $has_evidence; then
|
|
126
|
+
echo "archive"
|
|
127
|
+
else
|
|
128
|
+
echo "apply"
|
|
129
|
+
fi
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 4. 运行模式检测
|
|
134
|
+
|
|
135
|
+
根据上下文选择 Skill 的运行模式。
|
|
136
|
+
|
|
137
|
+
| 模式 | 条件 | 说明 |
|
|
138
|
+
|------|------|------|
|
|
139
|
+
| **从零创建** | 目标产物不存在 | 创建全新产物 |
|
|
140
|
+
| **补漏模式** | 产物存在但不完整 | 补充缺失部分 |
|
|
141
|
+
| **同步模式** | 产物完整,需要与实现同步 | 检查一致性并更新 |
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# 模式检测脚本示例
|
|
145
|
+
detect_mode() {
|
|
146
|
+
local artifact_path="$1"
|
|
147
|
+
local artifact_type="$2" # spec | design | c4
|
|
148
|
+
|
|
149
|
+
if [[ ! -e "$artifact_path" ]]; then
|
|
150
|
+
echo "create" # 从零创建
|
|
151
|
+
return
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# 检查完整性
|
|
155
|
+
case "$artifact_type" in
|
|
156
|
+
spec)
|
|
157
|
+
local completeness=$(check_spec_completeness "$artifact_path")
|
|
158
|
+
# [m-001 修复] 使用与实现一致的格式检查
|
|
159
|
+
if [[ "$completeness" == complete:* ]]; then
|
|
160
|
+
echo "sync" # 同步模式
|
|
161
|
+
else
|
|
162
|
+
echo "patch" # 补漏模式
|
|
163
|
+
fi
|
|
164
|
+
;;
|
|
165
|
+
design)
|
|
166
|
+
if grep -qE '\[TODO\]|\[待补充\]' "$artifact_path"; then
|
|
167
|
+
echo "patch"
|
|
168
|
+
else
|
|
169
|
+
echo "sync"
|
|
170
|
+
fi
|
|
171
|
+
;;
|
|
172
|
+
c4)
|
|
173
|
+
if [[ -f "$artifact_path" ]]; then
|
|
174
|
+
echo "update"
|
|
175
|
+
else
|
|
176
|
+
echo "create"
|
|
177
|
+
fi
|
|
178
|
+
;;
|
|
179
|
+
esac
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 7 个边界场景测试用例
|
|
186
|
+
|
|
187
|
+
| ID | 场景 | 输入状态 | 期望输出 | 说明 |
|
|
188
|
+
|----|------|----------|----------|------|
|
|
189
|
+
| **CD-001** | 全空变更包 | `change-dir/` 为空 | 阶段=proposal, 模式=create | 新变更的初始状态 |
|
|
190
|
+
| **CD-002** | 仅有 proposal | `proposal.md` 存在,其他为空 | 阶段=proposal, 等待裁决 | 提案已撰写但未通过 |
|
|
191
|
+
| **CD-003** | proposal + design | 两个文件都存在 | 阶段=apply | 设计已完成,进入实现 |
|
|
192
|
+
| **CD-004** | specs 不完整 | `specs/` 存在但有 `[TODO]` | 模式=patch | 需要补充规格 |
|
|
193
|
+
| **CD-005** | specs 完整 | `specs/` 存在且无占位符 | 模式=sync | 检查与实现一致性 |
|
|
194
|
+
| **CD-006** | 闸门通过 | `evidence/green-final/` 存在 | 阶段=archive | 准备归档 |
|
|
195
|
+
| **CD-007** | c4.md 不存在 | `specs/architecture/c4.md` 不存在 | 模式=create | 需要创建架构图 |
|
|
196
|
+
|
|
197
|
+
### 测试用例验证脚本
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
#!/bin/bash
|
|
201
|
+
# context-detection-test.sh
|
|
202
|
+
# 运行上下文检测边界场景测试
|
|
203
|
+
|
|
204
|
+
set -e
|
|
205
|
+
|
|
206
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
207
|
+
TEST_DIR=$(mktemp -d)
|
|
208
|
+
trap "rm -rf $TEST_DIR" EXIT
|
|
209
|
+
|
|
210
|
+
echo "=== 上下文检测边界场景测试 ==="
|
|
211
|
+
|
|
212
|
+
# CD-001: 全空变更包
|
|
213
|
+
echo -n "CD-001 全空变更包... "
|
|
214
|
+
mkdir -p "$TEST_DIR/CD-001"
|
|
215
|
+
phase=$(detect_phase "$TEST_DIR/CD-001")
|
|
216
|
+
[[ "$phase" == "proposal" ]] && echo "PASS" || echo "FAIL (got: $phase)"
|
|
217
|
+
|
|
218
|
+
# CD-002: 仅有 proposal
|
|
219
|
+
echo -n "CD-002 仅有 proposal... "
|
|
220
|
+
mkdir -p "$TEST_DIR/CD-002"
|
|
221
|
+
touch "$TEST_DIR/CD-002/proposal.md"
|
|
222
|
+
phase=$(detect_phase "$TEST_DIR/CD-002")
|
|
223
|
+
[[ "$phase" == "proposal" || "$phase" == "apply" ]] && echo "PASS" || echo "FAIL (got: $phase)"
|
|
224
|
+
|
|
225
|
+
# CD-003: proposal + design
|
|
226
|
+
echo -n "CD-003 proposal + design... "
|
|
227
|
+
mkdir -p "$TEST_DIR/CD-003"
|
|
228
|
+
touch "$TEST_DIR/CD-003/proposal.md"
|
|
229
|
+
touch "$TEST_DIR/CD-003/design.md"
|
|
230
|
+
phase=$(detect_phase "$TEST_DIR/CD-003")
|
|
231
|
+
[[ "$phase" == "apply" ]] && echo "PASS" || echo "FAIL (got: $phase)"
|
|
232
|
+
|
|
233
|
+
# CD-004: specs 不完整
|
|
234
|
+
echo -n "CD-004 specs 不完整... "
|
|
235
|
+
mkdir -p "$TEST_DIR/CD-004/specs"
|
|
236
|
+
echo "[TODO] 待补充" > "$TEST_DIR/CD-004/specs/spec.md"
|
|
237
|
+
mode=$(detect_mode "$TEST_DIR/CD-004/specs/spec.md" "spec")
|
|
238
|
+
[[ "$mode" == "patch" ]] && echo "PASS" || echo "FAIL (got: $mode)"
|
|
239
|
+
|
|
240
|
+
# CD-005: specs 完整
|
|
241
|
+
echo -n "CD-005 specs 完整... "
|
|
242
|
+
mkdir -p "$TEST_DIR/CD-005/specs"
|
|
243
|
+
cat > "$TEST_DIR/CD-005/specs/spec.md" << 'EOF'
|
|
244
|
+
## REQ-001 示例需求
|
|
245
|
+
### Scenario: 正常流程
|
|
246
|
+
- Given 前置条件
|
|
247
|
+
- When 执行操作
|
|
248
|
+
- Then 期望结果
|
|
249
|
+
EOF
|
|
250
|
+
mode=$(detect_mode "$TEST_DIR/CD-005/specs/spec.md" "spec")
|
|
251
|
+
[[ "$mode" == "sync" ]] && echo "PASS" || echo "FAIL (got: $mode)"
|
|
252
|
+
|
|
253
|
+
# CD-006: 闸门通过
|
|
254
|
+
echo -n "CD-006 闸门通过... "
|
|
255
|
+
mkdir -p "$TEST_DIR/CD-006/evidence/green-final"
|
|
256
|
+
touch "$TEST_DIR/CD-006/proposal.md"
|
|
257
|
+
phase=$(detect_phase "$TEST_DIR/CD-006")
|
|
258
|
+
[[ "$phase" == "archive" ]] && echo "PASS" || echo "FAIL (got: $phase)"
|
|
259
|
+
|
|
260
|
+
# CD-007: c4.md 不存在
|
|
261
|
+
echo -n "CD-007 c4.md 不存在... "
|
|
262
|
+
mkdir -p "$TEST_DIR/CD-007/specs/architecture"
|
|
263
|
+
mode=$(detect_mode "$TEST_DIR/CD-007/specs/architecture/c4.md" "c4")
|
|
264
|
+
[[ "$mode" == "create" ]] && echo "PASS" || echo "FAIL (got: $mode)"
|
|
265
|
+
|
|
266
|
+
echo "=== 测试完成 ==="
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Skill 引用方式
|
|
272
|
+
|
|
273
|
+
在 SKILL.md 中引用本模板:
|
|
274
|
+
|
|
275
|
+
```markdown
|
|
276
|
+
## 上下文感知
|
|
277
|
+
|
|
278
|
+
本 Skill 在执行前自动检测上下文,选择合适的运行模式。
|
|
279
|
+
|
|
280
|
+
检测规则参考:`skills/_shared/context-detection-template.md`
|
|
281
|
+
|
|
282
|
+
### 检测流程
|
|
283
|
+
|
|
284
|
+
1. 检测产物存在性
|
|
285
|
+
2. 判断完整性
|
|
286
|
+
3. 推断当前阶段
|
|
287
|
+
4. 选择运行模式
|
|
288
|
+
|
|
289
|
+
### 本 Skill 支持的模式
|
|
290
|
+
|
|
291
|
+
| 模式 | 触发条件 | 行为 |
|
|
292
|
+
|------|----------|------|
|
|
293
|
+
| 从零创建 | <条件> | <行为> |
|
|
294
|
+
| 补漏模式 | <条件> | <行为> |
|
|
295
|
+
| 同步模式 | <条件> | <行为> |
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 检测输出格式
|
|
301
|
+
|
|
302
|
+
标准化的检测结果输出:
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
检测结果:
|
|
306
|
+
- 产物存在性:<存在/不存在>
|
|
307
|
+
- 完整性:<完整/不完整(缺失项:...)>
|
|
308
|
+
- 当前阶段:<proposal/apply/archive>
|
|
309
|
+
- 运行模式:<从零创建/补漏/同步>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
**文档版本**:v1.0.0
|
|
315
|
+
**最后更新**:2026-01-12
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# MCP 增强模板(MCP Enhancement Template)
|
|
2
|
+
|
|
3
|
+
> 本模板供各 SKILL.md 引用,定义 MCP 运行时检测与降级策略的标准章节格式。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 核心原则
|
|
8
|
+
|
|
9
|
+
1. **2s 超时**:所有 MCP 调用必须在 2s 内返回,否则视为不可用
|
|
10
|
+
2. **优雅降级**:MCP 不可用时,Skill 继续执行基础功能,不阻塞
|
|
11
|
+
3. **静默检测**:检测过程对用户透明,只在降级时输出提示
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 标准章节格式
|
|
16
|
+
|
|
17
|
+
每个 SKILL.md 的"MCP 增强"章节应包含以下内容:
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
## MCP 增强
|
|
21
|
+
|
|
22
|
+
本 Skill 支持 MCP 运行时增强,自动检测并启用高级功能。
|
|
23
|
+
|
|
24
|
+
### 依赖的 MCP 服务
|
|
25
|
+
|
|
26
|
+
| 服务 | 用途 | 超时 |
|
|
27
|
+
|------|------|------|
|
|
28
|
+
| `mcp__ckb__getStatus` | 检测 CKB 索引可用性 | 2s |
|
|
29
|
+
| `mcp__ckb__getHotspots` | 获取热点文件 | 2s |
|
|
30
|
+
|
|
31
|
+
### 检测流程
|
|
32
|
+
|
|
33
|
+
1. 调用 `mcp__ckb__getStatus`(2s 超时)
|
|
34
|
+
2. 若返回成功 → 启用增强模式
|
|
35
|
+
3. 若超时或失败 → 降级到基础模式
|
|
36
|
+
|
|
37
|
+
### 增强模式 vs 基础模式
|
|
38
|
+
|
|
39
|
+
| 功能 | 增强模式 | 基础模式 |
|
|
40
|
+
|------|----------|----------|
|
|
41
|
+
| 热点检测 | CKB 实时分析 | Git 历史统计 |
|
|
42
|
+
| 影响分析 | 符号级引用 | 文件级 grep |
|
|
43
|
+
| 调用图 | 精确调用链 | 不可用 |
|
|
44
|
+
|
|
45
|
+
### 降级提示
|
|
46
|
+
|
|
47
|
+
当 MCP 不可用时,输出以下提示:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
⚠️ CKB 不可用(超时或未配置),使用基础模式执行。
|
|
51
|
+
如需启用增强功能,请运行 /devbooks:index 生成索引。
|
|
52
|
+
```
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 按 Skill 分类
|
|
58
|
+
|
|
59
|
+
### 无 MCP 依赖的 Skills
|
|
60
|
+
|
|
61
|
+
以下 Skills 不依赖 MCP,无需 MCP 增强章节:
|
|
62
|
+
|
|
63
|
+
- devbooks-design-doc(纯文档生成)
|
|
64
|
+
- devbooks-implementation-plan(纯计划生成)
|
|
65
|
+
- devbooks-proposal-author(纯文档生成)
|
|
66
|
+
- devbooks-proposal-challenger(纯评审)
|
|
67
|
+
- devbooks-proposal-judge(纯裁决)
|
|
68
|
+
- devbooks-proposal-debate-workflow(流程编排)
|
|
69
|
+
- devbooks-design-backport(文档回写)
|
|
70
|
+
- devbooks-spec-gardener(文件整理)
|
|
71
|
+
- devbooks-test-reviewer(测试评审)
|
|
72
|
+
|
|
73
|
+
对于这些 Skills,MCP 增强章节应写:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
## MCP 增强
|
|
77
|
+
|
|
78
|
+
本 Skill 不依赖 MCP 服务,无需运行时检测。
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 有 MCP 依赖的 Skills
|
|
82
|
+
|
|
83
|
+
以下 Skills 依赖 MCP,需要完整 MCP 增强章节:
|
|
84
|
+
|
|
85
|
+
| Skill | MCP 依赖 | 增强功能 |
|
|
86
|
+
|-------|----------|----------|
|
|
87
|
+
| devbooks-coder | mcp__ckb__getHotspots | 热点文件预警 |
|
|
88
|
+
| devbooks-code-review | mcp__ckb__getHotspots | 热点文件高亮 |
|
|
89
|
+
| devbooks-impact-analysis | mcp__ckb__analyzeImpact, findReferences | 精确影响分析 |
|
|
90
|
+
| devbooks-brownfield-bootstrap | mcp__ckb__* | COD 模型生成 |
|
|
91
|
+
| devbooks-index-bootstrap | mcp__ckb__getStatus | 索引状态检测 |
|
|
92
|
+
| devbooks-federation | mcp__ckb__*, mcp__github__* | 跨仓库分析 |
|
|
93
|
+
| devbooks-router | mcp__ckb__getStatus | 索引可用性检测 |
|
|
94
|
+
| devbooks-c4-map | mcp__ckb__getArchitecture | 模块依赖图 |
|
|
95
|
+
| devbooks-spec-contract | mcp__ckb__findReferences | 引用检测 |
|
|
96
|
+
| devbooks-entropy-monitor | mcp__ckb__getHotspots | 热点趋势分析 |
|
|
97
|
+
| devbooks-delivery-workflow | mcp__ckb__getStatus | 索引检测 |
|
|
98
|
+
| devbooks-test-owner | mcp__ckb__analyzeImpact | 测试覆盖分析 |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 检测代码示例
|
|
103
|
+
|
|
104
|
+
### Bash 检测脚本
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
#!/bin/bash
|
|
108
|
+
# mcp-detect.sh - MCP 可用性检测
|
|
109
|
+
|
|
110
|
+
TIMEOUT=2
|
|
111
|
+
|
|
112
|
+
# 检测 CKB
|
|
113
|
+
check_ckb() {
|
|
114
|
+
# 模拟 MCP 调用(实际由 Claude Code 执行)
|
|
115
|
+
# 若 2s 内无响应,返回降级状态
|
|
116
|
+
echo "⚠️ CKB 检测需要在 Claude Code 环境中执行"
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# 输出检测结果
|
|
120
|
+
detect_mcp() {
|
|
121
|
+
local ckb_status="unknown"
|
|
122
|
+
|
|
123
|
+
# 检查 index.scip 文件是否存在(文件级检测)
|
|
124
|
+
if [ -f "index.scip" ]; then
|
|
125
|
+
ckb_status="available (file-based)"
|
|
126
|
+
else
|
|
127
|
+
ckb_status="unavailable"
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
echo "MCP 检测结果:"
|
|
131
|
+
echo "- CKB 索引:$ckb_status"
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
detect_mcp
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 注意事项
|
|
140
|
+
|
|
141
|
+
1. **不要在 SKILL.md frontmatter 中添加不存在的 MCP 工具**
|
|
142
|
+
2. **超时检测应在 Skill 执行开始时进行,不要多次检测**
|
|
143
|
+
3. **降级后不要重复提示,只在首次检测时输出一次**
|
|
144
|
+
4. **增强功能是可选的,基础功能必须完整可用**
|