phasegate 0.16.0 → 0.31.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.
Files changed (215) hide show
  1. package/README.ja.md +71 -39
  2. package/README.md +69 -9
  3. package/docs/ADR/ADR-013-story-reflection-gate.md +100 -0
  4. package/docs/guide/configuration.md +244 -7
  5. package/package.json +4 -2
  6. package/scripts/harness/adr-foundation/domain/ports/adr-document-parser-port.ts +1 -0
  7. package/scripts/harness/adr-foundation/domain/ports/adr-frontmatter-parser-port.ts +1 -0
  8. package/scripts/harness/adr-foundation/domain/ports/adr-repository-port.ts +1 -0
  9. package/scripts/harness/adr-foundation/domain/value-objects/adr-status.ts +6 -6
  10. package/scripts/harness/agent-integration/application/dto/handle-pre-tool-use-dto.ts +3 -1
  11. package/scripts/harness/agent-integration/application/usecases/handle-pre-tool-use-usecase.ts +108 -2
  12. package/scripts/harness/agent-integration/domain/ports/config-query-port.ts +2 -0
  13. package/scripts/harness/agent-integration/domain/ports/phase-gate-query-port.ts +1 -1
  14. package/scripts/harness/agent-integration/domain/ports/story-reflection-query-port.ts +8 -0
  15. package/scripts/harness/agent-integration/domain/services/bash-write-target-extractor.ts +258 -0
  16. package/scripts/harness/agent-integration/domain/services/hook-to-cli-translator.ts +21 -4
  17. package/scripts/harness/agent-integration/domain/value-objects/protected-file-list.ts +20 -0
  18. package/scripts/harness/agent-integration/domain/value-objects/story-reflection-query-result.ts +63 -0
  19. package/scripts/harness/agent-integration/infrastructure/adapters/file-system-story-reflection-query-adapter.ts +122 -0
  20. package/scripts/harness/agent-integration/infrastructure/adapters/harness-config-config-query-adapter.ts +20 -0
  21. package/scripts/harness/agent-integration/infrastructure/adapters/phase-gate-query-adapter.ts +17 -3
  22. package/scripts/harness/agent-integration/presentation/pre-tool-use-hook.ts +29 -2
  23. package/scripts/harness/biome-ast-engine/domain/services/lint-runner.ts +24 -0
  24. package/scripts/harness/biome-ast-engine/domain/services/rule-definition-registry.ts +1 -1
  25. package/scripts/harness/biome-ast-engine/domain/value-objects/source-module-snapshot.ts +5 -2
  26. package/scripts/harness/biome-ast-engine/infrastructure/adapters/node-workspace-file-adapter.ts +1 -1
  27. package/scripts/harness/biome-ast-engine/infrastructure/adapters/typescript-source-module-analyzer-adapter.ts +1 -1
  28. package/scripts/harness/biome-ast-engine/infrastructure/parsers/unit-comment-parser.ts +12 -7
  29. package/scripts/harness/ci-governance/composition-root.ts +1 -0
  30. package/scripts/harness/config-foundation/application/mappers/phase-config-section-mapper.ts +44 -0
  31. package/scripts/harness/config-foundation/application/usecases/load-resolved-config-use-case.ts +20 -1
  32. package/scripts/harness/config-foundation/domain/harness-config.ts +2 -1
  33. package/scripts/harness/config-foundation/domain/value-objects/phase-dependencies-config.ts +18 -4
  34. package/scripts/harness/config-foundation/infrastructure/schemas/harness-config-v2.schema.json +185 -10
  35. package/scripts/harness/config-foundation/infrastructure/validators/ajv-config-schema-validator.ts +2 -1
  36. package/scripts/harness/harness-api/application/dto/command-dispatch-input.ts +1 -0
  37. package/scripts/harness/harness-api/application/dto/command-dispatch-output.ts +1 -0
  38. package/scripts/harness/harness-api/application/dto/exit-code-decision-input.ts +1 -0
  39. package/scripts/harness/harness-api/application/dto/exit-code-decision-output.ts +1 -0
  40. package/scripts/harness/harness-api/application/dto/harness-api-response-contract.ts +1 -0
  41. package/scripts/harness/harness-api/application/dto/initialize-registry-input.ts +1 -0
  42. package/scripts/harness/harness-api/application/dto/registry-summary-output.ts +1 -0
  43. package/scripts/harness/harness-api/application/dto/status-derivation-input.ts +1 -0
  44. package/scripts/harness/harness-api/application/mappers/harness-api-response-mapper.ts +1 -0
  45. package/scripts/harness/harness-api/application/usecases/decide-exit-code-usecase.ts +1 -0
  46. package/scripts/harness/harness-api/application/usecases/derive-harness-status-usecase.ts +1 -0
  47. package/scripts/harness/harness-api/application/usecases/dispatch-command-usecase.ts +1 -0
  48. package/scripts/harness/harness-api/application/usecases/initialize-command-registry-usecase.ts +1 -0
  49. package/scripts/harness/harness-api/composition-root.ts +1 -0
  50. package/scripts/harness/harness-api/domain/ports/artifact-scanner-port.ts +1 -0
  51. package/scripts/harness/harness-api/domain/ports/biome-lint-port.ts +1 -0
  52. package/scripts/harness/harness-api/domain/ports/config-query-port.ts +1 -0
  53. package/scripts/harness/harness-api/domain/ports/impact-analysis-port.ts +1 -0
  54. package/scripts/harness/harness-api/domain/ports/phase-gate-query-port.ts +1 -0
  55. package/scripts/harness/harness-api/domain/ports/validator-execution-port.ts +1 -0
  56. package/scripts/harness/harness-api/domain/services/command-dispatch-service.ts +1 -0
  57. package/scripts/harness/harness-api/domain/services/command-registry.ts +1 -0
  58. package/scripts/harness/harness-api/domain/services/status-derivation-service.ts +1 -0
  59. package/scripts/harness/harness-api/domain/value-objects/artifact-scan-result.ts +1 -0
  60. package/scripts/harness/harness-api/domain/value-objects/check-ready-result.ts +1 -0
  61. package/scripts/harness/harness-api/domain/value-objects/ci-check-result.ts +1 -0
  62. package/scripts/harness/harness-api/domain/value-objects/cli-command-definition.ts +1 -0
  63. package/scripts/harness/harness-api/domain/value-objects/command-input-spec.ts +1 -0
  64. package/scripts/harness/harness-api/domain/value-objects/drift-report-summary.ts +1 -0
  65. package/scripts/harness/harness-api/domain/value-objects/exit-code-spec.ts +1 -0
  66. package/scripts/harness/harness-api/domain/value-objects/harness-api-response.ts +1 -0
  67. package/scripts/harness/harness-api/domain/value-objects/harness-status-summary.ts +1 -0
  68. package/scripts/harness/harness-api/domain/value-objects/layer-health.ts +1 -0
  69. package/scripts/harness/harness-api/domain/value-objects/phase-info.ts +1 -0
  70. package/scripts/harness/harness-api/index.ts +1 -0
  71. package/scripts/harness/harness-api/infrastructure/adapters/biome-ast-engine-lint-adapter.ts +1 -0
  72. package/scripts/harness/harness-api/infrastructure/adapters/file-system-artifact-scanner-adapter.ts +1 -0
  73. package/scripts/harness/harness-api/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
  74. package/scripts/harness/harness-api/infrastructure/adapters/nyquist-validation-impact-analysis-adapter.ts +1 -0
  75. package/scripts/harness/harness-api/infrastructure/adapters/phase-dependency-model-query-adapter.ts +1 -0
  76. package/scripts/harness/harness-api/infrastructure/adapters/validator-system-execution-adapter.ts +1 -0
  77. package/scripts/harness/harness-api/presentation/dto/cli-output-options.ts +1 -0
  78. package/scripts/harness/harness-api/presentation/formatters/harness-api-json-formatter.ts +1 -0
  79. package/scripts/harness/harness-api/presentation/handlers/check-phase-handler.ts +1 -0
  80. package/scripts/harness/harness-api/presentation/handlers/check-ready-handler.ts +1 -0
  81. package/scripts/harness/harness-api/presentation/handlers/ci-check-handler.ts +1 -0
  82. package/scripts/harness/harness-api/presentation/handlers/complete-check-handler.ts +1 -0
  83. package/scripts/harness/harness-api/presentation/handlers/detect-drift-handler.ts +1 -0
  84. package/scripts/harness/harness-api/presentation/handlers/impact-analysis-handler.ts +1 -0
  85. package/scripts/harness/harness-api/presentation/handlers/lint-handler.ts +1 -0
  86. package/scripts/harness/harness-api/presentation/handlers/status-handler.ts +1 -0
  87. package/scripts/harness/harness-error/infrastructure/adapters/legacy-error-reporter-adapter.ts +7 -1
  88. package/scripts/harness/integrations/pre-commit.ts +1 -0
  89. package/scripts/harness/main.ts +154 -34
  90. package/scripts/harness/phase-dependency-model/application/dto/resolve-gate-result-dto.ts +14 -0
  91. package/scripts/harness/phase-dependency-model/application/services/phase-gate-result-mapper.ts +20 -0
  92. package/scripts/harness/phase-dependency-model/application/usecases/check-story-reflection-usecase.ts +42 -0
  93. package/scripts/harness/phase-dependency-model/application/usecases/resolve-gate-usecase.ts +161 -0
  94. package/scripts/harness/phase-dependency-model/composition-root.ts +57 -1
  95. package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-dependencies.ts → full-phase-dependencies.ts} +3 -3
  96. package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-nodes.ts → full-phase-nodes.ts} +1 -1
  97. package/scripts/harness/phase-dependency-model/domain/definitions/full-story-reflection-defaults.ts +28 -0
  98. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-dependencies.ts +32 -0
  99. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-nodes.ts +50 -0
  100. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-story-reflection-defaults.ts +8 -0
  101. package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-dependencies.ts +39 -0
  102. package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-nodes.ts +118 -0
  103. package/scripts/harness/phase-dependency-model/domain/definitions/standard-story-reflection-defaults.ts +23 -0
  104. package/scripts/harness/phase-dependency-model/domain/models/phase-structure.ts +95 -23
  105. package/scripts/harness/phase-dependency-model/domain/ports/glob-matcher-port.ts +8 -0
  106. package/scripts/harness/phase-dependency-model/domain/ports/phase-config-provider-port.ts +2 -0
  107. package/scripts/harness/phase-dependency-model/domain/ports/story-annotation-verifier-port.ts +14 -0
  108. package/scripts/harness/phase-dependency-model/domain/ports/story-reflection-file-system-port.ts +16 -0
  109. package/scripts/harness/phase-dependency-model/domain/services/gate-graph.ts +223 -0
  110. package/scripts/harness/phase-dependency-model/domain/services/story-reflection-checker.ts +66 -0
  111. package/scripts/harness/phase-dependency-model/domain/values/gate-definition.ts +127 -0
  112. package/scripts/harness/phase-dependency-model/domain/values/gate-name.ts +40 -0
  113. package/scripts/harness/phase-dependency-model/domain/values/gate-story-annotation.ts +39 -0
  114. package/scripts/harness/phase-dependency-model/domain/values/phase-customization-policy.ts +16 -4
  115. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-config.ts +44 -0
  116. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-mapping.ts +91 -0
  117. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-result.ts +55 -0
  118. package/scripts/harness/phase-dependency-model/infrastructure/adapters/picomatch-glob-matcher.ts +17 -0
  119. package/scripts/harness/phase-dependency-model/infrastructure/adapters/story-annotation-verifier-adapter.ts +46 -0
  120. package/scripts/harness/phase-dependency-model/infrastructure/config/custom-gates-config-parser.ts +22 -0
  121. package/scripts/harness/phase-dependency-model/infrastructure/config/harness-config-phase-config-provider.ts +78 -2
  122. package/scripts/harness/phase-dependency-model/infrastructure/filesystem/file-system-story-reflection-adapter.ts +94 -0
  123. package/scripts/harness/phase-dependency-model/presentation/cli/check-phase-gate-command-handler.ts +12 -4
  124. package/scripts/harness/phase-dependency-model/presentation/cli/story-reflection-status-presenter.ts +87 -0
  125. package/scripts/harness/regression-suite/application/dto/analyze-migration-input.ts +1 -0
  126. package/scripts/harness/regression-suite/application/dto/analyze-migration-output.ts +1 -0
  127. package/scripts/harness/regression-suite/application/dto/configure-ci-gate-input.ts +1 -0
  128. package/scripts/harness/regression-suite/application/dto/configure-ci-gate-output.ts +1 -0
  129. package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-input.ts +1 -0
  130. package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-output.ts +1 -0
  131. package/scripts/harness/regression-suite/application/dto/run-regression-suite-input.ts +1 -0
  132. package/scripts/harness/regression-suite/application/dto/run-regression-suite-output.ts +1 -0
  133. package/scripts/harness/regression-suite/application/mappers/migration-mapping-mapper.ts +1 -0
  134. package/scripts/harness/regression-suite/application/mappers/test-execution-summary-mapper.ts +1 -0
  135. package/scripts/harness/regression-suite/application/usecases/analyze-v0-migration-usecase.ts +1 -0
  136. package/scripts/harness/regression-suite/application/usecases/configure-ci-gate-usecase.ts +1 -0
  137. package/scripts/harness/regression-suite/application/usecases/migrate-v0-tests-usecase.ts +1 -0
  138. package/scripts/harness/regression-suite/application/usecases/run-agent-independence-guard-usecase.ts +1 -0
  139. package/scripts/harness/regression-suite/application/usecases/run-gng-gate-regression-usecase.ts +1 -0
  140. package/scripts/harness/regression-suite/application/usecases/run-k-requirements-regression-usecase.ts +1 -0
  141. package/scripts/harness/regression-suite/application/usecases/run-k14-k15-regression-usecase.ts +1 -0
  142. package/scripts/harness/regression-suite/composition-root.ts +1 -0
  143. package/scripts/harness/regression-suite/domain/aggregates/v0-test-migration.ts +1 -0
  144. package/scripts/harness/regression-suite/domain/ports/ci-gate-result-writer-port.ts +1 -0
  145. package/scripts/harness/regression-suite/domain/ports/config-query-port.ts +1 -0
  146. package/scripts/harness/regression-suite/domain/ports/import-analyzer-port.ts +1 -0
  147. package/scripts/harness/regression-suite/domain/ports/migration-mapping-repository-port.ts +1 -0
  148. package/scripts/harness/regression-suite/domain/ports/suite-registry-port.ts +1 -0
  149. package/scripts/harness/regression-suite/domain/ports/test-runner-port.ts +1 -0
  150. package/scripts/harness/regression-suite/domain/ports/v0-spec-reader-port.ts +1 -0
  151. package/scripts/harness/regression-suite/domain/services/import-guard-service.ts +1 -0
  152. package/scripts/harness/regression-suite/domain/services/migration-analyzer.ts +1 -0
  153. package/scripts/harness/regression-suite/domain/services/regression-runner.ts +1 -0
  154. package/scripts/harness/regression-suite/domain/value-objects/agent-independence-test.ts +1 -0
  155. package/scripts/harness/regression-suite/domain/value-objects/biome-modification-spec.ts +1 -0
  156. package/scripts/harness/regression-suite/domain/value-objects/ci-gate-config.ts +1 -0
  157. package/scripts/harness/regression-suite/domain/value-objects/coverage-rate.ts +1 -0
  158. package/scripts/harness/regression-suite/domain/value-objects/gng-condition-test.ts +1 -0
  159. package/scripts/harness/regression-suite/domain/value-objects/import-violation.ts +1 -0
  160. package/scripts/harness/regression-suite/domain/value-objects/k-requirement-test.ts +1 -0
  161. package/scripts/harness/regression-suite/domain/value-objects/migration-mapping.ts +1 -0
  162. package/scripts/harness/regression-suite/domain/value-objects/regression-suite-definition.ts +1 -0
  163. package/scripts/harness/regression-suite/domain/value-objects/suite-id.ts +1 -0
  164. package/scripts/harness/regression-suite/domain/value-objects/test-execution-summary.ts +1 -0
  165. package/scripts/harness/regression-suite/domain/value-objects/test-failure-detail.ts +1 -0
  166. package/scripts/harness/regression-suite/domain/value-objects/v0-test-id.ts +1 -0
  167. package/scripts/harness/regression-suite/domain/value-objects/v1-test-path.ts +1 -0
  168. package/scripts/harness/regression-suite/infrastructure/adapters/biome-ast-import-analyzer-adapter.ts +1 -0
  169. package/scripts/harness/regression-suite/infrastructure/adapters/file-system-v0-spec-reader-adapter.ts +1 -0
  170. package/scripts/harness/regression-suite/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
  171. package/scripts/harness/regression-suite/infrastructure/adapters/json-ci-gate-result-writer-adapter.ts +1 -0
  172. package/scripts/harness/regression-suite/infrastructure/adapters/markdown-migration-mapping-repository-adapter.ts +1 -0
  173. package/scripts/harness/regression-suite/infrastructure/adapters/static-suite-registry-adapter.ts +1 -0
  174. package/scripts/harness/regression-suite/infrastructure/adapters/vitest-test-runner-adapter.ts +1 -0
  175. package/scripts/harness/regression-suite/infrastructure/registry/agent-independence-suite-definition.ts +1 -0
  176. package/scripts/harness/regression-suite/infrastructure/registry/gng-gate-suite-definition.ts +1 -0
  177. package/scripts/harness/regression-suite/infrastructure/registry/k-requirements-suite-definition.ts +1 -0
  178. package/scripts/harness/regression-suite/infrastructure/registry/v0-migration-suite-definition.ts +1 -0
  179. package/scripts/harness/setup/skill-deployer.ts +82 -5
  180. package/scripts/harness/shared-kernel/harness-api.ts +1 -0
  181. package/scripts/harness/skill-quality/composition-root.ts +1 -0
  182. package/scripts/harness/skill-quality/infrastructure/adapters/ajv-lesson-artifact-schema-adapter.ts +5 -4
  183. package/scripts/harness/traceability-model/domain/services/metadata-validator.ts +12 -10
  184. package/scripts/harness/traceability-model/infrastructure/parsers/source-metadata-parser.ts +16 -2
  185. package/skills/cascade-updater/SKILL.md +16 -3
  186. package/skills/codebase-mapper/SKILL.md +9 -9
  187. package/skills/codex-delegator/SKILL.md +5 -56
  188. package/skills/consistency-checker/SKILL.md +5 -9
  189. package/skills/consistency-checker/references//343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +6 -3
  190. package/skills/doc-freshness-checker/SKILL.md +6 -6
  191. package/skills/engineering-perspective/SKILL.md +2 -58
  192. package/skills/engineering-perspective/references/domain-model.md +4 -135
  193. package/skills/implementation-readiness-checker/SKILL.md +18 -72
  194. package/skills/it-test-designer/SKILL.md +25 -161
  195. package/skills/it-test-designer/references/it-test-design-template.md +131 -0
  196. package/skills/it-test-logic-designer/SKILL.md +13 -388
  197. package/skills/it-test-logic-designer/references/controller-test-patterns.md +100 -0
  198. package/skills/it-test-logic-designer/references/repository-test-patterns.md +206 -0
  199. package/skills/it-test-logic-designer/references/usecase-test-patterns.md +87 -0
  200. package/skills/pointer-validator/SKILL.md +4 -4
  201. package/skills/scenario-test-designer/SKILL.md +4 -68
  202. package/skills/scenario-test-designer/references/scenario-test-design-template.md +41 -0
  203. package/skills/scenario-test-designer/references/scenario-test-plan-template.md +35 -0
  204. package/skills/scenario-test-logic-designer/SKILL.md +21 -304
  205. package/skills/scenario-test-logic-designer/references/msw-patterns.md +36 -0
  206. package/skills/scenario-test-logic-designer/references/playwright-patterns.md +237 -0
  207. package/skills/test-coverage-checker/SKILL.md +39 -121
  208. package/skills/test-coverage-checker/references/coverage-report-template.md +99 -0
  209. package/skills/uiux-designer/SKILL.md +27 -92
  210. package/skills/uiux-designer/references/data-testid-convention.md +38 -0
  211. package/skills/uiux-designer/references/uiux-design-template.md +105 -0
  212. package/skills/unit-test-designer/SKILL.md +5 -106
  213. package/skills/unit-test-designer/references/unit-test-design-template.md +127 -0
  214. package/skills/unit-test-logic-designer/SKILL.md +28 -250
  215. package/skills/unit-test-logic-designer/references/test-patterns.md +207 -0
