kld-sdd 2.4.18 → 2.5.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.
Files changed (27) hide show
  1. package/lib/init.js +56 -41
  2. package/package.json +1 -1
  3. package/skywalk-sdd/index.cjs +1808 -129
  4. package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +175 -28
  5. package/templates/hooks/claude/hooks/sdd-post-tool.cjs +42 -21
  6. package/templates/openspec/proposal.md +0 -1
  7. package/templates/openspec/spec.md +2 -2
  8. package/templates/skills/kld-sdd/opsx-apply/SKILL.md +64 -355
  9. package/templates/skills/kld-sdd/opsx-apply/checklist.md +94 -0
  10. package/templates/skills/kld-sdd/opsx-apply/reference.md +403 -0
  11. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +21 -5
  12. package/templates/skills/kld-sdd/opsx-archive/checklist.md +33 -0
  13. package/templates/skills/kld-sdd/opsx-check/SKILL.md +28 -4
  14. package/templates/skills/kld-sdd/opsx-check/checklist.md +37 -0
  15. package/templates/skills/kld-sdd/opsx-design/SKILL.md +46 -50
  16. package/templates/skills/kld-sdd/opsx-design/checklist.md +46 -0
  17. package/templates/skills/kld-sdd/opsx-design/reference.md +44 -0
  18. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +51 -95
  19. package/templates/skills/kld-sdd/opsx-propose/checklist.md +44 -0
  20. package/templates/skills/kld-sdd/opsx-propose/reference.md +94 -0
  21. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +46 -50
  22. package/templates/skills/kld-sdd/opsx-spec/checklist.md +46 -0
  23. package/templates/skills/kld-sdd/opsx-spec/reference.md +49 -0
  24. package/templates/skills/kld-sdd/opsx-task/SKILL.md +42 -45
  25. package/templates/skills/kld-sdd/opsx-task/checklist.md +46 -0
  26. package/templates/skills/kld-sdd/opsx-task/reference.md +40 -0
  27. package/templates/skills/kld-sdd/opsx-test/SKILL.md +12 -0
@@ -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
34
  > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
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
+ **未通过项处理**:若有 ❌ 项,自动修复后重新输出报告,直至全部 ✅。
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: opsx-task
3
3
  description: "局部任务拆解技能 - 针对单一 Capability 创建 DAG 任务清单"
4
4
  argument-hint: "[change-name] [capability-name] [上下文文件...]"
@@ -26,23 +26,23 @@ allowed-tools:
26
26
  > tasks.md 定义的是「待执行的任务清单」,**不是立即执行代码**。
27
27
  > 请引导用户使用 `/opsx-apply` 进入实施阶段。
28
28
  > **完成本阶段后,绝对禁止自动继续执行 apply/check 等后续阶段。**
29
+ > 阶段边界自检见 `./checklist.md`「阶段边界⛔」。
29
30
 
30
31
  > **⚠️ 渐进式上下文加载原则**
31
32
  >
32
- > - 本技能针对**单一 Capability** 执行任务拆解
33
- > - **输入路径**:`changes/<name>/specs/<capability>/design.md`
34
- > - **输出路径**:`changes/<name>/specs/<capability>/tasks.md`
35
- > - **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的文档
36
-
33
+ > - 本技能针对**单一 Capability** 执行任务拆解(Simple 模式例外,见下方 S1 说明)
34
+ > - **输入路径**(Full 模式):`changes/<name>/specs/<capability>/design.md`
35
+ > - **输出路径**(Full 模式):`changes/<name>/specs/<capability>/tasks.md`
36
+ > - **输入路径**(Simple 模式):`changes/<name>/design.md`
37
+ > - **输出路径**(Simple 模式):`changes/<name>/tasks.md`
38
+ > - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的文档(Full 模式)
37
39
 
38
40
  > **🖥️ 跨平台执行规则**
39
41
  > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
40
42
  > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
41
43
  > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
42
44
  > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
