@hunterzheng/kld-sdd 2.4.19

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 (52) hide show
  1. package/README.md +275 -0
  2. package/bin/kld-sdd-init.js +24 -0
  3. package/index.js +13 -0
  4. package/lib/init.js +1124 -0
  5. package/lib/skills-bundle.js +30 -0
  6. package/package.json +48 -0
  7. package/skywalk-sdd/apply-worktree-finish.cjs +551 -0
  8. package/skywalk-sdd/index.cjs +2991 -0
  9. package/templates/ci/github-actions-sdd.yml +67 -0
  10. package/templates/ci/gitlab-ci-sdd.yml +44 -0
  11. package/templates/git-hooks/pre-commit-sdd-check.cjs +155 -0
  12. package/templates/git-hooks/pre-push-sdd-check.cjs +56 -0
  13. package/templates/hooks/claude/hooks/sdd-apply-gate.cjs +173 -0
  14. package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +315 -0
  15. package/templates/hooks/claude/hooks/sdd-post-tool.cjs +146 -0
  16. package/templates/hooks/claude/hooks/sdd-pre-tool.cjs +41 -0
  17. package/templates/hooks/claude/hooks/sdd-prompt.cjs +88 -0
  18. package/templates/hooks/claude/hooks/sdd-skill-apply-gate.cjs +268 -0
  19. package/templates/hooks/claude/hooks/sdd-stop.cjs +108 -0
  20. package/templates/hooks/claude/settings.json +72 -0
  21. package/templates/openspec/design.md +290 -0
  22. package/templates/openspec/overview.md +143 -0
  23. package/templates/openspec/proposal.md +108 -0
  24. package/templates/openspec/spec.md +185 -0
  25. package/templates/openspec/tasks.md +287 -0
  26. package/templates/skills/kld-sdd/opsx-apply/SKILL.md +251 -0
  27. package/templates/skills/kld-sdd/opsx-apply/checklist.md +94 -0
  28. package/templates/skills/kld-sdd/opsx-apply/implementer-prompt.md +129 -0
  29. package/templates/skills/kld-sdd/opsx-apply/reference.md +335 -0
  30. package/templates/skills/kld-sdd/opsx-apply/worktree-setup.md +104 -0
  31. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +162 -0
  32. package/templates/skills/kld-sdd/opsx-archive/checklist.md +33 -0
  33. package/templates/skills/kld-sdd/opsx-check/SKILL.md +197 -0
  34. package/templates/skills/kld-sdd/opsx-check/checklist.md +35 -0
  35. package/templates/skills/kld-sdd/opsx-design/SKILL.md +166 -0
  36. package/templates/skills/kld-sdd/opsx-design/checklist.md +46 -0
  37. package/templates/skills/kld-sdd/opsx-design/reference.md +44 -0
  38. package/templates/skills/kld-sdd/opsx-explore/SKILL.md +104 -0
  39. package/templates/skills/kld-sdd/opsx-knowledge/SKILL.md +130 -0
  40. package/templates/skills/kld-sdd/opsx-knowledge/references/modules.md +26 -0
  41. package/templates/skills/kld-sdd/opsx-knowledge/scripts/config.json +39 -0
  42. package/templates/skills/kld-sdd/opsx-knowledge/scripts/retrieve.cjs +199 -0
  43. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +201 -0
  44. package/templates/skills/kld-sdd/opsx-propose/checklist.md +44 -0
  45. package/templates/skills/kld-sdd/opsx-propose/reference.md +94 -0
  46. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +168 -0
  47. package/templates/skills/kld-sdd/opsx-spec/checklist.md +46 -0
  48. package/templates/skills/kld-sdd/opsx-spec/reference.md +49 -0
  49. package/templates/skills/kld-sdd/opsx-task/SKILL.md +199 -0
  50. package/templates/skills/kld-sdd/opsx-task/checklist.md +46 -0
  51. package/templates/skills/kld-sdd/opsx-task/reference.md +40 -0
  52. package/templates/skills/kld-sdd/opsx-test/SKILL.md +143 -0