@@ -69,22 +69,7 @@ story-implementor ← TDD実装
69
69
  - 上位設計をスキップして進める(非推奨)
70
70
  3. **ユーザー指示待ち** — 独自判断でテスト設計を開始しない
71
71
 
72
- **報告テンプレート:**
73
- ```markdown
74
- ## ⚠️ 上位レイヤー設計が見つかりません
75
-
76
- 以下の設計文書が存在しないため、ユニットテスト設計を開始できません:
77
- - `docs/product/construction/{unit}/domain_model.md` ❌ 未作成
78
-
79
- ### 推奨アクション
80
- `domain-designer` スキルを使用してドメインモデルを作成してください。
81
-
82
- ### 選択肢
83
- 1. **domain-designerを先に実行する**(推奨)
84
- 2. **このまま進める**(上位設計なしで進める場合、整合性リスクあり)
85
-
86
- どちらを選択しますか?
87
- ```
72
+ 報告テンプレートは [references/unit-test-design-template.md](references/unit-test-design-template.md) の「3. 上位設計不足時の報告テンプレート」を参照。
88
73
 
89
74
  ---
90
75
 
@@ -109,43 +94,9 @@ story-implementor ← TDD実装
109
94
 
110
95
  ### 計画ファイルの構成
111
96
 
