kld-sdd 2.4.7

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.
@@ -0,0 +1,258 @@
1
+ ---
2
+ name: opsx-propose
3
+ description: "业务意图文档技能 - 引导创建 proposal.md,定义变更的 Why 和上下文总览"
4
+ argument-hint: "[change-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
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)业务意图文档专家。激活本技能后,你将引导用户创建符合质量红线标准的 **proposal.md** 文档。
18
+
19
+ > **⚠️ 阶段边界约束**
20
+ >
21
+ > 当前处于 **Propose(规划)阶段**:
22
+ > - ✅ **允许**:创建/编辑 proposal.md 文档、读取代码/文档作为上下文分析
23
+ > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
24
+ > - ⛔ **单阶段原则**:完成 proposal.md 后**必须立即停止**,等待用户主动触发下一阶段
25
+ >
26
+ > 即使用户提供了代码作为上下文,也只用于理解需求背景,**不执行任何代码操作**。
27
+ > 代码实现请引导用户使用 `/opsx:apply` 命令。
28
+ > **完成本阶段后,绝对禁止自动继续执行 spec/design/task 等后续阶段。**
29
+
30
+
31
+ > **📊 Telemetry(必做,不得跳过)**
32
+ > - 阶段开始:`node skywalk-sdd/log.js start --command=propose --project=<项目根目录绝对路径> --change=<变更名称> --agent=<Agent类型>`(保存 event_id)
33
+ > - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要" --project=<项目根目录绝对路径>`
34
+
35
+ ---
36
+
37
+ ## 技能定位
38
+
39
+ **proposal.md** 是 SDD 四文档链的起点,聚焦回答:**为什么要做这个变更?**
40
+
41
+ | 维度 | 内容 |
42
+ |------|------|
43
+ | 核心问题 | Why - 为什么做 |
44
+ | 关键输出 | 业务目标、影响范围、约束条件、能力分解 |
45
+ | 下游依赖 | specs → design.md → tasks.md |
46
+
47
+ ---
48
+
49
+ ## 启动流程
50
+
51
+ ### 1. 输入处理
52
+
53
+ 当用户激活此 skill 时:
54
+
55
+ **若提供了变更名称/描述**:
56
+ - 解析为 kebab-case 名称(如 "add user authentication" → `add-user-auth`)
57
+ - 跳转到第 2 步
58
+
59
+ **若未提供任何输入**,使用 **AskUserQuestion** 询问:
60
+ > "请描述本次变更的业务需求:
61
+ > 1. 要解决什么问题?(现状痛点)
62
+ > 2. 达成什么目标?(期望结果)
63
+ > 3. 涉及哪些模块/系统?
64
+ > 4. 有什么约束条件?(时间/技术/资源)"
65
+
66
+ 从描述中推导 kebab-case 名称。
67
+
68
+ **【澄清机制】若用户描述模糊,主动追问**:
69
+ - 若目标不明确:"请用一句话明确本次变更要达成的具体目标"
70
+ - 若影响范围不清:"请列出本次变更涉及的所有模块/服务"
71
+ - 若约束未提及:"是否有时间限制、技术约束或依赖前提?"
72
+
73
+ **重要**:未明确需求前不得继续。
74
+
75
+ ### 2. 【上下文加载】识别并读取用户提供的文件
76
+
77
+ **自动识别上下文文件**:
78
+ 若用户在命令中指定了文件路径(如 `/opsx:propose atp-calc ./需求.md ./算法逻辑.md`),
79
+ 或在对话中附加/引用了文件,**必须自动读取这些文件**。
80
+
81
+ **上下文处理原则**:
82
+ - 需求文档 → 提取业务目标、用户场景、验收标准
83
+ - 代码文件 → 分析现有实现,识别修改点
84
+ - API 文档 → 了解接口约束、数据模型
85
+
86
+ ### 3. 创建变更目录
87
+
88
+ ```bash
89
+ openspec new change "<name>"
90
+ ```
91
+
92
+ 此命令在 `openspec/changes/<name>/` 创建变更目录和 `.openspec.yaml`。
93
+
94
+ **【交互引导】若变更已存在**:
95
+ - 询问用户:"变更 `<name>` 已存在,请选择:
96
+ - A. 覆盖原有变更(删除重建)
97
+ - B. 继续编辑现有变更
98
+ - C. 取消操作"
99
+ - 根据用户选择执行对应操作
100
+
101
+ ### 4. 【关键步骤】读取本地模板文件
102
+
103
+ **必须先读取** `openspec-templates/proposal.md` 作为文档结构模板:
104
+ ```
105
+ 使用 Read 工具读取:openspec-templates/proposal.md
106
+ ```
107
+
108
+ 此模板定义了文档的完整结构,包括:
109
+ - 章节编号和命名
110
+ - 子章节结构(如 1.1 现状问题、1.2 业务诉求)
111
+ - 格式要求(checkbox、代码块、表格等)
112
+ - 质量红线检查清单
113
+
114
+ **【重要】不得使用 `openspec instructions` 返回的简化 template,必须以 `openspec-templates/proposal.md` 为准。**
115
+
116
+ ### 5. 获取项目上下文(可选)
117
+
118
+ ```bash
119
+ openspec instructions proposal --change "<name>" --json
120
+ ```
121
+
122
+ 解析返回的 JSON,仅获取:
123
+ - `context`:项目背景约束(**仅供参考,不要写入文档**)
124
+ - `rules`:文档编写规则(**仅供参考,不要写入文档**)
125
+ - `outputPath`:文档输出路径
126
+ - `dependencies`:前置依赖文件路径
127
+
128
+ **注意**:忽略返回的 `template` 字段,使用步骤 4 读取的本地模板。
129
+
130
+ ### 6. 分析需求完整性
131
+
132
+ **完整性检查**:
133
+ - [ ] 是否有明确的问题描述?
134
+ - [ ] 是否有可衡量的目标?
135
+ - [ ] 是否涉及具体模块?
136
+ - [ ] 是否有时间/资源约束?
137
+
138
+ **【发现缺失时主动询问】**:
139
+ > "我发现以下信息还不够清晰,请补充:
140
+ > - [具体问题]
141
+ > 补充后我将重新生成文档。"
142
+
143
+ ### 7. 【交互引导】文档拆分模式选择
144
+
145
+ **❗ 必须主动询问用户,不得默认选择**
146
+
147
+ 分析需求中的能力域数量后,使用 **AskUserQuestion** 工具向用户询问:
148
+
149
+ > "📋 **检测到需求包含以下能力域:**
150
+ > - [能力域列表]
151
+ >
152
+ > 🤔 **请选择文档拆分模式:**
153
+ >
154
+ > **A) 完整模式 (Full)** - 每个能力域独立文档
155
+ > - 目录结构:`specs/<capability>/spec.md`, `specs/<capability>/design.md`, `specs/<capability>/tasks.md`
156
+ > - 适合:大需求、多人协作、需要精细管控
157
+ >
158
+ > **B) 简化模式 (Simple)** - 单一文档
159
+ > - 目录结构:`spec.md`, `design.md`, `tasks.md`(合并所有能力域)
160
+ > - 适合:小需求、单人快速迭代
161
+ >
162
+ > **C) 自动判断** - 根据能力域数量自动选择
163
+ > - 单个能力域 → Simple 模式
164
+ > - 多个能力域 → Full 模式"
165
+
166
+ 根据用户选择:
167
+ - 选择 A:设置 `mode: full`
168
+ - 选择 B:设置 `mode: simple`
169
+ - 选择 C:根据能力域数量自动判断并设置
170
+
171
+ **将用户选择记录到 proposal.md 的 YAML frontmatter 中。**
172
+
173
+ ### 8. 【交互引导】测试策略选择
174
+
175
+ **❗ 必须主动询问用户,不得默认选择**
176
+
177
+ 使用 **AskUserQuestion** 工具向用户询问:
178
+
179
+ > "🧪 **请选择测试策略:**
180
+ >
181
+ > **A) 测试驱动 (TDD)** - 测试先行
182
+ > - 先生成测试任务,实现任务依赖测试任务
183
+ > - DAG: 测试骨架 → 实现代码 → 测试验证
184
+ > - 适合:核心业务逻辑、质量要求高
185
+ >
186
+ > **B) 实现优先 (Impl-First)** - 代码先行
187
+ > - 先生成实现任务,测试作为验证步骤
188
+ > - DAG: 实现代码 → 测试验证
189
+ > - 适合:UI 层、配置类、快速原型
190
+ >
191
+ > **C) 无测试 (None)** - 仅实现
192
+ > - 不生成测试任务,仅编译检查
193
+ > - 适合:简单配置、文档更新"
194
+
195
+ 根据用户选择:
196
+ - 选择 A:设置 `test-strategy: tdd`
197
+ - 选择 B:设置 `test-strategy: impl-first`
198
+ - 选择 C:设置 `test-strategy: none`
199
+
200
+ **将用户选择记录到 proposal.md 的 YAML frontmatter 中。**
201
+
202
+ ### 9. 创建 proposal.md
203
+
204
+ **以 `openspec-templates/proposal.md` 的结构为骨架**,填充内容到 `outputPath`。
205
+
206
+ **【质量红线】生成文档必须严格遵循模板结构。**
207
+
208
+ ### 10. 质量红线自检
209
+
210
+ 写入文档前,逐项确认:
211
+ - [ ] 文档结构完全符合 `openspec-templates/proposal.md` 模板
212
+ - [ ] 章节编号和命名正确(如 `## 1. 需求背景` 而非 `## Why`)
213
+ - [ ] 子章节结构正确(如 `### 1.1 现状问题`、`### 1.2 业务诉求`)
214
+ - [ ] 涉及模块使用 checkbox 格式(`- [ ] 模块A`)
215
+ - [ ] 依赖关系使用代码块图示
216
+ - [ ] 前置依赖使用 checkbox 格式
217
+ - [ ] 文档末尾包含质量红线检查清单
218
+ - [ ] 能力分解章节已明确(决定后续 specs 文件夹结构)
219
+
220
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
221
+
222
+ ### 11. 确认文档并输出结果
223
+
224
+ 生成文档后,向用户展示概要:
225
+ > "已生成 proposal.md 草案,概要如下:
226
+ > - 变更名称:[name]
227
+ > - 核心目标:[一句话总结]
228
+ > - 影响模块:[模块列表]
229
+ > - 能力域:[capability 列表]
230
+ >
231
+ > 请确认:
232
+ > - A. 确认无误,继续创建 specs
233
+ > - B. 需要修改 [具体章节]
234
+ > - C. 补充更多信息"
235
+
236
+ 根据用户反馈:
237
+ - 选择 A:保存文档,提示下一步
238
+ - 选择 B/C:根据反馈修改文档
239
+
240
+ 最终输出:
241
+ - 文档路径
242
+ - 内容摘要
243
+ - 下一步提示:"运行 `/opsx:spec` 创建技术契约文档 (specs/<capability>/spec.md)"
244
+
245
+ ---
246
+
247
+ ## Guardrails
248
+
249
+ - **必须以 `openspec-templates/proposal.md` 为模板基准**,不得使用 `openspec instructions` 返回的简化 template
250
+ - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
251
+ - proposal.md 聚焦【Why】,不要写技术实现细节(留给 design.md)
252
+ - 不要写 API 细节(留给 specs)
253
+ - **Capabilities 章节是关键**:决定后续 specs 文件夹结构
254
+ - 若跳过此文档,后续 specs 必须补齐影响范围
255
+ - 文档写入后验证文件确实存在
256
+ - 每次生成都提供文档摘要,等待用户确认后再继续
257
+ - **⛔ 阶段边界**:本阶段禁止执行任何代码创建/修改操作。若用户要求处理代码,回复:「当前处于 Propose 阶段,代码操作请在完成文档后使用 `/opsx:apply` 执行。」
258
+ - **⛔ 单阶段原则:完成 proposal.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:spec`,**绝对禁止自动执行 spec/design/task 等后续阶段**。每个阶段必须由用户主动触发。
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: opsx-spec
3
+ description: "技术契约文档技能 - 为每个能力创建 spec.md,定义业务场景与技术规范"
4
+ argument-hint: "[change-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
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)技术契约专家。激活本技能后,你将引导用户为每个 Capability 创建 **spec.md** 文档。
18
+
19
+ > **⚠️ 阶段边界约束**
20
+ >
21
+ > 当前处于 **Spec(契约)阶段**:
22
+ > - ✅ **允许**:创建/编辑 spec.md 文档、读取代码/文档作为上下文分析
23
+ > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
24
+ > - ⛔ **单阶段原则**:完成 spec.md 后**必须立即停止**,等待用户主动触发下一阶段
25
+ >
26
+ > 即使用户提供了代码作为上下文,也只用于分析现有实现,**不执行任何代码操作**。
27
+ > 代码实现将在 `/opsx:apply` 阶段进行。
28
+ > **完成本阶段后,绝对禁止自动继续执行 design/task 等后续阶段。**
29
+
30
+
31
+ > **📊 Telemetry(必做,不得跳过)**
32
+ > - 阶段开始:`node skywalk-sdd/log.js start --command=spec --project=<项目根目录绝对路径> --change=<变更名称> --agent=<Agent类型>`(保存 event_id)
33
+ > - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要" --project=<项目根目录绝对路径>`
34
+
35
+ ---
36
+
37
+ ## 技能定位
38
+
39
+ | 维度 | 内容 |
40
+ |------|------|
41
+ | 核心问题 | What - 具体做什么(业务场景 + 技术规范) |
42
+ | 关键输出 | specs/<capability>/spec.md |
43
+ | 上游依赖 | proposal.md(能力列表) |
44
+ | 下游依赖 | design.md → tasks.md |
45
+
46
+ **【文件结构】**:每个 capability 生成一个独立的 spec 文件:
47
+ ```
48
+ openspec/changes/<name>/
49
+ ├── proposal.md
50
+ ├── specs/
51
+ │ ├── user-auth/
52
+ │ │ └── spec.md # capability 1 的规格
53
+ │ ├── data-export/
54
+ │ │ └── spec.md # capability 2 的规格
55
+ │ └── ...
56
+ ├── design.md
57
+ └── tasks.md
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 启动流程
63
+
64
+ ### 1. 【交互引导】确认变更名称
65
+
66
+ 若未提供,列出当前所有变更供用户选择:
67
+ ```bash
68
+ openspec list
69
+ ```
70
+ 若变更不存在,引导用户先运行 `/opsx:propose <name>`。
71
+
72
+ ### 2. 【交互引导】确认 Capability
73
+
74
+ 读取 `proposal.md` 中定义的 Capabilities 列表:
75
+
76
+ 使用 **AskUserQuestion** 让用户选择要编写规格的 Capability:
77
+ > "📋 **proposal.md 中定义的能力域:**
78
+ > - A. `user-auth` - 用户认证
79
+ > - B. `data-export` - 数据导出
80
+ > - C. 全部(按顺序逐个创建)
81
+ >
82
+ > 请选择要为哪个 Capability 创建 spec.md:"
83
+
84
+ ### 3. 【上下文加载】识别并读取用户提供的文件
85
+
86
+ **自动识别上下文文件**:
87
+ 若用户在命令中指定了文件路径,或在对话中附加/引用了文件,**必须自动读取这些文件**。
88
+
89
+ **上下文类型与用途**:
90
+ | 上下文类型 | 用途 | 如何融入 spec |
91
+ |------------|------|--------------|
92
+ | 需求文档 | 提取验收标准、用户故事 | 转化为需求项和场景 |
93
+ | 代码文件 | 了解现有实现约束 | 纳入技术契约和约束条件 |
94
+ | API 文档 | 接口规范参考 | 对齐数据契约和接口格式 |
95
+
96
+ ### 4. 【关键步骤】读取本地模板文件
97
+
98
+ **必须先读取** `openspec-templates/spec.md` 作为文档结构模板:
99
+ ```
100
+ 使用 Read 工具读取:openspec-templates/spec.md
101
+ ```
102
+
103
+ **【重要】不得使用 `openspec instructions` 返回的简化 template,必须以 `openspec-templates/spec.md` 为准。**
104
+
105
+ ### 5. 渐进式上下文加载
106
+
107
+ ```
108
+ 第 1 层:全局基线
109
+ → openspec/specs/overview.md
110
+
111
+ 第 2 层:宏观背景
112
+ → changes/<name>/proposal.md
113
+
114
+ 第 3 层:当前 Capability 上下文
115
+ → 已有的 spec.md(若为增量修改)
116
+ ```
117
+
118
+ ### 6. 创建 spec.md
119
+
120
+ **以 `openspec-templates/spec.md` 的结构为骨架**,填充内容。
121
+
122
+ **输出路径**:`changes/<name>/specs/<capability>/spec.md`
123
+
124
+ **【质量红线】需求项格式要求**:
125
+ - 需求项使用 `####`(4个#)
126
+ - 场景使用 `#####`(5个#)
127
+
128
+ ### 7. 质量红线自检
129
+
130
+ 写入文档前,逐项确认:
131
+ - [ ] 文档结构完全符合 `openspec-templates/spec.md` 模板
132
+ - [ ] 需求项格式正确(`#### 需求项:`,4个#)
133
+ - [ ] 场景格式正确(`##### 场景:`,5个#)
134
+ - [ ] 每个需求项都有验收标准
135
+ - [ ] 技术契约章节完整(数据模型、接口契约)
136
+ - [ ] 文档末尾包含质量红线检查清单
137
+ - [ ] 100% 覆盖 proposal.md 中该 Capability 的描述
138
+
139
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
140
+
141
+ **【必须输出】质量自检报告**:
142
+
143
+ 自检完成后,**必须**向用户展示结构化的自检报告:
144
+
145
+ > "### 质量自检结果
146
+ >
147
+ > | 检查项 | 状态 | 说明 |
148
+ > |--------|------|------|
149
+ > | 文档结构符合模板 | ✅/❌ | |
150
+ > | 需求项格式正确(4个#) | ✅/❌ | 共 N 个需求项 |
151
+ > | 场景格式正确(5个#) | ✅/❌ | 共 M 个场景 |
152
+ > | 每个需求项有验收标准 | ✅/❌ | |
153
+ > | 技术契约章节完整 | ✅/❌ | |
154
+ > | 质量红线检查清单 | ✅/❌ | |
155
+ > | 覆盖 proposal.md 描述 | ✅/❌ | |
156
+ > | 使用「必须」强制要求 | ✅/⚠️ | |
157
+ > | 技术选型包含版本 | ✅/⚠️ | |
158
+ >
159
+ > **结论**:全部通过 ✅ / 存在问题需修复 ❌"
160
+
161
+ **未通过项处理**:若有 ❌ 项,自动修复后重新输出报告,直至全部 ✅。
162
+
163
+ ### 8. 确认文档并输出结果
164
+
165
+ 生成文档后,向用户展示概要:
166
+ > "已生成 spec.md,概要如下:
167
+ > - Capability:[name]
168
+ > - 需求项数量:[N]
169
+ > - 场景数量:[M]
170
+ >
171
+ > 请确认:
172
+ > - A. 确认无误,继续下一个 Capability 的 spec / 进入 design
173
+ > - B. 需要修改
174
+ > - C. 补充更多信息"
175
+
176
+ 最终输出:
177
+ - 文档路径
178
+ - 下一步提示:"运行 `/opsx:design <name> <capability>` 创建技术设计文档"
179
+
180
+ ---
181
+
182
+ ## Guardrails
183
+
184
+ - **必须以 `openspec-templates/spec.md` 为模板基准**
185
+ - spec.md 聚焦【What】,不写 How(留给 design.md)
186
+ - **需求项格式必须正确**:`####` 需求项、`#####` 场景
187
+ - 每个需求项必须有清晰的验收标准
188
+ - 技术契约必须可执行、无歧义
189
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作
190
+ - **⛔ 单阶段原则:完成 spec.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:design`,**绝对禁止自动执行 design/task 等后续阶段**。每个阶段必须由用户主动触发。
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: opsx-task
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
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)任务拆解专家。激活本技能后,你将引导用户为**单一 Capability** 创建 DAG 任务清单。
18
+
19
+ > **⚠️ 阶段边界约束**
20
+ >
21
+ > 当前处于 **Task(任务拆解)阶段**:
22
+ > - ✅ **允许**:创建/编辑 tasks.md 文档、读取代码作为任务分析参考
23
+ > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
24
+ > - ⛔ **单阶段原则**:完成 tasks.md 后**必须立即停止**,等待用户主动触发下一阶段
25
+ >
26
+ > tasks.md 定义的是「待执行的任务清单」,**不是立即执行代码**。
27
+ > 请引导用户使用 `/opsx:apply` 进入实施阶段。
28
+ > **完成本阶段后,绝对禁止自动继续执行 apply/check 等后续阶段。**
29
+
30
+ > **⚠️ 渐进式上下文加载原则**
31
+ >
32
+ > - 本技能针对**单一 Capability** 执行任务拆解
33
+ > - **输入路径**:`changes/<name>/specs/<capability>/design.md`
34
+ > - **输出路径**:`changes/<name>/specs/<capability>/tasks.md`
35
+ > - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的文档
36
+
37
+
38
+ > **📊 Telemetry(必做,不得跳过)**
39
+ > - 阶段开始:`node skywalk-sdd/log.js start --command=task --project=<项目根目录绝对路径> --change=<变更名称> --agent=<Agent类型>`(保存 event_id)
40
+ > - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要" --project=<项目根目录绝对路径>`
41
+
42
+ ---
43
+
44
+ ## 技能定位
45
+
46
+ | 维度 | 内容 |
47
+ |------|------|
48
+ | 核心问题 | Do - 单一 Capability 具体做什么任务 |
49
+ | 关键输出 | 局部 tasks.md(DAG 拓扑图 + 原子任务清单) |
50
+ | 上游依赖 | overview.md → proposal.md → 当前 capability 的 spec.md → design.md |
51
+ | 质量要求 | 每个任务 5 分钟可完成,100% 覆盖 design,DAG 无循环依赖 |
52
+
53
+ ---
54
+
55
+ ## 启动流程
56
+
57
+ ### 1. 【交互引导】确认变更名称和 Capability
58
+
59
+ 若未提供参数,列出已有 design.md 的 Capability 供用户选择。
60
+
61
+ 使用 **AskUserQuestion** 让用户选择:
62
+ > "请选择要拆解任务的 Capability:
63
+ > - A. `user-auth`(用户认证)- design.md ✅ 已就绪
64
+ > - B. `data-export`(数据导出)- design.md ✅ 已就绪"
65
+
66
+ **路径确认**:
67
+ > "📍 当前操作目标:
68
+ > - **变更**:`<change-name>`
69
+ > - **Capability**:`<capability-name>`
70
+ > - **输入**:`changes/<name>/specs/<capability>/design.md`
71
+ > - **输出**:`changes/<name>/specs/<capability>/tasks.md`"
72
+
73
+ ### 2. 渐进式上下文加载
74
+
75
+ **⛔ 必须严格按以下顺序加载:**
76
+
77
+ ```
78
+ 第 1 层:全局基线
79
+ → openspec/specs/overview.md
80
+
81
+ 第 2 层:宏观背景
82
+ → changes/<name>/proposal.md
83
+
84
+ 第 3 层:精准打击(仅当前 Capability)
85
+ → changes/<name>/specs/<capability>/spec.md
86
+ → changes/<name>/specs/<capability>/design.md
87
+
88
+ ⛔ 隔离红线:禁止读取其他 Capability 的文档!
89
+ ```
90
+
91
+ ### 3. 【关键步骤】读取本地模板文件
92
+
93
+ **必须先读取** `openspec-templates/tasks.md` 作为文档结构模板:
94
+ ```
95
+ 使用 Read 工具读取:openspec-templates/tasks.md
96
+ ```
97
+
98
+ 此模板包含:
99
+ - **任务执行拓扑图(DAG)**
100
+ - 原子任务清单(带 Depends-On 字段)
101
+ - 验证方式
102
+ - 质量红线检查清单
103
+
104
+ **【重要】不得使用 `openspec instructions` 返回的简化 template,必须以 `openspec-templates/tasks.md` 为准。**
105
+
106
+ ### 4. 分析任务范围
107
+
108
+ 统计 design.md 中需要覆盖的实现点,预估任务数量和层级。
109
+
110
+ ### 5. 【交互引导】确认测试策略
111
+
112
+ **❗ 必须主动确认用户的测试策略选择**
113
+
114
+ 首先读取 `proposal.md` 的 YAML frontmatter 中的 `test-strategy` 字段:
115
+
116
+ **若已设置**:向用户确认
117
+ > "🧪 **当前测试策略:[test-strategy]**
118
+ >
119
+ > - `tdd`: 测试驱动 - 测试任务作为实现任务的前置依赖
120
+ > - `impl-first`: 实现优先 - 先实现后测试
121
+ > - `none`: 无测试 - 不生成测试任务
122
+ >
123
+ > 是否继续使用该策略?"
124
+
125
+ **若未设置**:使用 **AskUserQuestion** 工具询问
126
+ > "🧪 **未检测到测试策略配置,请选择:**
127
+ >
128
+ > **A) 测试驱动 (TDD)** - 测试先行
129
+ > - 先生成测试任务骨架,实现任务依赖测试任务
130
+ > - DAG 顺序:测试骨架 → 实现代码 → 测试验证
131
+ > - 适合:核心业务逻辑、质量要求高
132
+ >
133
+ > **B) 实现优先 (Impl-First)** - 代码先行
134
+ > - 先生成实现任务,测试作为验证步骤
135
+ > - DAG 顺序:实现代码 → 测试验证
136
+ > - 适合:UI 层、配置类、快速原型
137
+ >
138
+ > **C) 无测试 (None)** - 仅实现
139
+ > - 不生成测试任务,仅编译检查
140
+ > - 适合:简单配置、文档更新"
141
+
142
+ 根据用户选择设置 `test-strategy`,并更新 proposal.md 的 frontmatter(若未设置)。
143
+
144
+ ### 6. 【交互引导】确认任务拆解策略
145
+
146
+ 向用户确认拆解维度、任务粒度、预计 DAG 层级。
147
+
148
+ **根据 test-strategy 调整 DAG 生成规则:**
149
+
150
+ | test-strategy | DAG 生成规则 |
151
+ |---------------|---------------|
152
+ | `tdd` | 每个实现任务前必须有对应的测试任务,实现任务 Depends-On 测试任务 |
153
+ | `impl-first` | 实现任务在前,测试任务 Depends-On 实现任务 |
154
+ | `none` | 不生成测试任务,仅编译检查 |
155
+
156
+ ### 7. 创建局部 tasks.md(含 DAG 拓扑)
157
+
158
+ **输出路径**:`changes/<name>/specs/<capability>/tasks.md`
159
+
160
+ **以 `openspec-templates/tasks.md` 的结构为骨架**,填充内容。
161
+
162
+ **必须包含**:
163
+ 1. **任务执行拓扑图(DAG)** - 层级关系清晰
164
+ 2. **原子任务清单** - 每个任务包含:
165
+ - `[TASK-XXX-01]` 唯一标识
166
+ - `类型`: 数据层 / 接口层 / UI层 / 测试
167
+ - `依赖`: 前置依赖(无 或 TASK-ID 列表)
168
+ - `状态`: [ ] 未完成
169
+ - 任务描述、输入、输出、实现步骤、验收标准
170
+
171
+ ### 8. 质量红线自检
172
+
173
+ - [ ] 文档结构完全符合 `openspec-templates/tasks.md` 模板
174
+ - [ ] **拓扑图已绘制**:层级关系清晰
175
+ - [ ] **依赖字段已填写**:每个任务的依赖已明确
176
+ - [ ] **无循环依赖**:拓扑中不存在环
177
+ - [ ] 每个任务颗粒度 ≤ 5 分钟
178
+ - [ ] 100% 覆盖 design.md 定义
179
+ - [ ] 每个任务都有验收标准
180
+
181
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
182
+
183
+ ### 9. 确认任务并输出
184
+
185
+ 展示任务概要:
186
+ > "已生成 tasks.md,概要如下:
187
+ > - 任务总数:[N]
188
+ > - DAG 层级数:[M]
189
+ > - 测试策略:[strategy]
190
+ >
191
+ > 请确认:
192
+ > - A. 确认无误
193
+ > - B. 需要调整拆解粒度
194
+ > - C. 需要修改依赖关系"
195
+
196
+ 最终输出:
197
+ - 文档路径
198
+ - 下一步提示:"运行 `/opsx:check <name>` 执行质量检查,或 `/opsx:apply <name> <capability>` 开始实施"
199
+
200
+ ---
201
+
202
+ ## Guardrails
203
+
204
+ - **必须以 `openspec-templates/tasks.md` 为模板基准**
205
+ - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → spec.md → design.md 顺序
206
+ - **⛔ 隔离红线**:绝对禁止读取同级其他 Capability 的文档
207
+ - **⛔ DAG 必须完整**:每个任务必须有依赖字段
208
+ - **⛔ 无循环依赖**:DAG 中不允许存在环
209
+ - 任务颗粒度宁可过细也不要过粗
210
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作
211
+ - **⛔ 单阶段原则:完成 tasks.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:check` 或 `/opsx:apply`,**绝对禁止自动执行 apply/check 等后续阶段**。每个阶段必须由用户主动触发。