kld-sdd 2.6.11 → 2.6.13
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.
- package/README.md +20 -0
- package/kld-sdd-guide.html +429 -159
- package/lib/hook-gate-core.js +41 -5
- package/lib/init.js +101 -95
- package/package.json +5 -2
- package/skywalk-sdd/index.cjs +2668 -415
- package/skywalk-sdd/metrics-v3.cjs +1153 -0
- package/skywalk-sdd/ontology/archive-package.cjs +114 -3
- package/skywalk-sdd/ontology/resolve-spec-root.cjs +20 -80
- package/skywalk-sdd/ontology/working-artifacts.cjs +2 -1
- package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +39 -9
- package/templates/hooks/claude/hooks/sdd-post-tool.cjs +87 -8
- package/templates/hooks/claude/hooks/sdd-prompt.cjs +25 -5
- package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +39 -9
- package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +87 -9
- package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +24 -3
- package/templates/skills/kld-sdd/opsx-apply/SKILL.md +17 -16
- package/templates/skills/kld-sdd/opsx-apply/checklist.md +22 -22
- package/templates/skills/kld-sdd/opsx-apply/implementer-prompt.md +12 -12
- package/templates/skills/kld-sdd/opsx-apply/reference.md +43 -42
- package/templates/skills/kld-sdd/opsx-apply/worktree-setup.md +3 -3
- package/templates/skills/kld-sdd/opsx-archive/SKILL.md +58 -20
- package/templates/skills/kld-sdd/opsx-archive/checklist.md +6 -3
- package/templates/skills/kld-sdd/opsx-check/SKILL.md +30 -22
- package/templates/skills/kld-sdd/opsx-check/checklist.md +7 -6
- package/templates/skills/kld-sdd/opsx-design/SKILL.md +5 -5
- package/templates/skills/kld-sdd/opsx-design/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-design/reference.md +2 -2
- package/templates/skills/kld-sdd/opsx-explore/SKILL.md +5 -5
- package/templates/skills/kld-sdd/opsx-propose/SKILL.md +20 -12
- package/templates/skills/kld-sdd/opsx-propose/reference.md +31 -5
- package/templates/skills/kld-sdd/opsx-rules/SKILL.md +3 -3
- package/templates/skills/kld-sdd/opsx-rules/reference.md +3 -1
- package/templates/skills/kld-sdd/opsx-spec/SKILL.md +6 -6
- package/templates/skills/kld-sdd/opsx-spec/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-spec/reference.md +2 -2
- package/templates/skills/kld-sdd/opsx-task/SKILL.md +14 -14
- package/templates/skills/kld-sdd/opsx-task/checklist.md +3 -3
- package/templates/skills/kld-sdd/opsx-task/reference.md +5 -5
- package/templates/skills/kld-sdd/opsx-test/SKILL.md +11 -9
- package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/SKILL.md +4 -4
- package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/reference.md +4 -4
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/SKILL.md +13 -13
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/checklist.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/reference.md +12 -12
- package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/SKILL.md +3 -3
- package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/checklist.md +2 -2
- package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/SKILL.md +2 -2
- package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/parameterized-testing.md +1 -1
- package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/SKILL.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/checklist.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/SKILL.md +3 -3
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/non-tdd-modules.md +1 -1
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/refactor-checklist.md +1 -1
- package/templates/skills/kld-sdd/tdd-rules/rules/test-skeleton-telemetry.md +19 -0
- package/templates/skills/kld-sdd/opsx-tdd-rules/rules/test-skeleton-telemetry.md +0 -19
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/cause-effect-clarity.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/clean-test-data.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/existing-test-awareness.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/given-when-then.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/good-test-qualities.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/mock-boundary.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/naming-conventions.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/no-logic-in-tests.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/one-test-one-scenario.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/prefer-public-apis.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/test-behaviors-not-methods.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/argument-matching.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/controller-test-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/domain-service-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/java-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/json-serialization.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/logging-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/compilation-verification.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/execution-verification.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/python/py-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/typescript/ts-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/controller-strategy.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/dag-generation-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/des-step-annotation.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/exception-path-coverage.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-scope-declaration.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-yagni-fence.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/multi-validation-split.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/task-type-definitions.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/tdd-strategy-selection.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/test-execution-gate.md +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-anti-patterns
|
|
3
3
|
description: "测试反模式防护层 — 16 种反模式检测(RED 阶段 3 种 + GREEN 后 13 种),每种带门禁函数和修复方案。当编写或审查测试代码时引用本技能。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-anti-patterns — 反模式防护层
|
|
7
7
|
|
|
8
8
|
> **定位**:测试反模式的系统化检测,RED 阶段 + GREEN 后双重检查。
|
|
9
9
|
> **参考来源**:Superpowers `testing-anti-patterns.md`
|
|
@@ -47,8 +47,8 @@ description: "测试反模式防护层 — 16 种反模式检测(RED 阶段 3
|
|
|
47
47
|
| 12 | **测试代码重复** | 大量 copy-paste 的测试代码,缺少 helper 提取 | 提取 test fixture builder 或 helper 方法 |
|
|
48
48
|
| 13 | **魔法值** | 测试中使用未解释的字面值(如 `assertEquals(42, result)` 无注释说明 42 的含义) | 使用命名常量或注释解释字面值含义 |
|
|
49
49
|
| 14 | **断言不足** | 只断言了部分结果,遗漏了关键属性(如只 assertNotNull 但不 assertEquals 具体值) | 每个测试至少有一个具体值断言(assertEquals),而非仅 assertNotNull |
|
|
50
|
-
| 15 | **缺少负面测试** | 只测试正常路径,不测试错误条件 | 每个方法至少有一个异常路径测试(见 `
|
|
51
|
-
| 16 | **AC 变体覆盖不足** | AC 场景描述含"或"条件(如"缺少 A 或 B 或为空"),但测试只覆盖部分变体 | AC 中每个"或"条件变体必须有对应测试方法(规则见 `
|
|
50
|
+
| 15 | **缺少负面测试** | 只测试正常路径,不测试错误条件 | 每个方法至少有一个异常路径测试(见 `tdd-rules/rules/exception-path-coverage.md`) |
|
|
51
|
+
| 16 | **AC 变体覆盖不足** | AC 场景描述含"或"条件(如"缺少 A 或 B 或为空"),但测试只覆盖部分变体 | AC 中每个"或"条件变体必须有对应测试方法(规则见 `tdd-rules/rules/multi-validation-split.md` §AC 内"或"条件变体覆盖) |
|
|
52
52
|
|
|
53
53
|
## §5 门禁函数
|
|
54
54
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "tdd-anti-patterns 详细参考 — 9 种反模式完整详表 + 修复方案代码示例。仅在需要详细反模式检查时读取。"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# tdd-anti-patterns — 详细参考
|
|
6
6
|
|
|
7
7
|
> 仅在需要详细反模式检查时读取。日常检查见 `SKILL.md`。
|
|
8
8
|
|
|
@@ -193,7 +193,7 @@ assertEquals("user-001", result.getUserId());
|
|
|
193
193
|
|
|
194
194
|
**问题**:只测试正常路径,不测试错误条件。
|
|
195
195
|
|
|
196
|
-
**修复**:每个方法至少有一个异常路径测试。规则见 `
|
|
196
|
+
**修复**:每个方法至少有一个异常路径测试。规则见 `tdd-rules/rules/exception-path-coverage.md`。
|
|
197
197
|
|
|
198
198
|
## 反模式 16:AC 变体覆盖不足
|
|
199
199
|
|
|
@@ -222,7 +222,7 @@ void login_withMissingParams_returns1001() {
|
|
|
222
222
|
@Test void login_withBothMissing_returns1001() { ... }
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
**修复**:AC 中每个"或"条件变体必须有对应测试方法。规则见 `
|
|
225
|
+
**修复**:AC 中每个"或"条件变体必须有对应测试方法。规则见 `tdd-rules/rules/multi-validation-split.md` §AC 内"或"条件变体覆盖。
|
|
226
226
|
|
|
227
227
|
## TDD 如何防止这些反模式
|
|
228
228
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-core
|
|
3
3
|
description: "TDD 流程纪律层 — 铁律、红绿重构循环、执行门禁、合规自检。当 test-strategy=tdd 时,所有 SDD 阶段引用本技能获取 TDD 流程规则。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-core — TDD 流程纪律层
|
|
7
7
|
|
|
8
8
|
> **定位**:TDD 铁律、红绿重构循环定义、执行门禁的唯一真相源。
|
|
9
9
|
> **参考来源**:Superpowers `test-driven-development`
|
|
@@ -81,7 +81,7 @@ RED → Verify RED → 🔴中断声明 → GREEN → Verify GREEN → GREEN Sco
|
|
|
81
81
|
- 此声明强制 agent 在 RED 和 GREEN 之间产生节奏断点,防止从 RED 滑入 GREEN 再滑入下一个行为点
|
|
82
82
|
- **GREEN**:写最简单的代码通过测试
|
|
83
83
|
- 不添加功能、不重构其他代码、不"改进"超出测试范围的内容
|
|
84
|
-
- ⛔ **执行 GREEN Scope 声明**(见 `
|
|
84
|
+
- ⛔ **执行 GREEN Scope 声明**(见 `tdd-rules/rules/green-scope-declaration.md`):
|
|
85
85
|
1. 列出当前 RED 测试的断言清单
|
|
86
86
|
2. 列出 design.md 中本 DES 元素的完整流程步骤
|
|
87
87
|
3. 标记步骤归属(✅ 属于当前 RED / ⛔ 属于后续 RED)
|
|
@@ -126,12 +126,12 @@ RED → Verify RED → 🔴中断声明 → GREEN → Verify GREEN → GREEN Sco
|
|
|
126
126
|
- **REFACTOR**:仅在绿色之后
|
|
127
127
|
- 移除重复、改善命名、提取辅助函数
|
|
128
128
|
- 保持测试绿色,不添加行为
|
|
129
|
-
- ⛔ 执行 `
|
|
129
|
+
- ⛔ 执行 `tdd-rules/rules/refactor-checklist.md`(7 项重构检查点)
|
|
130
130
|
- **Repeat**:下一个失败测试,下一个功能
|
|
131
131
|
|
|
132
132
|
## §4 执行门禁
|
|
133
133
|
|
|
134
|
-
> 完整规则见 `
|
|
134
|
+
> 完整规则见 `tdd-rules/rules/test-execution-gate.md`,此处仅保留快速参考。
|
|
135
135
|
|
|
136
136
|
| test-strategy | 行为 |
|
|
137
137
|
|---------------|------|
|
|
@@ -141,7 +141,7 @@ RED → Verify RED → 🔴中断声明 → GREEN → Verify GREEN → GREEN Sco
|
|
|
141
141
|
|
|
142
142
|
## §5 TDD 策略定义
|
|
143
143
|
|
|
144
|
-
> 完整规则见 `
|
|
144
|
+
> 完整规则见 `tdd-rules/rules/tdd-strategy-selection.md`,此处仅保留快速参考。
|
|
145
145
|
|
|
146
146
|
三种策略(tdd/impl-first/none)的定义与适用场景:
|
|
147
147
|
|
|
@@ -151,7 +151,7 @@ RED → Verify RED → 🔴中断声明 → GREEN → Verify GREEN → GREEN Sco
|
|
|
151
151
|
|
|
152
152
|
## §6 Controller 层策略
|
|
153
153
|
|
|
154
|
-
> 完整规则见 `
|
|
154
|
+
> 完整规则见 `tdd-rules/rules/controller-strategy.md`,此处仅保留快速参考。
|
|
155
155
|
|
|
156
156
|
⛔ Controller 层**必须**有测试。两种策略的区别在于测试方式,而非"有无测试"。
|
|
157
157
|
|
|
@@ -214,14 +214,14 @@ RED → Verify RED → 🔴中断声明 → GREEN → Verify GREEN → GREEN Sco
|
|
|
214
214
|
|
|
215
215
|
## §10 跨技能引用
|
|
216
216
|
|
|
217
|
-
- → `
|
|
218
|
-
- → `
|
|
219
|
-
- → `
|
|
220
|
-
- → `
|
|
221
|
-
- → `
|
|
217
|
+
- → `tdd-quality`:单测代码质量标准(Mock 边界矩阵、命名规范、Java 规则等)
|
|
218
|
+
- → `tdd-anti-patterns`:测试反模式检测(15 种反模式 + 门禁函数)
|
|
219
|
+
- → `tdd-review`:测试审查(8 项质量检查 + 缺失测试检测)
|
|
220
|
+
- → `tdd-metrics`:度量分析(隔离评分、命名评分、覆盖率缺口)
|
|
221
|
+
- → `tdd-rules`:规则库(DAG 规则、Controller 策略、telemetry 模板等)
|
|
222
222
|
- `rules/green-yagni-fence.md`:GREEN 任务 YAGNI 围栏(引用方:opsx-task)
|
|
223
223
|
- `rules/green-scope-declaration.md`:GREEN Scope 声明(引用方:opsx-apply)
|
|
224
224
|
- `rules/des-step-annotation.md`:DES 步骤级标注(引用方:opsx-design)
|
|
225
225
|
- `rules/multi-validation-split.md`:多校验拆分(引用方:opsx-spec)
|
|
226
226
|
- `rules/exception-path-coverage.md`:异常路径测试覆盖门禁(引用方:opsx-task, opsx-apply, opsx-check)
|
|
227
|
-
- `rules/refactor-checklist.md`:REFACTOR 阶段检查点(引用方:opsx-apply,
|
|
227
|
+
- `rules/refactor-checklist.md`:REFACTOR 阶段检查点(引用方:opsx-apply, tdd-core)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "tdd-core 自检清单 — TDD 执行合规自检、合规性检查、完成验证。仅在执行 TDD 任务自检时读取。"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# tdd-core — 自检清单
|
|
6
6
|
|
|
7
7
|
> 仅在执行 TDD 任务自检时读取。日常流程见 `SKILL.md`。
|
|
8
8
|
|
|
@@ -18,7 +18,7 @@ description: "opsx-tdd-core 自检清单 — TDD 执行合规自检、合规性
|
|
|
18
18
|
- [ ] ⛔ **RED→GREEN 中断声明已执行**:RED 确认失败后,显式声明了"🔴 RED-N 确认失败,现在进入 GREEN-N"
|
|
19
19
|
- [ ] GREEN 任务已运行测试确认通过
|
|
20
20
|
- [ ] GREEN 未提前实现没有测试要求的功能
|
|
21
|
-
- [ ] ⛔ **GREEN Scope 越界检测**:GREEN 实现后检查生产代码是否包含未被当前 RED 断言覆盖的逻辑分支(规则见 `
|
|
21
|
+
- [ ] ⛔ **GREEN Scope 越界检测**:GREEN 实现后检查生产代码是否包含未被当前 RED 断言覆盖的逻辑分支(规则见 `tdd-rules/rules/green-scope-declaration.md` §Scope 自检)
|
|
22
22
|
- [ ] ⛔ **GREEN YAGNI 围栏逐条确认**:读取 tasks.md 中本 GREEN 任务的 YAGNI 围栏声明,逐条确认"未实现 [后续 RED 的行为]:✅"
|
|
23
23
|
- [ ] ⛔ **GREEN Scope 门禁已执行**:Verify GREEN 之后,检查生产代码无越界逻辑分支
|
|
24
24
|
- [ ] REFACTOR 后全部测试仍绿
|
|
@@ -42,7 +42,7 @@ description: "opsx-tdd-core 自检清单 — TDD 执行合规自检、合规性
|
|
|
42
42
|
- [ ] 每个 REFACTOR 任务列出至少 2 个具体重构点
|
|
43
43
|
- [ ] ⛔ **CON 覆盖**:spec.md 中每个 CON 在 tasks.md 中有对应验证任务或显式声明间接覆盖
|
|
44
44
|
- [ ] ⛔ **安全/审计要求覆盖**:spec.md §5.x 中的安全与审计要求在 tasks.md 中有对应任务或显式声明推迟
|
|
45
|
-
- [ ] ⛔ **AC 变体覆盖**:spec.md 中含"或"条件的 AC 场景,其 RED 任务验收标准列出所有变体的测试方法(引用 `
|
|
45
|
+
- [ ] ⛔ **AC 变体覆盖**:spec.md 中含"或"条件的 AC 场景,其 RED 任务验收标准列出所有变体的测试方法(引用 `tdd-rules/rules/multi-validation-split.md`)
|
|
46
46
|
|
|
47
47
|
## §C 完成验证清单(8 项)
|
|
48
48
|
|
|
@@ -56,6 +56,6 @@ description: "opsx-tdd-core 自检清单 — TDD 执行合规自检、合规性
|
|
|
56
56
|
- [ ] 输出纯净(无错误/警告)
|
|
57
57
|
- [ ] 测试使用真实代码(仅在不可避免时使用 mock)
|
|
58
58
|
- [ ] 边界情况和错误已覆盖
|
|
59
|
-
- [ ] ⛔ **AC "或"条件变体全覆盖**:AC 场景描述含"或"条件时,每个变体都有对应测试方法(引用 `
|
|
59
|
+
- [ ] ⛔ **AC "或"条件变体全覆盖**:AC 场景描述含"或"条件时,每个变体都有对应测试方法(引用 `tdd-rules/rules/multi-validation-split.md`)
|
|
60
60
|
|
|
61
61
|
> Can't check all boxes? You skipped TDD. Start over.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "tdd-core 详细参考 — 执行步骤、拆分示例、DAG 规则、telemetry 模板。仅在需要详细执行指引时读取。"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# tdd-core — 详细参考
|
|
6
6
|
|
|
7
7
|
> 仅在需要详细执行指引时读取。日常流程见 `SKILL.md`。
|
|
8
8
|
|
|
@@ -28,7 +28,7 @@ description: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG
|
|
|
28
28
|
## §2 GREEN 执行步骤
|
|
29
29
|
|
|
30
30
|
1. 读取对应 RED 任务的失败原因
|
|
31
|
-
2. ⛔ **执行 GREEN Scope 声明**(见 `
|
|
31
|
+
2. ⛔ **执行 GREEN Scope 声明**(见 `tdd-rules/rules/green-scope-declaration.md`):
|
|
32
32
|
- 列出当前 RED 测试的断言清单
|
|
33
33
|
- 列出 design.md 中本 DES 元素的完整流程步骤
|
|
34
34
|
- 标记步骤归属(✅ 属于当前 RED / ⛔ 属于后续 RED)
|
|
@@ -50,14 +50,14 @@ description: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG
|
|
|
50
50
|
|
|
51
51
|
## §3 REFACTOR 执行步骤
|
|
52
52
|
|
|
53
|
-
> 完整检查点见 `
|
|
53
|
+
> 完整检查点见 `tdd-rules/rules/refactor-checklist.md`(7 项重构检查 + 跳过条件 + 量化标准)。
|
|
54
54
|
|
|
55
55
|
1. 在所有测试通过的状态下开始
|
|
56
56
|
2. 优化代码结构(提取方法、消除重复、改善命名)
|
|
57
57
|
3. 运行全部测试:`mvn test`(或项目对应命令)
|
|
58
58
|
4. 确认所有测试仍通过
|
|
59
59
|
5. 任何测试失败 → 回退重构,重新尝试
|
|
60
|
-
6. 执行 `
|
|
60
|
+
6. 执行 `tdd-rules/rules/refactor-checklist.md` 的 7 项检查
|
|
61
61
|
|
|
62
62
|
## §4 TDD 拆分示例
|
|
63
63
|
|
|
@@ -98,7 +98,7 @@ description: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG
|
|
|
98
98
|
|
|
99
99
|
## §6 DAG 生成规则
|
|
100
100
|
|
|
101
|
-
> 完整规则见 `
|
|
101
|
+
> 完整规则见 `tdd-rules/rules/dag-generation-rules.md`,此处仅保留快速参考。
|
|
102
102
|
|
|
103
103
|
| test-strategy | DAG 规则 |
|
|
104
104
|
|---------------|---------|
|
|
@@ -108,7 +108,7 @@ description: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG
|
|
|
108
108
|
|
|
109
109
|
## §7 非 TDD 模块规则
|
|
110
110
|
|
|
111
|
-
> 完整规则见 `
|
|
111
|
+
> 完整规则见 `tdd-rules/rules/non-tdd-modules.md`,此处仅保留快速参考。
|
|
112
112
|
|
|
113
113
|
以下模块不需要红绿循环,按常规任务处理:
|
|
114
114
|
- 前端 UI 页面(Vue 组件)→ UI层任务
|
|
@@ -123,13 +123,13 @@ description: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG
|
|
|
123
123
|
**TDD 测试骨架任务**(`task_kind:"test-skeleton"`):
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
|
-
node skywalk-sdd/log.cjs record --type=
|
|
126
|
+
node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --strict --type=test_result --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --run-id=<真实执行稳定ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=failure --summary="<TASK-ID> TDD 红灯符合预期" --details-json='{"test_results":{"tdd_phase":"red","verified_task_ids":["<TASK-ID>"],"command":"<实际测试命令>","exit_code":<非零退出码>,"counts_known":true,"passed":0,"failed":<红灯数>,"skipped":0,"duration_ms":<实测毫秒>,"failure_type":"assertion","expected_failure":true}}'
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
**实现任务**(不带 `task_kind`):
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
|
-
node skywalk-sdd/log.cjs record --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json='{"files_changed":[],"
|
|
132
|
+
node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --strict --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --run-id=<任务更新稳定ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json='{"files_changed":[],"task_update":{"test_event_id":"<成功的green/refactor测试event_id>","tdd_required":true}}'
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
## §9 单元测试真实执行
|
|
@@ -138,9 +138,9 @@ node skywalk-sdd/log.cjs record --type=task_update --command=apply --project=. -
|
|
|
138
138
|
|
|
139
139
|
1. 在结束 apply 或执行收尾之前,必须真实运行单元测试命令
|
|
140
140
|
2. 须留下可核验 telemetry 证据(任选其一):
|
|
141
|
-
- `
|
|
142
|
-
-
|
|
143
|
-
-
|
|
141
|
+
- 严格 `test_result`:包含真实命令、exit code、耗时、`run-id`、TDD phase 和 `verified_task_ids`
|
|
142
|
+
- 或单独运行 `/opsx-test`,写入 `snapshot_kind:"final"` 的严格 `test_result`
|
|
143
|
+
- `task_update` 只引用上述成功测试的 `event_id`,不得内嵌测试计数
|
|
144
144
|
3. `sdd-apply-test-gate.cjs` 会在 `log.cjs end`、`apply-worktree-finish`、会话 Stop 时自动校验,无证据则阻断
|
|
145
145
|
|
|
146
146
|
| test-strategy | 行为 |
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-metrics
|
|
3
3
|
description: "度量分析层 — 测试质量量化度量:隔离评分、命名评分、测试异味检测、覆盖率缺口分析。当需要量化测试质量时引用本技能。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-metrics — 度量分析层
|
|
7
7
|
|
|
8
8
|
> **定位**:测试质量的量化度量,提供可计算的评分。
|
|
9
9
|
> **参考来源**:tdd-guide `metrics_calculator.py`
|
|
10
|
-
> **引用方式**:**可选引用**。本技能不参与强制流程,仅在需要量化评估测试质量时按需读取。`opsx-check` 和 `opsx-apply` 的强制检查引用 `
|
|
10
|
+
> **引用方式**:**可选引用**。本技能不参与强制流程,仅在需要量化评估测试质量时按需读取。`opsx-check` 和 `opsx-apply` 的强制检查引用 `tdd-core/checklist.md` 和 `tdd-review`,不引用本技能。
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-quality
|
|
3
3
|
description: "单测代码质量层 — Mock 边界矩阵、测试命名规范、Given-When-Then 结构、Java 测试规则等。当编写或审查测试代码时引用本技能。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-quality — 单测代码质量层
|
|
7
7
|
|
|
8
8
|
> **定位**:单元测试代码的质量标准,不涉及流程,只关注"写出来的测试代码本身是否高质量"。
|
|
9
9
|
> **参考来源**:unit-tests-skills(14 通用规则 + 6 Java 规则)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-review
|
|
3
3
|
description: "测试审查层 — 从审查者角度检测'测试通过但没测到关键点'。8 项质量检查 + 缺失测试检测 + 测试异味检测。当审查测试代码时引用本技能。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-review — 测试审查层
|
|
7
7
|
|
|
8
8
|
> **定位**:从审查者角度检测"测试通过但没测到关键点"。
|
|
9
9
|
> **参考来源**:code-reviewer Phase 5 + tdd-guide 测试质量审查
|
|
@@ -45,7 +45,7 @@ description: "测试审查层 — 从审查者角度检测'测试通过但没测
|
|
|
45
45
|
|
|
46
46
|
## §5 测试异味检测
|
|
47
47
|
|
|
48
|
-
> 完整检测信号见 `
|
|
48
|
+
> 完整检测信号见 `tdd-metrics/SKILL.md` §3,此处仅保留快速参考。
|
|
49
49
|
|
|
50
50
|
| 异味 | 检测信号 | 严重程度 |
|
|
51
51
|
|------|---------|---------|
|
|
@@ -84,11 +84,11 @@ Agent (general-purpose):
|
|
|
84
84
|
|
|
85
85
|
## 审查清单
|
|
86
86
|
|
|
87
|
-
执行
|
|
87
|
+
执行 tdd-review/SKILL.md §3(8 项质量审查)+ §4(缺失测试检测)+ §5(测试异味检测)。
|
|
88
88
|
对于 GREEN 任务,额外检查:
|
|
89
89
|
- GREEN Scope: 生产代码中是否有未被当前 RED 断言覆盖的逻辑分支?
|
|
90
90
|
- YAGNI 围栏: 是否提前实现了后续 RED 的行为?
|
|
91
|
-
- 反模式: 执行
|
|
91
|
+
- 反模式: 执行 tdd-anti-patterns/SKILL.md §4(12 种 GREEN 后反模式)
|
|
92
92
|
|
|
93
93
|
## 审查标准
|
|
94
94
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "tdd-review 自检清单 — 测试质量审查 8 项 + 缺失测试检测 + 测试异味检测。仅在审查测试代码时读取。"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# tdd-review — 自检清单
|
|
6
6
|
|
|
7
7
|
> 仅在审查测试代码时读取。日常流程见 `SKILL.md`。
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ description: "opsx-tdd-review 自检清单 — 测试质量审查 8 项 + 缺失
|
|
|
11
11
|
- [ ] 测试是否真正断言了有意义的行为(而非仅 mock 存在)
|
|
12
12
|
- [ ] 测试是否独立隔离(无测试间依赖)
|
|
13
13
|
- [ ] 测试名称是否清晰描述被测内容(符合 `{method}_{state}_{outcome}`)
|
|
14
|
-
- [ ] mock 和 stub 是否正确使用(Mock 边界,不 Mock 行为,见 `
|
|
14
|
+
- [ ] mock 和 stub 是否正确使用(Mock 边界,不 Mock 行为,见 `tdd-quality/SKILL.md` §2)
|
|
15
15
|
- [ ] 无测试间依赖
|
|
16
16
|
- [ ] 无 sleep 或任意等待
|
|
17
17
|
- [ ] 测试了正常路径 + 错误条件 + 边界值 + 空输入
|
|
@@ -19,7 +19,7 @@ description: "opsx-tdd-review 自检清单 — 测试质量审查 8 项 + 缺失
|
|
|
19
19
|
|
|
20
20
|
## §B 缺失测试检测
|
|
21
21
|
|
|
22
|
-
- [ ] 未测试的错误路径(每个 orElseThrow/边界检查有对应测试,见 `
|
|
22
|
+
- [ ] 未测试的错误路径(每个 orElseThrow/边界检查有对应测试,见 `tdd-rules/rules/exception-path-coverage.md`)
|
|
23
23
|
- [ ] 缺失的负面测试用例
|
|
24
24
|
- [ ] 未覆盖的边界条件
|
|
25
25
|
- [ ] bug 修复无回归测试
|
|
@@ -36,4 +36,4 @@ description: "opsx-tdd-review 自检清单 — 测试质量审查 8 项 + 缺失
|
|
|
36
36
|
|
|
37
37
|
## §D 反模式检测
|
|
38
38
|
|
|
39
|
-
- [ ] 已检查 `
|
|
39
|
+
- [ ] 已检查 `tdd-anti-patterns/SKILL.md` §3-§4 的 15 种反模式
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tdd-rules
|
|
3
3
|
description: "TDD 规则库 — DAG 生成规则、Controller 策略、任务类型定义、telemetry 模板等独立规则文件。当需要具体 TDD 规则文件时引用本技能。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# tdd-rules — 规则库
|
|
7
7
|
|
|
8
8
|
> **定位**:TDD 相关的规则文件集合,供其他技能按需引用。
|
|
9
9
|
> **参考来源**:unit-tests-skills rules/ 目录模式
|
|
@@ -26,4 +26,4 @@ description: "TDD 规则库 — DAG 生成规则、Controller 策略、任务类
|
|
|
26
26
|
| `rules/des-step-annotation.md` | DES 元素步骤级标注规则(TDD 模式下标注 [GREEN-N] 归属) | MEDIUM | opsx-design |
|
|
27
27
|
| `rules/multi-validation-split.md` | 多校验条件拆分规则(每个校验条件须有独立 AC 场景;AC 内"或"条件变体须全覆盖) | MEDIUM | opsx-spec, opsx-task, opsx-check |
|
|
28
28
|
| `rules/exception-path-coverage.md` | 异常路径测试覆盖门禁(每个 orElseThrow/边界检查须有对应 RED 测试) | HIGH | opsx-task, opsx-apply, opsx-check |
|
|
29
|
-
| `rules/refactor-checklist.md` | REFACTOR 阶段检查点(public API 不变、行为保持、重构质量评估) | HIGH | opsx-apply,
|
|
29
|
+
| `rules/refactor-checklist.md` | REFACTOR 阶段检查点(public API 不变、行为保持、重构质量评估) | HIGH | opsx-apply, tdd-core |
|
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
|
|
16
16
|
Controller 层**不属于**非 TDD 模块。Controller 必须有测试,通过策略 A(TDD 红绿循环)或策略 B(impl-first 接线测试)实现。
|
|
17
17
|
|
|
18
|
-
> Controller 策略选择见 `
|
|
18
|
+
> Controller 策略选择见 `tdd-rules/rules/controller-strategy.md`,必须在 tasks.md §2.0 中声明。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# REFACTOR 阶段检查点
|
|
2
2
|
|
|
3
3
|
> 影响等级:HIGH
|
|
4
|
-
> 引用方:
|
|
4
|
+
> 引用方:tdd-core/reference.md §3(REFACTOR 执行步骤)、opsx-apply/implementer-prompt.md(REFACTOR 任务执行)、opsx-apply/checklist.md(REFACTOR 门禁)
|
|
5
5
|
|
|
6
6
|
## 核心原则
|
|
7
7
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# test-skeleton telemetry 模板
|
|
2
|
+
|
|
3
|
+
> 影响等级:MEDIUM
|
|
4
|
+
|
|
5
|
+
## TDD 测试骨架任务
|
|
6
|
+
|
|
7
|
+
当任务是“测试骨架”时,真实红灯必须单独记录为严格 `test_result`;任务状态事件不得复制测试计数。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --strict --type=test_result --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --run-id=<真实执行稳定ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=failure --summary="<TASK-ID> TDD 红灯符合预期" --details-json='{"test_results":{"tdd_phase":"red","verified_task_ids":["<TASK-ID>"],"command":"<实际测试命令>","exit_code":<非零退出码>,"counts_known":true,"passed":0,"failed":<红灯数>,"skipped":0,"duration_ms":<实测毫秒>,"failure_type":"assertion","expected_failure":true}}'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 实现任务
|
|
14
|
+
|
|
15
|
+
实现任务不带 `task_kind`(默认 implementation),按真实测试结果记录。
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --strict --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --run-id=<任务更新稳定ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json='{"files_changed":[],"task_update":{"test_event_id":"<成功的green/refactor测试event_id>","tdd_required":true}}'
|
|
19
|
+
```
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# test-skeleton telemetry 模板
|
|
2
|
-
|
|
3
|
-
> 影响等级:MEDIUM
|
|
4
|
-
|
|
5
|
-
## TDD 测试骨架任务
|
|
6
|
-
|
|
7
|
-
当任务是"测试骨架"(仅编写测试用例、实现尚未编写,测试预期失败/红灯)时,`task_update` 必须在 `--details-json` 中带 `"task_kind":"test-skeleton"`,`--result=success`(骨架按 TDD 计划完成即成功),`test_results.failed` 如实记录红灯数。
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
node skywalk-sdd/log.cjs record --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 测试骨架完成(TDD 红灯)" --details-json='{"task_kind":"test-skeleton","test_results":{"command":"<实际测试命令>","passed":0,"failed":<红灯数>,"skipped":0,"duration_ms":0}}'
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## 实现任务
|
|
14
|
-
|
|
15
|
-
实现任务不带 `task_kind`(默认 implementation),按真实测试结果记录。
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
node skywalk-sdd/log.cjs record --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json='{"files_changed":[],"test_results":{"command":"<实际测试命令>","passed":<通过数>,"failed":0,"skipped":0,"duration_ms":0}}'
|
|
19
|
-
```
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/clean-test-data.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/given-when-then.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/mock-boundary.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/argument-matching.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/java-test-template.md
RENAMED
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/json-serialization.md
RENAMED
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/logging-rules.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/python/py-test-template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/dag-generation-rules.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/exception-path-coverage.md
RENAMED
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-scope-declaration.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/multi-validation-split.md
RENAMED
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/task-type-definitions.md
RENAMED
|
File without changes
|
/package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/tdd-strategy-selection.md
RENAMED
|
File without changes
|
|
File without changes
|