112
- ```markdown
113
- # ユニットテスト設計計画: {Unit名}
114
-
115
- ## 1. スコープ
116
- - 対象Unitのドメインモデル
117
- - テスト対象コンポーネント一覧
118
-
119
- ## 2. テスト対象分析
120
-
121
- ### 集約
122
- | 集約名 | 不変条件数 | 状態遷移数 | テストケース概算 |
123
- |--------|----------|----------|---------------|
97
+ スコープ、テスト対象分析(集約・エンティティ・値オブジェクト)、テスト方針、QA、前提条件・リスクの5セクション構成。
124
98
 
125
- ### エンティティ
126
- | エンティティ名 | ビジネスルール数 | テストケース概算 |
127
- |--------------|---------------|---------------|
128
-
129
- ### 値オブジェクト
130
- | 値オブジェクト名 | 制約数 | テストケース概算 |
131
- |----------------|-------|---------------|
132
-
133
- ## 3. テスト方針
134
- - 正常系/異常系のバランス
135
- - 境界値テストの対象
136
-
137
- ## 4. QA(不明点・確認事項)
138
-
139
- ### [Question] Q1: {質問タイトル}
140
- {質問の詳細と背景}
141
- **推奨案:** {AIの推奨案}
142
-
143
- [Answer]
144
- (人間が回答を記入)
145
-
146
- ## 5. 前提条件・リスク
147
- - ...
148
- ```
99
+ 詳細なテンプレートは [references/unit-test-design-template.md](references/unit-test-design-template.md) の「1. Phase 1 計画ファイルテンプレート」を参照。
149
100
 
