kld-sdd 2.4.14 → 2.4.16

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.
@@ -1,570 +0,0 @@
1
- ---
2
- name: OPSX: Design
3
- description: "创建局部技术实现方案 - 针对单一 Capability 的设计文档"
4
- argument-hint: "[change-name] [capability-name] [上下文文件...]"
5
- ---
6
-
7
- 创建 **design.md** - 针对单一 Capability 的局部技术实现方案(渐进式上下文加载)。
8
-
9
- > **🖥️ 跨平台执行规则**
10
- > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
11
- > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
12
- > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
13
- > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
14
- > **📊 Telemetry(必做,不得跳过)**
15
- > 在终端执行(必须成功):`node skywalk-sdd/log.cjs start --command=design --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
16
-
17
- > **⚠️ 阶段边界提示**
18
- >
19
- > 当前处于 **Design(设计)阶段**,此阶段:
20
- > - ✅ **允许**:创建/编辑 design.md 文档、读取代码/文档作为上下文分析
21
- > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
22
- > - ⛔ **单阶段原则**:完成 design.md 后**必须立即停止**,等待用户主动触发下一阶段
23
- >
24
- > 代码实现将在 `/opsx:apply` 阶段进行。
25
- > **完成本阶段后,绝对禁止自动继续执行 task 等后续阶段。**
26
-
27
- > **⚠️ 渐进式上下文加载原则**
28
- >
29
- > - 本命令针对**单一 Capability** 执行设计
30
- > - **输入路径**:`changes/<name>/specs/<capability>/spec.md`
31
- > - **输出路径**:`changes/<name>/specs/<capability>/design.md`
32
- > - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的 spec 或 design
33
-
34
- ---
35
-
36
- **前置要求**: 已运行 `/opsx:spec` 或对应 capability 的 spec.md 已存在
37
-
38
- **执行步骤**
39
-
40
- 0. **【Telemetry 必做】记录阶段开始**
41
-
42
- 在终端执行(若命令失败必须中止本阶段,不得跳过):
43
- ```bash
44
- node skywalk-sdd/log.cjs start --command=design --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
45
- ```
46
- 保存输出 JSON 中的 `event_id`,供阶段结束使用。
47
-
48
- 1. **【交互引导】确认变更名称和 Capability**
49
-
50
- **步骤 1a - 确认变更名称**:
51
- 若未提供 change-name,列出当前所有变更供用户选择:
52
- ```bash
53
- openspec list
54
- ```
55
-
56
- **步骤 1b - 确认 Capability**:
57
- 若未提供 capability-name,读取 `proposal.md` 中定义的 Capabilities 列表:
58
- ```bash
59
- # 读取 changes/<name>/proposal.md,解析其中的 Capabilities 章节
60
- ```
61
-
62
- 使用 **AskUserQuestion** 让用户选择要设计的 Capability:
63
- > "请选择要设计的 Capability:
64
- > - A. user-auth(用户认证)
65
- > - B. user-profile(用户资料)
66
- > - C. data-export(数据导出)
67
- > - D. 全部(将依次执行每个 Capability 的设计)"
68
-
69
- **【路径确认】**:
70
- > "📍 当前操作目标:
71
- > - **变更**:`<change-name>`
72
- > - **Capability**:`<capability-name>`
73
- > - **输入**:`changes/<name>/specs/<capability>/spec.md`
74
- > - **输出**:`changes/<name>/specs/<capability>/design.md`"
75
-
76
- 2. **【渐进式上下文加载】严格按顺序读取文档**
77
-
78
- > **⛔ 上下文加载红线**:必须严格按以下顺序加载,禁止一次性加载所有 Capability!
79
-
80
- **加载顺序**(由全局到局部):
81
-
82
- ```
83
- ┌─────────────────────────────────────────────────────────┐
84
- │ 第 1 层:全局基线(必读) │
85
- │ → openspec/specs/overview.md │
86
- │ (全局数据字典、接口规范、共享实体) │
87
- └─────────────────────────────────────────────────────────┘
88
-
89
- ┌─────────────────────────────────────────────────────────┐
90
- │ 第 2 层:宏观背景(必读) │
91
- │ → changes/<name>/proposal.md │
92
- │ (业务意图、影响范围、依赖关系) │
93
- └─────────────────────────────────────────────────────────┘
94
-
95
- ┌─────────────────────────────────────────────────────────┐
96
- │ 第 3 层:精准打击(仅读当前 Capability) │
97
- │ → changes/<name>/specs/<capability>/spec.md │
98
- │ (当前能力的技术契约) │
99
- │ │
100
- │ ⛔ 隔离红线:禁止读取其他 Capability 的 spec.md! │
101
- └─────────────────────────────────────────────────────────┘
102
- ```
103
-
104
- **执行加载**:
105
- ```
106
- 使用 Read 工具依次读取:
107
- 1. openspec/specs/overview.md(若不存在则跳过,记录警告)
108
- 2. changes/<name>/proposal.md
109
- 3. changes/<name>/specs/<capability>/spec.md(必须存在)
110
- ```
111
-
112
- **若 spec.md 不存在**:
113
- > "❌ 当前 Capability 的 spec.md 不存在,请先运行:
114
- > `/opsx:spec <change-name> <capability-name>`"
115
-
116
- 3. **【上下文加载】识别并读取用户提供的文件**
117
-
118
- **自动识别上下文文件**:
119
- 若用户在命令中指定了文件路径(如 `/opsx:design atp-calc ./算法.md ./src/`),
120
- 或在对话中附加/引用了文件,**必须自动读取这些文件**。
121
-
122
- **文件识别规则**:
123
- - 以 `.md`、`.java`、`.ts`、`.py` 等扩展名结尾 → 识别为文件路径
124
- - 以 `/` 或 `./` 开头 → 识别为路径
125
- - 目录路径 → 递归读取目录下的文件
126
-
127
- **上下文类型与用途**:
128
- | 文件类型 | 用途 | 用法 |
129
- |---------|------|------|
130
- | 算法文档 (.md) | 提取算法逻辑、伪代码 | 生成 Internal Logic |
131
- | 代码文件 (.java/.ts) | 理解现有实现 | 提取方法签名/逻辑 |
132
- | 测试数据 (.xml/.json) | 理解边界条件 | 补充边界处理逻辑 |
133
-
134
- **示例**:
135
- ```
136
- /opsx:design atp-calc atp-calculation ./ATP引擎算法逻辑.md
137
- /opsx:design atp-calc atp-calculation ./erp-algorithm-atp/src/main/java/
138
- ```
139
-
140
- 4. **【交互引导】上下文补充提示**
141
-
142
- **若用户未提供任何上下文文件**,AI 分析 spec.md 后,**主动提示用户补充**:
143
-
144
- **【关键】具体化建议**:
145
- AI 必须**引用 spec.md 中的具体内容**给出建议:
146
- ```
147
- ❌ 错误:"建议提供算法说明"
148
- ✅ 正确:"spec.md 包含《正差反差计算》场景,建议提供该算法的详细逻辑说明"
149
- ✅ 正确:"spec.md 提到要迁移 erp-algorithm-atp,建议提供该项目的源代码"
150
- ```
151
-
152
- **主动提示模板**:
153
- > "📌 **建议提供更丰富的上下文信息**:
154
- >
155
- > spec.md 中包含:
156
- > - **《[XX算法/场景]》** - 建议提供详细算法逻辑说明
157
- > - **《[XX现有项目]》** - 建议提供参考实现代码
158
- >
159
- > 您可以:
160
- > - **在命令后追加文件路径**:`/opsx:design atp-calc ./算法.md ./src/`
161
- > - **在对话中上传文件**或粘贴内容
162
- > - **告诉我文件位置**,我会自动读取
163
- >
164
- > 或者选择:
165
- > - A. 基于现有信息继续(伪代码可能不完整)
166
- > - B. 已提供全部信息"
167
-
168
- 5. **【关键】开发规范与技术架构上下文检测**
169
-
170
- > **⚠️ 技术栈无关化原则**
171
- >
172
- > Design 阶段生成的技术方案需要明确的开发规范和技术架构指导,否则可能产出与项目实际不符的设计。
173
-
174
- **AI 必须检测上下文中是否包含以下信息**:
175
-
176
- | 检测维度 | 典型内容 | 检测信号 |
177
- |---------|----------|----------|
178
- | **技术架构** | 分层架构、微服务边界、模块划分 | 是否提及 Controller/Service/Repository、API Gateway 等 |
179
- | **开发规范** | 代码规范、命名约定、设计模式 | 是否有编码规范文档、架构规范 |
180
- | **技术选型** | 框架、数据库、中间件 | 是否明确 Spring Boot / React / MySQL 等技术栈 |
181
- | **项目约束** | 性能要求、安全规范、兼容性 | 是否有非功能性需求说明 |
182
-
183
- **检测来源**:
184
- - `overview.md` 中的技术架构章节
185
- - `proposal.md` 中的技术约束
186
- - 用户提供的上下文文件
187
- - 对话中附加的内容
188
-
189
- **【交互引导】若检测到开发规范/技术架构缺失**:
190
-
191
- > "⚠️ **开发规范与技术架构上下文检测**
192
- >
193
- > 当前上下文中**未检测到**以下关键信息:
194
- > - [ ] **技术架构**:未发现分层架构、模块边界等描述
195
- > - [ ] **开发规范**:未发现代码规范、设计模式约定
196
- > - [ ] **技术选型**:未明确使用的框架、数据库等技术栈
197
- >
198
- > 缺少这些信息可能导致设计方案与项目实际架构不符。
199
- >
200
- > 请选择:
201
- > - A. **补充规范文档** - 提供架构设计文档、开发规范等
202
- > - B. **口头说明** - 简要描述项目技术栈和架构风格
203
- > - C. **确认缺失无影响** - 当前设计不涉及技术选型细节,可继续
204
- > - D. **记录到 `overview.md`** - 我来协助补充全局技术架构"
205
-
206
- 6. **【关键步骤】读取本地模板文件**
207
-
208
- **必须先读取** `openspec-templates/design.md` 作为文档结构模板:
209
- ```
210
- 使用 Read 工具读取:openspec-templates/design.md
211
- ```
212
-
213
- 此模板定义了局部设计文档的完整结构:
214
- - **字段完整性追溯表**(防止字段丢失)
215
- - 局部前端设计
216
- - 局部后端接口设计
217
- - 局部数据模型
218
- - 质量红线检查清单
219
-
220
- 7. **获取项目上下文(可选)**
221
- ```bash
222
- openspec instructions design --change "<name>" --json
223
- ```
224
- 解析返回的 JSON,仅获取:
225
- - `context`:项目背景约束(**仅供参考,不要写入文档**)
226
- - `rules`:文档编写规则(**仅供参考,不要写入文档**)
227
-
228
- **注意**:忽略返回的 `template` 和 `outputPath`,使用本命令指定的路径。
229
-
230
- 8. **【交互引导】确认设计范围和类型**
231
-
232
- **首先确认设计类型**(使用 AskUserQuestion):
233
- > "请选择本次设计的范围:
234
- > - A. **仅前端**:UI 组件、状态管理、路由、交互
235
- > - B. **仅后端**:模块设计、接口、数据模型
236
- > - C. **前后端全栈**:完整的前后端设计
237
- > - D. **根据 spec.md 自动判断**"
238
-
239
- **然后确认设计边界**:
240
- > "基于 spec.md 和您的选择,本次 design.md 将设计:
241
- > - **Capability**:`<capability-name>`
242
- > - **设计类型**:[前端/后端/全栈]
243
- > - **前端**:[X] 个页面/组件、[X] 个状态(如适用)
244
- > - **后端**:[X] 个模块、[X] 个接口(如适用)
245
- > - **数据模型**:[X] 个实体
246
- >
247
- > 请确认:
248
- > - A. 确认范围,开始设计
249
- > - B. 调整设计类型或模块划分
250
- > - C. 补充业务约束"
251
-
252
- 9. **【AI 分析澄清】识别设计风险点和上下文缺失**
253
-
254
- 分析 spec.md 内容,识别需要重点设计或澄清的点:
255
-
256
- **常见风险点**:
257
- - 高性能要求下的数据一致性保障
258
- - 复杂业务规则的状态机设计
259
- - 第三方依赖的降级策略
260
-
261
- **上下文缺失检测**:
262
- - 依赖模块的接口定义是否完整?
263
- - 复用模块的约束条件是否明确?
264
- - overview.md 中的全局规范是否已遵守?
265
-
266
- **【主动询问机制】**:
267
- 发现潜在风险或上下文缺失时:
268
- > "spec.md 要求 '[约束]',但以下信息不完整:
269
- > - [缺失1]:需要补充 [具体内容]
270
- > - [缺失2]:需要确认 [具体问题]
271
- >
272
- > 请选择:
273
- > - A. 现在补充信息
274
- > - B. 记录到 `clarifications.md` 待后续处理
275
- > - C. 基于假设继续设计(将在文档中标注假设)"
276
-
277
- 10. **创建局部 design.md**
278
-
279
- **输出路径**:`changes/<name>/specs/<capability>/design.md`
280
-
281
- **以 `openspec-templates/design.md` 的结构为骨架**,填充内容:
282
-
283
- **【质量红线】生成的 design.md 必须:**
284
- - 标题包含 Capability 名称
285
- - 包含**字段完整性追溯表**(用户输入字段 vs 设计输出字段)
286
- - 遵循 overview.md 的全局规范
287
- - 仅设计当前 Capability,不越权设计其他模块
288
-
289
- ```markdown
290
- # 局部技术实现方案 - [Capability 名称]
291
-
292
- > **⚠️ 边界声明**:本设计仅服务于当前 Capability,严禁越权设计。
293
-
294
- ## 1. 字段完整性追溯表
295
- > **⛔ 核心红线**:用户在 Spec 中输入的所有字段必须在此表中体现,严禁无故丢弃!
296
-
297
- ### 1.1 字段映射表
298
-
299
- | 序号 | 用户输入字段 | 设计输出字段 | 字段类型 | 状态 | 理由说明 |
300
- |-----|-------------|-------------|---------|------|--------|
301
- | | | | | ✅ 保留 | |
302
-
303
- **状态说明**:
304
- - ✅ 保留:字段名和类型与用户输入一致
305
- - ⚠️ 重命名:字段重命名(必须说明理由)
306
- - 🔀 合并:多字段合并为一个(必须说明理由)
307
- - ❌ 移除:字段被移除(必须有充分理由且经用户确认)
308
-
309
- ### 1.2 完整性自检
310
- - **用户输入字段总数**:[X] 个
311
- - **设计输出字段总数**:[X] 个
312
- - **差异说明**:[如有差异必须详细说明]
313
-
314
- ---
315
-
316
- ## 2. 现有代码锚点
317
- > AI 无法知道“要改哪里”,如果涉及对现有代码的修改,**请用户补充完整**。
318
-
319
- ### 2.1 需修改的现有文件
320
- | 文件路径 | 类/模块名 | 需修改的方法/函数 | 修改类型 | 说明 |
321
- |---------|----------|----------------|---------|------|
322
- | | | | 扩展逻辑/新增参数/重构抽取/替换实现 | |
323
-
324
- ### 2.2 需新建的文件
325
- | 文件路径(建议) | 类/模块名 | 职责 | 继承/实现 | 说明 |
326
- |------------|----------|------|---------|------|
327
- | | | | | |
328
-
329
- ### 2.3 现有逻辑约束
330
- | 约束项 | 当前现状 | 对本设计的影响 | 应对策略 |
331
- |-------|---------|-------------|--------|
332
- | | | | 遵循/适配/协商修改 |
333
-
334
- ---
335
-
336
- ## 3. 局部前端设计
337
- ### 3.1 页面/组件结构
338
- | 组件名 | 类型 | 职责 | 依赖组件 |
339
- |-------|------|------|--------|
340
- | | 页面/容器/展示 | | |
341
-
342
- ### 3.2 状态管理
343
- | 状态名 | 数据类型 | 初始值 | 更新时机 |
344
- |-------|---------|-------|--------|
345
-
346
- ### 3.3 路由设计
347
- | 路由路径 | 页面组件 | 权限要求 | 说明 |
348
- |---------|---------|---------|------|
349
-
350
- ### 3.4 前后端交互
351
- | 前端操作 | 调用接口 | 请求参数 | 响应处理 |
352
- |---------|---------|---------|--------|
353
-
354
- ---
355
-
356
- ## 4. 局部后端接口设计
357
- ### 4.1 接口清单
358
- | 接口名称 | 路径 | 方法 | 说明 |
359
- |---------|------|------|------|
360
-
361
- ### 4.2 接口详细设计
362
- #### 接口 1:[接口名称]
363
- - 路径:`/api/v1/xxx`
364
- - 方法:GET/POST
365
- **请求参数**:
366
- | 参数名 | 类型 | 必填 | 说明 | 约束 |
367
- |-------|------|------|------|------|
368
- **业务逻辑**:1. ... 2. ... 3. ...
369
-
370
- ---
371
-
372
- ## 5. 局部数据模型
373
- ### 5.1 数据表设计
374
- #### 表名:[table_name]
375
- | 字段名 | 数据类型 | 必填 | 默认值 | 说明 | 索引 |
376
- |-------|---------|------|--------|------|------|
377
-
378
- ### 5.2 缓存设计
379
- | 缓存 Key 模式 | 数据类型 | 过期时间 | 更新策略 |
380
- |--------------|---------|---------|--------|
381
-
382
- ### 5.3 数据流转图
383
- ```
384
- [输入] --> [处理] --> [存储] --> [输出]
385
- ```
386
-
387
- ---
388
-
389
- ## 6. 模块内部逻辑
390
- ### 6.1 核心流程
391
- ```
392
- [步骤1] --> [步骤2] --> [步骤3]
393
- ```
394
- ### 6.2 状态机(如有)
395
- ### 6.3 关键算法(如有)
396
-
397
- ---
398
-
399
- ## 7. 外部依赖与集成
400
- > AI 无法自动推断项目的外部依赖,**请用户补充完整**。
401
-
402
- ### 7.1 外部服务依赖
403
- | 依赖服务 | 用途 | 调用方式 | 超时设置 | 失败影响 | 降级方案 |
404
- |---------|------|---------|---------|---------|--------|
405
-
406
- ### 7.2 第三方 API / SDK
407
- | 名称 | 版本/文档链接 | 用途 | 鉴权方式 | 费用/限流 | 备注 |
408
- |------|-------------|------|---------|----------|------|
409
-
410
- ### 7.3 中间件 & 基础设施
411
- | 组件 | 用途 | 使用方式 | 关键配置 | 备注 |
412
- |------|------|---------|--------|------|
413
-
414
- ### 7.4 内部跨模块依赖
415
- | 依赖模块 | 调用接口/方法 | 输入 | 预期输出 | 当前状态 |
416
- |---------|-------------|------|---------|--------|
417
-
418
- ### 7.5 环境 & 权限要求
419
- | 依赖项 | 说明 | 获取方式 |
420
- |-------|------|--------|
421
-
422
- ---
423
-
424
- ## 8. 异常处理
425
- ### 8.1 异常分类
426
- | 异常类型 | 触发条件 | 处理策略 | 用户感知 |
427
- |---------|---------|---------|--------|
428
-
429
- ### 8.2 重试与降级
430
- - 重试次数:
431
- - 降级策略:
432
-
433
- ---
434
-
435
- ## 9. 局部配置
436
- ### 9.1 业务配置
437
- | 配置项 | 配置 Key | 默认值 | 说明 |
438
- |-------|---------|-------|------|
439
-
440
- ### 9.2 开关配置
441
- | 开关 | 用途 | 默认状态 |
442
- |-----|------|--------|
443
-
444
- ---
445
-
446
- > **质量红线检查清单**
447
- > - [ ] **现有代码锚点已标注**:需修改的文件、类、方法已明确(或确认为纯新建)
448
- > - [ ] **现有约束已识别**:影响设计的现有系统约束已列出并有应对策略
449
- > - [ ] **字段完整性**:字段追溯表已完成,无无故丢弃字段
450
- > - [ ] **边界遵守**:无越权设计其他 Capability 的逻辑
451
- > - [ ] **全局遵守**:遵循 overview.md 的数据字典和接口规范
452
- > - [ ] 前端设计已完成(组件、状态、路由、交互)
453
- > - [ ] 后端接口已完成(路径、参数、响应、逻辑)
454
- > - [ ] 数据模型已完成(表结构、索引、缓存)
455
- > - [ ] **外部依赖已明确**:所有外部服务、第三方 API、中间件、跨模块依赖已列出
456
- > - [ ] **环境权限已确认**:所需环境变量、密钥、网络策略已说明
457
- > - [ ] 异常处理策略已定义(含外部依赖失败的降级方案)
458
- > - [ ] 包含足够的局部细节支持任务拆解
459
- ```
460
-
461
- 11. **质量红线自检**
462
-
463
- 写入文档前,逐项确认:
464
- - [ ] 文档结构完全符合 `openspec-templates/design.md` 模板
465
- - [ ] **字段完整性**:追溯表已完成,无无故丢弃字段
466
- - [ ] **边界遵守**:无越权设计其他 Capability 的逻辑
467
- - [ ] **全局遵守**:遵循 overview.md 的数据字典和接口规范
468
- - [ ] 前端设计已完成(组件、状态、路由、交互)
469
- - [ ] 后端接口已完成(路径、参数、响应、逻辑)
470
- - [ ] 数据模型已完成(表结构、索引、缓存)
471
-
472
- 12. **【新增】算法正确性预检查**
473
-
474
- **❗ 此步骤是防止伪代码错误的关键门禁**
475
-
476
- #### 9.1 伪代码自洽性检查
477
-
478
- | 检查项 | 要求 | 未通过处理 |
479
- |---------|------|------------|
480
- | 变量声明 | 伪代码中的变量在使用前已赋值 | ❌ 拒绝通过 |
481
- | 循环边界 | for 循环的起始/结束条件明确 | ❌ 拒绝通过 |
482
- | 分支覆盖 | switch 有 default,if 有 else | ❗ 警告 |
483
- | 数据来源 | 关键变量有来源说明 | ❗ 警告 |
484
-
485
- #### 9.2 与 spec.md 的一致性检查
486
-
487
- - [ ] 伪代码中的参数类型与 spec.md 一致
488
- - [ ] 伪代码中的返回值与 spec.md 响应结构一致
489
- - [ ] 伪代码中的业务逻辑覆盖所有 Scenario
490
-
491
- #### 9.3 算法完整性检查(针对计算类方法)
492
-
493
- - [ ] 伪代码是否说明了数据的**来源**(入参、成员变量、外部调用)
494
- - [ ] 伪代码是否说明了数据的**去脉**(返回值、写回、副作用)
495
- - [ ] 伪代码是否说明了**边界情况**的处理(空列表、零值、极值)
496
-
497
- **【模糊伪代码示例】**:
498
- ```markdown
499
- ❌ 模糊: "累加计算数量(需求取负数)"
500
-
501
- ✅ 清晰: "remaining = remaining + data.getCalcQuantity()
502
- // 注意:calcQuantity 对需求数据已是负数(由 setCalcQuantity 设置)无需再取反"
503
- ```
504
-
505
- **【检查报告格式】**:
506
- ```markdown
507
- ### 算法正确性预检查结果
508
-
509
- | 检查项 | 状态 | 说明 |
510
- |---------|------|------|
511
- | 变量声明 | ✅ 通过 | - |
512
- | 循环边界 | ✅ 通过 | - |
513
- | 分支覆盖 | ⚠️ 警告 | setCalcQuantity 缺少 default 分支 |
514
- | 数据来源 | ❌ 未通过 | calcZhengchaFucha 未说明 calcQuantity 已为负数 |
515
- ```
516
-
517
- **【未通过处理】**:
518
- > "⚠️ **算法正确性预检查发现以下问题**:
519
- > - calcZhengchaFucha 伪代码未说明 calcQuantity 已为负数,可能导致实现时重复取负
520
- >
521
- > 请选择:
522
- > - A. 补充伪代码注释后继续
523
- > - B. 提供更详细的上下文文档
524
- > - C. 标记为 '已知风险' 继续"
525
-
526
- **如有任意一项未满足,重新生成对应章节,直至全部通过。**
527
-
528
- 13. **【交互引导】确认设计并输出结果**
529
-
530
- 生成文档后,向用户展示概要:
531
- > "已生成 `<capability>` 的 design.md,概要如下:
532
- > - **Capability**:`<capability-name>`
533
- > - **输出路径**:`changes/<name>/specs/<capability>/design.md`
534
- > - **字段完整性**:[X] 个输入字段 → [X] 个输出字段(✅ 完整 / ⚠️ 有差异)
535
- > - **设计类型**:[前端/后端/全栈]
536
- > - **前端**:[X] 个页面/组件(如适用)
537
- > - **后端**:[X] 个接口(如适用)
538
- >
539
- > 请确认:
540
- > - A. 确认无误,继续创建 tasks.md
541
- > - B. 需要调整设计
542
- > - C. 继续设计下一个 Capability"
543
-
544
- **下一步提示**:
545
- - 若还有其他 Capability 未设计:
546
- > "运行 `/opsx:design <name> <next-capability>` 继续设计下一个 Capability"
547
- - 若所有 Capability 已设计完成:
548
- > "运行 `/opsx:task <name> <capability>` 拆解实现任务"
549
-
550
- ---
551
-
552
- **护栏规则**
553
-
554
- - **必须以 `openspec-templates/design.md` 为模板基准**
555
- - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → 当前 spec.md 顺序加载
556
- - **⛔ 隔离红线**:绝对禁止读取同级其他 Capability 的 spec.md 或 design.md
557
- - **⛔ 字段完整性**:必须完成字段追溯表,禁止无故丢弃用户输入字段
558
- - **⛔ 边界遵守**:本设计仅服务于当前 Capability,不越权设计其他模块
559
- - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
560
- - 文档写入后验证文件确实存在于输出路径
561
- - **⛔ 阶段边界**:本阶段禁止执行任何代码创建/修改操作
562
- - **⛔ 单阶段原则:完成 design.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:task`,**绝对禁止自动执行 task/apply 等后续阶段**。每个阶段必须由用户主动触发。
563
-
564
- > **🖥️ 跨平台执行规则**
565
- > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
566
- > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
567
- > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
568
- > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
569
- > **📊 Telemetry(必做,不得跳过)**
570
- > 在终端执行(必须成功):`node skywalk-sdd/log.cjs end --event-id=<开头记录的event_id> --command=design --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="一句话摘要"`
@@ -1,99 +0,0 @@
1
- ---
2
- name: OPSX: Explore
3
- description: "浏览变更 - 查看所有变更状态和 SDD 文档完整性概览"
4
- argument-hint: "[change-name]"
5
- ---
6
-
7
- 浏览变更状态和文档链进度 - 快速掌握项目中所有变更的 SDD 文档完整性,并引导下一步操作。
8
-
9
- > **🖥️ 跨平台执行规则**
10
- > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
11
- > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
12
- > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
13
- > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
14
- > **📊 Telemetry(必做,不得跳过)**
15
- > 在终端执行(必须成功):`node skywalk-sdd/log.cjs start --command=explore --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
16
-
17
- ---
18
-
19
- **输入**: `/opsx:explore`(可选:后跟变更名称查看详情)
20
-
21
- **执行步骤**
22
-
23
- 0. **【Telemetry 必做】记录阶段开始**
24
-
25
- 在终端执行(若命令失败必须中止本阶段,不得跳过):
26
- ```bash
27
- node skywalk-sdd/log.cjs start --command=explore --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
28
- ```
29
- 保存输出 JSON 中的 `event_id`,供阶段结束使用。
30
-
31
- 1. **获取所有变更列表**
32
-
33
- ```bash
34
- openspec list
35
- ```
36
-
37
- 若没有任何变更,提示:
38
- > "当前项目还没有任何变更。运行 `/opsx:propose <变更描述>` 开始第一个变更。"
39
-
40
- 2. **检查每个变更的 SDD 文档完整性**
41
-
42
- 对每个变更,检查以下文件是否存在:
43
- - `openspec/changes/<name>/propose.md` 或 `proposal.md`(P)
44
- - `openspec/changes/<name>/spec.md` 或 `specs.md`(S)
45
- - `openspec/changes/<name>/design.md`(D)
46
- - `openspec/changes/<name>/task.md` 或 `tasks.md`(T)
47
-
48
- 同时获取每个变更状态:
49
- ```bash
50
- openspec status --change "<name>" --json
51
- ```
52
-
53
- 3. **展示变更概览表**
54
-
55
- > "📋 项目变更概览(P=提案 S=规格 D=设计 T=任务):
56
- >
57
- > | 变更名称 | P | S | D | T | openspec状态 | 建议下一步 |
58
- > |---------|---|---|---|---|------------|---------|
59
- > | add-user-auth | ✅ | ✅ | ✅ | ❌ | PENDING | `/opsx:task add-user-auth` |
60
- > | payment-refund | ✅ | ❌ | ❌ | ❌ | PENDING | `/opsx:spec payment-refund` |
61
- > | points-exchange | ✅ | ✅ | ✅ | ✅ | IMPLEMENTING | `/opsx:check points-exchange` |"
62
-
63
- 4. **【交互引导】选择操作**
64
-
65
- > "请选择操作:
66
- > - A. 查看变更详情:输入变更名称
67
- > - B. 创建新变更:运行 `/opsx:propose`
68
- > - C. 执行质量检查:运行 `/opsx:check <name>`
69
- > - D. 申请实施:运行 `/opsx:apply <name>`
70
- > - E. 退出浏览"
71
-
72
- 5. **若用户选择查看详情(选 A)**
73
-
74
- 展示选定变更的详细信息:
75
- ```bash
76
- openspec status --change "<name>" --json
77
- ```
78
-
79
- 展示:
80
- - 变更描述和创建时间
81
- - 各文档状态(存在/缺失/文件大小)
82
- - openspec 内部状态(`applyRequires` 列表)
83
- - 建议下一步操作和对应命令
84
-
85
- ---
86
-
87
- **护栏规则**
88
-
89
- - explore 是只读操作,不修改任何文件
90
- - 发现文档缺失时,推荐对应命令但不自动执行
91
- - 若某变更 applyRequires 中有未完成项,在概览表中以 ⚠️ 标注
92
-
93
- > **🖥️ 跨平台执行规则**
94
- > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
95
- > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
96
- > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
97
- > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
98
- > **📊 Telemetry(必做,不得跳过)**
99
- > 在终端执行(必须成功):`node skywalk-sdd/log.cjs end --event-id=<开头记录的event_id> --command=explore --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success --summary="浏览结果摘要"`