@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,199 @@
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
+ > 阶段边界自检见 `./checklist.md`「阶段边界⛔」。
30
+
31
+ > **⚠️ 渐进式上下文加载原则**
32
+ >
33
+ > - 本技能针对**单一 Capability** 执行任务拆解
34
+ > - **输入路径**:`changes/<name>/specs/<capability>/design.md`
35
+ > - **输出路径**:`changes/<name>/specs/<capability>/tasks.md`
36
+ > - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的文档
37
+
38
+ > **🖥️ 跨平台执行规则**
39
+ > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
40
+ > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
41
+ > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
42
+ > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
43
+ > **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
44
+
45
+ ---
46
+
47
+ ## 技能定位
48
+
49
+ | 维度 | 内容 |
50
+ |------|------|
51
+ | 核心问题 | Do - 单一 Capability 具体做什么任务 |
52
+ | 关键输出 | 局部 tasks.md(DAG 拓扑图 + 原子任务清单) |
53
+ | 上游依赖 | overview.md → proposal.md → 当前 capability 的 spec.md → design.md |
54
+ | 质量要求 | 每个任务 5 分钟可完成,100% 覆盖 design,DAG 无循环依赖 |
55
+
56
+ ---
57
+
58
+ ## 启动流程
59
+
60
+ ### 1. 【交互引导】确认变更名称和 Capability
61
+
62
+ 若未提供参数,列出已有 design.md 的 Capability 供用户选择。
63
+
64
+ 使用 **AskUserQuestion** 让用户选择:
65
+ > "请选择要拆解任务的 Capability:
66
+ > - A. `user-auth`(用户认证)- design.md ✅ 已就绪
67
+ > - B. `data-export`(数据导出)- design.md ✅ 已就绪"
68
+
69
+ **路径确认**:
70
+ > "📍 当前操作目标:
71
+ > - **变更**:`<change-name>`
72
+ > - **Capability**:`<capability-name>`
73
+ > - **输入**:`changes/<name>/specs/<capability>/design.md`
74
+ > - **输出**:`changes/<name>/specs/<capability>/tasks.md`"
75
+
76
+ ### 2. 渐进式上下文加载
77
+
78
+ **⛔ 必须严格按以下顺序加载:**
79
+
80
+ ```
81
+ 第 1 层:全局基线
82
+ → openspec/specs/overview.md
83
+
84
+ 第 2 层:宏观背景
85
+ → changes/<name>/proposal.md
86
+
87
+ 第 3 层:精准打击(仅当前 Capability)
88
+ → changes/<name>/specs/<capability>/spec.md
89
+ → changes/<name>/specs/<capability>/design.md
90
+
91
+ ⛔ 隔离红线:禁止读取其他 Capability 的文档!
92
+ ```
93
+
94
+ ### 3. 【关键步骤】读取本地模板文件
95
+
96
+ **必须先读取** `openspec-templates/tasks.md` 作为文档结构模板:
97
+ ```
98
+ 使用 Read 工具读取:openspec-templates/tasks.md
99
+ ```
100
+
101
+ 此模板包含:
102
+ - **任务执行拓扑图(DAG)**
103
+ - 原子任务清单(带 Depends-On 字段)
104
+ - 验证方式
105
+ - 质量红线检查清单
106
+
107
+ **【重要】不得使用 `openspec instructions` 返回的简化 template,必须以 `openspec-templates/tasks.md` 为准。**
108
+
109
+ ### 4. 分析任务范围
110
+
111
+ 统计 design.md 中需要覆盖的实现点,预估任务数量和层级。
112
+
113
+ ### 5. 【交互引导】确认测试策略
114
+
115
+ **❗ 必须主动确认用户的测试策略选择**
116
+
117
+ 首先读取 `proposal.md` 的 YAML frontmatter 中的 `test-strategy` 字段:
118
+
119
+ **若已设置**:向用户确认
120
+ > "🧪 **当前测试策略:[test-strategy]**
121
+ >
122
+ > - `tdd`: 测试驱动 - 测试任务作为实现任务的前置依赖
123
+ > - `impl-first`: 实现优先 - 先实现后测试
124
+ > - `none`: 无测试 - 不生成测试任务
125
+ >
126
+ > 是否继续使用该策略?"
127
+
128
+ **若未设置**:使用 **AskUserQuestion** 工具询问
129
+ > "🧪 **未检测到测试策略配置,请选择:**
130
+ >
131
+ > **A) 测试驱动 (TDD)** - 测试先行
132
+ > - 先生成测试任务骨架,实现任务依赖测试任务
133
+ > - DAG 顺序:测试骨架 → 实现代码 → 测试验证
134
+ > - 适合:核心业务逻辑、质量要求高
135
+ >
136
+ > **B) 实现优先 (Impl-First)** - 代码先行
137
+ > - 先生成实现任务,测试作为验证步骤
138
+ > - DAG 顺序:实现代码 → 测试验证
139
+ > - 适合:UI 层、配置类、快速原型
140
+ >
141
+ > **C) 无测试 (None)** - 仅实现
142
+ > - 不生成测试任务,仅编译检查
143
+ > - 适合:简单配置、文档更新"
144
+
145
+ 根据用户选择设置 `test-strategy`,并更新 proposal.md 的 frontmatter(若未设置)。
146
+
147
+ ### 6. 【交互引导】确认任务拆解策略
148
+
149
+ 向用户确认拆解维度、任务粒度、预计 DAG 层级。**根据 test-strategy 调整 DAG 生成规则**,规则表(tdd / impl-first / none 对应的 DAG 生成规则)见 `./reference.md`「§6 DAG 生成规则表」。
150
+
151
+ ### 7. 创建局部 tasks.md(含 DAG 拓扑)
152
+
153
+ **输出路径**:`changes/<name>/specs/<capability>/tasks.md`
154
+
155
+ **以 `openspec-templates/tasks.md` 的结构为骨架**,填充内容。
156
+
157
+ > **必须包含**:任务执行拓扑图(DAG)+ 原子任务清单。任务结构字段(TASK-ID / 类型 / 依赖 / 状态 / 描述等)见 `./reference.md`「§7 任务结构」。
158
+
159
+ ### 8. 质量红线自检
160
+
161
+ > 逐项确认,完整 7 项自检清单(结构符合模板 / 拓扑图已绘制 / 依赖字段已填写 / 无循环依赖 / 颗粒度 ≤5 分钟 / 100% 覆盖 design / 每任务有验收标准)见 `./checklist.md`「§8 质量红线自检」。如有任意一项未满足,重新生成对应章节,直至全部通过。
162
+
163
+ ### 9. 确认任务并输出
164
+
165
+ 展示任务概要:
166
+ > "已生成 tasks.md,概要如下:
167
+ > - 任务总数:[N]
168
+ > - DAG 层级数:[M]
169
+ > - 测试策略:[strategy]
170
+ >
171
+ > 请确认:
172
+ > - A. 确认无误
173
+ > - B. 需要调整拆解粒度
174
+ > - C. 需要修改依赖关系"
175
+
176
+ 最终输出:
177
+ - 文档路径
178
+ - 下一步提示:"运行 `/opsx-check <name>` 执行质量检查,或 `/opsx-apply <name> <capability>` 开始实施"
179
+
180
+ ---
181
+
182
+ ## Guardrails
183
+
184
+ > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
185
+
186
+ - **必须以 `openspec-templates/tasks.md` 为模板基准**。
187
+ - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → spec.md → design.md 顺序。
188
+ - **⛔ 隔离红线**:绝对禁止读取同级其他 Capability 的文档。
189
+ - **⛔ DAG 必须完整**:每个任务必须有依赖字段;**⛔ 无循环依赖**:DAG 中不允许存在环。
190
+ - 任务颗粒度宁可过细也不要过粗。
191
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作。
192
+ - **⛔ 单阶段原则**:完成 tasks.md 后必须立即停止。仅提示用户下一步可运行 `/opsx-check` 或 `/opsx-apply`,绝对禁止自动执行 apply/check 等后续阶段。每个阶段必须由用户主动触发。
193
+
194
+ ---
195
+
196
+ ## 渐进披露
197
+
198
+ - Read `checklist.md` 仅在执行 task 需要校验时 — 含阶段边界⛔(Task 阶段约束)、§8 质量红线自检(7 项)、Guardrails ⛔ 强制项勾选表。
199
+ - 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 后必须立即停止;仅提示用户下一步可运行 `/opsx-check` 或 `/opsx-apply`,绝对禁止自动执行 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
+ - 任务描述、输入、输出、实现步骤、验收标准
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: opsx-test
3
+ description: "单元测试执行技能 - 自动检测并运行测试用例,输出结构化测试报告"
4
+ argument-hint: "[test-scope] [options]"
5
+ license: MIT
6
+ compatibility: Requires project test framework.
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)测试执行专家。激活本技能后,你将自动检测项目测试框架并执行测试,输出结构化报告。
18
+
19
+
20
+ > **⚠️ 命令定位**
21
+ >
22
+ > 本技能专注于**单元测试执行**,是 `/opsx-apply` 流程的可选验证环节。
23
+ > - 用户可在完成代码实现后主动调用
24
+ > - 输出标准化测试报告,便于质量追踪
25
+
26
+ > **🖥️ 跨平台执行规则**
27
+ > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
28
+ > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
29
+ > - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
30
+ > - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
31
+ > **📊 Telemetry(必做,不得跳过)**
32
+ > - 阶段开始:`node skywalk-sdd/log.cjs start --command=test --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
33
+ > - 阶段结束:`node skywalk-sdd/log.cjs end --event-id=<event_id> --command=test --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
34
+
35
+ ---
36
+
37
+ ## 技能定位
38
+
39
+ | 维度 | 内容 |
40
+ |------|------|
41
+ | 核心问题 | 代码实现是否通过测试验证 |
42
+ | 关键输出 | 结构化测试报告(通过/失败/覆盖率) |
43
+ | 触发时机 | apply 完成后、用户主动调用 |
44
+ | 支持范围 | 全量/变更相关/指定文件/最近修改 |
45
+
46
+ ---
47
+
48
+ ## 启动流程
49
+
50
+ ### 1. 【交互引导】确认测试范围
51
+
52
+ 若未提供 test-scope,使用 **AskUserQuestion** 让用户选择:
53
+ > "请选择测试执行范围:
54
+ > - A. **全量测试** - 运行项目所有测试用例
55
+ > - B. **变更相关** - 仅运行当前变更涉及的测试
56
+ > - C. **指定文件/目录** - 运行指定路径的测试
57
+ > - D. **最近修改** - 运行最近修改文件相关的测试"
58
+
59
+ ### 2. 【自动检测】识别项目类型和测试框架
60
+
61
+ **检测项目类型**:
62
+ | 项目标识 | 项目类型 | 测试框架 |
63
+ |---------|----------|----------|
64
+ | `package.json` | Node.js/TypeScript | Jest / Mocha / Vitest |
65
+ | `pom.xml` | Java Maven | JUnit / TestNG |
66
+ | `build.gradle` | Java Gradle | JUnit / TestNG |
67
+ | `requirements.txt` / `pyproject.toml` | Python | pytest / unittest |
68
+ | `go.mod` | Go | go test |
69
+ | `Cargo.toml` | Rust | cargo test |
70
+ | `*.csproj` | C# / .NET | xUnit / NUnit / MSTest |
71
+
72
+ **检测测试文件**:
73
+ | 项目类型 | 测试文件模式 |
74
+ |---------|-------------|
75
+ | TypeScript/JS | `*.test.ts`, `*.spec.ts`, `*.test.js`, `__tests__/` |
76
+ | Java | `src/test/java/**/*Test.java`, `*Tests.java` |
77
+ | Python | `test_*.py`, `*_test.py`, `tests/` |
78
+ | Go | `*_test.go` |
79
+ | Rust | `#[cfg(test)]`, `tests/` |
80
+
81
+ ### 3. 确认测试执行计划
82
+
83
+ > "🧪 **测试执行计划**:
84
+ > - 项目类型:[type]
85
+ > - 测试框架:[framework]
86
+ > - 测试文件数:[N]
87
+ > - 预计耗时:[estimate]
88
+ >
89
+ > 确认执行?"
90
+
91
+ ### 4. 执行测试
92
+
93
+ 根据检测到的框架执行对应命令:
94
+
95
+ | 框架 | 命令 |
96
+ |------|------|
97
+ | Jest | `npx jest --coverage` |
98
+ | Vitest | `npx vitest run --coverage` |
99
+ | pytest | `python -m pytest --cov` |
100
+ | go test | `go test ./... -cover` |
101
+ | JUnit (Maven) | `mvn test` |
102
+ | JUnit (Gradle) | `./gradlew test` |
103
+
104
+ ### 5. 输出结构化测试报告
105
+
106
+ > "📊 **测试执行报告**
107
+ >
108
+ > | 指标 | 数值 |
109
+ > |------|------|
110
+ > | 总用例数 | [N] |
111
+ > | 通过 | [passed] ✅ |
112
+ > | 失败 | [failed] ❌ |
113
+ > | 跳过 | [skipped] ⏭ |
114
+ > | 覆盖率 | [coverage]% |
115
+ > | 耗时 | [duration] |
116
+ >
117
+ > **失败用例详情**(如有):
118
+ > | 用例名 | 文件 | 错误信息 |
119
+ > |--------|------|---------|
120
+ > | [name] | [file:line] | [error] |"
121
+
122
+ ### 6. 【交互引导】根据结果引导下一步
123
+
124
+ **全部通过**:
125
+ > "✅ 所有测试通过!建议下一步:
126
+ > - A. 继续实施下一个任务
127
+ > - B. 运行 `/opsx-archive` 归档变更"
128
+
129
+ **有失败**:
130
+ > "❌ [N] 个测试失败,请选择:
131
+ > - A. 查看失败详情并修复
132
+ > - B. 忽略失败继续(不推荐)
133
+ > - C. 重新运行指定用例"
134
+
135
+ ---
136
+
137
+ ## Guardrails
138
+
139
+ - 测试执行前必须确认项目类型和框架
140
+ - 测试失败时提供清晰的错误定位(文件 + 行号)
141
+ - 支持增量测试(只运行变更相关的测试)
142
+ - 测试报告必须结构化、可操作
143
+ - 不自动修复测试失败,引导用户决策