150
101
  ### Phase 1 完了条件
151
102
  - 計画ファイルを出力した
@@ -189,61 +140,9 @@ story-implementor ← TDD実装
189
140
 
190
141
  ### unit_test_design.md の構成
191
142
 
192
- ```markdown
193
- # ユニットテスト設計: {Unit名}
194
-
195
- ## 1. 対象ドメインモデル
196
- - 集約: {集約名一覧}
197
- - エンティティ: {エンティティ名一覧}
198
- - 値オブジェクト: {値オブジェクト名一覧}
143
+ 対象ドメインモデル、集約テストケース(不変条件・状態遷移・生成)、エンティティテストケース(ビジネスルール・振る舞い)、値オブジェクトテストケース(等値性・制約)、境界値・異常系の5セクション構成。
199
144
 
200
- ## 2. 集約テストケース
201
-
202
- ### {集約名}
203
-
204
- #### 不変条件テスト
205
- | ケースID | 不変条件 | 入力 | 期待結果 |
206
- |---------|---------|------|---------|
207
- | UT-{集約}-001 | {条件説明} | ... | ... |
208
-
209
- #### 状態遷移テスト
210
- | ケースID | 初期状態 | 操作 | 期待状態 |
211
- |---------|---------|------|---------|
212
-
213
- #### 生成テスト
214
- | ケースID | 入力 | 期待結果 |
215
- |---------|------|---------|
216
-
217
- ## 3. エンティティテストケース
218
-
219
- ### {エンティティ名}
220
-
221
- #### ビジネスルールテスト
222
- | ケースID | ルール | 入力 | 期待結果 |
223
- |---------|-------|------|---------|
224
-
225
- #### 振る舞いテスト
226
- | ケースID | メソッド | 入力 | 期待結果 |
227
- |---------|---------|------|---------|
228
-
229
- ## 4. 値オブジェクトテストケース
230
-
231
- ### {値オブジェクト名}
232
-
233
- #### 等値性テスト
234
- | ケースID | 比較対象 | 期待結果 |
235
- |---------|---------|---------|
236
-
237
- #### 制約テスト
238
- | ケースID | 入力 | 期待結果 |
239
- |---------|------|---------|
240
-
241
- ## 5. 境界値・異常系
242
- | ケースID | 対象 | 入力 | 期待結果 |
243
- |---------|------|------|---------|
244
- ```
245
-
246
- ---
145
+ 詳細なテンプレートは [references/unit-test-design-template.md](references/unit-test-design-template.md) の「2. unit_test_design.md 成果物テンプレート」を参照。
247
146
 
