kld-sdd 2.4.19 → 2.5.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 (47) hide show
  1. package/kld-sdd-guide.html +1109 -0
  2. package/lib/command-bridge.js +156 -0
  3. package/lib/deploy-codebuddy-hooks.js +99 -0
  4. package/lib/hook-gate-core.js +333 -0
  5. package/lib/init.js +136 -93
  6. package/lib/settings-merge.js +85 -0
  7. package/lib/skills-bundle.js +142 -5
  8. package/lib/tool-profiles.js +270 -0
  9. package/package.json +3 -2
  10. package/skywalk-sdd/index.cjs +1808 -129
  11. package/templates/commands/kunlunzhima/skill-bridge.md +23 -0
  12. package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +175 -28
  13. package/templates/hooks/claude/hooks/sdd-post-tool.cjs +42 -21
  14. package/templates/hooks/codebuddy/hooks/sdd-apply-gate.cjs +16 -0
  15. package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +395 -0
  16. package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +123 -0
  17. package/templates/hooks/codebuddy/hooks/sdd-pre-tool.cjs +16 -0
  18. package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +48 -0
  19. package/templates/hooks/codebuddy/hooks/sdd-skill-apply-gate.cjs +16 -0
  20. package/templates/hooks/codebuddy/hooks/sdd-stop.cjs +70 -0
  21. package/templates/hooks/codebuddy/settings.json +72 -0
  22. package/templates/openspec/proposal.md +0 -1
  23. package/templates/openspec/spec.md +2 -2
  24. package/templates/skills/kld-sdd/opsx-apply/SKILL.md +65 -356
  25. package/templates/skills/kld-sdd/opsx-apply/checklist.md +94 -0
  26. package/templates/skills/kld-sdd/opsx-apply/reference.md +403 -0
  27. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +21 -5
  28. package/templates/skills/kld-sdd/opsx-archive/checklist.md +33 -0
  29. package/templates/skills/kld-sdd/opsx-check/SKILL.md +29 -5
  30. package/templates/skills/kld-sdd/opsx-check/checklist.md +37 -0
  31. package/templates/skills/kld-sdd/opsx-design/SKILL.md +47 -51
  32. package/templates/skills/kld-sdd/opsx-design/checklist.md +46 -0
  33. package/templates/skills/kld-sdd/opsx-design/reference.md +44 -0
  34. package/templates/skills/kld-sdd/opsx-explore/SKILL.md +1 -1
  35. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +52 -96
  36. package/templates/skills/kld-sdd/opsx-propose/checklist.md +44 -0
  37. package/templates/skills/kld-sdd/opsx-propose/reference.md +94 -0
  38. package/templates/skills/kld-sdd/opsx-rules/SKILL.md +131 -0
  39. package/templates/skills/kld-sdd/opsx-rules/checklist.md +27 -0
  40. package/templates/skills/kld-sdd/opsx-rules/reference.md +124 -0
  41. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +47 -51
  42. package/templates/skills/kld-sdd/opsx-spec/checklist.md +46 -0
  43. package/templates/skills/kld-sdd/opsx-spec/reference.md +49 -0
  44. package/templates/skills/kld-sdd/opsx-task/SKILL.md +43 -46
  45. package/templates/skills/kld-sdd/opsx-task/checklist.md +46 -0
  46. package/templates/skills/kld-sdd/opsx-task/reference.md +40 -0
  47. package/templates/skills/kld-sdd/opsx-test/SKILL.md +13 -1
