kld-sdd 2.6.12 → 2.6.14

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 (91) hide show
  1. package/README.md +29 -7
  2. package/kld-sdd-guide.html +428 -159
  3. package/lib/init.js +37 -7
  4. package/package.json +5 -2
  5. package/skywalk-sdd/index.cjs +2668 -415
  6. package/skywalk-sdd/metrics-v3.cjs +1153 -0
  7. package/skywalk-sdd/ontology/archive-package.cjs +120 -3
  8. package/skywalk-sdd/ontology/identity-index.cjs +9 -2
  9. package/skywalk-sdd/ontology/ontology-paths.cjs +73 -0
  10. package/skywalk-sdd/ontology/resolve-spec-root.cjs +20 -80
  11. package/skywalk-sdd/ontology/runtime.cjs +32 -22
  12. package/skywalk-sdd/ontology/structural-identity.cjs +11 -2
  13. package/skywalk-sdd/ontology/traceability-validator.cjs +16 -8
  14. package/skywalk-sdd/ontology/working-artifacts.cjs +4 -2
  15. package/skywalk-sdd/reporting/change-report-model.cjs +309 -0
  16. package/skywalk-sdd/reporting/change-report-renderer.cjs +425 -0
  17. package/skywalk-sdd/runtime-metadata.cjs +21 -0
  18. package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +39 -9
  19. package/templates/hooks/claude/hooks/sdd-post-tool.cjs +87 -8
  20. package/templates/hooks/claude/hooks/sdd-prompt.cjs +3 -1
  21. package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +39 -9
  22. package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +87 -9
  23. package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +3 -1
  24. package/templates/skills/kld-sdd/opsx-apply/SKILL.md +14 -13
  25. package/templates/skills/kld-sdd/opsx-apply/checklist.md +20 -20
  26. package/templates/skills/kld-sdd/opsx-apply/implementer-prompt.md +12 -12
  27. package/templates/skills/kld-sdd/opsx-apply/reference.md +32 -31
  28. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +44 -6
  29. package/templates/skills/kld-sdd/opsx-archive/checklist.md +5 -2
  30. package/templates/skills/kld-sdd/opsx-check/SKILL.md +21 -13
  31. package/templates/skills/kld-sdd/opsx-check/checklist.md +8 -7
  32. package/templates/skills/kld-sdd/opsx-design/SKILL.md +1 -1
  33. package/templates/skills/kld-sdd/opsx-design/checklist.md +1 -1
  34. package/templates/skills/kld-sdd/opsx-kb-ingest/SKILL.md +14 -0
  35. package/templates/skills/kld-sdd/opsx-ontology-query/SKILL.md +31 -0
  36. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +12 -4
  37. package/templates/skills/kld-sdd/opsx-propose/reference.md +29 -3
  38. package/templates/skills/kld-sdd/opsx-rules/reference.md +3 -1
  39. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +2 -2
  40. package/templates/skills/kld-sdd/opsx-spec/checklist.md +1 -1
  41. package/templates/skills/kld-sdd/opsx-task/SKILL.md +10 -10
  42. package/templates/skills/kld-sdd/opsx-task/checklist.md +3 -3
  43. package/templates/skills/kld-sdd/opsx-task/reference.md +3 -3
  44. package/templates/skills/kld-sdd/opsx-test/SKILL.md +7 -5
  45. package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/SKILL.md +4 -4
  46. package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/reference.md +4 -4
  47. package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/SKILL.md +13 -13
  48. package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/checklist.md +5 -5
  49. package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/reference.md +12 -12
  50. package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/SKILL.md +3 -3
  51. package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/checklist.md +2 -2
  52. package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/SKILL.md +2 -2
  53. package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/parameterized-testing.md +1 -1
  54. package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/SKILL.md +5 -5
  55. package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/checklist.md +5 -5
  56. package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/SKILL.md +3 -3
  57. package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/non-tdd-modules.md +1 -1
  58. package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/refactor-checklist.md +1 -1
  59. package/templates/skills/kld-sdd/tdd-rules/rules/test-skeleton-telemetry.md +19 -0
  60. package/templates/skills/kld-sdd/opsx-tdd-rules/rules/test-skeleton-telemetry.md +0 -19
  61. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/cause-effect-clarity.md +0 -0
  62. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/clean-test-data.md +0 -0
  63. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/existing-test-awareness.md +0 -0
  64. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/given-when-then.md +0 -0
  65. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/good-test-qualities.md +0 -0
  66. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/mock-boundary.md +0 -0
  67. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/naming-conventions.md +0 -0
  68. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/no-logic-in-tests.md +0 -0
  69. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/one-test-one-scenario.md +0 -0
  70. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/prefer-public-apis.md +0 -0
  71. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/test-behaviors-not-methods.md +0 -0
  72. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/argument-matching.md +0 -0
  73. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/controller-test-rules.md +0 -0
  74. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/domain-service-rules.md +0 -0
  75. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/java-test-template.md +0 -0
  76. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/json-serialization.md +0 -0
  77. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/logging-rules.md +0 -0
  78. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/compilation-verification.md +0 -0
  79. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/execution-verification.md +0 -0
  80. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/python/py-test-template.md +0 -0
  81. /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/typescript/ts-test-template.md +0 -0
  82. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/controller-strategy.md +0 -0
  83. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/dag-generation-rules.md +0 -0
  84. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/des-step-annotation.md +0 -0
  85. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/exception-path-coverage.md +0 -0
  86. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-scope-declaration.md +0 -0
  87. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-yagni-fence.md +0 -0
  88. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/multi-validation-split.md +0 -0
  89. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/task-type-definitions.md +0 -0
  90. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/tdd-strategy-selection.md +0 -0
  91. /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/test-execution-gate.md +0 -0