248
147
  ---
249
148
 
@@ -0,0 +1,127 @@
1
+ # ユニットテスト設計テンプレート集
2
+
3
+ 本ファイルは `unit-test-designer` スキルで使用するテンプレートをまとめたリファレンスです。
4
+
5
+ ---
6
+
7
+ ## 1. Phase 1 計画ファイルテンプレート
8
+
9
+ 出力先: `docs/inception/{unit}/unit_test_design_plan.md`
10
+
11
+ ```markdown
12
+ # ユニットテスト設計計画: {Unit名}
13
+
14
+ ## 1. スコープ
15
+ - 対象Unitのドメインモデル
16
+ - テスト対象コンポーネント一覧
17
+
18
+ ## 2. テスト対象分析
19
+
20
+ ### 集約
21
+ | 集約名 | 不変条件数 | 状態遷移数 | テストケース概算 |
22
+ |--------|----------|----------|---------------|
23
+
24
+ ### エンティティ
25
+ | エンティティ名 | ビジネスルール数 | テストケース概算 |
26
+ |--------------|---------------|---------------|
27
+
28
+ ### 値オブジェクト
29
+ | 値オブジェクト名 | 制約数 | テストケース概算 |
30
+ |----------------|-------|---------------|
31
+
32
+ ## 3. テスト方針
33
+ - 正常系/異常系のバランス
34
+ - 境界値テストの対象
35
+
36
+ ## 4. QA(不明点・確認事項)
37
+
38
+ ### [Question] Q1: {質問タイトル}
39
+ {質問の詳細と背景}
40
+ **推奨案:** {AIの推奨案}
41
+
42
+ [Answer]
43
+ (人間が回答を記入)
44
+
45
+ ## 5. 前提条件・リスク
46
+ - ...
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 2. unit_test_design.md 成果物テンプレート
52
+
53
+ 出力先: `docs/product/construction/{unit}/unit_test_design.md`
54
+
55
+ ```markdown
56
+ # ユニットテスト設計: {Unit名}
57
+
58
+ ## 1. 対象ドメインモデル
59
+ - 集約: {集約名一覧}
60
+ - エンティティ: {エンティティ名一覧}
61
+ - 値オブジェクト: {値オブジェクト名一覧}
62
+
63
+ ## 2. 集約テストケース
64
+
65
+ ### {集約名}
66
+
67
+ #### 不変条件テスト
68
+ | ケースID | 不変条件 | 入力 | 期待結果 |
69
+ |---------|---------|------|---------|
70
+ | UT-{集約}-001 | {条件説明} | ... | ... |
71
+
72
+ #### 状態遷移テスト
73
+ | ケースID | 初期状態 | 操作 | 期待状態 |
74
+ |---------|---------|------|---------|
75
+
76
+ #### 生成テスト
77
+ | ケースID | 入力 | 期待結果 |
78
+ |---------|------|---------|
79
+
80
+ ## 3. エンティティテストケース
81
+
82
+ ### {エンティティ名}
83
+
84
+ #### ビジネスルールテスト
85
+ | ケースID | ルール | 入力 | 期待結果 |
86
+ |---------|-------|------|---------|
87
+
88
+ #### 振る舞いテスト
89
+ | ケースID | メソッド | 入力 | 期待結果 |
90
+ |---------|---------|------|---------|
91
+
92
+ ## 4. 値オブジェクトテストケース
93
+
94
+ ### {値オブジェクト名}
95
+
96
+ #### 等値性テスト
97
+ | ケースID | 比較対象 | 期待結果 |
98
+ |---------|---------|---------|
99
+
100
+ #### 制約テスト
101
+ | ケースID | 入力 | 期待結果 |
102
+ |---------|------|---------|
103
+
104
+ ## 5. 境界値・異常系
105
+ | ケースID | 対象 | 入力 | 期待結果 |
106
+ |---------|------|------|---------|
107
+ ```
108
+
109
+ ---
110
+
111
+ ## 3. 上位設計不足時の報告テンプレート
112
+
113
+ ```markdown
114
+ ## 上位レイヤー設計が見つかりません
115
+
116
+ 以下の設計文書が存在しないため、ユニットテスト設計を開始できません:
117
+ - `docs/product/construction/{unit}/domain_model.md` — 未作成
118
+
119
+ ### 推奨アクション
120
+ `domain-designer` スキルを使用してドメインモデルを作成してください。
121
+
122
+ ### 選択肢
123
+ 1. **domain-designerを先に実行する**(推奨)
124
+ 2. **このまま進める**(上位設計なしで進める場合、整合性リスクあり)
125
+
126
+ どちらを選択しますか?
127
+ ```
@@ -40,33 +40,25 @@ TDD実装フェーズ
40
40
 
41
41
  ---
42
42
 
43
- ## ⚠️ 上位レイヤー存在チェック
43
+ ## 上位レイヤー存在チェック
44
44
 
45
45
  **このスキルはテストケース設計完了後、TDD実装前に実行します。**
46
46
 
47
- ### 依存する上位設計文書
48
-
49
47
  | ファイル | 必須 | チェック方法 |
50
48
  |---------|------|------------|
51
- | `docs/product/construction/{unit}/unit_test_design.md` | ✅ 必須 | ユニットテストケース設計の存在を確認 |
52
- | `docs/product/construction/{unit}/domain_model.md` | ✅ 必須 | ドメインモデルの存在を確認 |
53
- | `docs/product/construction/{unit}/coverage_report.md` | 📋 推奨 | カバレッジ検証済みか確認 |
54
-
55
- ### 上位設計が存在しない場合のアクション
49
+ | `docs/product/construction/{unit}/unit_test_design.md` | 必須 | ユニットテストケース設計の存在を確認 |
50
+ | `docs/product/construction/{unit}/domain_model.md` | 必須 | ドメインモデルの存在を確認 |
51
+ | `docs/product/construction/{unit}/coverage_report.md` | 推奨 | カバレッジ検証済みか確認 |
56
52
 
57
53
  上位設計文書が存在しない場合、**ロジック設計を開始せず**、以下を行う:
58
-
59
- 1. **状況報告** — ユーザーに不足している設計文書を明示
60
- 2. **選択肢提示** — 以下の選択肢を提示
61
- - 上位設計(unit-test-designer)を先に実行する
62
- - 上位設計をスキップして進める(非推奨)
54
+ 1. **状況報告** — 不足している設計文書を明示
55
+ 2. **選択肢提示** — 上位設計を先に実行する / スキップして進める(非推奨)
63
56
  3. **ユーザー指示待ち** — 独自判断でロジック設計を開始しない
64
57
 
65
58
  ---
66
59
 
67
- ## ⚠️ 3フェーズ実行ルール
60
+ ## 3フェーズ実行ルール
68
61
 
69
- **このスキルは3フェーズで実行する。**
70
62
  - **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
71
63
  - **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`scripts/delegate-sonnet.sh` 経由)
72
64
  - **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
@@ -97,24 +89,16 @@ TDD実装フェーズ
97
89
  | テストファイル | 対象モデル | ケース数 |
98
90
  |--------------|----------|---------|
99
91
  | `{aggregate}.test.ts` | {集約名} | X |
100
- | `{entity}.test.ts` | {エンティティ名} | X |
101
- | `{value-object}.test.ts` | {値オブジェクト名} | X |
102
92
 
103
93
  ## 3. モック/ファクトリ設計方針
104
- - ファクトリ関数の配置場所
105
- - 共通ヘルパーの使用方針
106
94
 
107
95
  ## 4. QA(不明点・確認事項)
108
96
 
109
97
  ### [Question] Q1: {質問タイトル}
110
- {質問の詳細と背景}
111
98
  **推奨案:** {AIの推奨案}
112
-
113
- [Answer]
114
- (人間が回答を記入)
99
+ [Answer](人間が回答を記入)
115
100
 
116
101
  ## 5. 前提条件・リスク
117
- - ...
118
102
  ```
