@careerchain/stdd 0.1.0 → 0.1.2
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/assets/.claude/agents/implementer.md +4 -4
- package/assets/.claude/agents/plan-writer.md +7 -7
- package/assets/.claude/agents/qa-engineer.md +58 -6
- package/assets/.claude/agents/spec-reviewer.md +24 -18
- package/assets/.claude/agents/spec-writer.md +42 -38
- package/assets/.claude/agents/test-reviewer.md +21 -21
- package/assets/.claude/hooks/spec-first-check.sh +201 -0
- package/assets/.claude/rules/stdd-spec-first.md +36 -0
- package/assets/.claude/settings.json +16 -2
- package/assets/.claude/skills/auto-implement/SKILL.md +1 -1
- package/assets/.claude/skills/auto-implement/references/phases.md +14 -12
- package/assets/.claude/skills/documenting-plans/SKILL.md +3 -3
- package/assets/.claude/skills/documenting-specifications/SKILL.md +326 -300
- package/assets/.claude/skills/documenting-specifications/guides/error-handling.md +23 -21
- package/assets/.claude/skills/documenting-specifications/guides/stdd-violations.md +2 -2
- package/assets/.claude/skills/documenting-specifications/templates/api-spec-common.md +97 -0
- package/assets/.claude/skills/documenting-specifications/templates/architecture-common.md +188 -0
- package/assets/.claude/skills/documenting-specifications/templates/design-common.md +57 -0
- package/assets/.claude/skills/documenting-specifications/templates/requirements-common.md +104 -0
- package/assets/.claude/skills/documenting-specifications/templates/requirements.md +105 -125
- package/assets/.claude/skills/documenting-specifications/templates/table-definition-common.md +78 -0
- package/assets/.claude/skills/documenting-specifications/templates/tech-design.md +110 -183
- package/assets/.claude/skills/documenting-specifications/templates/test-plan.md +58 -0
- package/assets/.claude/skills/generating-wireframes/SKILL.md +10 -10
- package/assets/.claude/skills/generating-wireframes/guides/from-requirements.md +13 -13
- package/assets/.claude/skills/generating-wireframes/templates/index.html +1 -1
- package/assets/.claude/skills/introducing-stdd/SKILL.md +3 -0
- package/assets/.claude/skills/reverse-engineering-common-spec/SKILL.md +22 -11
- package/assets/.claude/skills/reverse-engineering-feature-spec/SKILL.md +53 -32
- package/assets/.claude/skills/reverse-engineering-feature-spec/guides/figma-capture.md +9 -9
- package/assets/.claude/skills/starting-new-with-stdd/SKILL.md +43 -17
- package/assets/.claude/skills/starting-new-with-stdd/templates/bootstrap-plan.md +16 -7
- package/assets/.claude/skills/tailoring-spec-format/SKILL.md +7 -7
- package/assets/.claude/skills/verifying-consistency/SKILL.md +1 -1
- package/assets/mcp.json +9 -0
- package/assets/stdd.config.yml.tpl +4 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/install.js +20 -1
- package/dist/install.js.map +1 -1
- package/package.json +1 -1
- package/assets/.claude/docs/spec-driven-development-guide.md +0 -436
- package/assets/.claude/skills/documenting-specifications/templates/screen-items-definition.md +0 -179
|
@@ -1,300 +1,326 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: documenting-specifications
|
|
3
|
-
description: |-
|
|
4
|
-
REQUIREMENTS.md
|
|
5
|
-
when_to_use: |-
|
|
6
|
-
「spec」「仕様書」「設計書」「要件定義」「REQUIREMENTS.md」「TECH_DESIGN.md」「Spec and Test Driven Development」「STDD」「仕様駆動」に関する作業のとき。
|
|
7
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# 仕様ドキュメント(REQUIREMENTS / TECH_DESIGN)の作成
|
|
11
|
-
|
|
12
|
-
STDD(Spec and Test Driven Development)方法論に従って、REQUIREMENTS.md
|
|
13
|
-
|
|
14
|
-
## Quick Start
|
|
15
|
-
|
|
16
|
-
### 新機能の仕様書を作成する場合
|
|
17
|
-
|
|
18
|
-
1. **REQUIREMENTS.md を作成**
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
docs/<app>/<path>/REQUIREMENTS.md
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
2.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
□
|
|
285
|
-
□
|
|
286
|
-
□
|
|
287
|
-
□
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
□
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
□
|
|
300
|
-
|
|
1
|
+
---
|
|
2
|
+
name: documenting-specifications
|
|
3
|
+
description: |-
|
|
4
|
+
REQUIREMENTS.md(業務要件・機能要件・非機能要件)・TECH_DESIGN.md(技術設計)・TEST_PLAN.md(テスト戦略)と、common ティアの ARCHITECTURE / TABLE_DEFINITION / API_SPEC / DESIGN のテンプレートとガイドラインを提供する。STDD 方法論に従った仕様ドキュメントの作成・更新を支援する。
|
|
5
|
+
when_to_use: |-
|
|
6
|
+
「spec」「仕様書」「設計書」「要件定義」「REQUIREMENTS.md」「TECH_DESIGN.md」「TEST_PLAN.md」「テーブル定義」「API仕様」「Spec and Test Driven Development」「STDD」「仕様駆動」に関する作業のとき。
|
|
7
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# 仕様ドキュメント(REQUIREMENTS / TECH_DESIGN / TEST_PLAN)の作成
|
|
11
|
+
|
|
12
|
+
STDD(Spec and Test Driven Development)方法論に従って、REQUIREMENTS.md・TECH_DESIGN.md・TEST_PLAN.md(および common ティアの spec)を作成・更新します。
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
### 新機能の仕様書を作成する場合
|
|
17
|
+
|
|
18
|
+
1. **REQUIREMENTS.md を作成**
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
docs/<app>/<path>/REQUIREMENTS.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- **業務要件 → 機能要件 → 非機能要件** の3層で記述
|
|
25
|
+
- 機能要件は **コア**(2.1 ユースケース+2.2 業務ルール)+ **拡張**(2.3 指標定義・2.4 UI/UX・2.5 外部IF、該当機能のみ。無ければ章ごと省略)
|
|
26
|
+
- 各ユースケースに 振る舞い(番号付き手順・主語明示)+ 受入基準(EARS)を併記し、Priority を付与
|
|
27
|
+
- 指標を持つ機能は §2.3 指標定義表を埋める(算出ロジック・データソース・代理注記)
|
|
28
|
+
- [テンプレート(feature)](templates/requirements.md) を参照
|
|
29
|
+
|
|
30
|
+
2. **ワイヤーフレーム(WF)を生成**(UI を持つ機能の場合)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
docs/<app>/<path>/wireframes/
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- REQUIREMENTS.md のユースケースから HTML ワイヤーフレームを生成(低忠実度・主要文言は実値)
|
|
37
|
+
- [generating-wireframes Skill](../generating-wireframes/SKILL.md) を参照
|
|
38
|
+
- 生成後、REQUIREMENTS.md「2.4 UI/UX・画面」から `./wireframes/index.html` にリンクする
|
|
39
|
+
|
|
40
|
+
3. **TECH_DESIGN.md を作成**
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
docs/<app>/<path>/TECH_DESIGN.md
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- 章構成: 概要 / 主要な設計判断(任意)/ 画面項目定義(画面 feature は必須)/ ロジック設計(コア)/ エラーハンドリング戦略 / 非機能要件(任意)
|
|
47
|
+
- データ構造は common の `TABLE_DEFINITION.md`、API は common の `API_SPEC.md` を**参照**(再定義しない)
|
|
48
|
+
- [テンプレート](templates/tech-design.md) を参照
|
|
49
|
+
|
|
50
|
+
4. **TEST_PLAN.md を作成**
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
docs/<app>/<path>/TEST_PLAN.md
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- テスト戦略(REQUIREMENTS のユースケース+ TECH_DESIGN のロジック設計を E2E/Integration/Unit にマッピング)
|
|
57
|
+
- [テンプレート](templates/test-plan.md) を参照
|
|
58
|
+
|
|
59
|
+
> 横断要素(テーブル定義・API 仕様)は common ティアに集約する。新規テーブル / API が生じたら common の
|
|
60
|
+
> [`TABLE_DEFINITION.md`](templates/table-definition-common.md) / [`API_SPEC.md`](templates/api-spec-common.md) を更新し、feature からは参照する。
|
|
61
|
+
|
|
62
|
+
### 既存機能の仕様書を更新する場合
|
|
63
|
+
|
|
64
|
+
1. 対応する REQUIREMENTS.md / TECH_DESIGN.md / TEST_PLAN.md を確認
|
|
65
|
+
2. 変更内容に応じて更新(テーブル・API の変更は common の TABLE_DEFINITION / API_SPEC に反映)
|
|
66
|
+
3. テスト戦略(テスト総数・内訳)は TEST_PLAN.md を更新
|
|
67
|
+
|
|
68
|
+
## Spec の 2 ティア構造(common / feature)
|
|
69
|
+
|
|
70
|
+
本スキルが扱う feature ティア(機能単位)の spec は、上位の **common ティア**(プロジェクト全体)を前提とする。
|
|
71
|
+
|
|
72
|
+
| ティア | ドキュメント | 配置例 |
|
|
73
|
+
| ----------- | --- | --- |
|
|
74
|
+
| **common** | `REQUIREMENTS.md`(業務要件)/ `ARCHITECTURE.md`(システム概要)/ `TABLE_DEFINITION.md`(テーブル定義)/ `API_SPEC.md`(API 仕様)/ `DESIGN.md`(任意) | `docs/common/` |
|
|
75
|
+
| **feature** | `REQUIREMENTS.md` / `TECH_DESIGN.md` / `TEST_PLAN.md` | `docs/<app>/<feature>/` |
|
|
76
|
+
|
|
77
|
+
- feature spec は common ティア(サービス目的・アクター・システム構成・テーブル定義・API 仕様)を**前提とし、参照する**。common と矛盾しないこと。**テーブル・API は feature で再定義しない**。
|
|
78
|
+
- common ティアのテンプレート: [`requirements-common.md`](templates/requirements-common.md) / [`architecture-common.md`](templates/architecture-common.md) / [`table-definition-common.md`](templates/table-definition-common.md) / [`api-spec-common.md`](templates/api-spec-common.md) / [`design-common.md`](templates/design-common.md)。既存実装からの common spec 作成は `reverse-engineering-common-spec` スキルを参照。
|
|
79
|
+
- REQUIREMENTS は common / feature とも **業務要件 → 機能要件 → 非機能要件** の3層で揃える。非機能要件・横断業務ルール・用語は common に集約し、feature は「common 準拠」で参照する。
|
|
80
|
+
|
|
81
|
+
## ドキュメント配置ルール
|
|
82
|
+
|
|
83
|
+
| 実装ファイル | ドキュメント配置先 |
|
|
84
|
+
| ----------------------------- | --- |
|
|
85
|
+
| `<app>/app/<path>/page.tsx` | `docs/<app>/<path>/REQUIREMENTS.md`<br>`docs/<app>/<path>/TECH_DESIGN.md`<br>`docs/<app>/<path>/TEST_PLAN.md` |
|
|
86
|
+
| `<app>/components/<name>.tsx` | `docs/<app>/components/<name>/REQUIREMENTS.md`<br>`docs/<app>/components/<name>/TECH_DESIGN.md`<br>`docs/<app>/components/<name>/TEST_PLAN.md` |
|
|
87
|
+
|
|
88
|
+
**例**:
|
|
89
|
+
|
|
90
|
+
- 実装: `<app.path>/app/login/page.tsx`(`app.path` は `.stdd.config.yml` の `apps[].path`)
|
|
91
|
+
- ドキュメント(`docs.layout.*` テンプレートに従う。`<app.id>` は `apps[].id`):
|
|
92
|
+
- `docs/<app.id>/login/REQUIREMENTS.md`(必須)
|
|
93
|
+
- `docs/<app.id>/login/TECH_DESIGN.md`(必須。画面項目定義は画面 feature のみ)
|
|
94
|
+
- `docs/<app.id>/login/TEST_PLAN.md`(必須)
|
|
95
|
+
|
|
96
|
+
## 絶対ルール: SSOT原則(最優先)
|
|
97
|
+
|
|
98
|
+
⚠️ **Specドキュメントは「現在の最新仕様」だけを記述するSingle Source of Truth(SSOT)である**。履歴・経緯・対応中のissue・「今回の変更」は一切書かないこと。読者は「いま何が正しいか」だけを知りたい。履歴はgit log・PR description・issueに任せる。
|
|
99
|
+
|
|
100
|
+
### 禁止事項
|
|
101
|
+
|
|
102
|
+
以下は **すべての spec ドキュメント(REQUIREMENTS / TECH_DESIGN / TEST_PLAN / common 各種)で禁止**:
|
|
103
|
+
|
|
104
|
+
1. **issueへの言及**: `issue #123 で対応`, `#456 にて追加`, `本issueでは`, `Closes #...` 等
|
|
105
|
+
2. **経緯・履歴の記載**: `変更前` / `変更後` / `更新前` / `更新後` / `変更理由` / `削除理由` / `旧仕様` / `〜だったが〜に変更` 等
|
|
106
|
+
3. **過程に関する記載**: `今回追加`, `今回変更`, `新たに`, `既存`, `実装済み`, `新規追加`, `今回のスコープ`, `本対応で` 等
|
|
107
|
+
4. **作成プロセスの注記**: `このドキュメントはリバースエンジニアリングで作成`, `〜を参考に作成`, `下記をベースに作成` 等
|
|
108
|
+
5. **比較形式の記述**: `Before / After`, `旧 / 新`, `変更前後の差分` の形式
|
|
109
|
+
|
|
110
|
+
### 違反例と修正例
|
|
111
|
+
|
|
112
|
+
❌ **悪い例(履歴・経緯を記述)**:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
### メール送信実装
|
|
116
|
+
|
|
117
|
+
**変更前**: Supabase Auth経由でメール送信
|
|
118
|
+
**変更後**: Resend経由でHTMLメール送信
|
|
119
|
+
**変更理由**: テンプレートのカスタマイズ性のため
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
✅ **良い例(現在の仕様のみ)**:
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
### メール送信実装
|
|
126
|
+
|
|
127
|
+
`admin.generateLink()` でリンクを生成し、Resend経由でHTMLメールを送信する。
|
|
128
|
+
HTMLテンプレートは `lib/email/templates/` で管理。
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
❌ **悪い例(issue・今回への言及)**:
|
|
132
|
+
|
|
133
|
+
```markdown
|
|
134
|
+
## 機能要件
|
|
135
|
+
|
|
136
|
+
#### 新規ユーザー登録(issue #1234 で追加)
|
|
137
|
+
|
|
138
|
+
今回のリリースで対応する新規登録フロー。
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
✅ **良い例**:
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
## 機能要件
|
|
145
|
+
|
|
146
|
+
#### 新規ユーザー登録
|
|
147
|
+
|
|
148
|
+
**Priority**: P0
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Self-check(コミット前に必ず実行)
|
|
152
|
+
|
|
153
|
+
書き終えたら以下の禁止語を grep し、ヒットしたら必ず除去すること:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
# 履歴・経緯・過程の記述
|
|
157
|
+
今回 | 既存 | 新規追加 | 実装済み | 変更前 | 変更後 | 更新前 | 更新後
|
|
158
|
+
変更理由 | 削除理由 | 旧仕様 | issue # | Closes # | リバースエンジニアリング
|
|
159
|
+
本対応 | 本issue | 今回のスコープ | 今回の変更
|
|
160
|
+
|
|
161
|
+
# テスト/ユースケース再構成の履歴を暗示するフレーミング
|
|
162
|
+
に統合 | を統合 | に集約 | を集約 | にまとめ | をまとめ | にマージ | をマージ
|
|
163
|
+
別テストに分割 | テストを分けた | 元々は | 当初は | 以前は
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
「ユースケース名」や「アーキテクチャ判断の理由」など現在仕様の説明として正当な「理由」は問題ない。禁止しているのは**変更そのものの理由**(なぜ仕様を変えたか)と、**過去構成からの再編を暗示するフレーミング**。
|
|
167
|
+
|
|
168
|
+
> 特に注意: テスト戦略表で `✅ (更新に統合)` `2 ケースに集約` `1 テストにまとめる方針` のように「以前は別だったが今はまとめてある」ことを匂わせる表現は SSOT 違反。常に**現在の構成事実のみ**を記述し(例: `プロフィール情報を更新する テスト内のステップとして検証`)、設計判断の理由は注記/設計判断セクションで「**この構成を採る**理由」として書く。
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 基本原則
|
|
173
|
+
|
|
174
|
+
### REQUIREMENTS.md(要件定義書)
|
|
175
|
+
|
|
176
|
+
**目的**: 機能の要件を「業務要件 → 機能要件 → 非機能要件」の3層で定義し、後続(TECH_DESIGN / テスト / コード)の一次インプットにする
|
|
177
|
+
|
|
178
|
+
**章立ての3層**:
|
|
179
|
+
|
|
180
|
+
| 層 | 答える問い | 書くもの |
|
|
181
|
+
| --- | --- | --- |
|
|
182
|
+
| **業務要件** | なぜ作るか(Why) | ビジネス課題・目標・KPI・対象ユーザー・利用シーン |
|
|
183
|
+
| **機能要件** | 何が見える/できるか(What) | **コア**: ユースケース(振る舞い〔手順〕+受入基準〔EARS〕)・業務ルール / **拡張(該当機能のみ)**: 指標定義・UI/UX・外部IF |
|
|
184
|
+
| **非機能要件** | どれだけうまく(How well) | 性能・可用性・セキュリティ・アクセシビリティ(機能固有のみ。共通は common §6 を参照) |
|
|
185
|
+
|
|
186
|
+
**記法**:
|
|
187
|
+
|
|
188
|
+
- 各ユースケースは **振る舞い(番号付き手順)+ 受入基準(EARS)** の2部構成で記述する
|
|
189
|
+
- **振る舞い → 番号付き手順**(1. 2. 3. …)。各ステップの主語を明示(「ユーザーは〜」「システムは〜」)し、ユーザー操作とシステム応答の主要フロー(ハッピーパス+主要分岐)を表す。E2E テストの骨格になる。抽象(ビジネス言語)に保ち、テストデータ・セレクタはテストコード側に置く
|
|
190
|
+
- **受入基準・業務ルール → EARS**(常時 / WHEN / WHILE / IF / WHERE)。フローが満たすべき詳細条件・例外・データ制約を網羅。手順と重複させず、エッジケースは IF / WHERE で統合
|
|
191
|
+
|
|
192
|
+
**記述しない内容**:
|
|
193
|
+
|
|
194
|
+
- データモデル・集計実装・API・画面項目 → TECH_DESIGN.md(データ構造・API は common の TABLE_DEFINITION / API_SPEC)
|
|
195
|
+
- 実装ファイルへの参照・関数名・クラス名、テスト実装の詳細
|
|
196
|
+
|
|
197
|
+
### TECH_DESIGN.md(設計書)
|
|
198
|
+
|
|
199
|
+
**目的**: 機能(画面単位)の技術設計。実装者が**ロジックを起こせる粒度**で記述する。
|
|
200
|
+
|
|
201
|
+
**章構成**: 概要 / 主要な設計判断(任意)/ 画面項目定義(画面 feature は必須)/ ロジック設計(コア)/ エラーハンドリング戦略 / 非機能要件(任意)
|
|
202
|
+
|
|
203
|
+
**記述する内容**:
|
|
204
|
+
|
|
205
|
+
- **ロジック設計**: 集計式・変換・ドメインルール・トランザクション境界・副作用・複数テーブル横断の流れ(手順 / 擬似コード / 計算式)
|
|
206
|
+
- **画面項目定義**: UI × バリデーション × DB マッピング(画面 feature のみ。DB カラムは TABLE_DEFINITION を参照)
|
|
207
|
+
- **エラーハンドリング戦略**: API / 処理の失敗を本機能がどう捌くか
|
|
208
|
+
- データ構造・API は common の `TABLE_DEFINITION.md` / `API_SPEC.md` を**参照**(再定義しない)
|
|
209
|
+
|
|
210
|
+
**記述しない内容**:
|
|
211
|
+
|
|
212
|
+
- 実装例・コード例(関数・メソッドの実装、Server Actions の実装)。擬似コード・型 I/F・計算式は可
|
|
213
|
+
- テーブル・カラム定義(→ common `TABLE_DEFINITION.md`)/ API 契約(→ common `API_SPEC.md`)
|
|
214
|
+
- テスト戦略(→ `TEST_PLAN.md`)
|
|
215
|
+
|
|
216
|
+
### TEST_PLAN.md(テスト計画書)
|
|
217
|
+
|
|
218
|
+
**目的**: 機能のテスト戦略。**REQUIREMENTS のユースケース**と **TECH_DESIGN のロジック設計(その他処理フロー)**の両方をテストレベル(E2E / Integration / Unit)に漏れなくマッピングする。
|
|
219
|
+
|
|
220
|
+
**記述する内容**:
|
|
221
|
+
|
|
222
|
+
- §1 ユースケース別テスト戦略(REQUIREMENTS §2.1 の全ユースケース × テストレベル × 根拠)
|
|
223
|
+
- §2 その他処理フロー別テスト戦略(TECH_DESIGN §4.2 がある場合)
|
|
224
|
+
- **テスト総数と内訳**(例: 合計 33 件 - Unit 18 件, Integration 9 件, E2E 6 件)
|
|
225
|
+
|
|
226
|
+
### common ティアの技術ドキュメント
|
|
227
|
+
|
|
228
|
+
- **ARCHITECTURE.md**: システム概要(構成 / スタック / 連携 / セキュリティ / インフラ)。データモデル・API は持たない。
|
|
229
|
+
- **TABLE_DEFINITION.md**: 全テーブル定義の正典(カード形式・ER 図なし)。feature が参照する。
|
|
230
|
+
- **API_SPEC.md**: API 契約の正典(OpenAPI 風 Markdown)。feature が参照する。
|
|
231
|
+
- **DESIGN.md**(任意): デザイン標準。
|
|
232
|
+
|
|
233
|
+
### Priority(優先度)ガイドライン
|
|
234
|
+
|
|
235
|
+
| Priority | 定義 | テスト戦略 |
|
|
236
|
+
| -------- | -------------------------------------------------------- | -------------------------- |
|
|
237
|
+
| **P0** | Critical Path - ビジネスに直結、高頻度、複数システム統合 | E2E 必須 + Integration |
|
|
238
|
+
| **P1** | Important - 重要だが Critical Path ではない | E2E 検討、Integration 必須 |
|
|
239
|
+
| **P2** | Nice to Have - エッジケース、低頻度 | Integration または Unit |
|
|
240
|
+
|
|
241
|
+
## 次のステップ
|
|
242
|
+
|
|
243
|
+
Specドキュメント(REQUIREMENTS.md + TECH_DESIGN.md)の作成・レビュー完了後:
|
|
244
|
+
|
|
245
|
+
1. **PLANドキュメントを作成** → [documenting-plans Skill](../documenting-plans/SKILL.md)
|
|
246
|
+
2. PLANドキュメントに従ってテスト作成・実装を進める
|
|
247
|
+
|
|
248
|
+
## 参照ファイル
|
|
249
|
+
|
|
250
|
+
詳細なテンプレートとガイドは以下を参照:
|
|
251
|
+
|
|
252
|
+
- **テンプレート(feature)**
|
|
253
|
+
- [REQUIREMENTS.md](templates/requirements.md)
|
|
254
|
+
- [TECH_DESIGN.md](templates/tech-design.md) ← 概要 / 設計判断 / 画面項目定義 / ロジック設計 / エラーハンドリング / 非機能要件
|
|
255
|
+
- [TEST_PLAN.md](templates/test-plan.md) ← テスト戦略
|
|
256
|
+
- **テンプレート(common)**
|
|
257
|
+
- [REQUIREMENTS.md](templates/requirements-common.md)
|
|
258
|
+
- [ARCHITECTURE.md](templates/architecture-common.md) ← システム概要
|
|
259
|
+
- [TABLE_DEFINITION.md](templates/table-definition-common.md) ← テーブル定義
|
|
260
|
+
- [API_SPEC.md](templates/api-spec-common.md) ← API 仕様
|
|
261
|
+
- [DESIGN.md](templates/design-common.md) ← デザイン標準(任意)
|
|
262
|
+
- **関連スキル**
|
|
263
|
+
- [generating-wireframes Skill](../generating-wireframes/SKILL.md) ← UI を持つ機能の WF 生成
|
|
264
|
+
- **ガイド**
|
|
265
|
+
- [STDD違反例と対策](guides/stdd-violations.md) ← 実装開始前に必読
|
|
266
|
+
- [エラーハンドリングガイド](guides/error-handling.md)
|
|
267
|
+
- **次のステップ**
|
|
268
|
+
- [PLANドキュメント作成スキル](../documenting-plans/SKILL.md)
|
|
269
|
+
|
|
270
|
+
## When NOT to Use This Skill
|
|
271
|
+
|
|
272
|
+
以下の場合はこのスキルを使用しない:
|
|
273
|
+
|
|
274
|
+
- **単純なバグ修正**: 仕様変更を伴わない場合
|
|
275
|
+
- **リファクタリング**: 外部から見える挙動が変わらない場合
|
|
276
|
+
- **ドキュメント修正のみ**: README や CLAUDE.md の更新
|
|
277
|
+
- **テストの追加のみ**: 既存仕様に基づくテスト追加(ただし TECH_DESIGN.md のテスト総数は更新が必要)
|
|
278
|
+
|
|
279
|
+
## チェックリスト
|
|
280
|
+
|
|
281
|
+
### REQUIREMENTS.md 作成時
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
□ 業務要件・機能要件・非機能要件の3層が揃っている(非機能が「common 準拠」でも明記)
|
|
285
|
+
□ 各記述が3層のいずれかに分類されている(フラットな未分類項目が無い)
|
|
286
|
+
□ 全ユースケースに Priority+振る舞い(番号付き手順)+受入基準(EARS)がある
|
|
287
|
+
□ 振る舞い手順は主要フロー(抽象)に保たれ、テストデータ・セレクタが混入していない
|
|
288
|
+
□ 受入基準(EARS)が詳細条件・例外・データ制約を網羅している(エッジケースは IF/WHERE)
|
|
289
|
+
□ 指標を持つ機能は §2.1 指標定義表が埋まっている(算出/データソース/代理注記)
|
|
290
|
+
□ 近似・代理指標は「注記表示=必須」が明記されている
|
|
291
|
+
□ UI/UX デザイン(HTML ワイヤーフレームを生成し「2.5 UI/UX デザイン」からリンク)→ generating-wireframes Skill
|
|
292
|
+
□ 受入基準に曖昧語(適切に/正しく)が無い/How(テーブル名・関数・API)が混入していない
|
|
293
|
+
□ スコープ外
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### TECH_DESIGN.md 作成時
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
□ 1. 概要(目的・スコープ)+ 1.1 対応ユースケース表 + 1.2 使用 API(API を持つ機能)
|
|
300
|
+
□ REQUIREMENTS の全ユースケースが §1.1 対応表に載り、設計(§3/§4)に紐づいている(設計漏れなし)
|
|
301
|
+
□ 2. 主要な設計判断 - この機能特有の判断のみ(無ければ章ごと省略)
|
|
302
|
+
□ 3. 画面項目定義 - 画面 feature は必須(UI × バリデーション × DB マッピング + 画面状態〔通常/空/ローディング/エラー〕)。非画面は省略
|
|
303
|
+
□ 4. ロジック設計 - 4.1 ユースケース別ロジック(常に)+ 4.2 その他処理フロー(機能固有ロジックがあれば)
|
|
304
|
+
□ 5. エラーハンドリング戦略 - API/処理の失敗を本機能がどう捌くか
|
|
305
|
+
□ 6. 非機能要件 - REQUIREMENTS に記載がある場合のみ実現方法(無ければ章ごと省略)
|
|
306
|
+
□ テーブル・API を再定義していない(common の TABLE_DEFINITION / API_SPEC を参照)
|
|
307
|
+
□ 実装例・コード例が含まれていないことを確認(擬似コード・型 I/F・計算式は除く)
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### TEST_PLAN.md 作成時
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
□ §1: REQUIREMENTS §2.1 の全ユースケースが 1 行ずつ載っている(名前一致・漏れなし)
|
|
314
|
+
□ §2: TECH_DESIGN §4.2 その他処理フローがある場合、全フローが 1 行ずつ載っている
|
|
315
|
+
□ 振る舞い(手順)→E2E、受入基準(EARS)→Unit/Integration の対応で組まれている
|
|
316
|
+
□ 各テストレベルの選択に根拠(Rationale)がある
|
|
317
|
+
□ REQUIREMENTS の Priority(P0/P1/P2)と対応している
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### common ティア(テーブル定義 / API 仕様)更新時
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
□ TABLE_DEFINITION.md: 新規/変更テーブルをカード形式で記載(型は論理型・FK は説明欄)
|
|
324
|
+
□ API_SPEC.md: 新規/変更エンドポイントを記載(レスポンス実体は TABLE_DEFINITION へリンク)
|
|
325
|
+
□ 参照する feature TECH_DESIGN との整合を確認
|
|
326
|
+
```
|