@@ -170,7 +170,7 @@ node "$(cat .sdd-spec-root)/skywalk-sdd/context-client.cjs" \
170
170
  2. 新场景:`SCN-<slug>-<NNN>`;slug=kebab-case 小写 ≤40;NNN=该 REQ 命名空间内 max+1(已用集合=KB 回传 ∪ 本 Change 已写键,含 removed 墓碑)。
171
171
  3. removed 号是墓碑:永不复用、永不重排;序号达 999 → 硬错误,回需求系统拆分需求,不扩位。
172
172
  4. 写完立即用 `cli.cjs external-key --validate … --type scenario` 校验;REQ 前缀必须 ∈ proposal `requirement-refs`。
173
- - 场景级「同 SCN key + 同锚点、不同 entity_id」当场问 A/B/C;未决不得进入下一 CAP / design。决议追加到 `continuity-resolution.json` 的 `scenarios[]`;决议中的 `externalKey` 必须是归一化形态。
173
+ - 场景级「同 SCN key + 同锚点、不同 entity_id」当场问 A/B/C;未决不得进入下一 CAP / design。决议追加到 `ontology/continuity-resolution.json` 的 `scenarios[]`;决议中的 `externalKey` 必须是归一化形态。
174
174
  - 优先消费 `reuseBundles[].statements`;`designElements` 只作理解上下文,不能写成 Spec 的 How。
175
175
  - 所有知识库内容均为 advisory;与用户确认 / proposal 冲突时以当前确认与 proposal 为准。
176
176
  - **禁止**铸/改 REQ/FEAT;**禁止**自动重排/回收 SCN。