119
103
 
120
104
  ### Phase 1 完了条件
@@ -138,6 +122,8 @@ TDD実装フェーズ
138
122
  3. **ファクトリ関数の設計** — テストデータ生成の共通化
139
123
  4. **モック戦略の設計** — vi.mock の使用方針
140
124
 
125
+ 詳細なテストパターン(ファクトリ関数、集約/VOテストテンプレート、モック戦略、AAAパターン例)は [references/test-patterns.md](references/test-patterns.md) を参照。
126
+
141
127
  ### Phase 2 最低出力基準(Sonnet委任時の品質制約)
142
128
 
143
129
  以下の基準を満たさない出力は不完全とみなし、Phase 3レビューでBLOCKとする。
@@ -153,233 +139,28 @@ TDD実装フェーズ
153
139
 
154
140
  ### 出力ファイル
155
141
 
156
- | 種別 | 配置先 |
157
- |------|--------|
158
- | 成果物 | `docs/product/construction/{unit}/unit_test_logic.md` |
142
+ `docs/product/construction/{unit}/unit_test_logic.md`
159
143
 
160
144
  ### unit_test_logic.md の構成
161
145
 
162
- ```markdown
163
- # ユニットテストロジック設計: {Unit名}
164
-
165
- ## 1. テストファイル構成
166
-
167
- | ファイルパス | 対象モデル | ケース数 |
168
- |------------|----------|---------|
169
- | `backend/test/unit/{context}/domain/aggregates/{aggregate}.test.ts` | {集約名} | X |
170
- | `backend/test/unit/{context}/domain/entities/{entity}.test.ts` | {エンティティ名} | X |
171
- | `backend/test/unit/{context}/domain/value-objects/{vo}.test.ts` | {値オブジェクト名} | X |
172
-
173
- ## 2. 共通ヘルパー・ファクトリ
174
-
175
- ### ファクトリ関数
176
-
177
- ```typescript
178
- // backend/test/helpers/{context}-helper.ts
179
-
180
- /**
181
- * {集約名}のテスト用ファクトリ
182
- */
183
- export function create{Aggregate}(overrides?: Partial<{Aggregate}Props>): {Aggregate} {
184
- return {Aggregate}.create({
185
- // デフォルト値
186
- id: to{Aggregate}Id('test-001'),
187
- name: 'テスト',
188
- ...overrides,
189
- });
190
- }
191
- ```
192
-
193
- ### 共通ヘルパーのインポート
194
-
195
- ```typescript
196
- import { target, context } from '../../../../helpers/common-helper.js';
197
- ```
198
-
199
- ## 3. テストケース詳細ロジック
200
-
201
- ### {集約名} テスト
202
-
203
- #### ファイル: `{aggregate}.test.ts`
204
-
205
- ```typescript
206
- import { describe, it, expect } from 'vitest';
207
- import { target, context } from '../../../../helpers/common-helper.js';
208
- import { {Aggregate} } from '../../../../../src/{context}/domain/aggregates/{aggregate}.js';
209
-
210
- target('{Aggregate}', () => {
211
- // UT-{Aggregate}-001: 不変条件テスト
212
- describe('{不変条件の説明}', () => {
213
- it('{期待される振る舞い}', () => {
214
- // Arrange
215
- const props = {
216
- // テストデータ
217
- };
218
-
219
- // Act
220
- const actual = {Aggregate}.create(props);
221
-
222
- // Assert
223
- expect(actual.{property}).toBe({expectedValue});
224
- });
225
-
226
- context('{特定の条件}の場合', () => {
227
- it('{期待される結果}', () => {
228
- // Arrange
229
- const invalidProps = {
230
- // 不正なデータ
231
- };
232
-
233
- // Act & Assert
234
- expect(() => {Aggregate}.create(invalidProps)).toThrow({ExpectedError});
235
- });
236
- });
237
- });
238
-
239
- // UT-{Aggregate}-002: 状態遷移テスト
240
- describe('{状態遷移の説明}', () => {
241
- it('{初期状態}から{操作}で{期待状態}に遷移する', () => {
242
- // Arrange
243
- const aggregate = create{Aggregate}({ status: '{初期状態}' });
244
-
245
- // Act
246
- aggregate.{operation}();
247
-
248
- // Assert
249
- expect(aggregate.status).toBe('{期待状態}');
250
- });
251
- });
252
- });
253
- ```
254
-
255
- ### {値オブジェクト名} テスト
256
-
257
- #### ファイル: `{value-object}.test.ts`
258
-
259
- ```typescript
260
- import { describe, it, expect } from 'vitest';
261
- import { target, context } from '../../../../helpers/common-helper.js';
262
- import { {ValueObject} } from '../../../../../src/{context}/domain/value-objects/{value-object}.js';
263
-
264
- target('{ValueObject}', () => {
265
- // UT-VO-{Name}-001: 生成テスト
266
- describe('{ValueObject}を生成する', () => {
267
- it('有効な値で生成できる', () => {
268
- // Arrange
269
- const value = '{有効な値}';
270
-
271
- // Act
272
- const actual = {ValueObject}.create(value);
273
-
274
- // Assert
275
- expect(actual.value).toBe(value);
276
- });
277
-
278
- context('無効な値の場合', () => {
279
- it.each([
280
- ['空文字', ''],
281
- ['null', null],
282
- ['{境界値}', '{境界値の例}'],
283
- ])('%sの場合エラーになる', (_, invalidValue) => {
284
- // Act & Assert
285
- expect(() => {ValueObject}.create(invalidValue)).toThrow();
286
- });
287
- });
288
- });
289
-
290
- // UT-VO-{Name}-002: 等値性テスト
291
- describe('等値性', () => {
292
- it('同じ値を持つ{ValueObject}は等しい', () => {
293
- // Arrange
294
- const vo1 = {ValueObject}.create('{値}');
295
- const vo2 = {ValueObject}.create('{値}');
296
-
297
- // Act & Assert
298
- expect(vo1.equals(vo2)).toBe(true);
299
- });
300
- });
301
- });
302
- ```
303
-
304
- ## 4. モック戦略
305
-
306
- ### vi.mock の使用方針
307
-
308
- ```typescript
309
- import { vi, describe, it, expect, beforeEach } from 'vitest';
310
-
311
- // 外部依存のモック
312
- vi.mock('../../../../../src/{context}/infrastructure/{dependency}.js', () => ({
313
- {DependencyClass}: vi.fn().mockImplementation(() => ({
314
- {method}: vi.fn().mockResolvedValue({mockValue}),
315
- })),
316
- }));
317
- ```
318
-
319
- ### モック不要のケース
320
- - 純粋なドメインロジック(Entity, ValueObject)
321
- - 状態遷移ロジック
322
- - 計算ロジック
146
+ 成果物は以下のセクションで構成する:
323
147
 
324
- ### モック必要のケース
325
- - インフラ層への依存がある場合
326
- - 外部APIへの依存がある場合
148
+ 1. **テストファイル構成** — ファイルパス・対象モデル・ケース数の一覧
149
+ 2. **共通ヘルパー・ファクトリ** — ファクトリ関数とインポートパス
150
+ 3. **テストケース詳細ロジック** — 各テストの疑似コード(AAAパターン)
151
+ 4. **モック戦略** — vi.mock の使用方針と対象
152
+ 5. **境界値テスト一覧** — ケースID・境界条件・入力例・期待結果
153
+ 6. **テスト実行コマンド** — 実行方法
327
154
 
328
- ## 5. 境界値テスト一覧
329
-
330
- | ケースID | 対象 | 境界条件 | 入力例 | 期待結果 |
331
- |---------|------|---------|-------|---------|
332
- | UT-BV-001 | {ValueObject} | 最小値 | 0 | 成功 |
333
- | UT-BV-002 | {ValueObject} | 最小値-1 | -1 | エラー |
334
- | UT-BV-003 | {ValueObject} | 最大値 | 100 | 成功 |
335
- | UT-BV-004 | {ValueObject} | 最大値+1 | 101 | エラー |
336
-
337
- ## 6. テスト実行コマンド
338
-
339
- ```bash
340
- # 全ユニットテスト実行
341
- pnpm --filter backend test:unit
342
-
343
- # 特定ファイルのみ
344
- pnpm --filter backend test:unit -- {aggregate}.test.ts
345
-
346
- # watchモード
347
- pnpm --filter backend test:unit -- --watch
348
- ```
349
- ```
155
+ 各セクションのテンプレートは [references/test-patterns.md](references/test-patterns.md) を参照。
350
156
 