43
- > **📊 Telemetry(必做,不得跳过)**
44
- > - 阶段开始:`node skywalk-sdd/log.cjs start --command=task --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
45
- > - 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=task --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
45
+ > **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
46
46
 
47
47
  ---
48
48
 
@@ -59,6 +59,18 @@ allowed-tools:
59
59
 
60
60
  ## 启动流程
61
61
 
62
+ ### 0. 【S1 模式检测】读取 proposal.md mode
63
+
64
+ 读取当前变更的 `proposal.md` frontmatter,提取 `mode` 字段:
65
+ - `mode: simple` → Simple 模式(tasks.md 落变更根目录,跳过 Capability 选择)
66
+ - `mode: full` 或未设置 → Full 模式(默认,tasks.md 落 specs/<capability>/)
67
+
68
+ ### 0a. 【S2/M6 单文件拆解策略】
69
+
70
+ Simple 模式或单文件能力域下,**不要拆成多个同文件任务**。按可独立测试的函数/单元拆分任务,每个任务对应一个可独立验证的代码单元。同文件多处改动有顺序依赖时合并为一个任务。
71
+
72
+ ## 启动流程
73
+
62
74
  ### 1. 【交互引导】确认变更名称和 Capability
63
75
 
64
76
  若未提供参数,列出已有 design.md 的 Capability 供用户选择。
@@ -120,7 +132,7 @@ allowed-tools:
120
132
 
121
133
  **若已设置**:向用户确认
122
134
  > "🧪 **当前测试策略:[test-strategy]**
123
- >
135
+ >
124
136
  > - `tdd`: 测试驱动 - 测试任务作为实现任务的前置依赖
125
137
  > - `impl-first`: 实现优先 - 先实现后测试
126
138
  > - `none`: 无测试 - 不生成测试任务
@@ -148,15 +160,7 @@ allowed-tools:
148
160
 
149
161
  ### 6. 【交互引导】确认任务拆解策略
150
162
 
151
- 向用户确认拆解维度、任务粒度、预计 DAG 层级。
152
-
153
- **根据 test-strategy 调整 DAG 生成规则:**
154
-
155
- | test-strategy | DAG 生成规则 |
156
- |---------------|---------------|
157
- | `tdd` | 每个实现任务前必须有对应的测试任务,实现任务 Depends-On 测试任务 |
158
- | `impl-first` | 实现任务在前,测试任务 Depends-On 实现任务 |
159
- | `none` | 不生成测试任务,仅编译检查 |
163
+ 向用户确认拆解维度、任务粒度、预计 DAG 层级。**根据 test-strategy 调整 DAG 生成规则**,规则表(tdd / impl-first / none 对应的 DAG 生成规则)见 `./reference.md`「§6 DAG 生成规则表」。
160
164
 
161
165
  ### 7. 创建局部 tasks.md(含 DAG 拓扑)
162
166
 
@@ -164,26 +168,11 @@ allowed-tools:
164
168
 
165
169
  **以 `openspec-templates/tasks.md` 的结构为骨架**,填充内容。
166
170
 
167
- **必须包含**:
168
- 1. **任务执行拓扑图(DAG)** - 层级关系清晰
169
- 2. **原子任务清单** - 每个任务包含:
170
- - `[TASK-XXX-01]` 唯一标识
171
- - `类型`: 数据层 / 接口层 / UI层 / 测试
172
- - `依赖`: 前置依赖(无 或 TASK-ID 列表)
173
- - `状态`: [ ] 未完成
174
- - 任务描述、输入、输出、实现步骤、验收标准
171
+ > **必须包含**:任务执行拓扑图(DAG)+ 原子任务清单。任务结构字段(TASK-ID / 类型 / 依赖 / 状态 / 描述等)见 `./reference.md`「§7 任务结构」。
175
172
 
176
173
  ### 8. 质量红线自检
177
174
 
178
- - [ ] 文档结构完全符合 `openspec-templates/tasks.md` 模板
179
- - [ ] **拓扑图已绘制**:层级关系清晰
180
- - [ ] **依赖字段已填写**:每个任务的依赖已明确
181
- - [ ] **无循环依赖**:拓扑中不存在环
182
- - [ ] 每个任务颗粒度 ≤ 5 分钟
183
- - [ ] 100% 覆盖 design.md 定义
184
- - [ ] 每个任务都有验收标准
185
-
186
- **如有任意一项未满足,重新生成对应章节,直至全部通过。**
175
+ > 逐项确认,完整 7 项自检清单(结构符合模板 / 拓扑图已绘制 / 依赖字段已填写 / 无循环依赖 / 颗粒度 ≤5 分钟 / 100% 覆盖 design / 每任务有验收标准)见 `./checklist.md`「§8 质量红线自检」。如有任意一项未满足,重新生成对应章节,直至全部通过。
187
176
 
188
177
  ### 9. 确认任务并输出
189
178
 
@@ -200,17 +189,25 @@ allowed-tools:
200
189
 
201
190
  最终输出:
202
191
  - 文档路径
203
- - 下一步提示:"运行 `/opsx-check <name>` 执行质量检查,或 `/opsx-apply <name> <capability>` 开始实施"
192
+ - 下一步提示:"下一步:运行 `/opsx-check <name>` 完成质量检查,通过后再 `/opsx-apply <name> <capability>` 开始实施"
204
193
 
205
194
  ---
206
195
 
207
196
  ## Guardrails
208
197
 
209
- - **必须以 `openspec-templates/tasks.md` 为模板基准**
210
- - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → spec.md → design.md 顺序
211
- - **⛔ 隔离红线**:绝对禁止读取同级其他 Capability 的文档
212
- - **⛔ DAG 必须完整**:每个任务必须有依赖字段
213
- - **⛔ 无循环依赖**:DAG 中不允许存在环
214
- - 任务颗粒度宁可过细也不要过粗
215
- - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作
216
- - **⛔ 单阶段原则:完成 tasks.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx-check` 或 `/opsx-apply`,**绝对禁止自动执行 apply/check 等后续阶段**。每个阶段必须由用户主动触发。
198
+ > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
199
+
200
+ - **必须以 `openspec-templates/tasks.md` 为模板基准**。
201
+ - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → spec.md → design.md 顺序。
202
+ - **⛔ 隔离红线**:绝对禁止读取同级其他 Capability 的文档。
203
+ - **⛔ DAG 必须完整**:每个任务必须有依赖字段;**⛔ 无循环依赖**:DAG 中不允许存在环。
204
+ - 任务颗粒度宁可过细也不要过粗。
205
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作。
206
+ - **⛔ 单阶段原则**:完成 tasks.md 后必须立即停止。仅提示用户下一步 **check 优先**:先运行 `/opsx-check` 通过质量检查,再 `/opsx-apply`(apply 须在 check 通过后);绝对禁止自动执行 apply/check 等后续阶段。每个阶段必须由用户主动触发。
207
+
208
+ ---
209
+
210
+ ## 渐进披露
211
+
212
+ - Read `checklist.md` 仅在执行 task 需要校验时 — 含阶段边界⛔(Task 阶段约束)、§8 质量红线自检(7 项)、Guardrails ⛔ 强制项勾选表。
213
+ - Read `reference.md` 仅在需要参考详细模板时 — 含 📊 Telemetry 命令模板(start/end)、§6 DAG 生成规则表(tdd/impl-first/none)、§7 任务结构(TASK-ID/类型/依赖/状态/描述等字段)。
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: opsx-task 的阶段强制检查点与自检清单。仅在执行 task 需要校验时读取。
3
+ ---
4
+
5
+ # opsx-task — 检查清单(checklist)
6
+
7
+ > 执行 opsx-task 时逐项校验。含阶段边界⛔、§8 质量红线自检、Guardrails ⛔ 强制项。
8
+ > 详细模板(telemetry 命令 / §6 DAG 生成规则表 / §7 任务结构)见 `./reference.md`。
9
+
10
+ ---
11
+
12
+ ## 阶段边界⛔(Task 阶段约束)
13
+
14
+ - [ ] ✅ 允许:创建/编辑 tasks.md 文档、读取代码作为任务分析参考
15
+ - [ ] ❌ 禁止:创建/修改任何代码文件、执行代码生成、运行测试
16
+ - [ ] ⛔ 单阶段原则:完成 tasks.md 后必须立即停止,等待用户主动触发下一阶段
17
+ - [ ] tasks.md 定义的是「待执行的任务清单」,不是立即执行代码
18
+ - [ ] 引导用户使用 `/opsx-apply` 进入实施阶段
19
+ - [ ] ⛔ 完成本阶段后绝对禁止自动继续执行 apply/check 等后续阶段
20
+
21
+ ---
22
+
23
+ ## §8 质量红线自检
24
+
25
+ - [ ] 文档结构完全符合 `openspec-templates/tasks.md` 模板
26
+ - [ ] **拓扑图已绘制**:层级关系清晰
27
+ - [ ] **依赖字段已填写**:每个任务的依赖已明确
28
+ - [ ] **无循环依赖**:拓扑中不存在环
29
+ - [ ] 每个任务颗粒度 ≤ 5 分钟
30
+ - [ ] 100% 覆盖 design.md 定义
31
+ - [ ] 每个任务都有验收标准
32
+
33
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
34
+
35
+ ---
36
+
37
+ ## Guardrails ⛔ 强制项
38
+
39
+ - [ ] 必须以 `openspec-templates/tasks.md` 为模板基准
40
+ - [ ] ⛔ **渐进式加载**:严格按 overview.md → proposal.md → spec.md → design.md 顺序
41
+ - [ ] ⛔ **隔离红线**:绝对禁止读取同级其他 Capability 的文档
42
+ - [ ] ⛔ **DAG 必须完整**:每个任务必须有依赖字段
43
+ - [ ] ⛔ **无循环依赖**:DAG 中不允许存在环
44
+ - [ ] 任务颗粒度宁可过细也不要过粗
45
+ - [ ] ⛔ **阶段边界**:禁止执行任何代码创建/修改操作
46
+ - [ ] ⛔ **单阶段原则**:完成 tasks.md 后必须立即停止;仅提示用户下一步 **check 优先**:先运行 `/opsx-check` 通过质量检查,再 `/opsx-apply`(apply 须在 check 通过后);绝对禁止自动执行 apply/check 等后续阶段。每个阶段必须由用户主动触发。
@@ -0,0 +1,40 @@
1
+ ---
2
+ description: opsx-task 的详细模板:telemetry 命令、DAG 生成规则表、任务结构。仅在需要参考详细模板时读取。
3
+ ---
4
+
5
+ # opsx-task — 详细参考(reference)
6
+
7
+ > 本文件承载 opsx-task 的重细节模板:telemetry 命令、§6 DAG 生成规则表、§7 任务结构。
8
+ > SKILL.md 保留入口骨架与指针;本文件为详细模板来源。
9
+
10
+ ---
11
+
12
+ ## 📊 Telemetry 命令模板(必做,不得跳过)
13
+
14
+ > 阶段开始:`node skywalk-sdd/log.cjs start --command=task --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
15
+ > 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=task --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
16
+
17
+ ---
18
+
19
+ ## §6 DAG 生成规则表
20
+
21
+ **根据 test-strategy 调整 DAG 生成规则:**
22
+
23
+ | test-strategy | DAG 生成规则 |
24
+ |---------------|---------------|
25
+ | `tdd` | 每个实现任务前必须有对应的测试任务,实现任务 Depends-On 测试任务 |
26
+ | `impl-first` | 实现任务在前,测试任务 Depends-On 实现任务 |
27
+ | `none` | 不生成测试任务,仅编译检查 |
28
+
29
+ ---
30
+
31
+ ## §7 任务结构
32
+
33
+ **必须包含**:
34
+ 1. **任务执行拓扑图(DAG)** - 层级关系清晰
35
+ 2. **原子任务清单** - 每个任务包含:
36
+ - `[TASK-XXX-01]` 唯一标识
37
+ - `类型`: 数据层 / 接口层 / UI层 / 测试
38
+ - `依赖`: 前置依赖(无 或 TASK-ID 列表)
39
+ - `状态`: [ ] 未完成
40
+ - 任务描述、输入、输出、实现步骤、验收标准
@@ -101,6 +101,18 @@ allowed-tools:
101
101
  | JUnit (Maven) | `mvn test` |
102
102
  | JUnit (Gradle) | `./gradlew test` |
103
103
 
104
+ ### 4a. 【M3 Telemetry】记录测试结果
105
+
106
+ 测试执行完成后,在 stage_end 之前记录 `test_result` 事件:
107
+
108
+ ```bash
109
+ node skywalk-sdd/log.cjs record --type=test_result --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="[passed]/[total] passed" --details-json="{\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":<passed>,\"failed\":<failed>,\"skipped\":<skipped>,\"coverage\":<coverage>,\"duration_ms\":<duration_ms>}}"
110
+ ```
111
+
112
+ 此事件供 report 的 `test_pass_summary` 采集(M3),确保报告能显示真实测试通过率。
113
+
114
+ > **⚠️ P1-4 coverage 不得为 null**:`test_results.coverage` 必须填实测覆盖率数值(跑了 `--coverage` 就填数值,如 `86.5`);未跑 `--coverage` 时填字符串 `"not-run"` 并在 summary 说明原因。**禁止填 `null`**。若 `proposal.md` 含"覆盖率 ≥ X%"验收标准,强制使用 `--coverage` 运行测试。
115
+
104
116
  ### 5. 输出结构化测试报告
105
117
 
106
118
  > "📊 **测试执行报告**