dev-playbooks-cn 2.6.2 → 3.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/CHANGELOG.md +19 -0
- package/README.md +6 -0
- package/bin/devbooks.js +85 -3
- package/package.json +2 -4
- package/scripts/dependency-audit.sh +96 -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 +3 -3
- package/skills/devbooks-docs-consistency/scripts/completeness-checker.sh +2 -2
- package/skills/devbooks-router/SKILL.md +1 -0
- 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 +12 -0
- package/templates/claude-commands/devbooks/backport.md +2 -2
- package/templates/claude-commands/devbooks/c4.md +5 -6
- package/templates/claude-commands/devbooks/debate.md +13 -7
- package/templates/claude-commands/devbooks/federation.md +3 -3
- package/templates/claude-commands/devbooks/index.md +6 -7
- package/templates/claude-commands/devbooks/quick.md +3 -4
- package/templates/claude-commands/devbooks/router.md +1 -1
- package/templates/claude-commands/devbooks/start.md +21 -0
- package/templates/dev-playbooks/changes/RUNBOOK.md +34 -0
- package/templates/dev-playbooks/changes/brief.md +14 -0
- package/templates/dev-playbooks/changes/compliance.md +9 -0
- package/templates/dev-playbooks/changes/inputs/index.md +8 -0
- package/templates/dev-playbooks/changes/proposal.md +40 -0
- package/templates/dev-playbooks/changes/prototype/README.md +8 -0
- package/templates/dev-playbooks/changes/rollback-plan.md +15 -0
- package/templates/dev-playbooks/changes/validation.md +11 -0
- package/templates/dev-playbooks/changes/verification.md +17 -0
- package/templates/dev-playbooks/specs/bootstrap/README.md +24 -0
- package/templates/dev-playbooks/specs/knife/knife-plan.md +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.0.0] - 2026-01-26
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **AI 原生工作流与协议升级**:
|
|
13
|
+
- 补齐 Start/Router 入口与阶段路由规范
|
|
14
|
+
- 新增变更包模板与协议合同(RUNBOOK、验证/合规/回滚、Knife Plan、合同 schema)
|
|
15
|
+
- 完整化质量闸门与证据结构(G0–G6、风险与审计要求)
|
|
16
|
+
- 新增依赖审计脚本与发布校验入口
|
|
17
|
+
- 更新架构/文件系统视图与工作流示意图模板
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **CLI 入口补齐**:
|
|
22
|
+
- 新增 `start` 与 `router` 命令,用于入口指引(不执行 AI)
|
|
23
|
+
- 帮助信息指向模板与工作流文档入口
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
8
27
|
## [2.6.0] - 2026-01-25
|
|
9
28
|
|
|
10
29
|
### Added
|
package/README.md
CHANGED
package/bin/devbooks.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* dev-playbooks-cn init [path] [options]
|
|
10
10
|
* dev-playbooks-cn update [path] # 更新 CLI 和已配置的工具
|
|
11
11
|
* dev-playbooks-cn migrate --from <framework> [options]
|
|
12
|
+
* dev-playbooks-cn start [options] # 入口指引(不执行 AI)
|
|
13
|
+
* dev-playbooks-cn router [options] # 路由与阶段判断(不执行 AI)
|
|
12
14
|
*
|
|
13
15
|
* 选项:
|
|
14
16
|
* --tools <tools> 非交互式指定 AI 工具:all, none, 或逗号分隔的列表
|
|
@@ -32,6 +34,12 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
32
34
|
const __dirname = path.dirname(__filename);
|
|
33
35
|
|
|
34
36
|
const CLI_COMMAND = 'dev-playbooks-cn';
|
|
37
|
+
const ENTRY_DOC = 'docs/ai-native-workflow.md';
|
|
38
|
+
const ENTRY_TEMPLATES = {
|
|
39
|
+
start: 'templates/claude-commands/devbooks/start.md',
|
|
40
|
+
router: 'templates/claude-commands/devbooks/router.md',
|
|
41
|
+
index: 'templates/claude-commands/devbooks/index.md'
|
|
42
|
+
};
|
|
35
43
|
const XDG_CONFIG_HOME = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');
|
|
36
44
|
|
|
37
45
|
// 版本检查缓存配置
|
|
@@ -1842,6 +1850,48 @@ async function migrateCommand(projectDir, options) {
|
|
|
1842
1850
|
// 帮助信息
|
|
1843
1851
|
// ============================================================================
|
|
1844
1852
|
|
|
1853
|
+
function showStartHelp() {
|
|
1854
|
+
console.log();
|
|
1855
|
+
console.log(chalk.bold('DevBooks Start') + ' - 默认入口与阶段指引');
|
|
1856
|
+
console.log();
|
|
1857
|
+
console.log(chalk.cyan('用法:'));
|
|
1858
|
+
console.log(` ${CLI_COMMAND} start [options]`);
|
|
1859
|
+
console.log();
|
|
1860
|
+
console.log(chalk.cyan('说明:'));
|
|
1861
|
+
console.log(' 本命令仅提供入口指引,不执行 AI 或调用 Skills。');
|
|
1862
|
+
console.log(' 不确定下一步时,先用 Start 获取路由建议。');
|
|
1863
|
+
console.log();
|
|
1864
|
+
console.log(chalk.cyan('入口模板:'));
|
|
1865
|
+
console.log(` ${ENTRY_TEMPLATES.start}`);
|
|
1866
|
+
console.log();
|
|
1867
|
+
console.log(chalk.cyan('入口文档:'));
|
|
1868
|
+
console.log(` ${ENTRY_DOC}`);
|
|
1869
|
+
console.log();
|
|
1870
|
+
console.log(chalk.cyan('相关命令:'));
|
|
1871
|
+
console.log(` ${CLI_COMMAND} router --help`);
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
function showRouterHelp() {
|
|
1875
|
+
console.log();
|
|
1876
|
+
console.log(chalk.bold('DevBooks Router') + ' - 路由与阶段判断');
|
|
1877
|
+
console.log();
|
|
1878
|
+
console.log(chalk.cyan('用法:'));
|
|
1879
|
+
console.log(` ${CLI_COMMAND} router [options]`);
|
|
1880
|
+
console.log();
|
|
1881
|
+
console.log(chalk.cyan('说明:'));
|
|
1882
|
+
console.log(' 本命令仅提供路由指引,不执行 AI 或调用 Skills。');
|
|
1883
|
+
console.log(' 需要阶段判断与最短闭环路径时使用 Router。');
|
|
1884
|
+
console.log();
|
|
1885
|
+
console.log(chalk.cyan('入口模板:'));
|
|
1886
|
+
console.log(` ${ENTRY_TEMPLATES.router}`);
|
|
1887
|
+
console.log();
|
|
1888
|
+
console.log(chalk.cyan('入口文档:'));
|
|
1889
|
+
console.log(` ${ENTRY_DOC}`);
|
|
1890
|
+
console.log();
|
|
1891
|
+
console.log(chalk.cyan('相关命令:'));
|
|
1892
|
+
console.log(` ${CLI_COMMAND} start --help`);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1845
1895
|
function showHelp() {
|
|
1846
1896
|
console.log();
|
|
1847
1897
|
console.log(chalk.bold('DevBooks') + ' - AI-agnostic spec-driven development workflow');
|
|
@@ -1850,6 +1900,8 @@ function showHelp() {
|
|
|
1850
1900
|
console.log(` ${CLI_COMMAND} init [path] [options] 初始化 DevBooks`);
|
|
1851
1901
|
console.log(` ${CLI_COMMAND} update [path] 更新 CLI 和已配置的工具`);
|
|
1852
1902
|
console.log(` ${CLI_COMMAND} migrate --from <framework> [opts] 从其他框架迁移`);
|
|
1903
|
+
console.log(` ${CLI_COMMAND} start [options] 入口指引(不执行 AI)`);
|
|
1904
|
+
console.log(` ${CLI_COMMAND} router [options] 路由与阶段判断(不执行 AI)`);
|
|
1853
1905
|
console.log();
|
|
1854
1906
|
console.log(chalk.cyan('选项:'));
|
|
1855
1907
|
console.log(' --tools <tools> 非交互式指定 AI 工具');
|
|
@@ -1863,6 +1915,11 @@ function showHelp() {
|
|
|
1863
1915
|
console.log(' -h, --help 显示此帮助信息');
|
|
1864
1916
|
console.log(' -v, --version 显示版本号');
|
|
1865
1917
|
console.log();
|
|
1918
|
+
console.log(chalk.cyan('入口模板与文档:'));
|
|
1919
|
+
console.log(` Start 模板: ${ENTRY_TEMPLATES.start}`);
|
|
1920
|
+
console.log(` Router 模板: ${ENTRY_TEMPLATES.router}`);
|
|
1921
|
+
console.log(` 文档入口: ${ENTRY_DOC}`);
|
|
1922
|
+
console.log();
|
|
1866
1923
|
console.log(chalk.cyan('支持的 AI 工具:'));
|
|
1867
1924
|
|
|
1868
1925
|
// 按 Skills 支持级别分组显示
|
|
@@ -1906,26 +1963,35 @@ function showHelp() {
|
|
|
1906
1963
|
console.log(` ${CLI_COMMAND} migrate --from openspec # 从 OpenSpec 迁移`);
|
|
1907
1964
|
console.log(` ${CLI_COMMAND} migrate --from speckit # 从 spec-kit 迁移`);
|
|
1908
1965
|
console.log(` ${CLI_COMMAND} migrate --from openspec --dry-run # 模拟迁移`);
|
|
1966
|
+
console.log(` ${CLI_COMMAND} start # 查看默认入口指引`);
|
|
1967
|
+
console.log(` ${CLI_COMMAND} router # 查看路由与阶段判断`);
|
|
1909
1968
|
}
|
|
1910
1969
|
|
|
1911
1970
|
// ============================================================================
|
|
1912
1971
|
// 主入口
|
|
1913
1972
|
// ============================================================================
|
|
1914
1973
|
|
|
1974
|
+
async function startCommand() {
|
|
1975
|
+
showStartHelp();
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
async function routerCommand() {
|
|
1979
|
+
showRouterHelp();
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1915
1982
|
async function main() {
|
|
1916
1983
|
const args = process.argv.slice(2);
|
|
1917
1984
|
|
|
1918
1985
|
// 解析参数
|
|
1919
1986
|
let command = null;
|
|
1920
1987
|
let projectPath = null;
|
|
1921
|
-
const options = {};
|
|
1988
|
+
const options = { help: false };
|
|
1922
1989
|
|
|
1923
1990
|
for (let i = 0; i < args.length; i++) {
|
|
1924
1991
|
const arg = args[i];
|
|
1925
1992
|
|
|
1926
1993
|
if (arg === '-h' || arg === '--help') {
|
|
1927
|
-
|
|
1928
|
-
process.exit(0);
|
|
1994
|
+
options.help = true;
|
|
1929
1995
|
} else if (arg === '-v' || arg === '--version') {
|
|
1930
1996
|
showVersion();
|
|
1931
1997
|
process.exit(0);
|
|
@@ -1955,12 +2021,28 @@ async function main() {
|
|
|
1955
2021
|
|
|
1956
2022
|
// 执行命令
|
|
1957
2023
|
try {
|
|
2024
|
+
if (options.help) {
|
|
2025
|
+
if (command === 'start') {
|
|
2026
|
+
showStartHelp();
|
|
2027
|
+
return;
|
|
2028
|
+
}
|
|
2029
|
+
if (command === 'router') {
|
|
2030
|
+
showRouterHelp();
|
|
2031
|
+
return;
|
|
2032
|
+
}
|
|
2033
|
+
showHelp();
|
|
2034
|
+
return;
|
|
2035
|
+
}
|
|
1958
2036
|
if (command === 'init' || !command) {
|
|
1959
2037
|
await initCommand(projectDir, options);
|
|
1960
2038
|
} else if (command === 'update') {
|
|
1961
2039
|
await updateCommand(projectDir);
|
|
1962
2040
|
} else if (command === 'migrate') {
|
|
1963
2041
|
await migrateCommand(projectDir, options);
|
|
2042
|
+
} else if (command === 'start') {
|
|
2043
|
+
await startCommand();
|
|
2044
|
+
} else if (command === 'router') {
|
|
2045
|
+
await routerCommand();
|
|
1964
2046
|
} else {
|
|
1965
2047
|
console.log(chalk.red(`未知命令: ${command}`));
|
|
1966
2048
|
showHelp();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev-playbooks-cn",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "AI-driven spec-based development workflow",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"devbooks",
|
|
@@ -31,9 +31,7 @@
|
|
|
31
31
|
"bin/",
|
|
32
32
|
"templates/",
|
|
33
33
|
"skills/",
|
|
34
|
-
"scripts/"
|
|
35
|
-
".factory/",
|
|
36
|
-
".cursor/"
|
|
34
|
+
"scripts/"
|
|
37
35
|
],
|
|
38
36
|
"engines": {
|
|
39
37
|
"node": ">=18"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
cat <<'USAGE'
|
|
6
|
+
Usage: dependency-audit.sh [options]
|
|
7
|
+
|
|
8
|
+
Description:
|
|
9
|
+
Run a dependency audit and write a log for evidence review.
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
--project-root DIR Project root directory (default: current dir)
|
|
13
|
+
--output FILE Output log file path (default: dependency-audit.log)
|
|
14
|
+
-h, --help Show this help message
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
dependency-audit.sh --output evidence/audit/dependency-audit.log
|
|
18
|
+
USAGE
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
project_root="$(pwd)"
|
|
22
|
+
output_file="dependency-audit.log"
|
|
23
|
+
|
|
24
|
+
while [[ $# -gt 0 ]]; do
|
|
25
|
+
case "$1" in
|
|
26
|
+
-h|--help)
|
|
27
|
+
usage
|
|
28
|
+
exit 0
|
|
29
|
+
;;
|
|
30
|
+
--project-root)
|
|
31
|
+
project_root="${2:-}"
|
|
32
|
+
shift 2
|
|
33
|
+
;;
|
|
34
|
+
--output)
|
|
35
|
+
output_file="${2:-}"
|
|
36
|
+
shift 2
|
|
37
|
+
;;
|
|
38
|
+
*)
|
|
39
|
+
echo "ERROR: unknown option: $1" >&2
|
|
40
|
+
usage >&2
|
|
41
|
+
exit 2
|
|
42
|
+
;;
|
|
43
|
+
esac
|
|
44
|
+
done
|
|
45
|
+
|
|
46
|
+
if [[ -z "$project_root" || -z "$output_file" ]]; then
|
|
47
|
+
echo "ERROR: project root and output file are required" >&2
|
|
48
|
+
exit 2
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
pkg_file="${project_root}/package.json"
|
|
52
|
+
lock_file="${project_root}/package-lock.json"
|
|
53
|
+
|
|
54
|
+
if [[ ! -f "$pkg_file" ]]; then
|
|
55
|
+
echo "ERROR: package.json not found at ${pkg_file}" >&2
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
mkdir -p "$(dirname "$output_file")"
|
|
60
|
+
|
|
61
|
+
{
|
|
62
|
+
echo "Dependency Audit"
|
|
63
|
+
echo "run_at: $(date +%Y-%m-%dT%H:%M:%S%z)"
|
|
64
|
+
echo "project_root: ${project_root}"
|
|
65
|
+
echo "package.json: ${pkg_file}"
|
|
66
|
+
if [[ -f "$lock_file" ]]; then
|
|
67
|
+
echo "package-lock.json: ${lock_file}"
|
|
68
|
+
else
|
|
69
|
+
echo "package-lock.json: missing"
|
|
70
|
+
fi
|
|
71
|
+
echo ""
|
|
72
|
+
} >"$output_file"
|
|
73
|
+
|
|
74
|
+
status=0
|
|
75
|
+
|
|
76
|
+
if command -v npm >/dev/null 2>&1; then
|
|
77
|
+
temp_output="$(mktemp)"
|
|
78
|
+
if npm --prefix "$project_root" audit --json >"$temp_output" 2>/dev/null; then
|
|
79
|
+
echo "npm_audit: ok" >>"$output_file"
|
|
80
|
+
echo "summary: no audit errors" >>"$output_file"
|
|
81
|
+
else
|
|
82
|
+
status=1
|
|
83
|
+
echo "npm_audit: failed" >>"$output_file"
|
|
84
|
+
echo "summary: audit reported issues or failed" >>"$output_file"
|
|
85
|
+
fi
|
|
86
|
+
echo "" >>"$output_file"
|
|
87
|
+
echo "raw_audit_json:" >>"$output_file"
|
|
88
|
+
cat "$temp_output" >>"$output_file"
|
|
89
|
+
rm -f "$temp_output"
|
|
90
|
+
else
|
|
91
|
+
status=1
|
|
92
|
+
echo "npm_audit: skipped (npm not found)" >>"$output_file"
|
|
93
|
+
echo "summary: audit not executed" >>"$output_file"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
exit "$status"
|
|
@@ -163,8 +163,8 @@
|
|
|
163
163
|
**追溯完整性检查**:
|
|
164
164
|
|
|
165
165
|
- [ ] 每个 AC 都能追溯到:`AC-xxx → Requirement/Scenario → Test IDs → Evidence`
|
|
166
|
-
- [ ] 没有"孤儿测试"(测试存在但无对应 AC
|
|
167
|
-
- [ ] 没有"孤儿任务"
|
|
166
|
+
- [ ] 没有"孤儿测试"(测试存在但无对应 AC 或设计文档条目)
|
|
167
|
+
- [ ] 没有"孤儿任务"(任务存在但无对应设计文档条目)
|
|
168
168
|
- [ ] 没有"无证据的 DONE"(标记完成但无测试通过或人工签核证据)
|
|
169
169
|
|
|
170
170
|
**归档前最终检查**:
|
|
@@ -207,7 +207,7 @@ change-check.sh <change-id> --mode strict --project-root "$(pwd)" --change-root
|
|
|
207
207
|
- 将**设计验收点(AC)**逐条映射到:Plan 项 + 验收锚点
|
|
208
208
|
- 发现两类缺口立即处理:
|
|
209
209
|
1. **设计有验收点但无锚点** → 补测试/补静态检查/补 checklist
|
|
210
|
-
2.
|
|
210
|
+
2. **计划有任务但无设计文档条目** → 选择:降级为 DEFERRED,或升级进设计(ADR)再验收
|
|
211
211
|
|
|
212
212
|
### Step 4:编写/更新验收锚点(Verification Anchors)
|
|
213
213
|
|
|
@@ -58,9 +58,9 @@ report_line() {
|
|
|
58
58
|
local ok="$2"
|
|
59
59
|
local msg="$3"
|
|
60
60
|
if [[ "$ok" == "1" ]]; then
|
|
61
|
-
printf "- %s: ✓ %s\n" "$name" "$msg"
|
|
61
|
+
printf -- "- %s: ✓ %s\n" "$name" "$msg"
|
|
62
62
|
else
|
|
63
|
-
printf "- %s: ✗ %s\n" "$name" "$msg"
|
|
63
|
+
printf -- "- %s: ✗ %s\n" "$name" "$msg"
|
|
64
64
|
fi
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -29,6 +29,7 @@ allowed-tools:
|
|
|
29
29
|
- 先做配置发现(优先读取 `.devbooks/config.yaml`)与规则文档读取,再进入路由判断。
|
|
30
30
|
- 输出 2 个最小关键问题 + 3–6 条路由结果(含路径与理由)。
|
|
31
31
|
- 用户要求“直接开始产出”时,切换到目标 Skill 的输出模式。
|
|
32
|
+
- Start 为默认入口,使用 Router 输出阶段建议与路径。
|
|
32
33
|
|
|
33
34
|
## 参考资料
|
|
34
35
|
- `skills/devbooks-router/references/路由规则与模板.md`:入口定位、配置发现、Impact 画像、路由规则、原型模式与上下文检测。
|
|
@@ -57,6 +57,18 @@
|
|
|
57
57
|
3) 下一步该用哪个(或哪些)`devbooks-*` Skills
|
|
58
58
|
4) 每个产物应落到哪个文件路径
|
|
59
59
|
|
|
60
|
+
## Start 入口规则
|
|
61
|
+
|
|
62
|
+
Start 是默认入口,触发时按以下规则输出:
|
|
63
|
+
|
|
64
|
+
1) 如果 `<change-id>` 不明确,先询问 `<change-id>` 与 `<truth-root>/<change-root>`。
|
|
65
|
+
2) 如果可读取变更包状态(如 `pending/in_progress/review/completed`),按状态给出推荐入口:
|
|
66
|
+
- pending → proposal
|
|
67
|
+
- in_progress → design/spec/plan(按缺失产物建议)
|
|
68
|
+
- review → review
|
|
69
|
+
- completed → archive
|
|
70
|
+
3) 保持路由输出 3–6 条,包含 Skill + 路径 + 理由。
|
|
71
|
+
|
|
60
72
|
## 输出要求(强制)
|
|
61
73
|
|
|
62
74
|
1) 先问清楚 2 个最小关键问题(若上下文里已有答案则不问):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill: devbooks-
|
|
2
|
+
skill: devbooks-design-doc
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# DevBooks: C4 架构地图
|
|
6
6
|
|
|
7
|
-
使用 devbooks-
|
|
7
|
+
使用 devbooks-design-doc 产出或更新架构影响(包含 C4 视图要点)。
|
|
8
8
|
|
|
9
9
|
## 用法
|
|
10
10
|
|
|
@@ -16,7 +16,6 @@ $ARGUMENTS
|
|
|
16
16
|
|
|
17
17
|
## 说明
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
- 维护架构层级(Context/Container/Component/Code)
|
|
21
|
-
-
|
|
22
|
-
- 同步架构守护规则
|
|
19
|
+
- 输出架构影响与 C4 Delta(如适用):
|
|
20
|
+
- 维护架构层级(Context/Container/Component/Code)
|
|
21
|
+
- 同步架构约束与守门规则(如有变更)
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill:
|
|
2
|
+
skill: multi-skill-combo
|
|
3
|
+
skills:
|
|
4
|
+
- devbooks-proposal-author
|
|
5
|
+
- devbooks-proposal-challenger
|
|
6
|
+
- devbooks-proposal-judge
|
|
3
7
|
---
|
|
4
8
|
|
|
5
|
-
# DevBooks:
|
|
9
|
+
# DevBooks: 提案辩论(向后兼容)
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
编排 Author → Challenger → Judge 的完整辩论流程。
|
|
8
12
|
|
|
9
13
|
## 用法
|
|
10
14
|
|
|
@@ -16,7 +20,9 @@ $ARGUMENTS
|
|
|
16
20
|
|
|
17
21
|
## 说明
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
+
这是一个向后兼容命令,触发多 Skill 组合。
|
|
24
|
+
|
|
25
|
+
也可使用更精确的直达命令:
|
|
26
|
+
- /devbooks:proposal
|
|
27
|
+
- /devbooks:challenger
|
|
28
|
+
- /devbooks:judge
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill: devbooks-
|
|
2
|
+
skill: devbooks-impact-analysis
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# DevBooks: 联邦分析
|
|
6
6
|
|
|
7
|
-
使用 devbooks-
|
|
7
|
+
使用 devbooks-impact-analysis 进行跨仓库影响与依赖分析。
|
|
8
8
|
|
|
9
9
|
## 用法
|
|
10
10
|
|
|
@@ -19,4 +19,4 @@ $ARGUMENTS
|
|
|
19
19
|
分析多仓库之间的依赖关系:
|
|
20
20
|
- 识别跨仓库影响
|
|
21
21
|
- 协调版本兼容性
|
|
22
|
-
-
|
|
22
|
+
- 记录兼容性与风险提示
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill: devbooks-
|
|
2
|
+
skill: devbooks-router
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# DevBooks:
|
|
5
|
+
# DevBooks: 命令索引
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
DevBooks 常用命令索引入口。
|
|
8
8
|
|
|
9
9
|
## 用法
|
|
10
10
|
|
|
@@ -16,7 +16,6 @@ $ARGUMENTS
|
|
|
16
16
|
|
|
17
17
|
## 说明
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- 启用代码智能功能
|
|
19
|
+
- 默认入口:/devbooks:start
|
|
20
|
+
- 路由与阶段判断:/devbooks:router
|
|
21
|
+
- 完整闭环:/devbooks:delivery
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill:
|
|
2
|
+
skill: devbooks-router
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# DevBooks: 快速模式(向后兼容)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
快速入口,适用于小型变更(5 文件以内),由 Router 输出最短闭环路径。
|
|
8
8
|
|
|
9
9
|
## 用法
|
|
10
10
|
|
|
@@ -17,8 +17,7 @@ $ARGUMENTS
|
|
|
17
17
|
## 说明
|
|
18
18
|
|
|
19
19
|
这是一个向后兼容命令,适用于简单变更场景:
|
|
20
|
-
-
|
|
21
|
-
- 直接进入实现阶段
|
|
20
|
+
- 由 Router 判断是否可走轻量路径
|
|
22
21
|
- 适用于 bug 修复、小功能、文档更新等
|
|
23
22
|
|
|
24
23
|
对于复杂变更(>5 文件或跨模块),建议使用 /devbooks:router 获取完整执行计划。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: devbooks-router
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# DevBooks: Start
|
|
6
|
+
|
|
7
|
+
Start 是默认入口,用于判定当前阶段并给出下一步路由建议。
|
|
8
|
+
|
|
9
|
+
## 用法
|
|
10
|
+
|
|
11
|
+
/devbooks:start [参数]
|
|
12
|
+
|
|
13
|
+
## 参数
|
|
14
|
+
|
|
15
|
+
$ARGUMENTS
|
|
16
|
+
|
|
17
|
+
## 说明
|
|
18
|
+
|
|
19
|
+
- 当不确定下一步时,从 Start 进入。
|
|
20
|
+
- Router 会读取配置映射与现有产物,给出最短闭环路径。
|
|
21
|
+
- 如果已知 change-id,可在参数中提供以减少询问。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# RUNBOOK
|
|
2
|
+
|
|
3
|
+
## 目标与范围
|
|
4
|
+
|
|
5
|
+
- 目标:<goal>
|
|
6
|
+
- 范围:<scope>
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 依赖:<dependencies>
|
|
11
|
+
- 假设:<assumptions>
|
|
12
|
+
|
|
13
|
+
## 执行清单
|
|
14
|
+
|
|
15
|
+
| 步骤 | 责任角色 | 说明 |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| 1 | owner | <step> |
|
|
18
|
+
|
|
19
|
+
## 验证锚点
|
|
20
|
+
|
|
21
|
+
- 入口:<command>
|
|
22
|
+
- 成功标准:<criteria>
|
|
23
|
+
|
|
24
|
+
## 回滚计划
|
|
25
|
+
|
|
26
|
+
- 回滚触发:<trigger>
|
|
27
|
+
- 回滚步骤:<steps>
|
|
28
|
+
|
|
29
|
+
## 证据落点
|
|
30
|
+
|
|
31
|
+
- red-baseline: `evidence/red-baseline/`
|
|
32
|
+
- green-final: `evidence/green-final/`
|
|
33
|
+
- gates: `evidence/gates/`
|
|
34
|
+
- risks: `evidence/risks/`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# proposal
|
|
2
|
+
|
|
3
|
+
## 元信息
|
|
4
|
+
|
|
5
|
+
| 字段 | 值 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| change_id | <change-id> |
|
|
8
|
+
| intervention_level | <level> |
|
|
9
|
+
| change_type | <change-type> |
|
|
10
|
+
| risk_level | <risk-level> |
|
|
11
|
+
| state | pending |
|
|
12
|
+
| state_reason | <reason-if-needed> |
|
|
13
|
+
| next_action | <next-action> |
|
|
14
|
+
| epic_id | <epic-id> |
|
|
15
|
+
| slice_id | <slice-id> |
|
|
16
|
+
| ac_ids | [AC-001] |
|
|
17
|
+
| acceptance_ids | [ACC-001] |
|
|
18
|
+
| truth_refs | [] |
|
|
19
|
+
| risk_flags | [] |
|
|
20
|
+
| required_gates | [G0, G1] |
|
|
21
|
+
| approvals | [] |
|
|
22
|
+
| escape_hatch | <optional> |
|
|
23
|
+
|
|
24
|
+
## Why
|
|
25
|
+
|
|
26
|
+
- <why>
|
|
27
|
+
|
|
28
|
+
## What
|
|
29
|
+
|
|
30
|
+
- <what>
|
|
31
|
+
|
|
32
|
+
## Impact
|
|
33
|
+
|
|
34
|
+
- <impact>
|
|
35
|
+
|
|
36
|
+
## Debate Packet
|
|
37
|
+
|
|
38
|
+
- 选项 A:<option-a>
|
|
39
|
+
- 选项 B:<option-b>
|
|
40
|
+
- 决策点:<decision>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# verification
|
|
2
|
+
|
|
3
|
+
## 追溯矩阵
|
|
4
|
+
|
|
5
|
+
| AC-ID | Spec | Tests | Evidence |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| AC-001 | <spec> | <test> | <evidence> |
|
|
8
|
+
|
|
9
|
+
## Gate 状态
|
|
10
|
+
|
|
11
|
+
| Gate | 状态 | 证据 |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| G0 | pending | <evidence> |
|
|
14
|
+
|
|
15
|
+
## 备注
|
|
16
|
+
|
|
17
|
+
- <notes>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Bootstrap 规格说明模板
|
|
2
|
+
|
|
3
|
+
本模板用于存量项目初始化时的基线工件说明与落盘清单。
|
|
4
|
+
|
|
5
|
+
## 最小工件集
|
|
6
|
+
|
|
7
|
+
- 项目画像
|
|
8
|
+
- 术语表
|
|
9
|
+
- 关键概念
|
|
10
|
+
- 基线规格
|
|
11
|
+
- 最小验证锚点
|
|
12
|
+
|
|
13
|
+
## DoR(Definition of Ready)
|
|
14
|
+
|
|
15
|
+
| 条件 | 判定 | 处理策略 |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| 基线工件齐备 | 必须满足 | 未满足则触发补齐 |
|
|
18
|
+
| 变更范围明确 | 必须满足 | 未满足则返回澄清 |
|
|
19
|
+
| 风险标记可用 | 必须满足 | 未满足则记录为阻断 |
|
|
20
|
+
|
|
21
|
+
## 验证锚点
|
|
22
|
+
|
|
23
|
+
- 产出路径:`dev-playbooks/specs/_meta/`
|
|
24
|
+
- 证据落点:`dev-playbooks/changes/<change-id>/evidence/`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Knife Plan 模板
|
|
2
|
+
|
|
3
|
+
> 用于切片计划的机读合同与验证锚点清单。
|
|
4
|
+
|
|
5
|
+
## 元信息
|
|
6
|
+
|
|
7
|
+
- plan_id: <plan-id>
|
|
8
|
+
- epic_id: <epic-id>
|
|
9
|
+
- slice_id: <slice-id>
|
|
10
|
+
- ac_ids: [AC-001]
|
|
11
|
+
- acceptance_ids: [ACC-001]
|
|
12
|
+
- change_type: feature
|
|
13
|
+
- risk_level: medium
|
|
14
|
+
- dependencies: []
|
|
15
|
+
- assumptions: <assumptions>
|
|
16
|
+
|
|
17
|
+
## 验证锚点
|
|
18
|
+
|
|
19
|
+
| anchor_id | gate_id | evidence_type | success_criteria | owner |
|
|
20
|
+
| --- | --- | --- | --- | --- |
|
|
21
|
+
| ANCHOR-001 | G3 | checklist | 验证锚点字段齐备 | planner |
|