@@ -214,7 +214,7 @@ node "$(cat .sdd-spec-root)/skywalk-sdd/context-client.cjs" \
214
214
  - 需求项使用 `####`(4个#)
215
215
  - 场景使用 `#####`(5个#)
216
216
 
217
- **⛔ 多校验拆分规则(TDD 关键)**:当单个 STMT 包含多个"必须校验"条件时,每个校验条件必须有对应的独立 AC 场景。规则详见 `opsx-tdd-rules/rules/multi-validation-split.md`
217
+ **⛔ 多校验拆分规则(TDD 关键)**:当单个 STMT 包含多个"必须校验"条件时,每个校验条件必须有对应的独立 AC 场景。规则详见 `tdd-rules/rules/multi-validation-split.md`
218
218
 
219
219
  ### 6.5 【Node 版本约束来源校验】
220
220
 
@@ -34,7 +34,7 @@ description: opsx-spec 的阶段强制检查点与自检清单。仅在执行 sp
34
34
  - [ ] 已消费工程知识库 `answeredQuestions`,没有重复询问历史事实已经回答的问题
35
35
  - [ ] 仅将 `reuseMode=INHERIT` 的事实作为身份继承;`REFERENCE` 候选使用新实体身份
36
36
  - [ ] 已处理与当前 Capability 有关的 `clarificationQuestions`
37
- - [ ] ⛔ **多校验拆分(TDD 模式)**:当 test-strategy=tdd 时,单个 STMT 包含多个"必须校验"条件时,每个校验条件有对应的独立 AC 场景(规则见 `opsx-tdd-rules/rules/multi-validation-split.md`)
37
+ - [ ] ⛔ **多校验拆分(TDD 模式)**:当 test-strategy=tdd 时,单个 STMT 包含多个"必须校验"条件时,每个校验条件有对应的独立 AC 场景(规则见 `tdd-rules/rules/multi-validation-split.md`)
38
38
 
39
39
  **如有任意一项未满足,重新生成对应章节,直至全部通过。** 自检完成后必须输出结构化自检报告(模板见 `./reference.md`「§7 质量自检报告模板」),未通过项自动修复后重新输出。
40
40
 
@@ -150,8 +150,8 @@ Simple 模式或单文件能力域下,**不要拆成多个同文件任务**。
150
150
 
151
151
  **若未设置**:使用 **AskUserQuestion** 工具询问(A/B/C 三选一)
152
152
 
153
- > 完整策略定义见 opsx-tdd-core/SKILL.md §5
154
- > 交互引导文案见 opsx-tdd-rules/rules/tdd-strategy-selection.md
153
+ > 完整策略定义见 tdd-core/SKILL.md §5
154
+ > 交互引导文案见 tdd-rules/rules/tdd-strategy-selection.md
155
155
 
156
156
  ### 6. 【交互引导】确认任务拆解策略
157
157
 
@@ -185,19 +185,19 @@ Simple 模式或单文件能力域下,**不要拆成多个同文件任务**。
185
185
  4. GREEN 不得包含未测试的 Controller/Filter/Config
186
186
  5. 非 TDD 模块(前端 UI/配置/SQL DDL)不拆红绿
187
187
  6. Controller 层策略必须在 tasks.md §2.0 中声明(策略 A 或 B),两种策略都必须生成测试任务
188
- 7. ⛔ **GREEN 任务 YAGNI 围栏**:每个 GREEN-N 任务描述末尾必须包含"不提前实现 [后续 RED 行为]"围栏声明。规则详见 `opsx-tdd-rules/rules/green-yagni-fence.md`
188
+ 7. ⛔ **GREEN 任务 YAGNI 围栏**:每个 GREEN-N 任务描述末尾必须包含"不提前实现 [后续 RED 行为]"围栏声明。规则详见 `tdd-rules/rules/green-yagni-fence.md`
189
189
  8. ⛔ **TDD 模式 DAG 并行标注**:当 `test-strategy=tdd` 时,DAG 拓扑图中每个 RED→GREEN 对必须标注 `⛔ 串行:不可同层并行`。同层存在多个 RED→GREEN 对时,必须在拓扑图中显式注明"本层 RED→GREEN 对须逐对串行执行,禁止并行派发"。非 TDD 模块的同层任务(如 UI/配置/SQL DDL)仍可并行。
190
190
 
191
191
  ⛔ BEFORE 生成 TDD 任务,必须读取:
192
- 1. opsx-tdd-core/reference.md §6(DAG 生成规则表)
193
- 2. opsx-tdd-rules/rules/dag-generation-rules.md(DAG 规则文件)
194
- 3. opsx-tdd-rules/rules/controller-strategy.md(Controller 策略 A/B)
195
- 4. opsx-tdd-rules/rules/exception-path-coverage.md(异常路径测试覆盖门禁)
192
+ 1. tdd-core/reference.md §6(DAG 生成规则表)
193
+ 2. tdd-rules/rules/dag-generation-rules.md(DAG 规则文件)
194
+ 3. tdd-rules/rules/controller-strategy.md(Controller 策略 A/B)
195
+ 4. tdd-rules/rules/exception-path-coverage.md(异常路径测试覆盖门禁)
196
196
  读取后确认:"已读取 N 个规则文件"。
197
197
 
198
- > 完整 TDD 拆分示例见 opsx-tdd-core/reference.md §4
199
- > 非 TDD 模块定义见 opsx-tdd-rules/rules/non-tdd-modules.md
200
- > 任务类型定义见 opsx-tdd-rules/rules/task-type-definitions.md
198
+ > 完整 TDD 拆分示例见 tdd-core/reference.md §4
199
+ > 非 TDD 模块定义见 tdd-rules/rules/non-tdd-modules.md
200
+ > 任务类型定义见 tdd-rules/rules/task-type-definitions.md
201
201
 
202
202
  ### 8. 质量红线自检
203
203
 
@@ -39,10 +39,10 @@ description: opsx-task 的阶段强制检查点与自检清单。仅在执行 ta
39
39
 
40
40
  ## §8.1 TDD 合规性自检(仅 test-strategy=tdd 时)
41
41
 
42
- ⛔ 执行 `opsx-tdd-core/checklist.md` §B(11 项)逐项检查。
42
+ ⛔ 执行 `tdd-core/checklist.md` §B(11 项)逐项检查。
43
43
 
44
- > 不在此内联复制,以 opsx-tdd-core/checklist.md §B 为唯一真相源。
45
- > 额外补充:还需检查 `opsx-tdd-rules/rules/exception-path-coverage.md`(异常路径覆盖门禁)——每个 orElseThrow/边界检查须有对应 RED 任务。
44
+ > 不在此内联复制,以 tdd-core/checklist.md §B 为唯一真相源。
45
+ > 额外补充:还需检查 `tdd-rules/rules/exception-path-coverage.md`(异常路径覆盖门禁)——每个 orElseThrow/边界检查须有对应 RED 任务。
46
46
 
47
47
  ---
48
48
 
@@ -18,7 +18,7 @@ description: opsx-task 的详细模板:telemetry 命令、DAG 生成规则表
18
18
 
19
19
  ## §6 DAG 生成规则表
20
20
 
21
- > 完整规则见 `opsx-tdd-rules/rules/dag-generation-rules.md`,此处仅保留快速参考。
21
+ > 完整规则见 `tdd-rules/rules/dag-generation-rules.md`,此处仅保留快速参考。
22
22
 
23
23
  **根据 test-strategy 调整 DAG 生成规则:**
24
24
 
@@ -52,7 +52,7 @@ spec.md user-auth 定义了 7 个场景,拆为 7 对 RED+GREEN + 1 个 REFACTO
52
52
  | TASK-05-GREEN-6 | 登出实现 | 实现-GREEN | TASK-05-RED-6 | 让 RED-6 通过。仅实现当前 RED 测试覆盖的行为路径,不提前实现后续 capability 的功能。 |
53
53
  | TASK-05-REFACTOR | 重构优化 | 重构-REFACTOR | TASK-05-GREEN-6 | 所有测试仍绿,代码清理 |
54
54
 
55
- > GREEN 任务的 YAGNI 围栏生成规则详见 `opsx-tdd-rules/rules/green-yagni-fence.md`
55
+ > GREEN 任务的 YAGNI 围栏生成规则详见 `tdd-rules/rules/green-yagni-fence.md`
56
56
 
57
57
  **关键区别**:
58
58
  - 每个 RED 任务都带**真实断言**,跑起来确实失败
@@ -86,7 +86,7 @@ spec.md user-auth 定义了 7 个场景,拆为 7 对 RED+GREEN + 1 个 REFACTO
86
86
 
87
87
  ## §6.2 非 TDD 模块处理规则
88
88
 
89
- > 完整规则见 `opsx-tdd-rules/rules/non-tdd-modules.md`,此处仅保留快速参考。
89
+ > 完整规则见 `tdd-rules/rules/non-tdd-modules.md`,此处仅保留快速参考。
90
90
 
91
91
  以下模块不需要红绿循环,按常规任务处理:
92
92
  - 前端 UI 页面(Vue 组件)→ UI层任务
@@ -105,13 +105,15 @@ allowed-tools:
105
105
 
106
106
  ### 4a. 【M3 Telemetry】记录测试结果
107
107
 
108
- 测试执行完成后,在 stage_end 之前记录 `test_result` 事件:
108
+ 每一次真实测试执行只记录一条 `test_result`,不得把同一次命令的结果复制到多个任务,也不得用估算值补齐用例数。测试执行完成后,在 stage_end 之前记录:
109
109
 
110
110
  ```bash
111
- node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --type=test_result --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="[passed]/[total] passed" --details-json="{\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":<passed>,\"failed\":<failed>,\"skipped\":<skipped>,\"coverage\":<coverage>,\"duration_ms\":<duration_ms>}}"
111
+ node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --strict --type=test_result --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --task-id=<首个TASK-ID> --run-id=<本次真实执行的稳定ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="<人能看懂的测试结论>" --details-json="{\"test_results\":{\"snapshot_kind\":\"final\",\"verified_task_ids\":[\"<TASK-ID-1>\",\"<TASK-ID-2>\"],\"tdd_phase\":\"<red|green|refactor|regression|not-applicable>\",\"command\":\"<实际测试命令>\",\"exit_code\":<退出码>,\"counts_known\":<true|false>,\"passed\":<counts_known=true时填写>,\"failed\":<counts_known=true时填写>,\"skipped\":<counts_known=true时填写>,\"duration_ms\":<实测毫秒>,\"failure_type\":\"<assertion|contract|compile|infrastructure|timeout|none>\",\"expected_failure\":<仅RED预期失败时true>}}"
112
112
  ```
113
113
 
114
- 此事件供 report 的 `test_pass_summary` 采集(M3),确保报告能显示真实测试通过率。
114
+ `run_id` 在同一次执行重试写入时必须保持不变:相同内容会幂等跳过,不同内容会被判为冲突。`counts_known=false` 时省略 `passed/failed/skipped`,绝不写虚构的 `0`。RED 只有在 `expected_failure=true`、退出码非 0 且失败类型为 `assertion` 或 `contract` 时才是有效 RED;基础设施或编译错误不算。
115
+
116
+ 此事件供任务完成证据和最终报告采集。最终回归必须写 `snapshot_kind:"final"`;一次执行覆盖多个任务时用去重的 `verified_task_ids`,仍只写一条事件。后续 `task_update` 只引用本事件返回的 `event_id`,不再内嵌或复制测试计数。
115
117
 
116
118
  > **⚠️ P1-4 coverage 不得为 null**:`test_results.coverage` 必须填实测覆盖率数值(跑了 `--coverage` 就填数值,如 `86.5`);未跑 `--coverage` 时填字符串 `"not-run"` 并在 summary 说明原因。**禁止填 `null`**。若 `proposal.md` 含"覆盖率 ≥ X%"验收标准,强制使用 `--coverage` 运行测试。
117
119
 
@@ -148,8 +150,8 @@ node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --type=test_result --com
148
150
  - [ ] 无"生产类中加测试专用方法"
149
151
  - [ ] 无"不理解依赖就 mock"
150
152
 
151
- > 完整 12 项反模式检测见 opsx-tdd-anti-patterns/SKILL.md §4
152
- > TDD 报告模式见 opsx-tdd-review/SKILL.md §3
153
+ > 完整 12 项反模式检测见 tdd-anti-patterns/SKILL.md §4
154
+ > TDD 报告模式见 tdd-review/SKILL.md §3
153
155
 
154
156
  ### 6. 【交互引导】根据结果引导下一步
155
157
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: opsx-tdd-anti-patterns
2
+ name: tdd-anti-patterns
3
3
  description: "测试反模式防护层 — 16 种反模式检测(RED 阶段 3 种 + GREEN 后 13 种),每种带门禁函数和修复方案。当编写或审查测试代码时引用本技能。"
4
4
  ---
5
5
 
6
- # opsx-tdd-anti-patterns — 反模式防护层
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 | **缺少负面测试** | 只测试正常路径,不测试错误条件 | 每个方法至少有一个异常路径测试(见 `opsx-tdd-rules/rules/exception-path-coverage.md`) |
51
- | 16 | **AC 变体覆盖不足** | AC 场景描述含"或"条件(如"缺少 A 或 B 或为空"),但测试只覆盖部分变体 | AC 中每个"或"条件变体必须有对应测试方法(规则见 `opsx-tdd-rules/rules/multi-validation-split.md` §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: "opsx-tdd-anti-patterns 详细参考 — 9 种反模式完整详表 + 修复方案代码示例。仅在需要详细反模式检查时读取。"
2
+ description: "tdd-anti-patterns 详细参考 — 9 种反模式完整详表 + 修复方案代码示例。仅在需要详细反模式检查时读取。"
3
3
  ---
4
4
 
5
- # opsx-tdd-anti-patterns — 详细参考
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
- **修复**:每个方法至少有一个异常路径测试。规则见 `opsx-tdd-rules/rules/exception-path-coverage.md`。
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 中每个"或"条件变体必须有对应测试方法。规则见 `opsx-tdd-rules/rules/multi-validation-split.md` §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: opsx-tdd-core
2
+ name: tdd-core
3
3
  description: "TDD 流程纪律层 — 铁律、红绿重构循环、执行门禁、合规自检。当 test-strategy=tdd 时,所有 SDD 阶段引用本技能获取 TDD 流程规则。"
4
4
  ---
5
5
 
6
- # opsx-tdd-core — TDD 流程纪律层
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 声明**(见 `opsx-tdd-rules/rules/green-scope-declaration.md`):
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
- - ⛔ 执行 `opsx-tdd-rules/rules/refactor-checklist.md`(7 项重构检查点)
129
+ - ⛔ 执行 `tdd-rules/rules/refactor-checklist.md`(7 项重构检查点)
130
130
  - **Repeat**:下一个失败测试,下一个功能
131
131
 
132
132
  ## §4 执行门禁
133
133
 
134
- > 完整规则见 `opsx-tdd-rules/rules/test-execution-gate.md`,此处仅保留快速参考。
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
- > 完整规则见 `opsx-tdd-rules/rules/tdd-strategy-selection.md`,此处仅保留快速参考。
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
- > 完整规则见 `opsx-tdd-rules/rules/controller-strategy.md`,此处仅保留快速参考。
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
- - → `opsx-tdd-quality`:单测代码质量标准(Mock 边界矩阵、命名规范、Java 规则等)
218
- - → `opsx-tdd-anti-patterns`:测试反模式检测(15 种反模式 + 门禁函数)
219
- - → `opsx-tdd-review`:测试审查(8 项质量检查 + 缺失测试检测)
220
- - → `opsx-tdd-metrics`:度量分析(隔离评分、命名评分、覆盖率缺口)
221
- - → `opsx-tdd-rules`:规则库(DAG 规则、Controller 策略、telemetry 模板等)
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, opsx-tdd-core)
227
+ - `rules/refactor-checklist.md`:REFACTOR 阶段检查点(引用方:opsx-apply, tdd-core)
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: "opsx-tdd-core 自检清单 — TDD 执行合规自检、合规性检查、完成验证。仅在执行 TDD 任务自检时读取。"
2
+ description: "tdd-core 自检清单 — TDD 执行合规自检、合规性检查、完成验证。仅在执行 TDD 任务自检时读取。"
3
3
  ---
4
4
 
5
- # opsx-tdd-core — 自检清单
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 断言覆盖的逻辑分支(规则见 `opsx-tdd-rules/rules/green-scope-declaration.md` §Scope 自检)
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 任务验收标准列出所有变体的测试方法(引用 `opsx-tdd-rules/rules/multi-validation-split.md`)
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 场景描述含"或"条件时,每个变体都有对应测试方法(引用 `opsx-tdd-rules/rules/multi-validation-split.md`)
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: "opsx-tdd-core 详细参考 — 执行步骤、拆分示例、DAG 规则、telemetry 模板。仅在需要详细执行指引时读取。"
2
+ description: "tdd-core 详细参考 — 执行步骤、拆分示例、DAG 规则、telemetry 模板。仅在需要详细执行指引时读取。"
3
3
  ---
4
4
 
5
- # opsx-tdd-core — 详细参考
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 声明**(见 `opsx-tdd-rules/rules/green-scope-declaration.md`):
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
- > 完整检查点见 `opsx-tdd-rules/rules/refactor-checklist.md`(7 项重构检查 + 跳过条件 + 量化标准)。
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. 执行 `opsx-tdd-rules/rules/refactor-checklist.md` 的 7 项检查
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
- > 完整规则见 `opsx-tdd-rules/rules/dag-generation-rules.md`,此处仅保留快速参考。
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
- > 完整规则见 `opsx-tdd-rules/rules/non-tdd-modules.md`,此处仅保留快速参考。
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 "$(cat .sdd-spec-root)/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}}'
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 "$(cat .sdd-spec-root)/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}}'
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 "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --type=task_update --com
138
138
 
139
139
  1. 在结束 apply 或执行收尾之前,必须真实运行单元测试命令
140
140
  2. 须留下可核验 telemetry 证据(任选其一):
141
- - `node "$(cat .sdd-spec-root)/skywalk-sdd/log.cjs" record --type=test_result ...`(`test_results.command` 非空,且 `passed`/`failed`/`duration_ms` 有实际值)
142
- - `task_update` 的 `details-json` 中 `test_results` 含真实执行数据
143
- - 或单独运行 `/opsx-test` 并完成 `command=test` 的 `stage_end`
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: opsx-tdd-metrics
2
+ name: tdd-metrics
3
3
  description: "度量分析层 — 测试质量量化度量:隔离评分、命名评分、测试异味检测、覆盖率缺口分析。当需要量化测试质量时引用本技能。"
4
4
  ---
5
5
 
6
- # opsx-tdd-metrics — 度量分析层
6
+ # tdd-metrics — 度量分析层
7
7
 
8
8
  > **定位**:测试质量的量化度量,提供可计算的评分。
9
9
  > **参考来源**:tdd-guide `metrics_calculator.py`
10
- > **引用方式**:**可选引用**。本技能不参与强制流程,仅在需要量化评估测试质量时按需读取。`opsx-check` 和 `opsx-apply` 的强制检查引用 `opsx-tdd-core/checklist.md` 和 `opsx-tdd-review`,不引用本技能。
10
+ > **引用方式**:**可选引用**。本技能不参与强制流程,仅在需要量化评估测试质量时按需读取。`opsx-check` 和 `opsx-apply` 的强制检查引用 `tdd-core/checklist.md` 和 `tdd-review`,不引用本技能。
11
11
 
12
12
  ---
13
13
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: "opsx-tdd-metrics 自检清单 — 隔离评分、命名评分、可测试性评分的计算口径。仅在量化测试质量时读取。"
2
+ description: "tdd-metrics 自检清单 — 隔离评分、命名评分、可测试性评分的计算口径。仅在量化测试质量时读取。"
3
3
  ---
4
4
 
5
- # opsx-tdd-metrics — 自检清单
5
+ # tdd-metrics — 自检清单
6
6
 
7
7
  > 仅在量化测试质量时读取。日常流程见 `SKILL.md`。
8
8
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: opsx-tdd-quality
2
+ name: tdd-quality
3
3
  description: "单测代码质量层 — Mock 边界矩阵、测试命名规范、Given-When-Then 结构、Java 测试规则等。当编写或审查测试代码时引用本技能。"
4
4
  ---
5
5
 
6
- # opsx-tdd-quality — 单测代码质量层
6
+ # tdd-quality — 单测代码质量层
7
7
 
8
8
  > **定位**:单元测试代码的质量标准,不涉及流程,只关注"写出来的测试代码本身是否高质量"。
9
9
  > **参考来源**:unit-tests-skills(14 通用规则 + 6 Java 规则)
@@ -1,7 +1,7 @@
1
1
  # 参数化测试指导
2
2
 
3
3
  > 影响等级:MEDIUM
4
- > 引用方:opsx-tdd-quality/SKILL.md §7
4
+ > 引用方:tdd-quality/SKILL.md §7
5
5
 
6
6
  ## 适用场景
7
7
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: opsx-tdd-review
2
+ name: tdd-review
3
3
  description: "测试审查层 — 从审查者角度检测'测试通过但没测到关键点'。8 项质量检查 + 缺失测试检测 + 测试异味检测。当审查测试代码时引用本技能。"
4
4
  ---
5
5
 
6
- # opsx-tdd-review — 测试审查层
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
- > 完整检测信号见 `opsx-tdd-metrics/SKILL.md` §3,此处仅保留快速参考。
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
- 执行 opsx-tdd-review/SKILL.md §3(8 项质量审查)+ §4(缺失测试检测)+ §5(测试异味检测)。
87
+ 执行 tdd-review/SKILL.md §3(8 项质量审查)+ §4(缺失测试检测)+ §5(测试异味检测)。
88
88
  对于 GREEN 任务,额外检查:
89
89
  - GREEN Scope: 生产代码中是否有未被当前 RED 断言覆盖的逻辑分支?
90
90
  - YAGNI 围栏: 是否提前实现了后续 RED 的行为?
91
- - 反模式: 执行 opsx-tdd-anti-patterns/SKILL.md §4(12 种 GREEN 后反模式)
91
+ - 反模式: 执行 tdd-anti-patterns/SKILL.md §4(12 种 GREEN 后反模式)
92
92
 
93
93
  ## 审查标准
94
94
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: "opsx-tdd-review 自检清单 — 测试质量审查 8 项 + 缺失测试检测 + 测试异味检测。仅在审查测试代码时读取。"
2
+ description: "tdd-review 自检清单 — 测试质量审查 8 项 + 缺失测试检测 + 测试异味检测。仅在审查测试代码时读取。"
3
3
  ---
4
4
 
5
- # opsx-tdd-review — 自检清单
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 行为,见 `opsx-tdd-quality/SKILL.md` §2)
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/边界检查有对应测试,见 `opsx-tdd-rules/rules/exception-path-coverage.md`)
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
- - [ ] 已检查 `opsx-tdd-anti-patterns/SKILL.md` §3-§4 的 15 种反模式
39
+ - [ ] 已检查 `tdd-anti-patterns/SKILL.md` §3-§4 的 15 种反模式
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: opsx-tdd-rules
2
+ name: tdd-rules
3
3
  description: "TDD 规则库 — DAG 生成规则、Controller 策略、任务类型定义、telemetry 模板等独立规则文件。当需要具体 TDD 规则文件时引用本技能。"
4
4
  ---
5
5
 
6
- # opsx-tdd-rules — 规则库
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, opsx-tdd-core |
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 策略选择见 `opsx-tdd-rules/rules/controller-strategy.md`,必须在 tasks.md §2.0 中声明。
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
- > 引用方:opsx-tdd-core/reference.md §3(REFACTOR 执行步骤)、opsx-apply/implementer-prompt.md(REFACTOR 任务执行)、opsx-apply/checklist.md(REFACTOR 门禁)
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 "$(cat .sdd-spec-root)/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 "$(cat .sdd-spec-root)/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
- ```