kld-sdd 1.0.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.

Potentially problematic release.


This version of kld-sdd might be problematic. Click here for more details.

@@ -0,0 +1,164 @@
1
+ ---
2
+ name: OPSX: Design
3
+ description: "创建技术实现方案文档 - 定义业务维度的具体实现"
4
+ argument-hint: "[change-name]"
5
+ ---
6
+
7
+ 创建 **design.md** - 业务维度的技术实现方案文档(聚焦 How,但不是全局架构选型)。
8
+
9
+ ---
10
+
11
+ **输入**: `/opsx:design` 后跟变更名称(kebab-case)
12
+
13
+ **前置要求**: 已运行 `/opsx:spec` 或 spec.md 已存在
14
+
15
+ **执行步骤**
16
+
17
+ 1. **确认变更名称**
18
+
19
+ 若未提供,列出当前所有变更供用户选择:
20
+ ```bash
21
+ openspec list
22
+ ```
23
+ 若 spec.md 不存在,提示用户先运行 `/opsx:spec <name>`。
24
+
25
+ 2. **读取前置文档**
26
+
27
+ 按以下顺序读取已存在的文档,作为 design.md 的输入上下文:
28
+ - `propose.md` / `proposal.md`(业务背景)
29
+ - `spec.md` / `specs.md`(技术契约)—— **必须存在**
30
+
31
+ 3. **获取 design artifact 的编写指导**
32
+ ```bash
33
+ openspec instructions design --change "<name>" --json
34
+ ```
35
+ 解析返回的 JSON,获取:
36
+ - `context`:项目背景约束(**仅供你参考,不要写入文档**)
37
+ - `rules`:文档编写规则(**仅供你参考,不要写入文档**)
38
+ - `template`:文档结构模版(用于生成文档的骨架)
39
+ - `outputPath`:文档输出路径
40
+ - `dependencies`:前置依赖文件路径(先读取)
41
+
42
+ 4. **读取已有依赖文档**
43
+
44
+ 按 `dependencies` 中的路径读取已完成文件,作为编写参考。
45
+
46
+ 5. **创建 design.md**
47
+
48
+ 以 `template` 为骨架、`context` 和 `rules` 为约束,写入以下内容到 `outputPath`:
49
+
50
+ **【质量红线】生成文档必须聚焦本业务落地细节,不得写全局架构:**
51
+
52
+ #### 1. 总体设计
53
+
54
+ **1.1 设计目标**
55
+ 本设计要解决的具体问题
56
+
57
+ **1.2 核心流程**
58
+ ```
59
+ [步骤1] --> [步骤2] --> [步骤3]
60
+ | |
61
+ v v
62
+ [分支A] [分支B]
63
+ ```
64
+
65
+ **1.3 时序图**
66
+ ```
67
+ 参与者A -> 参与者B: 消息描述
68
+ 参与者B -> 参与者C: 消息描述
69
+ 参与者C --> 参与者B: 响应
70
+ 参与者B --> 参与者A: 响应
71
+ ```
72
+
73
+ #### 2. 模块设计【每个模块必须有明确职责】
74
+
75
+ **模块A:XXX**
76
+ - 职责:
77
+ - 输入:
78
+ - 输出:
79
+ - 核心逻辑:
80
+
81
+ #### 3. 接口调用关系【质量红线:必须明确到接口级别】
82
+
83
+ **3.1 内部接口调用**
84
+ | 调用方 | 被调用接口 | 调用方式 | 用途 | 失败处理 |
85
+ |-------|-----------|---------|------|---------|
86
+ | | | HTTP/RPC/本地 | | |
87
+
88
+ **3.2 复用模块**
89
+ | 复用模块 | 复用能力 | 集成方式 | 约束条件 |
90
+ |---------|---------|---------|---------|
91
+ | | | | |
92
+
93
+ **3.3 第三方服务调用**
94
+ | 服务 | 接口 | 用途 | 超时配置 | 降级策略 |
95
+ |-----|------|------|---------|---------|
96
+ | | | | | |
97
+
98
+ #### 4. 数据设计【质量红线:必须到字段/Key 级别】
99
+
100
+ **数据库表:xxx_table**
101
+ | 字段名 | 类型 | 长度 | 必填 | 默认值 | 说明 | 索引 |
102
+ |-------|------|------|------|--------|------|------|
103
+ | id | BIGINT | | 是 | 自增 | 主键 | PK |
104
+ | | | | | | | |
105
+
106
+ 索引设计:主键 / 唯一索引 / 普通索引
107
+
108
+ **缓存设计**
109
+ | 缓存Key | 数据类型 | 过期时间 | 更新策略 | 说明 |
110
+ |--------|---------|---------|---------|------|
111
+ | | | | | |
112
+
113
+ #### 5. 异常处理
114
+
115
+ **5.1 异常分类**
116
+ | 异常类型 | 触发条件 | 处理策略 | 用户感知 |
117
+ |---------|---------|---------|---------|
118
+ | 业务异常 | | | |
119
+ | 系统异常 | | | |
120
+ | 第三方异常 | | | |
121
+
122
+ **5.2 重试策略**
123
+ - 重试次数:
124
+ - 重试间隔:
125
+ - 退避策略:
126
+
127
+ #### 6. 关键算法/逻辑(如有)
128
+
129
+ 算法描述 / 状态机(所有可能的状态和事件转换)
130
+
131
+ #### 7. 局部配置
132
+ | 配置项 | 配置Key | 默认值 | 说明 |
133
+ |-------|---------|-------|------|
134
+ | | | | |
135
+
136
+ 6. **质量红线自检**
137
+
138
+ 写入文档前,逐项确认:
139
+ - [ ] 无全局中间件或框架选型内容(聚焦本业务)
140
+ - [ ] 内部接口调用已明确(接口名、调用方式、失败处理)
141
+ - [ ] 复用模块已明确列出
142
+ - [ ] 数据库表结构已详细到字段级别(类型、索引)
143
+ - [ ] 缓存设计已详细到 Key 级别(过期、更新策略)
144
+ - [ ] 异常处理策略已定义(业务/系统/第三方三类)
145
+ - [ ] 内容足够支撑 task.md 的原子任务拆解
146
+
147
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
148
+
149
+ 7. **显示输出结果**
150
+
151
+ 完成后显示:
152
+ - 文档路径(来自 `outputPath`)
153
+ - 模块划分摘要(模块名 + 职责)
154
+ - 下一步提示:"运行 `/opsx:task` 拆解实现任务"
155
+
156
+ ---
157
+
158
+ **Guardrails**
159
+
160
+ - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
161
+ - 全局架构约束由框架 Skill 兜底,此文档不要重复写
162
+ - 设计必须可验证:每个设计点都能在代码中找到对应
163
+ - 状态转换必须完整:所有可能的状态和事件都要覆盖
164
+ - 文档写入后验证文件确实存在于 `outputPath`
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: OPSX: Propose
3
+ description: "创建业务意图文档 - 定义变更的 Why 和上下文总览"
4
+ argument-hint: "[change-name-or-description]"
5
+ ---
6
+
7
+ 创建 **propose.md** - 业务意图与上下文总览文档(聚焦 Why)。
8
+
9
+ ---
10
+
11
+ **输入**: `/opsx:propose` 后跟变更名称(kebab-case)或需求描述
12
+
13
+ **执行步骤**
14
+
15
+ 1. **若未提供输入,询问用户**
16
+
17
+ 使用 **AskUserQuestion 工具**(开放式问题)询问:
18
+ > "请描述本次变更的业务需求:要解决什么问题?达成什么目标?"
19
+
20
+ 从描述中推导 kebab-case 名称,如 "add user authentication" → `add-user-auth`。
21
+
22
+ **重要**:未明确需求前不得继续。
23
+
24
+ 2. **创建变更目录(如不存在则新建)**
25
+ ```bash
26
+ openspec new change "<name>"
27
+ ```
28
+ 此命令在 `openspec/changes/<name>/` 创建变更目录和 `.openspec.yaml`。
29
+ 若变更已存在,询问用户是否继续该变更。
30
+
31
+ 3. **获取 proposal artifact 的编写指导**
32
+ ```bash
33
+ openspec instructions proposal --change "<name>" --json
34
+ ```
35
+ 解析返回的 JSON,获取:
36
+ - `context`:项目背景约束(**仅供你参考,不要写入文档**)
37
+ - `rules`:文档编写规则(**仅供你参考,不要写入文档**)
38
+ - `template`:文档结构模版(用于生成文档的骨架)
39
+ - `outputPath`:文档输出路径
40
+ - `dependencies`:前置依赖文件路径(如有,先读取)
41
+
42
+ 4. **读取已有上下文(如有依赖)**
43
+
44
+ 按 `dependencies` 中的路径读取已完成文件,作为编写参考。
45
+
46
+ 5. **创建 propose.md**
47
+
48
+ 以 `template` 为骨架、`context` 和 `rules` 为约束,写入以下内容到 `outputPath`:
49
+
50
+ **【质量红线】生成文档必须包含以下所有章节,且不得模糊:**
51
+
52
+ #### 1. 需求背景
53
+ - 现状问题(具体痛点,禁止泛化描述)
54
+ - 业务诉求(为什么要做这件事)
55
+
56
+ #### 2. 业务目标【SMART 原则,必须可验收】
57
+ | 目标维度 | 具体描述 | 验收标准 |
58
+ |---------|---------|---------|
59
+ | 功能目标 | | |
60
+ | 性能目标 | | |
61
+ | 体验目标 | | |
62
+
63
+ #### 3. 影响范围【必须明确,不得遗漏】
64
+ - 涉及模块清单(逐一列举)
65
+ - 依赖关系(上游依赖 / 下游影响)
66
+ - 数据影响(表 / 接口 / 配置变更)
67
+
68
+ #### 4. 约束与假设
69
+ - 业务约束
70
+ - 技术约束
71
+ - 前置依赖清单
72
+
73
+ #### 5. 风险评估
74
+ | 风险项 | 概率 | 影响 | 应对策略 |
75
+ |-------|------|------|---------|
76
+ | | | | |
77
+
78
+ #### 6. 相关文档
79
+ - 需求文档 / 原型链接
80
+
81
+ 6. **质量红线自检**
82
+
83
+ 写入文档前,逐项确认:
84
+ - [ ] 逻辑链路闭环:说清楚【为什么做】→【做什么】→【影响什么】
85
+ - [ ] 受影响模块已完整列出,无遗漏
86
+ - [ ] 业务目标有可验收的具体标准(符合 SMART)
87
+ - [ ] 上游依赖与下游影响均已明确
88
+
89
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
90
+
91
+ 7. **显示输出结果**
92
+
93
+ 完成后显示:
94
+ - 文档路径(来自 `outputPath`)
95
+ - 内容摘要(背景 + 目标 + 影响模块)
96
+ - 下一步提示:"运行 `/opsx:spec` 创建技术契约文档"
97
+
98
+ ---
99
+
100
+ **Guardrails**
101
+
102
+ - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
103
+ - propose.md 聚焦【Why】,不要写技术实现细节(留给 design.md)
104
+ - 不要写 API 细节(留给 spec.md)
105
+ - 若跳过此文档,后续 spec.md 必须补齐影响范围
106
+ - 文档写入后验证文件确实存在于 `outputPath`
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: OPSX: Spec
3
+ description: "创建技术契约文档 - 定义业务场景与技术规范"
4
+ argument-hint: "[change-name]"
5
+ ---
6
+
7
+ 创建 **spec.md** - 业务场景与技术契约文档(代码生成的唯一真理,聚焦 What)。
8
+
9
+ ---
10
+
11
+ **输入**: `/opsx:spec` 后跟变更名称(kebab-case)
12
+
13
+ **前置要求**: 已运行 `/opsx:propose` 或变更目录已存在
14
+
15
+ **执行步骤**
16
+
17
+ 1. **确认变更名称**
18
+
19
+ 若未提供,列出当前所有变更供用户选择:
20
+ ```bash
21
+ openspec list
22
+ ```
23
+ 若变更不存在,引导用户先运行 `/opsx:propose <name>`。
24
+
25
+ 2. **读取前置文档(如存在)**
26
+
27
+ 读取 `openspec/changes/<name>/proposal.md`(或 propose.md),获取业务背景作为上下文输入。
28
+
29
+ 3. **获取 specs artifact 的编写指导**
30
+ ```bash
31
+ openspec instructions specs --change "<name>" --json
32
+ ```
33
+ 解析返回的 JSON,获取:
34
+ - `context`:项目背景约束(**仅供你参考,不要写入文档**)
35
+ - `rules`:文档编写规则(**仅供你参考,不要写入文档**)
36
+ - `template`:文档结构模版(用于生成文档的骨架)
37
+ - `outputPath`:文档输出路径
38
+ - `dependencies`:前置依赖文件路径(先读取)
39
+
40
+ 4. **读取已有依赖文档**
41
+
42
+ 按 `dependencies` 中的路径读取已完成文件,作为编写参考。
43
+
44
+ 5. **创建 spec.md**
45
+
46
+ 以 `template` 为骨架、`context` 和 `rules` 为约束,写入以下内容到 `outputPath`:
47
+
48
+ **【质量红线】生成文档必须包含以下所有章节,且所有描述必须精确无歧义:**
49
+
50
+ #### 1. 业务场景描述
51
+
52
+ **1.1 场景概述**
53
+ 一句话描述业务场景
54
+
55
+ **1.2 业务规则【每条规则必须明确、无歧义】**
56
+ 1.
57
+ 2.
58
+
59
+ **1.3 边界场景【必须覆盖正常+所有异常】**
60
+ | 场景 | 预期行为 |
61
+ |-----|---------|
62
+ | 正常流程 | |
63
+ | 异常流程A | |
64
+ | 异常流程B | |
65
+
66
+ #### 2. 技术契约【严禁模糊描述】
67
+
68
+ **2.1 API 定义**
69
+ - 路径:`/api/v1/xxx`
70
+ - Method:GET/POST/PUT/DELETE
71
+ - Content-Type:application/json
72
+
73
+ **请求参数【每个参数必须有:类型、必填、范围、示例值】**
74
+ | 参数名 | 类型 | 必填 | 说明 | 示例值 | 约束条件 |
75
+ |-------|------|------|------|--------|---------|
76
+ | | | | | | |
77
+
78
+ **响应结构**
79
+ ```json
80
+ {
81
+ "code": 0,
82
+ "message": "success",
83
+ "data": {}
84
+ }
85
+ ```
86
+
87
+ **错误码定义【每个错误码必须有触发条件】**
88
+ | 错误码 | 含义 | 触发条件 |
89
+ |-------|------|---------|
90
+ | | | |
91
+
92
+ #### 3. 物理约束【必须量化,禁止范围模糊】
93
+
94
+ **性能约束**
95
+ | 指标 | 约束值 | 说明 |
96
+ |------|-------|------|
97
+ | 响应时间 | < X ms (P99) | |
98
+ | 吞吐量 | > X QPS | |
99
+ | 并发数 | 最大 X | |
100
+
101
+ **超时配置**
102
+ - 连接超时:X ms
103
+ - 读取超时:X ms
104
+ - 总超时:X ms
105
+
106
+ #### 4. 影响模块【若跳过 propose.md 必须在此补齐】
107
+ - 内部依赖服务(调用方式、用途、降级策略)
108
+ - 外部第三方服务
109
+ - 数据存储(表名、操作类型、缓存 Key)
110
+
111
+ #### 5. 安全与合规
112
+ - 认证方式 / 授权范围
113
+ - 敏感字段 / 加密要求
114
+
115
+ #### 6. 兼容性
116
+ - 是否向后兼容:是/否
117
+ - 版本控制策略 / 数据迁移方案 / 回滚策略
118
+
119
+ 6. **质量红线自检**
120
+
121
+ 写入文档前,逐项确认:
122
+ - [ ] 所有参数已量化(类型、必填、范围、示例值)
123
+ - [ ] 物理约束已量化(并发、超时、性能指标均为具体数字)
124
+ - [ ] 边界场景已覆盖(正常流程 + 所有异常流程)
125
+ - [ ] 所有错误码已定义,并有触发条件
126
+ - [ ] 若跳过 propose.md,影响范围已在此文档补齐
127
+
128
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
129
+
130
+ 7. **显示输出结果**
131
+
132
+ 完成后显示:
133
+ - 文档路径(来自 `outputPath`)
134
+ - API 清单摘要(接口名 + 参数数量)
135
+ - 下一步提示:"运行 `/opsx:design` 创建技术实现方案"
136
+
137
+ ---
138
+
139
+ **Guardrails**
140
+
141
+ - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
142
+ - 此文档是代码生成的【唯一依据】,必须准确无歧义
143
+ - 不要写具体实现代码(留给 task.md)
144
+ - 参数约束必须可验证(正则、范围、枚举值)
145
+ - 文档写入后验证文件确实存在于 `outputPath`
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: OPSX: Task
3
+ description: "创建任务拆解文档 - 定义 AI 编码的极小执行单元"
4
+ argument-hint: "[change-name]"
5
+ ---
6
+
7
+ 创建 **task.md** - AI 编码引擎的极小执行单元与指令集(聚焦 Do)。
8
+
9
+ ---
10
+
11
+ **输入**: `/opsx:task` 后跟变更名称(kebab-case)
12
+
13
+ **前置要求**: 已运行 `/opsx:design` 或 design.md 已存在
14
+
15
+ **执行步骤**
16
+
17
+ 1. **确认变更名称**
18
+
19
+ 若未提供,列出当前所有变更供用户选择:
20
+ ```bash
21
+ openspec list
22
+ ```
23
+ 若 design.md 不存在,提示用户先运行 `/opsx:design <name>`。
24
+
25
+ 2. **读取前置文档**
26
+
27
+ 按以下顺序读取所有已存在的文档,作为任务拆解的输入:
28
+ - `propose.md` / `proposal.md`(业务背景)
29
+ - `spec.md` / `specs.md`(技术契约)—— **每个 API 和约束都必须有对应任务**
30
+ - `design.md`(实现方案)—— **每个模块和接口都必须有对应任务**
31
+
32
+ 3. **获取 tasks artifact 的编写指导**
33
+ ```bash
34
+ openspec instructions tasks --change "<name>" --json
35
+ ```
36
+ 解析返回的 JSON,获取:
37
+ - `context`:项目背景约束(**仅供你参考,不要写入文档**)
38
+ - `rules`:文档编写规则(**仅供你参考,不要写入文档**)
39
+ - `template`:文档结构模版(用于生成文档的骨架)
40
+ - `outputPath`:文档输出路径
41
+ - `dependencies`:前置依赖文件路径(先读取)
42
+
43
+ 4. **读取已有依赖文档**
44
+
45
+ 按 `dependencies` 中的路径读取已完成文件,作为编写参考。
46
+
47
+ 5. **创建 task.md**
48
+
49
+ 以 `template` 为骨架、`context` 和 `rules` 为约束,写入以下内容到 `outputPath`:
50
+
51
+ **【质量红线】每个任务必须是 AI 能在 5 分钟内完成的原子操作:**
52
+
53
+ #### 1. 任务总览
54
+
55
+ **1.1 关联文档**
56
+ - propose.md:路径
57
+ - spec.md:路径
58
+ - design.md:路径
59
+
60
+ **1.2 实现范围**
61
+ 本次编码要覆盖的功能范围
62
+
63
+ **1.3 技术栈**
64
+ - 语言:
65
+ - 框架:
66
+ - 依赖:
67
+
68
+ #### 2. 原子任务清单【质量红线:5 分钟可实现】
69
+
70
+ <!-- 按「数据层 → 业务层 → 接口层」顺序拆解,无依赖的任务优先 -->
71
+
72
+ **任务 1:XXX**
73
+
74
+ - 任务描述:一句话描述本任务要做什么
75
+ - 输入:
76
+ - 输出:
77
+ - 实现步骤:
78
+ 1.
79
+ 2.
80
+ 3.
81
+ - 验收标准:
82
+ - [ ] 标准1
83
+ - [ ] 标准2
84
+ - 关联设计:spec.md 章节 / design.md 章节
85
+
86
+ ---
87
+
88
+ **任务 2:XXX**
89
+
90
+ - 任务描述:
91
+ - 输入:
92
+ - 输出:
93
+ - 实现步骤:
94
+ 1.
95
+ 2.
96
+ 3.
97
+ - 验收标准:
98
+ - [ ]
99
+ - [ ]
100
+ - 关联设计:spec.md 章节 / design.md 章节
101
+
102
+ #### 3. 验证方式【质量红线:每个任务必须有测试】
103
+
104
+ **3.1 单元测试要求**
105
+ | 任务 | 测试类型 | 测试场景 | 断言内容 |
106
+ |-----|---------|---------|---------|
107
+ | 任务1 | | | |
108
+ | 任务2 | | | |
109
+
110
+ **3.2 集成测试场景**
111
+ | 场景 | 前置条件 | 操作步骤 | 预期结果 |
112
+ |-----|---------|---------|---------|
113
+ | | | | |
114
+
115
+ **3.3 手动验证清单**
116
+ - [ ] 验证项1
117
+ - [ ] 验证项2
118
+
119
+ #### 4. 依赖关系
120
+
121
+ **4.1 任务依赖图**
122
+ ```
123
+ 任务1 --> 任务2 --> 任务4
124
+ | |
125
+ v v
126
+ 任务3 --> 任务5
127
+ ```
128
+
129
+ **4.2 外部依赖**
130
+ | 依赖项 | 提供方 | 状态 | 备注 |
131
+ |-------|-------|------|------|
132
+ | | | | |
133
+
134
+ #### 5. 代码规范
135
+
136
+ - 命名规范(类名、方法名、变量名)
137
+ - 代码风格(缩进、注释、异常处理)
138
+
139
+ #### 6. 交付物
140
+
141
+ **6.1 代码文件**
142
+ | 文件路径 | 说明 | 对应任务 |
143
+ |---------|------|---------|
144
+ | | | |
145
+
146
+ **6.2 测试文件**
147
+ | 文件路径 | 说明 | 对应任务 |
148
+ |---------|------|---------|
149
+ | | | |
150
+
151
+ 6. **质量红线自检【100% 覆盖检查】**
152
+
153
+ 写入文档前,逐项确认:
154
+ - [ ] 每个任务颗粒度符合"5 分钟可实现"标准(过大则继续拆分)
155
+ - [ ] 任务清单 100% 覆盖 spec.md 定义(每个 API、每个约束都有对应任务)
156
+ - [ ] 任务清单 100% 覆盖 design.md 定义(每个模块、每个接口都有对应任务)
157
+ - [ ] 每个任务都有明确的验收标准(可验证,能判断完成/未完成)
158
+ - [ ] 每个任务都有对应的单元测试要求
159
+ - [ ] 任务依赖关系已明确(无循环依赖)
160
+
161
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
162
+
163
+ 7. **显示输出结果**
164
+
165
+ 完成后显示:
166
+ - 文档路径(来自 `outputPath`)
167
+ - 任务清单摘要(共 X 个任务)
168
+ - 依赖关系图
169
+ - 完成提示:"所有任务已拆解完成!运行 `/opsx:apply` 开始实现"
170
+
171
+ ---
172
+
173
+ **Guardrails**
174
+
175
+ - `context` 和 `rules` 是你的约束条件,**不得出现在生成的文档中**
176
+ - 任务颗粒度宁可过细也不要过粗,复杂任务继续拆分为子任务
177
+ - 验收标准必须是可验证的(能通过测试或人工检查确认)
178
+ - 任务拆解顺序:按「数据层 → 业务层 → 接口层」,无依赖的任务优先
179
+ - 文档写入后验证文件确实存在于 `outputPath`