@@ -0,0 +1,94 @@
1
+ ---
2
+ description: opsx-propose 的详细模板:telemetry 命令、文档拆分模式、测试策略、质量红线自检清单。仅在需要参考详细模板时读取。
3
+ ---
4
+
5
+ # opsx-propose — 详细参考(reference)
6
+
7
+ > 本文件承载 opsx-propose 的重细节模板:telemetry 命令、§7 文档拆分模式说明、§8 测试策略说明、§10 质量红线自检清单。
8
+ > SKILL.md 保留入口骨架与指针;本文件为详细模板来源。
9
+
10
+ ---
11
+
12
+ ## 📊 Telemetry 命令模板(必做,不得跳过)
13
+
14
+ > 阶段开始:`node skywalk-sdd/log.cjs start --command=propose --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
15
+ > 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=propose --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
16
+
17
+ ---
18
+
19
+ ## §7 文档拆分模式选择
20
+
21
+ **❗ 必须主动询问用户,不得默认选择**
22
+
23
+ 分析需求中的能力域数量后,使用 **AskUserQuestion** 工具向用户询问:
24
+
25
+ > "📋 **检测到需求包含以下能力域:**
26
+ > - [能力域列表]
27
+ >
28
+ > 🤔 **请选择文档拆分模式:**
29
+ >
30
+ > **A) 完整模式 (Full)** - 每个能力域独立文档
31
+ > - 目录结构:`specs/<capability>/spec.md`, `specs/<capability>/design.md`, `specs/<capability>/tasks.md`
32
+ > - 适合:大需求、多人协作、需要精细管控
33
+ >
34
+ > **B) 简化模式 (Simple)** - 单一文档
35
+ > - 目录结构:`spec.md`, `design.md`, `tasks.md`(合并所有能力域)
36
+ > - 适合:小需求、单人快速迭代
37
+ >
38
+ > **C) 自动判断** - 根据能力域数量自动选择
39
+ > - 单个能力域 → Simple 模式
40
+ > - 多个能力域 → Full 模式"
41
+
42
+ 根据用户选择:
43
+ - 选择 A:设置 `mode: full`
44
+ - 选择 B:设置 `mode: simple`
45
+ - 选择 C:根据能力域数量自动判断并设置
46
+
47
+ **将用户选择记录到 proposal.md 的 YAML frontmatter 中。**
48
+
49
+ ---
50
+
51
+ ## §8 测试策略选择
52
+
53
+ **❗ 必须主动询问用户,不得默认选择**
54
+
55
+ 使用 **AskUserQuestion** 工具向用户询问:
56
+
57
+ > "🧪 **请选择测试策略:**
58
+ >
59
+ > **A) 测试驱动 (TDD)** - 测试先行
60
+ > - 先生成测试任务,实现任务依赖测试任务
61
+ > - DAG: 测试骨架 → 实现代码 → 测试验证
62
+ > - 适合:核心业务逻辑、质量要求高
63
+ >
64
+ > **B) 实现优先 (Impl-First)** - 代码先行
65
+ > - 先生成实现任务,测试作为验证步骤
66
+ > - DAG: 实现代码 → 测试验证
67
+ > - 适合:UI 层、配置类、快速原型
68
+ >
69
+ > **C) 无测试 (None)** - 仅实现
70
+ > - 不生成测试任务,仅编译检查
71
+ > - 适合:简单配置、文档更新"
72
+
73
+ 根据用户选择:
74
+ - 选择 A:设置 `test-strategy: tdd`
75
+ - 选择 B:设置 `test-strategy: impl-first`
76
+ - 选择 C:设置 `test-strategy: none`
77
+
78
+ **将用户选择记录到 proposal.md 的 YAML frontmatter 中。**
79
+
80
+ ---
81
+
82
+ ## §10 质量红线自检清单
83
+
84
+ 写入文档前,逐项确认:
85
+ - [ ] 文档结构完全符合 `openspec-templates/proposal.md` 模板
86
+ - [ ] 章节编号和命名正确(如 `## 1. 需求背景` 而非 `## Why`)
87
+ - [ ] 子章节结构正确(如 `### 1.1 现状问题`、`### 1.2 业务诉求`)
88
+ - [ ] 涉及模块使用 checkbox 格式(`- [ ] 模块A`)
89
+ - [ ] 依赖关系使用代码块图示
90
+ - [ ] 前置依赖使用 checkbox 格式
91
+ - [ ] 文档末尾包含质量红线检查清单
92
+ - [ ] 能力分解章节已明确(决定后续 specs 文件夹结构)
93
+
94
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: opsx-rules
3
+ description: "规则生成技能 - 扫描项目生成 5 主题 Agent 规则,或对比现有规则输出更新建议"
4
+ argument-hint: "[generate|review] [--agent <id>]"
5
+ license: MIT
6
+ compatibility: 无外部依赖;opencode 接线需项目存在或可创建 opencode.json。
7
+ metadata:
8
+ author: sdd-team
9
+ version: "1.0"
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Edit
15
+ - Glob
16
+ - Grep
17
+ ---
18
+
19
+ 你是一个 SDD 项目规则生成与维护专家。激活本技能后,你将扫描项目事实,为已部署的 Agent 生成或审查规则文件。
20
+
21
+ > **🖥️ 跨平台执行规则**
22
+ > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
23
+ > - ${SHELL_GUIDANCE}
24
+ > - **本技能不写入 SkyWalk Telemetry**(与 `opsx-knowledge` 同属辅助技能,不走 `log.cjs start/end`)。
25
+
26
+ ---
27
+
28
+ ## 技能定位
29
+
30
+ | 维度 | 内容 |
31
+ |------|------|
32
+ | 核心问题 | 各 Agent 的规则文件在哪里、格式如何、是否与项目事实一致 |
33
+ | 关键输出 | generate:按 Agent 落位的 5 主题规则文件;review:更新建议表 |
34
+ | 操作类型 | generate 写入新规则;review 默认只读,确认后才写入 |
35
+
36
+ ---
37
+
38
+ ## 启动流程
39
+
40
+ ### 1. 检测已部署 Agent 与运行模式
41
+
42
+ 扫描以下目录,记录存在的 Agent(`--agent <id>` 可过滤为单个):
43
+
44
+ | Agent id | 检测路径 |
45
+ |----------|----------|
46
+ | cursor | `.cursor/` |
47
+ | claude | `.claude/` |
48
+ | codebuddy | `.codebuddy/` |
49
+ | qoder | `.qoder/` |
50
+ | opencode | `.opencode/` |
51
+ | kunlunzhima | `.kunlunzhima/` |
52
+ | workbuddy | `.workbuddy/` |
53
+ | codex | `.agents/` |
54
+
55
+ **模式判定**(参数优先,否则自动):
56
+ - 显式 `generate` → 生成模式
57
+ - 显式 `review` → 审查模式
58
+ - 未指定:任一已选 Agent 的规则目录已有文件 → **review**;否则 → **generate**
59
+
60
+ 规则目录与格式详见 `reference.md` 落位矩阵。**KunlunZhima 注意**:目录是 `.kunlunzhima/.rules/`(点前缀),不是 `rules/`。
61
+
62
+ ### 2. 轻量项目扫描(generate 与 review 共用,不落盘)
63
+
64
+ 借鉴 codebase-map 三视角,只读扫描:
65
+
66
+ | 视角 | 探测目标 |
67
+ |------|----------|
68
+ | STACK | `package.json` / `pom.xml` / `pyproject.toml` / `go.mod` / `Cargo.toml`;构建命令 |
69
+ | STRUCTURE | 顶层目录职责、入口文件(`bin/`、`src/`、`lib/`、`app/`) |
70
+ | CONVENTIONS | ESLint/Prettier/Ruff 配置;`test/` 目录与框架;`git log --oneline -20` 提交风格 |
71
+
72
+ 扫描结果作为 5 主题规则的正文依据,禁止编造与仓库不符的内容。
73
+
74
+ ### 3a. generate 模式
75
+
76
+ 对 Step 1 检测到的每个 Agent:
77
+
78
+ 1. 读取 `reference.md` 中该 Agent 的 `rulesDir` / `rulesFormat` / `rulesWiring`
79
+ 2. 按 5 主题(architecture / coding-style / testing / database-safety / git-commit)生成内容
80
+ 3. 按格式模板写入规则文件(见 `reference.md`)
81
+ 4. **已有同名文件 → 跳过**,提示用户改用 review 模式
82
+ 5. **接线**(仅 wiring ≠ none 的 Agent):
83
+ - `opencode-config`:保守合并 `opencode.json` 的 `instructions` 数组(只增不删);优先指向已有 `.claude/rules/*.md`
84
+ - `agents-md`:在 `AGENTS.md` 用 `<!-- kld-sdd-rules:start/end -->` marker 追加/替换规则章节
85
+ - `context-file`:在 WorkBuddy 上下文文件加一行规则目录索引(见 reference.md)
86
+
87
+ ### 3b. review 模式
88
+
89
+ 1. 读取各 Agent 现有规则文件
90
+ 2. 与 Step 2 扫描事实对比,输出建议表:
91
+
92
+ | 文件 | 主题 | 建议类型 | 依据 |
93
+ |------|------|----------|------|
94
+ | (路径) | architecture 等 | 新增 / 修订 / 过期 | 具体扫描证据 |
95
+
96
+ 3. 使用 **AskUserQuestion** 让用户确认要应用的项
97
+ 4. **未经确认不写文件**
98
+
99
+ ### 4. 输出报告
100
+
101
+ ```markdown
102
+ ## opsx-rules 执行报告
103
+
104
+ | Agent | 模式 | 写入/建议文件数 | 接线 |
105
+ |-------|------|----------------|------|
106
+ | ... | generate/review | N | 无/opencode.json/AGENTS.md |
107
+
108
+ ### 详情
109
+ - (列出路径与操作摘要)
110
+
111
+ ### 后续
112
+ - 规则内容可手工微调;再次变更后运行 `/opsx-rules review`
113
+ - OpenCode 用户:确认 `opencode.json` instructions 已包含规则路径
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Guardrails
119
+
120
+ - **review 模式未经用户确认不写文件**
121
+ - **generate 模式不覆盖已有同名规则文件**(存在即跳过 + 提示 review)
122
+ - **opencode.json 合并只增不删**;写前提示用户备份已有配置
123
+ - **AGENTS.md 追加用 managed marker**,存在 marker 则整块替换(幂等)
124
+ - **规则内容来自扫描证据**,禁止编造项目不存在的框架或命令
125
+
126
+ ---
127
+
128
+ ## 渐进披露
129
+
130
+ - **Read `reference.md`** — 落位矩阵、格式模板、5 主题骨架、接线示例
131
+ - **Read `checklist.md`** — generate/review 前后检查项
@@ -0,0 +1,27 @@
1
+ # opsx-rules 检查清单
2
+
3
+ ## generate 前
4
+
5
+ - [ ] 工作目录为项目根
6
+ - [ ] 已检测存在的 Agent 目录
7
+ - [ ] 已完成 Step 2 轻量扫描(STACK / STRUCTURE / CONVENTIONS)
8
+ - [ ] 目标 Agent 规则目录无同名文件(有则改 review)
9
+
10
+ ## generate 写后
11
+
12
+ - [ ] 5 主题文件均已写入(或按 Agent 格式合并)
13
+ - [ ] frontmatter 符合 reference.md 模板
14
+ - [ ] KunlunZhima 路径为 `.kunlunzhima/.rules/` 而非 `rules/`
15
+ - [ ] opencode.json / AGENTS.md 接线已完成(若 wiring 非 none)
16
+ - [ ] 未覆盖用户已有非受管文件
17
+
18
+ ## review 前
19
+
20
+ - [ ] 已读取现有规则文件
21
+ - [ ] 已完成 Step 2 扫描
22
+ - [ ] 建议表已输出(文件 / 主题 / 类型 / 依据)
23
+
24
+ ## review 写后
25
+
26
+ - [ ] 用户已通过 AskUserQuestion 确认
27
+ - [ ] 仅写入确认项
@@ -0,0 +1,124 @@
1
+ # opsx-rules 参考 — 落位矩阵与格式模板
2
+
3
+ > **权威源说明**:本文件是 skill **运行时**的落位矩阵真相源(部署到目标项目后无法 `require` kld-sdd 的 `lib/`)。`lib/tool-profiles.js` 中的 `rulesDir` / `rulesFormat` / `rulesWiring` 为 **init 契约与测试断言**;变更时须与本表同步,以本表为准写入规则文件。
4
+
5
+ ## 落位矩阵
6
+
7
+ | Agent | rulesDir | 格式 | frontmatter | 原生加载 | 接线 |
8
+ |-------|----------|------|-------------|----------|------|
9
+ | cursor | `.cursor/rules/` | `.mdc` | description / globs / alwaysApply | ✅ | 无 |
10
+ | claude | `.claude/rules/` | `.md` | 可选 paths(glob 列表) | ✅ | 无 |
11
+ | codebuddy | `.codebuddy/rules/` | `.md` | 无 | ✅ | 无 |
12
+ | qoder | `.qoder/rules/` | `.md` | 可选 trigger | ✅ | 无 |
13
+ | kunlunzhima | **`.kunlunzhima/.rules/`** | `.mdc` | description / alwaysApply / enabled / updatedAt / provider | ✅ | 无 |
14
+ | opencode | 无独立目录 | `.md` | 无 | ❌ | `opencode.json` instructions |
15
+ | codex | 无独立目录 | — | — | ✅(读 AGENTS.md) | AGENTS.md managed marker |
16
+ | workbuddy | `.workbuddy/rules/` | `.md` | 无 | ⚠️ 待验证 | 上下文文件索引行兜底 |
17
+
18
+ > **KunlunZhima 证据**:样例目录 `.kunlunzhima/.rules/*.mdc`,frontmatter 含 IDE 管理字段 `enabled`、`updatedAt`、`provider`(无 `globs`)。
19
+
20
+ ## 格式模板
21
+
22
+ ### mdc(Cursor)
23
+
24
+ ```markdown
25
+ ---
26
+ description: <一句话描述>
27
+ globs:
28
+ alwaysApply: true
29
+ ---
30
+
31
+ <正文>
32
+ ```
33
+
34
+ ### mdc-kunlun(KunlunZhima)
35
+
36
+ ```markdown
37
+ ---
38
+ description: <一句话描述>
39
+ alwaysApply: true
40
+ enabled: true
41
+ updatedAt: <ISO8601 生成时间>
42
+ provider:
43
+ ---
44
+
45
+ <正文>
46
+ ```
47
+
48
+ ### md + paths(Claude Code,可选按路径触发)
49
+
50
+ ```markdown
51
+ ---
52
+ paths:
53
+ - "src/**/*.ts"
54
+ ---
55
+
56
+ <正文>
57
+ ```
58
+
59
+ 无 paths 时 Claude 会话启动即加载。
60
+
61
+ ### md + trigger(Qoder,可选)
62
+
63
+ ```markdown
64
+ ---
65
+ trigger: always_on
66
+ ---
67
+
68
+ <正文>
69
+ ```
70
+
71
+ ### 纯 md(CodeBuddy / WorkBuddy)
72
+
73
+ ```markdown
74
+ <正文>
75
+ ```
76
+
77
+ ## 5 主题内容骨架
78
+
79
+ | 主题 | 文件名 | 扫描依据 | 生成要点 |
80
+ |------|--------|----------|----------|
81
+ | 架构规范 | `architecture` | 目录分层、模块边界、入口 | 分层约定、禁止循环依赖、新代码落位 |
82
+ | 编码规范 | `coding-style` | 语言、lint、缩进 | 命名、缩进、注释语言、CommonJS/ESM |
83
+ | 测试约定 | `testing` | test 目录、框架 | 测试命令、命名、TDD 期望 |
84
+ | 数据安全 | `database-safety` | ORM/迁移目录 | 无 DB 时降级为「禁止危险文件操作/敏感数据提交」 |
85
+ | Git 提交 | `git-commit` | git log 风格、CI | 提交前确认、message 风格、禁止 force push |
86
+
87
+ ## OpenCode 接线
88
+
89
+ 优先复用已有 `.claude/rules/`:
90
+
91
+ ```json
92
+ {
93
+ "$schema": "https://opencode.ai/config.json",
94
+ "instructions": [".claude/rules/*.md"]
95
+ }
96
+ ```
97
+
98
+ 无 Claude 规则时,写入 `.opencode/rules/*.md` 并 instructions 指向该路径。合并:已有 `instructions` 数组去重追加,其他键不动。
99
+
100
+ ## Codex / AGENTS.md 接线
101
+
102
+ ```markdown
103
+ <!-- kld-sdd-rules:start -->
104
+ ## 项目规则
105
+
106
+ ### 架构
107
+ ...
108
+
109
+ ### 编码
110
+ ...
111
+ <!-- kld-sdd-rules:end -->
112
+ ```
113
+
114
+ 存在 marker 则整块替换,幂等。
115
+
116
+ ## WorkBuddy 兜底
117
+
118
+ 写入 `.workbuddy/rules/*.md`,并在项目上下文文件(若存在)追加:
119
+
120
+ ```markdown
121
+ 项目规则见 `.workbuddy/rules/` 目录。
122
+ ```
123
+
124
+ 验证:运行 CodeBuddy `/memory` 或查官方 docs。
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: opsx-spec
3
3
  description: "技术契约文档技能 - 为每个能力创建 spec.md,定义业务场景与技术规范"
4
4
  argument-hint: "[change-name] [上下文文件...]"
@@ -26,16 +26,14 @@ allowed-tools:
26
26
  > 即使用户提供了代码作为上下文,也只用于分析现有实现,**不执行任何代码操作**。
27
27
  > 代码实现将在 `/opsx-apply` 阶段进行。
28
28
  > **完成本阶段后,绝对禁止自动继续执行 design/task 等后续阶段。**
29
-
29
+ > 阶段边界自检见 `./checklist.md`「阶段边界⛔」。
30
30
 
31
31
  > **🖥️ 跨平台执行规则**
32
32
  > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
33
33
  > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
34
- > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
34
+ > - ${SHELL_GUIDANCE}
35
35
  > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
36
- > **📊 Telemetry(必做,不得跳过)**
37
- > - 阶段开始:`node skywalk-sdd/log.cjs start --command=spec --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
38
- > - 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=spec --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
36
+ > **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
39
37
 
40
38
  ---
41
39
 
@@ -48,7 +46,7 @@ allowed-tools:
48
46
  | 上游依赖 | proposal.md(能力列表) |
49
47
  | 下游依赖 | design.md → tasks.md |
50
48
 
51
- **【文件结构】**:每个 capability 生成一个独立的 spec 文件:
49
+ **【文件结构】**(Full 模式,默认):每个 capability 生成一个独立的 spec 文件:
52
50
  ```
53
51
  openspec/changes/<name>/
54
52
  ├── proposal.md
@@ -62,10 +60,27 @@ openspec/changes/<name>/
62
60
  └── tasks.md
63
61
  ```
64
62
 
63
+ **【文件结构】**(Simple 模式,proposal.md frontmatter `mode: simple`):文档落变更根目录,不创建 specs/ 子目录:
64
+ ```
65
+ openspec/changes/<name>/
66
+ ├── proposal.md
67
+ ├── spec.md # 单一 spec 文件
68
+ ├── design.md
69
+ └── tasks.md
70
+ ```
71
+
65
72
  ---
66
73
 
67
74
  ## 启动流程
68
75
 
76
+ ### 0. 【S1 模式检测】读取 proposal.md mode
77
+
78
+ 读取当前变更的 `proposal.md` frontmatter,提取 `mode` 字段:
79
+ - `mode: simple` → Simple 模式(文档落变更根目录)
80
+ - `mode: full` 或未设置 → Full 模式(默认,文档落 specs/<capability>/)
81
+
82
+ Simple 模式下跳过 Capability 选择,直接在变更根目录创建 `spec.md`。
83
+
69
84
  ### 1. 【交互引导】确认变更名称
70
85
 
71
86
  若未提供,列出当前所有变更供用户选择:
@@ -88,15 +103,9 @@ openspec list
88
103
 
89
104
  ### 3. 【上下文加载】识别并读取用户提供的文件
90
105
 
91
- **自动识别上下文文件**:
92
- 若用户在命令中指定了文件路径,或在对话中附加/引用了文件,**必须自动读取这些文件**。
106
+ **自动识别上下文文件**:若用户在命令中指定了文件路径,或在对话中附加/引用了文件,**必须自动读取这些文件**。
93
107
 
94
- **上下文类型与用途**:
95
- | 上下文类型 | 用途 | 如何融入 spec |
96
- |------------|------|--------------|
97
- | 需求文档 | 提取验收标准、用户故事 | 转化为需求项和场景 |
98
- | 代码文件 | 了解现有实现约束 | 纳入技术契约和约束条件 |
99
- | API 文档 | 接口规范参考 | 对齐数据契约和接口格式 |
108
+ > 上下文类型(需求文档 / 代码文件 / API 文档)与用途见 `./reference.md`「§3 上下文类型与用途」。
100
109
 
101
110
  **【可选】业务知识库检索**:
102
111
  术语含义不清且可能影响 spec 准确性时,可调用 **opsx-knowledge** skill。
@@ -134,40 +143,19 @@ openspec list
134
143
  - 需求项使用 `####`(4个#)
135
144
  - 场景使用 `#####`(5个#)
136
145
 
137
- ### 7. 质量红线自检
138
-
139
- 写入文档前,逐项确认:
140
- - [ ] 文档结构完全符合 `openspec-templates/spec.md` 模板
141
- - [ ] 需求项格式正确(`#### 需求项:`,4个#)
142
- - [ ] 场景格式正确(`##### 场景:`,5个#)
143
- - [ ] 每个需求项都有验收标准
144
- - [ ] 技术契约章节完整(数据模型、接口契约)
145
- - [ ] 文档末尾包含质量红线检查清单
146
- - [ ] 100% 覆盖 proposal.md 中该 Capability 的描述
146
+ ### 6.5 【Node 版本约束来源校验】
147
147
 
148
- **如有任意一项未满足,重新生成对应章节,直至全部通过。**
148
+ 若 spec.md 中声明了 Node 版本约束(如 `>=14`、`>=18` 等),必须在该需求项或 proposal.md 中**声明来源**:
149
149
 
150
- **【必须输出】质量自检报告**:
150
+ - 来源可为:`package.json` 的 `engines.node`、官方运行时要求、上游框架最低版本等。
151
+ - 若 proposal.md 未声明来源且 spec.md 新增了 Node 版本约束 → 提示用户确认:「spec.md 中 Node 版本约束 `<version>` 未在 proposal.md 声明来源,请确认依据(package.json/运行时/框架要求),避免版本约束无追溯。」
152
+ - 用户确认后在 spec.md 需求项备注来源,或回补 proposal.md 的约束条件章节。
151
153
 
152
- 自检完成后,**必须**向用户展示结构化的自检报告:
154
+ > 目的:避免 spec 凭空写入 Node 版本约束而无上下游依据,导致契约不可追溯。
153
155
 
154
- > "### 质量自检结果
155
- >
156
- > | 检查项 | 状态 | 说明 |
157
- > |--------|------|------|
158
- > | 文档结构符合模板 | ✅/❌ | |
159
- > | 需求项格式正确(4个#) | ✅/❌ | 共 N 个需求项 |
160
- > | 场景格式正确(5个#) | ✅/❌ | 共 M 个场景 |
161
- > | 每个需求项有验收标准 | ✅/❌ | |
162
- > | 技术契约章节完整 | ✅/❌ | |
163
- > | 质量红线检查清单 | ✅/❌ | |
164
- > | 覆盖 proposal.md 描述 | ✅/❌ | |
165
- > | 使用「必须」强制要求 | ✅/⚠️ | |
166
- > | 技术选型包含版本 | ✅/⚠️ | |
167
- >
168
- > **结论**:全部通过 ✅ / 存在问题需修复 ❌"
156
+ ### 7. 质量红线自检
169
157
 
170
- **未通过项处理**:若有 ❌ 项,自动修复后重新输出报告,直至全部 ✅。
158
+ > 写入文档前逐项确认,完整 7 项自检清单见 `./checklist.md`「§7 质量红线自检」。自检完成后**必须**输出结构化自检报告(模板见 `./reference.md`「§7 质量自检报告模板」),未通过项自动修复后重新输出,直至全部 ✅。
171
159
 
172
160
  ### 8. 确认文档并输出结果
173
161
 
@@ -190,10 +178,18 @@ openspec list
190
178
 
191
179
  ## Guardrails
192
180
 
193
- - **必须以 `openspec-templates/spec.md` 为模板基准**
194
- - spec.md 聚焦【What】,不写 How(留给 design.md)
195
- - **需求项格式必须正确**:`####` 需求项、`#####` 场景
196
- - 每个需求项必须有清晰的验收标准
197
- - 技术契约必须可执行、无歧义
198
- - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作
199
- - **⛔ 单阶段原则:完成 spec.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx-design`,**绝对禁止自动执行 design/task 等后续阶段**。每个阶段必须由用户主动触发。
181
+ > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
182
+
183
+ - **必须以 `openspec-templates/spec.md` 为模板基准**。
184
+ - spec.md 聚焦【What】,不写 How(留给 design.md)。
185
+ - **需求项格式必须正确**:`####` 需求项、`#####` 场景;每个需求项必须有清晰的验收标准。
186
+ - 技术契约必须可执行、无歧义。
187
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作。
188
+ - **⛔ 单阶段原则**:完成 spec.md 后必须立即停止。仅提示用户下一步可运行 `/opsx-design`,绝对禁止自动执行 design/task 等后续阶段。每个阶段必须由用户主动触发。
189
+
190
+ ---
191
+
192
+ ## 渐进披露
193
+
194
+ - Read `checklist.md` 仅在执行 spec 需要校验时 — 含阶段边界⛔(Spec 阶段约束)、§7 质量红线自检(7 项)、Guardrails ⛔ 强制项勾选表。
195
+ - Read `reference.md` 仅在需要参考详细模板时 — 含 📊 Telemetry 命令模板(start/end)、§3 上下文类型与用途表、§7 质量自检报告模板(结构化表格)。
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: opsx-spec 的阶段强制检查点与自检清单。仅在执行 spec 需要校验时读取。
3
+ ---
4
+
5
+ # opsx-spec — 检查清单(checklist)
6
+
7
+ > 执行 opsx-spec 时逐项校验。含阶段边界⛔、§7 质量红线自检、Guardrails ⛔ 强制项。
8
+ > 详细模板(telemetry 命令 / §3 上下文类型表 / §7 质量自检报告模板)见 `./reference.md`。
9
+
10
+ ---
11
+
12
+ ## 阶段边界⛔(Spec 阶段约束)
13
+
14
+ - [ ] ✅ 允许:创建/编辑 spec.md 文档、读取代码/文档作为上下文分析
15
+ - [ ] ❌ 禁止:创建/修改任何代码文件、执行代码生成、运行测试
16
+ - [ ] ⛔ 单阶段原则:完成 spec.md 后必须立即停止,等待用户主动触发下一阶段
17
+ - [ ] 即使用户提供代码作为上下文,只用于分析现有实现,不执行任何代码操作
18
+ - [ ] 代码实现将在 `/opsx-apply` 阶段进行
19
+ - [ ] ⛔ 完成本阶段后绝对禁止自动继续执行 design/task 等后续阶段
20
+
21
+ ---
22
+
23
+ ## §7 质量红线自检
24
+
25
+ 写入文档前,逐项确认:
26
+ - [ ] 文档结构完全符合 `openspec-templates/spec.md` 模板
27
+ - [ ] 需求项格式正确(`#### 需求项:`,4个#)
28
+ - [ ] 场景格式正确(`##### 场景:`,5个#)
29
+ - [ ] 每个需求项都有验收标准
30
+ - [ ] 技术契约章节完整(数据模型、接口契约)
31
+ - [ ] 文档末尾包含质量红线检查清单
32
+ - [ ] 100% 覆盖 proposal.md 中该 Capability 的描述
33
+
34
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。** 自检完成后必须输出结构化自检报告(模板见 `./reference.md`「§7 质量自检报告模板」),未通过项自动修复后重新输出。
35
+
36
+ ---
37
+
38
+ ## Guardrails ⛔ 强制项
39
+
40
+ - [ ] 必须以 `openspec-templates/spec.md` 为模板基准
41
+ - [ ] spec.md 聚焦【What】,不写 How(留给 design.md)
42
+ - [ ] **需求项格式必须正确**:`####` 需求项、`#####` 场景
43
+ - [ ] 每个需求项必须有清晰的验收标准
44
+ - [ ] 技术契约必须可执行、无歧义
45
+ - [ ] ⛔ **阶段边界**:禁止执行任何代码创建/修改操作
46
+ - [ ] ⛔ **单阶段原则**:完成 spec.md 后必须立即停止;仅提示用户下一步可运行 `/opsx-design`,绝对禁止自动执行 design/task 等后续阶段。每个阶段必须由用户主动触发。
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: opsx-spec 的详细模板:telemetry 命令、上下文类型表、质量自检报告模板。仅在需要参考详细模板时读取。
3
+ ---
4
+
5
+ # opsx-spec — 详细参考(reference)
6
+
7
+ > 本文件承载 opsx-spec 的重细节模板:telemetry 命令、§3 上下文类型表、§7 质量自检报告模板。
8
+ > SKILL.md 保留入口骨架与指针;本文件为详细模板来源。
9
+
10
+ ---
11
+
12
+ ## 📊 Telemetry 命令模板(必做,不得跳过)
13
+
14
+ > 阶段开始:`node skywalk-sdd/log.cjs start --command=spec --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
15
+ > 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=spec --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
16
+
17
+ ---
18
+
19
+ ## §3 上下文类型与用途
20
+
21
+ | 上下文类型 | 用途 | 如何融入 spec |
22
+ |------------|------|--------------|
23
+ | 需求文档 | 提取验收标准、用户故事 | 转化为需求项和场景 |
24
+ | 代码文件 | 了解现有实现约束 | 纳入技术契约和约束条件 |
25
+ | API 文档 | 接口规范参考 | 对齐数据契约和接口格式 |
26
+
27
+ ---
28
+
29
+ ## §7 质量自检报告模板
30
+
31
+ 自检完成后,**必须**向用户展示结构化的自检报告:
32
+
33
+ > "### 质量自检结果
34
+ >
35
+ > | 检查项 | 状态 | 说明 |
36
+ > |--------|------|------|
37
+ > | 文档结构符合模板 | ✅/❌ | |
38
+ > | 需求项格式正确(4个#) | ✅/❌ | 共 N 个需求项 |
39
+ > | 场景格式正确(5个#) | ✅/❌ | 共 M 个场景 |
40
+ > | 每个需求项有验收标准 | ✅/❌ | |
41
+ > | 技术契约章节完整 | ✅/❌ | |
42
+ > | 质量红线检查清单 | ✅/❌ | |
43
+ > | 覆盖 proposal.md 描述 | ✅/❌ | |
44
+ > | 使用「必须」强制要求 | ✅/⚠️ | |
45
+ > | 技术选型包含版本 | ✅/⚠️ | |
46
+ >
47
+ > **结论**:全部通过 ✅ / 存在问题需修复 ❌"
48
+
49
+ **未通过项处理**:若有 ❌ 项,自动修复后重新输出报告,直至全部 ✅。