@@ -0,0 +1,287 @@
1
+ # 实施任务拆解 - [Capability 名称]
2
+
3
+ > **定位**:单一 Capability 的 AI 编码引擎执行单元
4
+ >
5
+ > **⚠️ 边界声明**:本任务清单仅服务于当前 Capability,严禁跨模块任务。
6
+ >
7
+ > **【质量红线】颗粒度必须达到"AI能在5分钟内实现";且拆解的任务和验证逻辑必须 100% 覆盖 spec 和 design
8
+
9
+ ---
10
+
11
+ ## 1. 任务总览
12
+
13
+ ### 1.1 关联文档
14
+
15
+ | 文档 | 路径 | 说明 |
16
+ |-----|------|------|
17
+ | 全局契约 | `openspec/specs/overview.md` | 全局约束基线 |
18
+ | 业务意图 | `proposal.md` | 变更背景 |
19
+ | 技术契约 | `specs/[capability]/spec.md` | 当前能力规格 |
20
+ | 技术方案 | `specs/[capability]/design.md` | 当前能力设计 |
21
+
22
+ ### 1.2 实现范围
23
+
24
+ <!-- 本次编码要覆盖的功能范围 -->
25
+
26
+ ### 1.3 技术栈
27
+
28
+ - 语言:
29
+ - 框架:
30
+ - 依赖:
31
+
32
+ ---
33
+
34
+ ## 2. 任务执行拓扑图
35
+
36
+ > **⚠️ 依赖管理**:任务必须按层级执行,每层任务可并行,跨层必须等待前置完成
37
+
38
+ ### 2.0 测试策略
39
+
40
+ <!-- 该字段从 proposal.md frontmatter 中读取,由 /opsx:propose 阶段用户选择 -->
41
+
42
+ **当前测试策略**:`[测试驱动 | 实现优先 | 无测试]`
43
+
44
+ | 策略 | 说明 | 拓扑结构 |
45
+ |--------|------|------------|
46
+ | 测试驱动 | 测试先行 | 测试骨架 → 实现代码 → 测试验证 |
47
+ | 实现优先 | 代码先行 | 实现代码 → 测试验证 |
48
+ | 无测试 | 仅编译检查 | 仅实现代码 |
49
+
50
+ **测试驱动模式拓扑示例**:
51
+ ```
52
+ 层级 1: [TASK-01-TEST] 编写 UserService 单元测试(骨架)
53
+ 层级 2: [TASK-02-IMPL] 实现 UserService(依赖: TASK-01-TEST)
54
+ 层级 3: [TASK-03-VERIFY] 运行测试验证(依赖: TASK-02-IMPL)
55
+ ```
56
+
57
+ **实现优先模式拓扑示例**:
58
+ ```
59
+ 层级 1: [TASK-01-IMPL] 实现 UserService
60
+ 层级 2: [TASK-02-TEST] 编写并运行测试(依赖: TASK-01-IMPL)
61
+ ```
62
+
63
+ ### 2.1 拓扑图
64
+
65
+ ```
66
+ ┌─────────────────────────────────────────────────────────────┐
67
+ │ 层级 1 (无依赖,可并行) │
68
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
69
+ │ │ TASK-XXX-01 │ │ TASK-XXX-02 │ │ TASK-XXX-03 │ │
70
+ │ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
71
+ │ │ │ │
72
+ │ v v │
73
+ │ ┌─────────────────────────────────────────────────────────┐ │
74
+ │ │ 层级 2 (依赖层级 1) │ │
75
+ │ │ ┌──────────────┐ ┌──────────────┐ │ │
76
+ │ │ │ TASK-XXX-04 │ │ TASK-XXX-05 │ │ │
77
+ │ │ │ 依赖: 01 │ │ 依赖: 02 │ │ │
78
+ │ │ └──────┬───────┘ └──────┬───────┘ │ │
79
+ │ │ │ │ │ │
80
+ │ │ v v │ │
81
+ │ │ ┌─────────────────────────────────────────────────────┐│ │
82
+ │ │ │ 层级 3 (依赖层级 2) ││ │
83
+ │ │ │ ┌──────────────┐ ││ │
84
+ │ │ │ │ TASK-XXX-06 │ ││ │
85
+ │ │ │ │ 依赖: 04,05 │ ││ │
86
+ │ │ │ └──────────────┘ ││ │
87
+ │ │ └─────────────────────────────────────────────────────┘│ │
88
+ │ └─────────────────────────────────────────────────────────┘ │
89
+ └─────────────────────────────────────────────────────────────┘
90
+ ```
91
+
92
+ ### 2.2 层级汇总
93
+
94
+ | 层级 | 任务列表 | 可并行 | 前置依赖 |
95
+ |-----|---------|-------|--------|
96
+ | 层级 1 | TASK-XXX-01, TASK-XXX-02 | ✅ 是 | 无 |
97
+ | 层级 2 | TASK-XXX-03 | - | 层级 1 |
98
+ | 层级 3 | TASK-XXX-04 | - | 层级 2 |
99
+
100
+ ---
101
+
102
+ ## 3. 原子任务清单
103
+
104
+ <!-- 【质量红线】每个任务必须能在5分钟内由AI实现 -->
105
+
106
+ ### 3.0 任务类型说明
107
+
108
+ | 类型 | 说明 | 适用场景 |
109
+ |------|------|----------|
110
+ | 数据层 | 实体、DTO、Mapper、数据访问 | 数据库操作相关 |
111
+ | 接口层 | Service、Controller、API | 业务逻辑和接口 |
112
+ | UI层 | 组件、页面、样式 | 前端展示相关 |
113
+ | 测试-骨架 | 测试类结构、Mock设置 | 测试驱动模式下的测试前置任务 |
114
+ | 测试-验证 | 测试用例实现、断言 | 实现后的测试验证任务 |
115
+ | 配置 | 配置文件、依赖添加 | 项目配置相关 |
116
+
117
+ ---
118
+
119
+ ### [TASK-XXX-01] 任务名称
120
+
121
+ - **类型**: 数据层 / 接口层 / UI层 / 测试
122
+ - **依赖**: 无
123
+ - **状态**: [ ] 未完成
124
+
125
+ #### 任务描述
126
+ <!-- 一句话描述本任务要做什么 -->
127
+
128
+ #### 输入
129
+ -
130
+
131
+ #### 输出
132
+ -
133
+
134
+ #### 实现步骤
135
+ 1.
136
+ 2.
137
+ 3.
138
+
139
+ #### 验收标准
140
+ - [ ] 验收标准 1
141
+ - [ ] 验收标准 2
142
+
143
+ #### 关联设计
144
+ - spec.md 章节:
145
+ - design.md 章节:
146
+
147
+ ---
148
+
149
+ ### [TASK-XXX-02] 任务名称
150
+
151
+ - **类型**: 数据层 / 接口层 / UI层 / 测试
152
+ - **依赖**: 无
153
+ - **状态**: [ ] 未完成
154
+
155
+ #### 任务描述
156
+
157
+ #### 输入
158
+
159
+ #### 输出
160
+
161
+ #### 实现步骤
162
+ 1.
163
+ 2.
164
+ 3.
165
+
166
+ #### 验收标准
167
+ - [ ]
168
+ - [ ]
169
+
170
+ #### 关联设计
171
+ - spec.md 章节:
172
+ - design.md 章节:
173
+
174
+ ---
175
+
176
+ ### [TASK-XXX-03] 任务名称
177
+
178
+ - **类型**: 数据层 / 接口层 / UI层 / 测试
179
+ - **依赖**: TASK-XXX-01, TASK-XXX-02
180
+ - **状态**: [ ] 未完成
181
+
182
+ #### 任务描述
183
+
184
+ #### 输入
185
+
186
+ #### 输出
187
+
188
+ #### 实现步骤
189
+ 1.
190
+ 2.
191
+ 3.
192
+
193
+ #### 验收标准
194
+ - [ ]
195
+ - [ ]
196
+
197
+ #### 关联设计
198
+ - spec.md 章节:
199
+ - design.md 章节:
200
+
201
+ ---
202
+
203
+ ## 4. 验证方式
204
+
205
+ ### 4.1 单元测试要求
206
+
207
+ <!-- 【质量红线】每个任务必须有对应的单元测试 -->
208
+
209
+ | 任务 ID | 测试类型 | 测试场景 | 断言内容 |
210
+ |--------|---------|---------|---------|
211
+ | TASK-XXX-01 | | | |
212
+ | TASK-XXX-02 | | | |
213
+
214
+ ### 4.2 集成测试场景
215
+
216
+ | 场景 | 前置条件 | 操作步骤 | 预期结果 |
217
+ |-----|---------|---------|---------|
218
+ | | | | |
219
+
220
+ ### 4.3 手动验证清单
221
+
222
+ - [ ] 验证项 1
223
+ - [ ] 验证项 2
224
+
225
+ ---
226
+
227
+ ## 5. 外部依赖
228
+
229
+ | 依赖项 | 类型 | 提供方 | 状态 | 备注 |
230
+ |-------|------|-------|------|------|
231
+ | | 其他能力 / 第三方 | | ✅ 就绪 / ⏳ 等待 | |
232
+
233
+ ---
234
+
235
+ ## 6. 代码规范
236
+
237
+ ### 6.1 命名规范
238
+
239
+ - 类名:
240
+ - 方法名:
241
+ - 变量名:
242
+
243
+ ### 6.2 代码风格
244
+
245
+ - 缩进:
246
+ - 注释:
247
+ - 异常处理:
248
+
249
+ ### 6.3 日志规范
250
+
251
+ - 日志级别:
252
+ - 日志格式:
253
+ - 敏感信息处理:
254
+
255
+ ---
256
+
257
+ ## 7. 交付物
258
+
259
+ ### 7.1 代码文件
260
+
261
+ | 文件路径 | 说明 | 对应任务 |
262
+ |---------|------|---------|
263
+ | | | TASK-XXX-01 |
264
+
265
+ ### 7.2 测试文件
266
+
267
+ | 文件路径 | 说明 | 对应任务 |
268
+ |---------|------|---------|
269
+ | | | TASK-XXX-01 |
270
+
271
+ ### 7.3 文档更新
272
+
273
+ - [ ] README 更新
274
+ - [ ] 接口文档更新
275
+ - [ ] 变更日志更新
276
+
277
+ ---
278
+
279
+ > **质量红线检查清单**
280
+ > - [ ] 每个任务颗粒度符合"5分钟可实现"标准
281
+ > - [ ] 任务清单 100% 覆盖 spec.md 定义
282
+ > - [ ] 任务清单 100% 覆盖 design.md 定义
283
+ > - [ ] 每个任务都有明确的验收标准
284
+ > - [ ] 每个任务都有对应的单元测试要求
285
+ > - [ ] **依赖拓扑已明确**(依赖字段已填写)
286
+ > - [ ] **任务执行拓扑图已绘制**(层级关系清晰)
287
+ > - [ ] 无循环依赖
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: opsx-apply
3
+ description: "变更实施技能 - 针对单一 Capability 按 DAG 依赖顺序实现代码"
4
+ argument-hint: "[change-name] [capability-name] [上下文文件...]"
5
+ license: MIT
6
+ compatibility: Requires openspec CLI.
7
+ metadata:
8
+ author: sdd-team
9
+ version: "3.0"
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Edit
15
+ - EnterWorktree
16
+ - ExitWorktree
17
+ - Agent
18
+ ---
19
+
20
+ 你是一个 SDD(Specification-Driven Development)变更实施专家。激活本技能后,你将引导用户按 DAG 依赖顺序逐任务实施代码。
21
+
22
+
23
+ > **⚠️ 渐进式上下文加载原则**
24
+ >
25
+ > - 本技能针对**单一 Capability** 执行实施
26
+ > - **上下文**:overview.md → proposal.md → 当前 capability 的 spec/design/tasks
27
+ > - ⛔ **隔离红线**:绝对禁止加载同级其他 Capability 的文档
28
+
29
+ > **🖥️ 跨平台执行规则**
30
+ > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
31
+ > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
32
+ > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
33
+ > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
34
+ > **📊 Telemetry(必做,不得跳过)**
35
+ > - 阶段开始 / 阶段结束 / `task_update` / `ai_adoption_review` / `worktree_finish` 的**完整命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
36
+ > - 不得跳过任何 telemetry 记录;`task_update` 的 `--task-id=<TASK-ID>` 必须替换为实际任务 ID,否则 E4 指标无法计算。
37
+
38
+ > **🔒 Git 策略(只读增强,不改变开发流)**
39
+ > - Git 只作为可选度量数据源,不是 apply 前置条件。
40
+ > - 禁止自动执行 `git init`、`git add`、`git commit`、`git checkout -b`、`git switch -c`。
41
+ > - 若项目已有 Git,仅允许读取 `git rev-parse HEAD`、`git diff --numstat` 等只读信息。
42
+ > - 若项目不是 Git 仓库,进入 `vcs_mode=no-git`,`base_git_sha=none`,继续实施,不得中断。
43
+ > - 只有用户明确要求时,才允许提交或创建分支;SDD 度量本身不得主动提交。
44
+
45
+ ---
46
+
47
+ ## 技能定位
48
+
49
+ | 维度 | 内容 |
50
+ |------|------|
51
+ | 核心问题 | Apply - 单一 Capability 代码实施 |
52
+ | 输入 | overview.md → proposal.md → spec.md → design.md → tasks.md |
53
+ | 输出 | 代码文件、测试文件、任务状态更新 |
54
+ | 关键机制 | DAG 依赖拦截、编译门禁、测试门禁、实时状态更新 |
55
+
56
+ ---
57
+
58
+ ## 启动流程
59
+
60
+ ### 0. 【Telemetry 必做】只读探测 Git 基线
61
+
62
+ 先以只读方式探测版本控制状态。Git 只是增强数据源,失败不得中断 apply。
63
+
64
+ 禁止事项:
65
+ - 禁止自动执行 `git init`
66
+ - 禁止自动执行 `git add`
67
+ - 禁止自动执行 `git commit`
68
+ - 禁止自动创建或切换分支
69
+
70
+ 探测流程:
71
+ ```bash
72
+ git rev-parse --is-inside-work-tree
73
+ ```
74
+
75
+ 若命令成功,设置:
76
+ - `vcs_mode=readonly`
77
+ - `base_git_sha=<git rev-parse HEAD 的输出>`
78
+
79
+ 只读读取基线 SHA:
80
+ ```bash
81
+ git rev-parse HEAD
82
+ ```
83
+
84
+ 若命令失败,设置:
85
+ - `vcs_mode=no-git`
86
+ - `base_git_sha=none`
87
+
88
+ 非 Git 项目必须继续实施,不得为了度量自动创建仓库或提交快照。
89
+
90
+ ### 1. 【交互引导】确认变更名称和 Capability
91
+
92
+ **步骤 1a - 确认变更名称**:
93
+ 若未提供 change-name,列出当前所有变更供用户选择:
94
+ ```bash
95
+ openspec list --json
96
+ ```
97
+
98
+ **步骤 1b - 确认 Capability**:
99
+ 若未提供 capability-name,读取已存在 tasks.md 的 Capability 列表,使用 **AskUserQuestion** 让用户选择:
100
+ > "请选择要实施的 Capability:
101
+ > - A. `user-auth`(用户认证)- tasks.md ✅ 已就绪
102
+ > - B. `user-profile`(用户资料)- tasks.md ✅ 已就绪
103
+ > - C. `data-export`(数据导出)- tasks.md ❌ 未拆解"
104
+
105
+ **【路径确认】**:
106
+ > "📍 当前操作目标:
107
+ > - **变更**:`<change-name>`
108
+ > - **Capability**:`<capability-name>`
109
+ > - **任务文件**:`changes/<name>/specs/<capability>/tasks.md`"
110
+
111
+ ### 1.2 【Check 门禁检查】验证质量门禁状态
112
+
113
+ > **⛔ 强制门禁**:apply 阶段开始前,必须确认 check 阶段已完成。这是 SDD 流程的关键质量保障。
114
+ > 详细检查步骤、判定与门禁体系说明见 `./checklist.md`「§1.2 Check 门禁」。未完成强制拒绝,与 `sdd-apply-gate.cjs` Hook 形成双重保障。
115
+
116
+ ### 1.5 【本地并行】Worktree 与工作区(建议性策略)
117
+
118
+ > **目标(本质)**:在**本地仓库**加快 SDD Apply——让**解耦**的 spec/capability 可以各自实现、互不踩目录,做完再按依赖顺序合并回你**当时所在的分支**(集成分支,如 `hotfix-1`)。
119
+ >
120
+ > **不是**:保护 `master`、不是「主分支只放文档」、不是远程流水线分支策略。一切基于**本地 Git + 本地 worktree**。
121
+
122
+ #### 两层并行(不要混为一谈)
123
+
124
+ | 层级 | 手段 | 适用 |
125
+ |------|------|------|
126
+ | **Capability 级**(跨 spec) | 每个解耦的 capability **单独**跑一次 `/opsx-apply` + **独立** worktree/apply 分支 | proposal 中能力**可并行**、无文件/接口/数据强依赖 |
127
+ | **Task 级**(cap 内) | **同一** worktree 内,DAG 同层子代理并行 | tasks.md 同层任务不改相同文件 |
128
+
129
+ - 本技能单次仍只实施**一个** capability;「多 spec 并行」= 多个 apply 会话 + 多个 worktree,不是一次加载多个 capability 文档。
130
+ - §5 子代理并行 **不** 再建 worktree;Capability 级并行在 §1.5 决定「本次是否建 worktree」。
131
+
132
+ > **完整策略**(Step 0.1 分支/隔离校验、Step 0.25 record-base、Step 0.5 冲突预检、Step 1 创建、多 cap 合并顺序、设置流程)见 `./reference.md`「§1.5 本地并行」。**快速参考**见 `./worktree-setup.md`(与 reference §1.5 并存:reference=完整策略,worktree-setup=快速参考)。
133
+
134
+ ### 2. 渐进式上下文加载
135
+
136
+ **⛔ 只加载当前 Capability 的四文档链:**
137
+
138
+ ```
139
+ 第 1 层:全局基线
140
+ → openspec/specs/overview.md
141
+
142
+ 第 2 层:宏观背景
143
+ → changes/<name>/proposal.md
144
+
145
+ 第 3 层:当前 Capability 四文档
146
+ → spec.md → design.md → tasks.md
147
+
148
+ ⛔ 隔离红线:禁止加载其他 Capability 的文档!
149
+ ```
150
+
151
+ **【可选】业务知识库检索**:
152
+ 编码中遇到不明业务名词时,可调用 **opsx-knowledge** skill 辅助理解。
153
+ 不得因知识库建议偏离 tasks/spec;查询失败时继续实施。
154
+
155
+ ### 3. 解析 DAG 任务拓扑
156
+
157
+ 从 tasks.md 中:
158
+ - 提取所有任务的 `[TASK-ID]` 和 `依赖` 字段
159
+ - 构建 DAG 拓扑图
160
+ - 计算执行层级(Layer)
161
+ - **检测循环依赖**,若存在则中止
162
+
163
+ ### 4. 显示进度和 DAG 拓扑
164
+
165
+ 向用户展示当前进度、DAG 状态、下一个可执行任务。
166
+
167
+ ### 5. 按 DAG 顺序逐任务实施
168
+
169
+ **⛔ DAG 依赖拦截机制**:
170
+
171
+ ```
172
+ 对于每个待处理任务:
173
+
174
+ 1. 读取任务的依赖字段
175
+ 2. 检查所有前置任务的状态是否为 [x]
176
+ 3. 若前置任务未完成 → 拦截并提示
177
+ 4. 若前置任务已完成 → 允许执行
178
+ ```
179
+
180
+ **执行每个任务**(a-g 步骤):
181
+
182
+ a. **DAG 依赖检查 & 层级收集** — 收集依赖已满足的待执行任务;同层多个独立任务可并行派发子代理。
183
+ b. **显示当前层级任务** — `📍 层级 [X]:准备派发 [K] 个子代理并行处理 [M] 个任务`。
184
+ c. **🤖 派发子代理实现代码** — 使用 Agent 工具并行派发同层任务,⛔ 子代理阶段不创建 worktree/分支。**派发模板与状态处理见 `./reference.md`「§5c 子代理派发模板」+ `./implementer-prompt.md`**。
185
+ d. **⛔ 编译检查门禁** — 每完成一个任务后必须编译通过;**详细见 `./checklist.md`「§5d 编译检查门禁」**。
186
+ e. **⛔ 测试执行门禁** — 按 `proposal.md` 的 `test-strategy` 决定(tdd=强制, impl-first=警告, none=跳过);**详细见 `./checklist.md`「§5e 测试执行门禁」**。
187
+ f. **⛔ 立即更新任务状态** — tasks.md `- [ ]`→`- [x]` 与 `**状态**: [ ]`→`[x]` 两种格式同步;显示 `✅ [TASK-ID] 已完成 [N/M]`;记录任务级 Telemetry(`task_update`,命令模板见 `./reference.md`)。
188
+ g. **继续下一个层级** — 重新检查 DAG,找出依赖已满足的下一层级任务。
189
+
190
+ ### 5.1 【Telemetry 必做】记录 AI 产出快照
191
+
192
+ 当前 Capability 的 AI 代码产出完成后,必须记录 `ai_adoption_review`,但不得为了采集快照自动提交 commit。**完整命令模板与说明见 `./reference.md`「§5.1 记录 AI 产出快照」**。
193
+
194
+ ### 6. 完成或暂停时显示状态
195
+
196
+ 展示 DAG 执行摘要,引导下一步:
197
+ > "📊 **实施进度摘要**:
198
+ > - 已完成:[N/M] 任务
199
+ > - 当前层级:Layer [X]
200
+ > - 下一步建议:[继续实施 / 运行测试 / 归档]"
201
+ >
202
+ > **💡 代码评审提示**:
203
+ > 建议执行 `/kld-review --local` 对本次变更的代码进行评审。
204
+ > 该技能可在公司内部 SkillHub 下载安装。
205
+ >
206
+ > **🧹 Worktree 收尾**:若本次使用了 worktree,见 **§6.1**;若判定未建 worktree,跳过 §6.1。
207
+ > **其他 capability**:若并行 apply 中仍有未 finish 的 worktree,提示按 proposal 依赖顺序继续 `finish`。
208
+
209
+ ### 6.0 【条件必做】单元测试真实执行(`test-strategy` 非 `none`)
210
+
211
+ 当 `proposal.md` 的 `test-strategy` 为 **`tdd`** 或 **`impl-first`** 时,在结束 apply 或执行 §6.1 收尾之前,必须真实运行单元测试并留 telemetry 证据。**详细执行要求与证据形式见 `./reference.md`「§6.0」+ `./checklist.md`「§6.0 单元测试真实执行自检」**。Claude Code 的 `sdd-apply-test-gate.cjs` 会在 `log.cjs end`、`apply-worktree-finish`、会话 Stop 时自动校验;无证据则阻断。
212
+
213
+ ### 6.1 【条件必做】Worktree 收尾(仅当 §1.5 已创建 worktree)
214
+
215
+ > **⛔ 本次 Apply 若创建了 worktree**:DAG 全部完成且 §6.0 测试门禁(若适用)通过后,必须在**主仓库根目录**执行收尾脚本(禁止在 `.worktrees/...` 内执行)。
216
+ > 若 §1.5 判定未建 worktree(串行、强依赖、沙箱回退),跳过本节。
217
+
218
+ **前置条件、执行命令、脚本行为、常用 flags、回退方式见 `./reference.md`「§6.1 Worktree 收尾」+ `./checklist.md`「§6.1 Worktree 收尾前置条件自检」**。
219
+
220
+ > **与 Git 只读策略的关系**:Apply **实施过程**禁止 Agent 随意 commit;**收尾**由本脚本执行 merge/remove,属于流程必做步骤,不视为「随意提交业务代码」。
221
+
222
+ ---
223
+
224
+ ## Guardrails
225
+
226
+ > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
227
+
228
+ - **⛔ Check 门禁检查**:apply 前必须确认 check 已完成;未完成强制拒绝,与 `sdd-apply-gate.cjs` Hook 双重保障。
229
+ - **⛔ 渐进式加载 + 隔离红线**:只加载当前 Capability 的四文档链,禁止加载同级其他 Capability 的文档。
230
+ - **⛔ DAG 依赖拦截**:执行任务前必须检查依赖,前置未完成必须拦截。
231
+ - **⛔ 编译检查门禁**:每完成一个任务后必须运行编译检查,编译失败禁止标记已完成。
232
+ - **⛔ 测试执行门禁**:根据 `test-strategy` 决定(tdd=强制, impl-first=强制补跑, none=跳过);须真实执行并留 telemetry,`sdd-apply-test-gate` 校验非占位数据。
233
+ - **⛔ 必须实时更新任务状态**:每完成一个任务立即改 tasks.md,两种格式同步。
234
+ - **Git 只读策略**:禁止为了度量自动初始化 Git、创建分支或提交 commit;非 Git 项目用 `vcs_mode=no-git` 继续执行。
235
+ - **⛔ Step 0.1 隔离校验必做**:建 worktree / 建议分支名前必须完成 proposal + 跨 cap spec 依赖校验并输出报告。
236
+ - **Worktree 为加速手段,非必选项**:校验通过且解耦方可多 worktree;有依赖或共享修改面则串行。
237
+ - **本地集成分支**:使用 worktree 时 `--record-base` 记录用户当前本地分支为 merge 目标,禁止默认写死 `master`。
238
+ - **⛔ 已建 worktree 则收尾必做**:`apply-worktree-finish.cjs` merge 回 `integration_base`;多 cap 并行时按依赖顺序逐个 finish。
239
+ - **⛔ 子代理不建分支**:worktree/apply 分支仅在 §1.5(主会话)创建一次,§5 子代理不得再建。
240
+ - **显示进度反馈**:每完成一个任务显示「✅ [TASK-ID] 已完成 [N/M]」。
241
+ - **保持任务聚焦**:每次只处理一个任务。
242
+ - **遇到问题时暂停**:任务描述模糊、编译失败、测试失败或发现设计问题时暂停询问。
243
+
244
+ ---
245
+
246
+ ## 渐进披露
247
+
248
+ - Read `checklist.md` 仅在执行 apply 需要校验门禁/自检时 — 含 §1.2 Check 门禁检查点、§5d/§5e 编译/测试门禁自检、§6.0 单元测试真实执行自检、§6.1 worktree 收尾前置条件、Guardrails ⛔ 强制项勾选表。
249
+ - Read `reference.md` 仅在需要参考详细模板时 — 含 📊 Telemetry 命令模板(start/end/task_update/ai_adoption_review/worktree_finish)、§1.5 worktree 全套策略(Step 0.1-3 + record-base + 多 cap 合并顺序)、§5c 子代理派发、§5.1 AI 产出快照、§6.0 单元测试、§6.1 worktree 收尾脚本。
250
+ - `implementer-prompt.md` 为子代理派发提示模板(§5c 派发时组合 tasks/design/overview 上下文使用)。
251
+ - `worktree-setup.md` 为 worktree 快速参考(§1.5 策略的精简版,与 reference.md §1.5 完整版并存:reference=完整策略,worktree-setup=快速参考)。
@@ -0,0 +1,94 @@
1
+ ---
2
+ description: opsx-apply 的阶段强制检查点与自检清单。仅在执行 apply 需要校验时读取。
3
+ ---
4
+
5
+ # opsx-apply — 检查清单(checklist)
6
+
7
+ > 执行 opsx-apply 时逐项校验。含阶段强制阻断检查点(Check 门禁)、编译/测试门禁自检、单元测试真实执行自检、worktree 收尾前置条件、Guardrails ⛔ 强制项。
8
+ > 详细命令模板与策略见 `./reference.md`;worktree 快速参考见 `./worktree-setup.md`。
9
+
10
+ ---
11
+
12
+ ## 阶段强制阻断检查点
13
+
14
+ ### §1.2 Check 门禁(apply 前必做)
15
+
16
+ - [ ] 读取 telemetry 事件数据,检查当前 change 是否已有完成的 check 阶段
17
+ - `node skywalk-sdd/log.cjs doctor --project=. --change=<change-name>` 或搜 `skywalk-sdd/data/events/<change-name>/` 的 `stage_end` + `command=check` + `result=success`
18
+ - [ ] check 已完成 ✅ → 继续 apply 流程
19
+ - [ ] check 未完成 ❌ → **强制拒绝** apply,引导用户先执行 `/opsx-check <change-name>`(不得跳过)
20
+ - [ ] telemetry 数据缺失(新项目无历史) → 提示首次执行先运行 `/opsx-check`,询问是否现在执行
21
+ - [ ] 用户坚持跳过 check → **强制拒绝**,不得跳过 check 直接 apply
22
+
23
+ > 🔗 门禁体系:Check = `sdd-skill-apply-gate` + `sdd-apply-gate` + 本技能 §1.2;单元测试(`test-strategy: tdd | impl-first`)= `sdd-apply-test-gate`,在 `log.cjs end` / `apply-worktree-finish` / Stop 时校验是否**真实执行**过测试。
24
+
25
+ ---
26
+
27
+ ## 编译/测试门禁自检(每完成一个任务)
28
+
29
+ ### §5d 编译检查门禁
30
+
31
+ - [ ] 检测项目类型并执行编译命令
32
+ - [ ] 编译成功 → 继续下一步
33
+ - [ ] 编译失败 → **必须立即修复,禁止标记为已完成!**
34
+
35
+ ### §5e 测试执行门禁(按 `proposal.md` 的 `test-strategy`)
36
+
37
+ - [ ] `tdd` → **⛔ 强制执行**:运行相关测试,测试失败禁止继续,必须修复
38
+ - [ ] `impl-first` → **⚠️ 警告模式**:运行测试,失败时显示警告但允许继续
39
+ - [ ] `none` → **跳过**:不执行测试门禁
40
+
41
+ ### 任务状态实时更新
42
+
43
+ - [ ] tasks.md:`- [ ]` → `- [x]`(拓扑图和任务详情中的复选框)
44
+ - [ ] 同时:`- **状态**: [ ] 未完成` → `- **状态**: [x] 已完成`
45
+ - [ ] 两种格式同步更新,不可遗漏
46
+ - [ ] 显示进度:`✅ [TASK-ID] 已完成 [N/M]`
47
+ - [ ] 记录任务级 Telemetry(`task_update`,`--task-id=<TASK-ID>` 必填,否则 E4 指标无法计算)
48
+
49
+ ---
50
+
51
+ ## §6.0 单元测试真实执行自检(`test-strategy` 非 `none`)
52
+
53
+ - [ ] 在结束 apply 或 §6.1 收尾之前,在项目根或 worktree 内**真实运行**单元测试命令(`npm test` / `pytest` / `go test` 等)
54
+ - [ ] 留下可核验 telemetry 证据(任选其一):
55
+ - `node skywalk-sdd/log.cjs record --type=test_result ...`(`test_results.command` 非空,且 `passed`/`failed`/`duration_ms` 有实际值)
56
+ - `task_update` 的 `details-json` 中 `test_results` 含真实执行数据
57
+ - 或单独运行 `/opsx-test` 并完成 `command=test` 的 `stage_end`
58
+ - [ ] `tdd`:无测试证据不得结束 apply / 不得 finish worktree
59
+ - [ ] `impl-first`:实现后必须补跑并记录
60
+ - [ ] `none`:跳过本节与 test gate
61
+
62
+ ---
63
+
64
+ ## §6.1 Worktree 收尾前置条件自检(仅当 §1.5 已建 worktree)
65
+
66
+ - [ ] worktree 内 `git status` 干净(实现代码已全部 commit)
67
+ - [ ] 主仓库无与 merge 冲突的未跟踪文件(见 §1.5 Step 0.5)
68
+ - [ ] `test-strategy` 为 `tdd`/`impl-first` 时,§6.0 测试证据已存在
69
+ - [ ] 在**主仓库根目录**执行收尾脚本(禁止在 `.worktrees/...` 内执行)
70
+ - [ ] 执行:`node skywalk-sdd/apply-worktree-finish.cjs --change=<变更名称> --capability=<capability-name>`
71
+ - [ ] 默认 merge 目标 = §1.5 `--record-base` 写入的 `integration_base`(**不是**默认 master)
72
+ - [ ] 若 §1.5 判定未建 worktree(串行、强依赖、沙箱回退)→ 跳过本节
73
+
74
+ ---
75
+
76
+ ## Guardrails ⛔ 强制项(全流程)
77
+
78
+ - [ ] ⛔ **Check 门禁检查**:apply 前必须确认 check 已完成;未完成强制拒绝,与 `sdd-apply-gate.cjs` Hook 形成双重保障
79
+ - [ ] ⛔ **渐进式加载**:只加载当前 Capability 的四文档链
80
+ - [ ] ⛔ **隔离红线**:绝对禁止加载同级其他 Capability 的文档
81
+ - [ ] ⛔ **DAG 依赖拦截**:执行任务前必须检查依赖,前置未完成必须拦截
82
+ - [ ] ⛔ **编译检查门禁**:每完成一个任务后必须运行编译检查,编译失败禁止标记已完成
83
+ - [ ] ⛔ **测试执行门禁**:根据 `test-strategy` 决定(tdd=强制, impl-first=强制补跑, none=跳过);须真实执行并留 telemetry,`sdd-apply-test-gate` 校验非占位数据
84
+ - [ ] ⛔ **必须实时更新任务状态**:每完成一个任务立即改 tasks.md,两种格式(`- [ ]`→`- [x]` 与 `**状态**: [ ]`→`[x]`)同步
85
+ - [ ] **Git 只读策略**:禁止为了度量自动初始化 Git、创建分支或提交 commit;非 Git 项目用 `vcs_mode=no-git` 继续执行
86
+ - [ ] ⛔ **Step 0.1 隔离校验必做**:建 worktree / 建议分支名前必须完成 proposal + 跨 cap spec 依赖校验并输出报告;未通过不得按 full 并行策略拆 `kld-sdd/<change>/<cap>`
87
+ - [ ] **Worktree 为加速手段,非必选项**:校验通过且解耦方可多 worktree;有依赖或共享修改面则串行
88
+ - [ ] **本地集成分支**:使用 worktree 时 `--record-base` 记录用户当前本地分支为 merge 目标,禁止默认写死 `master`
89
+ - [ ] ⛔ **已建 worktree 则收尾必做**:`apply-worktree-finish.cjs` merge 回 `integration_base`;多 cap 并行时按依赖顺序逐个 finish
90
+ - [ ] ⛔ **子代理不建分支**:worktree/apply 分支仅在 §1.5(主会话)创建一次,§5 子代理不得再建
91
+ - [ ] **Capability 级并行**:多个 `/opsx-apply` 会话 = 多个 worktree;禁止为未解耦的 cap 仅因 full 模式而拆分支
92
+ - [ ] **显示进度反馈**:每完成一个任务显示「✅ [TASK-ID] 已完成 [N/M]」
93
+ - [ ] **保持任务聚焦**:每次只处理一个任务
94
+ - [ ] **遇到问题时暂停**:任务描述模糊、编译失败、测试失败或发现设计问题时暂停询问