@careerchain/stdd 0.1.1 → 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.
Files changed (40) hide show
  1. package/assets/.claude/agents/implementer.md +4 -4
  2. package/assets/.claude/agents/plan-writer.md +7 -7
  3. package/assets/.claude/agents/qa-engineer.md +58 -6
  4. package/assets/.claude/agents/spec-reviewer.md +24 -18
  5. package/assets/.claude/agents/spec-writer.md +42 -38
  6. package/assets/.claude/agents/test-reviewer.md +21 -21
  7. package/assets/.claude/hooks/spec-first-check.sh +201 -0
  8. package/assets/.claude/rules/stdd-spec-first.md +36 -0
  9. package/assets/.claude/settings.json +16 -2
  10. package/assets/.claude/skills/auto-implement/SKILL.md +1 -1
  11. package/assets/.claude/skills/auto-implement/references/phases.md +14 -12
  12. package/assets/.claude/skills/documenting-plans/SKILL.md +2 -2
  13. package/assets/.claude/skills/documenting-specifications/SKILL.md +326 -300
  14. package/assets/.claude/skills/documenting-specifications/guides/error-handling.md +23 -21
  15. package/assets/.claude/skills/documenting-specifications/guides/stdd-violations.md +2 -2
  16. package/assets/.claude/skills/documenting-specifications/templates/api-spec-common.md +97 -0
  17. package/assets/.claude/skills/documenting-specifications/templates/architecture-common.md +188 -0
  18. package/assets/.claude/skills/documenting-specifications/templates/design-common.md +57 -0
  19. package/assets/.claude/skills/documenting-specifications/templates/requirements-common.md +104 -0
  20. package/assets/.claude/skills/documenting-specifications/templates/requirements.md +105 -125
  21. package/assets/.claude/skills/documenting-specifications/templates/table-definition-common.md +78 -0
  22. package/assets/.claude/skills/documenting-specifications/templates/tech-design.md +110 -183
  23. package/assets/.claude/skills/documenting-specifications/templates/test-plan.md +58 -0
  24. package/assets/.claude/skills/generating-wireframes/SKILL.md +10 -10
  25. package/assets/.claude/skills/generating-wireframes/guides/from-requirements.md +13 -13
  26. package/assets/.claude/skills/generating-wireframes/templates/index.html +1 -1
  27. package/assets/.claude/skills/introducing-stdd/SKILL.md +3 -0
  28. package/assets/.claude/skills/reverse-engineering-common-spec/SKILL.md +21 -10
  29. package/assets/.claude/skills/reverse-engineering-feature-spec/SKILL.md +53 -32
  30. package/assets/.claude/skills/reverse-engineering-feature-spec/guides/figma-capture.md +9 -9
  31. package/assets/.claude/skills/tailoring-spec-format/SKILL.md +7 -7
  32. package/assets/.claude/skills/verifying-consistency/SKILL.md +1 -1
  33. package/assets/mcp.json +9 -0
  34. package/assets/stdd.config.yml.tpl +4 -0
  35. package/dist/cli.js +1 -0
  36. package/dist/cli.js.map +1 -1
  37. package/dist/install.js +20 -1
  38. package/dist/install.js.map +1 -1
  39. package/package.json +1 -1
  40. 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(ビジネス要件・ユーザージャーニー)と TECH_DESIGN.md(技術設計・テスト戦略)のテンプレートとガイドラインを提供する。STDD 方法論に従った仕様ドキュメントの作成・更新を支援する。
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.mdTECH_DESIGN.md を作成・更新します。
13
-
14
- ## Quick Start
15
-
16
- ### 新機能の仕様書を作成する場合
17
-
18
- 1. **REQUIREMENTS.md を作成**
19
-
20
- ```
21
- docs/<app>/<path>/REQUIREMENTS.md
22
- ```
23
-
24
- - ビジネス要件、ユーザージャーニー(P0/P1/P2 の優先度付き)を記述
25
- - [テンプレート](templates/requirements.md) を参照
26
-
27
- 2. **ワイヤーフレーム(WF)を生成**(UI を持つ機能の場合)
28
-
29
- ```
30
- docs/<app>/<path>/wireframes/
31
- ```
32
-
33
- - REQUIREMENTS.md のジャーニーから HTML ワイヤーフレームを生成(低忠実度・主要文言は実値)
34
- - [generating-wireframes Skill](../generating-wireframes/SKILL.md) を参照
35
- - 生成後、REQUIREMENTS.md「3. UI/UX デザイン」から `./wireframes/index.html` にリンクする
36
-
37
- 3. **TECH_DESIGN.md を作成**
38
-
39
- ```
40
- docs/<app>/<path>/TECH_DESIGN.md
41
- ```
42
-
43
- - 技術設計、テスト戦略(ジャーニーを E2E/Integration/Unit にマッピング)を記述
44
- - [テンプレート](templates/tech-design.md) を参照
45
-
46
- 4. **SCREEN_ITEMS_DEFINITION.md を作成(オプション)**
47
-
48
- ```
49
- docs/<app>/<path>/SCREEN_ITEMS_DEFINITION.md
50
- ```
51
-
52
- - 画面項目定義(フォーム項目、バリデーション、表示形式)を記述
53
- - REQUIREMENTS.md の派生ドキュメントとして、UI詳細が必要な場合に作成
54
-
55
- ### 既存機能の仕様書を更新する場合
56
-
57
- 1. 対応する REQUIREMENTS.md と TECH_DESIGN.md を確認
58
- 2. 変更内容に応じて両方を更新
59
- 3. テスト戦略(テスト総数・内訳)を更新
60
-
61
- ## Spec の 2 ティア構造(common / feature)
62
-
63
- 本スキルが扱う REQUIREMENTS.md / TECH_DESIGN.md は **feature ティア**(機能単位)の spec である。
64
- その上位に、プロジェクト全体を俯瞰する **common ティア** が存在する。
65
-
66
- | ティア | What / Why | How | 配置例 |
67
- | ----------- | ------------------------- | ------------------------- | ------------------------------------- |
68
- | **common** | `REQUIREMENTS.md` (全体版) | `ARCHITECTURE.md` (全体版) | `docs/common/` |
69
- | **feature** | `REQUIREMENTS.md` | `TECH_DESIGN.md` | `docs/<app>/<feature>/` |
70
-
71
- - feature spec は common ティア(サービス目的・アクター・システム構成・レイヤ規約・データモデル)を**前提とする**。common と矛盾しないこと。
72
- - 全体版テンプレートは `packages/core/templates/common/` を参照。既存実装からの common spec 作成は `reverse-engineering-common-spec` スキルを参照。
73
- - 詳細は `packages/core/docs/stdd-methodology.md` §2.0 を参照。
74
-
75
- ## ドキュメント配置ルール
76
-
77
- | 実装ファイル | ドキュメント配置先 |
78
- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
79
- | `<app>/app/<path>/page.tsx` | `docs/<app>/<path>/REQUIREMENTS.md`<br>`docs/<app>/<path>/TECH_DESIGN.md`<br>`docs/<app>/<path>/SCREEN_ITEMS_DEFINITION.md`(任意) |
80
- | `<app>/components/<name>.tsx` | `docs/<app>/components/<name>/REQUIREMENTS.md`<br>`docs/<app>/components/<name>/TECH_DESIGN.md`<br>`docs/<app>/components/<name>/SCREEN_ITEMS_DEFINITION.md`(任意) |
81
-
82
- **例**:
83
-
84
- - 実装: `<app.path>/app/login/page.tsx`(`app.path` `.stdd.config.yml` の `apps[].path`)
85
- - ドキュメント(`docs.layout.*` テンプレートに従う。`<app.id>` は `apps[].id`):
86
- - `docs/<app.id>/login/REQUIREMENTS.md`(必須)
87
- - `docs/<app.id>/login/TECH_DESIGN.md`(必須)
88
- - `docs/<app.id>/login/SCREEN_ITEMS_DEFINITION.md`(任意)
89
-
90
- ## 絶対ルール: SSOT原則(最優先)
91
-
92
- ⚠️ **Specドキュメントは「現在の最新仕様」だけを記述するSingle Source of Truth(SSOT)である**。履歴・経緯・対応中のissue・「今回の変更」は一切書かないこと。読者は「いま何が正しいか」だけを知りたい。履歴はgit log・PR description・issueに任せる。
93
-
94
- ### 禁止事項
95
-
96
- 以下は **REQUIREMENTS.md / TECH_DESIGN.md / SCREEN_ITEMS_DEFINITION.md のいずれでも禁止**:
97
-
98
- 1. **issueへの言及**: `issue #123 で対応`, `#456 にて追加`, `本issueでは`, `Closes #...` 等
99
- 2. **経緯・履歴の記載**: `変更前` / `変更後` / `更新前` / `更新後` / `変更理由` / `削除理由` / `旧仕様` / `〜だったが〜に変更` 等
100
- 3. **過程に関する記載**: `今回追加`, `今回変更`, `新たに`, `既存`, `実装済み`, `新規追加`, `今回のスコープ`, `本対応で` 等
101
- 4. **作成プロセスの注記**: `このドキュメントはリバースエンジニアリングで作成`, `〜を参考に作成`, `下記をベースに作成` 等
102
- 5. **比較形式の記述**: `Before / After`, `旧 / 新`, `変更前後の差分` の形式
103
-
104
- ### 違反例と修正例
105
-
106
- **悪い例(履歴・経緯を記述)**:
107
-
108
- ```markdown
109
- ### メール送信実装
110
-
111
- **変更前**: Supabase Auth経由でメール送信
112
- **変更後**: Resend経由でHTMLメール送信
113
- **変更理由**: テンプレートのカスタマイズ性のため
114
- ```
115
-
116
- ✅ **良い例(現在の仕様のみ)**:
117
-
118
- ```markdown
119
- ### メール送信実装
120
-
121
- `admin.generateLink()` でリンクを生成し、Resend経由でHTMLメールを送信する。
122
- HTMLテンプレートは `lib/email/templates/` で管理。
123
- ```
124
-
125
- **悪い例(issue・今回への言及)**:
126
-
127
- ```markdown
128
- ## ユーザージャーニー
129
-
130
- ### 新規ユーザー登録(issue #1234 で追加)
131
-
132
- 今回のリリースで対応する新規登録フロー。
133
- ```
134
-
135
- ✅ **良い例**:
136
-
137
- ```markdown
138
- ## ユーザージャーニー
139
-
140
- ### 新規ユーザー登録
141
-
142
- **Priority**: P0
143
- ```
144
-
145
- ### Self-check(コミット前に必ず実行)
146
-
147
- 書き終えたら以下の禁止語を grep し、ヒットしたら必ず除去すること:
148
-
149
- ```
150
- # 履歴・経緯・過程の記述
151
- 今回 | 既存 | 新規追加 | 実装済み | 変更前 | 変更後 | 更新前 | 更新後
152
- 変更理由 | 削除理由 | 旧仕様 | issue # | Closes # | リバースエンジニアリング
153
- 本対応 | 本issue | 今回のスコープ | 今回の変更
154
-
155
- # テスト/ジャーニー再構成の履歴を暗示するフレーミング
156
- に統合 | を統合 | に集約 | を集約 | にまとめ | をまとめ | にマージ | をマージ
157
- 別テストに分割 | テストを分けた | 元々は | 当初は | 以前は
158
- ```
159
-
160
- 「ジャーニー名」や「アーキテクチャ判断の理由」など現在仕様の説明として正当な「理由」は問題ない。禁止しているのは**変更そのものの理由**(なぜ仕様を変えたか)と、**過去構成からの再編を暗示するフレーミング**。
161
-
162
- > 特に注意: テスト戦略表で `✅ (更新に統合)` `2 ケースに集約` `1 テストにまとめる方針` のように「以前は別だったが今はまとめてある」ことを匂わせる表現は SSOT 違反。常に**現在の構成事実のみ**を記述し(例: `プロフィール情報を更新する テスト内のステップとして検証`)、設計判断の理由は注記/設計判断セクションで「**この構成を採る**理由」として書く。
163
-
164
- ---
165
-
166
- ## 基本原則
167
-
168
- ### REQUIREMENTS.md(要件定義書)
169
-
170
- **目的**: ビジネス要件とユーザージャーニーをステークホルダー視点で定義
171
-
172
- **記述する内容**:
173
-
174
- - ユーザー視点(What & Why)
175
- - **ユーザーから見える挙動のみ**
176
- - すべてのユーザージャーニーに Priority(P0/P1/P2)を付与
177
- - UI/UX デザイン(HTML ワイヤーフレームへのリンク) … `generating-wireframes` スキルで生成
178
-
179
- **記述しない内容**:
180
-
181
- - 技術的な詳細(テーブル名、セッション管理、実装ファイルへの参照等)
182
- - テスト実装の詳細(TECH_DESIGN.md に記載)
183
-
184
- ### TECH_DESIGN.md(設計書)
185
-
186
- **目的**: 機能実装のための技術設計とテスト戦略
187
-
188
- **記述する内容**:
189
-
190
- - 技術視点(How)
191
- - テスト戦略: 各ジャーニーをテストレベルにマッピング
192
- - アーキテクチャ、API 設計、エラーハンドリング
193
- - **テスト総数と内訳**(例: 合計 33 件 - Unit 18 件, Integration 9 件, E2E 6 件)
194
-
195
- **記述しない内容**:
196
-
197
- - 実装例・コード例(関数・メソッドの実装、Server Actions の実装、処理フローのコード)
198
- - ただし、**型定義・インターフェース**(Entity型、UI型、Request/Response型)や **データモデル**(ER図)はコードブロックで記述可
199
-
200
- ### SCREEN_ITEMS_DEFINITION.md(画面項目定義書)- オプション
201
-
202
- **目的**: 画面の入力項目・表示項目の詳細定義
203
-
204
- **作成タイミング**: 以下の場合に作成を検討
205
-
206
- - フォーム項目が多い画面
207
- - 複雑なバリデーションルールがある
208
- - 表示形式(フォーマット、単位など)の定義が必要
209
-
210
- **記述する内容**:
211
-
212
- - 項目ID、項目名、データ型
213
- - 入力/表示の区分
214
- - バリデーションルール(必須、桁数、形式など)
215
- - 表示形式(日付フォーマット、通貨フォーマットなど)
216
- - 初期値、選択肢
217
-
218
- **記述しない内容**:
219
-
220
- - ユーザージャーニー(REQUIREMENTS.md に記載)
221
- - 技術設計・実装詳細(TECH_DESIGN.md に記載)
222
-
223
- ### Priority(優先度)ガイドライン
224
-
225
- | Priority | 定義 | テスト戦略 |
226
- | -------- | -------------------------------------------------------- | -------------------------- |
227
- | **P0** | Critical Path - ビジネスに直結、高頻度、複数システム統合 | E2E 必須 + Integration |
228
- | **P1** | Important - 重要だが Critical Path ではない | E2E 検討、Integration 必須 |
229
- | **P2** | Nice to Have - エッジケース、低頻度 | Integration または Unit |
230
-
231
- ## 次のステップ
232
-
233
- Specドキュメント(REQUIREMENTS.md + TECH_DESIGN.md)の作成・レビュー完了後:
234
-
235
- 1. **PLANドキュメントを作成** [documenting-plans Skill](../documenting-plans/SKILL.md)
236
- 2. PLANドキュメントに従ってテスト作成・実装を進める
237
-
238
- ## 参照ファイル
239
-
240
- 詳細なテンプレートとガイドは以下を参照:
241
-
242
- - **テンプレート**
243
- - [REQUIREMENTS.md テンプレート](templates/requirements.md)
244
- - [TECH_DESIGN.md テンプレート](templates/tech-design.md)
245
- - [SCREEN_ITEMS_DEFINITION.md テンプレート](templates/screen-items-definition.md) ← 画面項目定義(オプション)
246
- - **関連スキル**
247
- - [generating-wireframes Skill](../generating-wireframes/SKILL.md) ← UI を持つ機能の WF 生成
248
- - **ガイド**
249
- - [STDD違反例と対策](guides/stdd-violations.md) ← 実装開始前に必読
250
- - [エラーハンドリングガイド](guides/error-handling.md)
251
- - **次のステップ**
252
- - [PLANドキュメント作成スキル](../documenting-plans/SKILL.md)
253
-
254
- ## When NOT to Use This Skill
255
-
256
- 以下の場合はこのスキルを使用しない:
257
-
258
- - **単純なバグ修正**: 仕様変更を伴わない場合
259
- - **リファクタリング**: 外部から見える挙動が変わらない場合
260
- - **ドキュメント修正のみ**: README CLAUDE.md の更新
261
- - **テストの追加のみ**: 既存仕様に基づくテスト追加(ただし TECH_DESIGN.md のテスト総数は更新が必要)
262
-
263
- ## チェックリスト
264
-
265
- ### REQUIREMENTS.md 作成時
266
-
267
- ```
268
- 概要(解決する問題、対象ユーザー、ビジネス目標)
269
- □ すべてのユーザージャーニーに Priority(P0/P1/P2)を付与
270
- UI/UX デザイン(HTML ワイヤーフレームを生成し「3. UI/UX デザイン」からリンク)→ generating-wireframes Skill
271
- □ エッジケース
272
- □ スコープ外
273
- □ SCREEN_ITEMS_DEFINITION.md が必要か検討(フォーム項目が多い場合)
274
- ```
275
-
276
- ### TECH_DESIGN.md 作成時
277
-
278
- ```
279
- アーキテクチャ図(Mermaid)
280
- □ 主要な設計判断(Decision)- 選択と理由を明記
281
- データモデル(ER 図、TypeScript 型定義)
282
- □ API 設計(エンドポイント、型定義)
283
- □ エラーハンドリング戦略
284
- テスト戦略(ジャーニー別テストマッピング)
285
- テスト総数と内訳(Unit/Integration/E2E)
286
- 実装例・コード例が含まれていないことを確認(型定義・I/F は除く)
287
- SCREEN_ITEMS_DEFINITION.md が存在する場合、整合性を確認
288
- ```
289
-
290
- ### SCREEN_ITEMS_DEFINITION.md 作成時(任意)
291
-
292
- ```
293
- 画面単位で項目を整理
294
- □ 各項目に一意のIDを付与
295
- □ データ型を明記(string, number, date, select など)
296
- バリデーションルール(必須、桁数、形式、範囲)
297
- □ 表示形式(日付フォーマット、通貨、単位など)
298
- □ 選択肢がある場合はすべての選択肢を列挙
299
- REQUIREMENTS.md UI/UX デザインと整合性を確認
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.mdTECH_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
+ ```