351
157
  ---
352
158
 
353
159
  ## 設計原則
354
160
 
355
- ### 1. AAA パターンの徹底
356
- - **Arrange**: テストデータの準備
357
- - **Act**: テスト対象の実行
358
- - **Assert**: 結果の検証
359
-
360
- ### 2. コメントによる明示
361
- ```typescript
362
- // Arrange
363
- const data = ...;
364
-
365
- // Act
366
- const actual = target.method(data);
367
-
368
- // Assert
369
- expect(actual).toBe(expected);
370
- ```
371
-
372
- ### 3. 既存パターンの踏襲
373
- - `target()` と `context()` ヘルパーを使用
374
- - ファイル配置は既存の構造に合わせる
375
- - import パスは相対パスで統一
376
-
377
- ### 4. 疑似コードの粒度
378
- - 実装エージェントが迷わないレベルの詳細さ
379
- - 具体的な値・型・メソッド名を記載
380
- - エッジケースのテストパターンを明示
381
-
382
- ---
161
+ 1. **AAA パターンの徹底** — Arrange / Act / Assert を全テストで使用し、コメントで明示する
162
+ 2. **既存パターンの踏襲** — `target()` / `context()` ヘルパー使用、相対パスで統一
163
+ 3. **疑似コードの粒度** — 実装エージェントが迷わないレベル(具体的な値・型・メソッド名を記載)
383
164
 
384
165
  ---
385
166
 
@@ -406,9 +187,11 @@ expect(actual).toBe(expected);
406
187
  - **WARNのみFAIL** → Opusが直接修正してから完了とする
407
188
  - **全PASS** → 完了
408
189
 
190
+ ---
191
+
409
192
  ## 注意事項
410
193
 
411
- - **テストコードは生成しない**(設計文書のみ)— 実装は `story-implementor` スキル(codex-delegator経由、またはメインセッションで直接実行)が行う
194
+ - **テストコードは生成しない**(設計文書のみ)— 実装は `story-implementor` が行う
412
195
  - 疑似コードは実装の指針となる詳細レベルで記載する
413
196
  - TDDの「RED」フェーズで正しく失敗するテストを設計する
414
197
  - 既存のテストパターン(`backend/test/unit/**/*.test.ts`)を参照してスタイルを統一する
@@ -419,11 +202,6 @@ expect(actual).toBe(expected);
419
202
 
420
203
  ユニットテストロジック設計完了後、以下のスキルに進んでください:
421
204
 
422
- 1. **ITテストロジック設計** — UseCase/Repository/Controllerのテストロジック
423
- - `it-test-logic-designer`
424
-
425
- 2. **シナリオテストロジック設計** — E2Eテストのテストロジック
426
- - `scenario-test-logic-designer`
427
-
428
- 3. **TDD実装** — 全テストロジック設計完了後
429
- - `story-implementor`
205
+ 1. **ITテストロジック設計** — `it-test-logic-designer`
206
+ 2. **シナリオテストロジック設計** — `scenario-test-logic-designer`
207
+ 3. **TDD実装**(全テストロジック設計完了後) — `story-implementor`