@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.
Files changed (43) 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 +3 -3
  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 +22 -11
  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/starting-new-with-stdd/SKILL.md +43 -17
  32. package/assets/.claude/skills/starting-new-with-stdd/templates/bootstrap-plan.md +16 -7
  33. package/assets/.claude/skills/tailoring-spec-format/SKILL.md +7 -7
  34. package/assets/.claude/skills/verifying-consistency/SKILL.md +1 -1
  35. package/assets/mcp.json +9 -0
  36. package/assets/stdd.config.yml.tpl +4 -0
  37. package/dist/cli.js +1 -0
  38. package/dist/cli.js.map +1 -1
  39. package/dist/install.js +20 -1
  40. package/dist/install.js.map +1 -1
  41. package/package.json +1 -1
  42. package/assets/.claude/docs/spec-driven-development-guide.md +0 -436
  43. package/assets/.claude/skills/documenting-specifications/templates/screen-items-definition.md +0 -179
@@ -1,241 +1,168 @@
1
- # TECH_DESIGN.md テンプレート
1
+ # TECH_DESIGN.md テンプレート(feature)
2
2
 
3
- **目的**: 機能実装のための技術設計とテスト戦略
3
+ **目的**: 機能(画面単位)の技術設計。実装者(人 / AI)が**ロジックを起こせる粒度**で、概要・設計判断・画面項目・ロジック設計・エラーハンドリング・非機能要件を定義する。
4
4
 
5
- **配置**: `docs/<app>/<path>/TECH_DESIGN.md`
5
+ **配置**: `docs/<app>/<path>/TECH_DESIGN.md`(`.stdd.config.yml` の `docs.layout.tech_design` に従う)
6
6
 
7
- ## テンプレート構造
8
-
9
- ```markdown
10
- # [機能名] - 技術設計書
7
+ ## 章立ての骨格
11
8
 
12
- ---
9
+ | 章 | 内容 | 適用 |
10
+ | --- | --- | --- |
11
+ | 1. 概要 | 目的・スコープ・**対応ユースケース**・**使用 API**・参照 | 常に |
12
+ | 2. 主要な設計判断 | この機能**特有**の判断(選択+理由) | 任意(なければ章ごと省略) |
13
+ | 3. 画面項目定義 | UI × バリデーション × DB マッピング + 画面状態 | 画面 feature は必須 / 非画面は省略 |
14
+ | 4. ロジック設計 | ユースケース別ロジック(常に)+ その他処理フロー(任意) | 常に(コア) |
15
+ | 5. エラーハンドリング戦略 | API / 処理の失敗を本機能がどう捌くか | 常に |
16
+ | 6. 非機能要件 | 性能・セキュリティ等の実現方法 | 任意(REQUIREMENTS に記載がある場合のみ) |
13
17
 
14
- # Part 1: 技術設計
18
+ **横断要素は common を参照**(再定義しない):
15
19
 
16
- ## 1. 機能固有アーキテクチャ
20
+ - データ構造 → [`TABLE_DEFINITION.md`](../../common/TABLE_DEFINITION.md)
21
+ - API 契約 → [`API_SPEC.md`](../../common/API_SPEC.md)
22
+ - 全体構成・スタック → [`ARCHITECTURE.md`](../../common/ARCHITECTURE.md)
17
23
 
18
- (この機能固有のアーキテクチャ図とデータフロー)
19
-
20
- ```mermaid
21
- graph TD
22
- A[ユーザー] --> B[ページコンポーネント]
23
- B --> C[APIエンドポイント]
24
- C --> D[サービス層]
25
- D --> E[リポジトリ]
26
- E --> F[(データベース)]
27
- ```
24
+ **テスト戦略は本書に書かない** → 同階層の [`TEST_PLAN.md`](./test-plan.md) に置く。
28
25
 
29
- ---
26
+ ## 実装コードについて
30
27
 
31
- ## 2. 主要な設計判断
28
+ **実コード(関数 / コンポーネント / Server Action の実装)は書かない**。ただし設計情報としての擬似コード・型シグネチャ・I/F・式は可。ロジック設計は「手順・擬似コード・計算式」で表現する。
32
29
 
33
- ### 判断1: [技術選定]
30
+ ## テンプレート構造
34
31
 
35
- **選択**: ...
36
- **理由**: ...
32
+ 不要な章(2 / 3 / 6 など適用条件付き)は削除する。
37
33
 
38
- ### 判断2: [アーキテクチャパターン]
34
+ ````markdown
35
+ # [機能名] 技術設計書
39
36
 
40
- **選択**: ...
41
- **理由**: ...
37
+ > ビジネス要件は [`REQUIREMENTS.md`](./REQUIREMENTS.md)、テスト戦略は [`TEST_PLAN.md`](./TEST_PLAN.md) を参照。
38
+ > データ構造は [`TABLE_DEFINITION.md`](../../common/TABLE_DEFINITION.md)、API は [`API_SPEC.md`](../../common/API_SPEC.md) を参照。
42
39
 
43
- ---
40
+ ## 1. 概要
44
41
 
45
- ## 3. データモデル
42
+ - **目的**: (この機能が何を実現するか)
43
+ - **スコープ**: (対象 / 対象外)
44
+ - **参照**: 使用テーブル [`users`, `applies` 等](common の `TABLE_DEFINITION.md` を指す)
46
45
 
47
- ### ER図
46
+ ### 1.1 対応ユースケース
48
47
 
49
- ```mermaid
50
- erDiagram
51
- users ||--o{ projects : has
52
- users {
53
- uuid id PK
54
- string email
55
- timestamp created_at
56
- }
57
- ```
48
+ REQUIREMENTS の各ユースケースを列挙し、本書のどの設計で実現するかを対応づける(設計漏れ防止)。
58
49
 
59
- ### TypeScript型定義
60
-
61
- ```typescript
62
- // Entity型
63
- export interface UserEntity {
64
- id: string;
65
- email: string;
66
- created_at: string;
67
- }
68
-
69
- // UI型
70
- export interface User {
71
- id: string;
72
- email: string;
73
- createdAt: Date;
74
- }
75
- ```
50
+ | ユースケース(REQUIREMENTS §2.1) | Priority | 実現する設計 |
51
+ | --- | --- | --- |
52
+ | [ユースケース名] | P0 | §4.1 ユースケース別ロジック / §3 画面項目定義 |
53
+ | [ユースケース名] | P1 | §4.1 ユースケース別ロジック |
76
54
 
77
- ### バリデーションルール
55
+ ### 1.2 使用 API
78
56
 
79
- - `email`: 必須、メール形式、最大255文字
80
- - `created_at`: ISO8601形式、過去の日時
57
+ 本機能が使用する API を列挙し、`API_SPEC.md` の定義へリンクする(API を持たない機能では本節を削除)。
81
58
 
82
- ---
59
+ | API | 用途 | 対応ユースケース | 定義 |
60
+ | --- | --- | --- | --- |
61
+ | `POST /api/...` | [用途] | [ユースケース名] | [API_SPEC](../../common/API_SPEC.md) |
83
62
 
84
- ## 4. API設計
63
+ ## 2. 主要な設計判断
85
64
 
86
- ### エンドポイント
65
+ > この機能**特有**の判断のみ。共通方針は ARCHITECTURE に従う。判断が無ければ本章を削除する。
87
66
 
88
- #### POST /api/users
67
+ ### 判断 1: [テーマ]
89
68
 
90
- **リクエスト**:
91
- ```typescript
92
- interface CreateUserRequest {
93
- email: string;
94
- }
95
- ```
69
+ - **選択**: ...
70
+ - **理由**: ...
96
71
 
97
- **レスポンス**:
98
- ```typescript
99
- interface CreateUserResponse {
100
- user: User;
101
- }
102
- ```
72
+ ## 3. 画面項目定義
103
73
 
104
- **ビジネスロジック**:
105
- 1. メールアドレスの重複チェック
106
- 2. ユーザー作成
107
- 3. ウェルカムメール送信
74
+ > 画面を持つ feature のみ。非画面(API 専用 / バッチ / 共通部品)では本章を削除する。
75
+ > DB カラムは [`TABLE_DEFINITION.md`](../../common/TABLE_DEFINITION.md) のカラムを指す(再定義しない)。
108
76
 
109
- ---
77
+ **操作モード**(入力フォームのみ): Create / Edit / View(View は全項目非活性)
110
78
 
111
- ## 5. エラーハンドリング戦略
79
+ | 項目名 | 必須(条件) | 活性(条件) | デフォルト値 | 入力コンポーネント | 制約 | SELECT 定義 | DB テーブル.カラム | 備考 |
80
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
81
+ | [項目名] | Create: 必須 / Edit: 必須 | Create: 活性 / Edit: 非活性 | null | Text | maxLen=100 | – | users.name | |
82
+ | [項目名] | 任意 | 活性 | null | Select | – | S.1 [選択肢] | users.status | |
112
83
 
113
- ### エラーコード定義
84
+ **操作ボタン**
114
85
 
115
- | エラーコード | HTTPステータス | メッセージ | 原因 |
116
- |------------|--------------|----------|------|
117
- | `USER_NOT_FOUND` | 404 | ユーザーが見つかりません | 存在しないユーザーID |
118
- | `EMAIL_ALREADY_EXISTS` | 409 | このメールアドレスは既に使用されています | メール重複 |
119
- | `VALIDATION_ERROR` | 400 | 入力内容を確認してください | バリデーション失敗 |
86
+ | ボタン | 表示条件 | 活性条件 | アクション |
87
+ | --- | --- | --- | --- |
88
+ | [登録] | Create / Edit | View: 非活性 | 全バリデーション後に保存 |
120
89
 
121
- ### 実装方針
90
+ **バリデーション適用ルール**(下書き保存等のモードがある場合)
122
91
 
123
- - すべてのエラーは`AppError`クラスを継承
124
- - エラーコードでエラー種別を識別
125
- - ユーザー向けメッセージとログ用メッセージを分離
92
+ | 種別 | 本登録 | 下書き保存 |
93
+ | --- | --- | --- |
94
+ | 必須チェック | ✅ | ❌ |
95
+ | 型 / 桁 / 形式 / 範囲チェック | ✅ | ✅ |
126
96
 
127
- ---
97
+ (SELECT の選択肢は共通定義を参照 ID `S.x` で指す。DB カラムは `TABLE_DEFINITION.md` の定義を正とする)
128
98
 
129
- ## 6. セキュリティ要件
99
+ **画面状態**(画面全体の表示状態)
130
100
 
131
- - **認証・認可**: 実装方法と適用範囲
132
- - **XSS対策**: 対策内容
133
- - **CSRF対策**: 対策内容
134
- - **SQLインジェクション対策**: 対策内容
135
- - **個人情報の暗号化**: 暗号化方式
101
+ | 状態 | 表示 |
102
+ | --- | --- |
103
+ | 通常 | [項目・データを表示] |
104
+ | 空(0 件) | [空表示の文言・代替表示] |
105
+ | ローディング | [取得中の表示] |
106
+ | エラー | [失敗時の表示。挙動は §5 を参照] |
136
107
 
137
- ---
108
+ ## 4. ロジック設計
138
109
 
139
- ## 7. パフォーマンス要件
110
+ > 本機能のコア。集計式・変換・ドメインルール・トランザクション境界・副作用・複数テーブル横断の流れを
111
+ > **手順 / 擬似コード / 計算式**で記述する(実コードは書かない)。API を持たない機能(DB 直接参照等)でもここに書く。
140
112
 
141
- - **ページ読み込み時間**: 2秒以内
142
- - **API応答時間**: 500ms以内
143
- - **同時接続数**: 1000ユーザー
113
+ ### 4.1 ユースケース別ロジック
144
114
 
145
- ---
115
+ REQUIREMENTS §2.1 の各ユースケースの実現ロジックを**ユースケース単位**で記述する(§1.1 の対応表と紐づく。各ユースケースが必ずロジックとして設計されていること)。
146
116
 
147
- ## 8. テスト戦略
117
+ #### [ユースケース名]
148
118
 
149
- ### ジャーニー別テスト戦略
119
+ 1. [入力 / トリガ]
120
+ 2. [取得]: [`table`] を [条件(例: `deleted_at IS NULL`)] で参照
121
+ 3. [加工 / 集計]: [週/月/年バケット集計・近似指標の算出式など]
122
+ 4. [出力 / 永続化 / 副作用]
150
123
 
151
- | ジャーニー | E2E | Integration | Unit | 根拠 |
152
- |---------|-----|-------------|------|-----------|
153
- | P0: メインフロー | ✅ | ✅ | ✅ | Critical path、ビジネスに直結、複数システム統合 |
154
- | P1: 重要なエラーケース | ⚠️ 検討 | ✅ | ✅ | 頻度高い、Integration必須、E2Eは複雑さ・コストで判断 |
155
- | P2: エッジケース | ❌ | ⚠️ | ✅ | 低頻度、Unit十分 |
156
-
157
- ### テストファイル構成
158
-
159
- - **E2E**: `e2e/tests/[app]/[feature].spec.ts`
160
- - **Integration**: `[app]/components/[name].test.tsx`
161
- - **Unit**: `[app]/lib/*.test.ts`, `[app]/domain/models/*.test.ts`
162
124
  ```
163
-
164
- ## 重要なポイント
165
-
166
- - REQUIREMENTS.mdのジャーニーをテストレベル(E2E/Integration/Unit)にマッピング
167
- - テストレベル決定の根拠(Rationale)を含める
168
- - 設計判断は「選択」と「理由」を明記
169
- - アーキテクチャ、API設計、エラーハンドリング戦略
170
-
171
- ### 実装例・コード例について
172
-
173
- **TECH_DESIGN.mdには実装例・コード例を含めない**。ただし、以下の場合はコードブロックの使用が許容される:
174
-
175
- - **型定義・インターフェース**: Entity型、UI型、Request/Response型など設計情報として必要なもの
176
- - **データモデル**: ER図、バリデーションルール
177
- - **API設計**: エンドポイント、リクエスト/レスポンス型
178
-
179
- 以下は記述しないこと:
180
- - 関数・メソッドの具体的な実装
181
- - コンポーネントの実装
182
- - Server Actions の実装
183
- - 処理フローのコード
184
-
185
- ## TECH_DESIGN.md作成時のルール
186
-
187
- ### 1. 「実装済み」「新規追加」の分類は不要
188
-
189
- **理由**: REQUIREMENTS.mdが常にSSoT(Single Source of Truth)であるため、TECH_DESIGN.mdでは実装済みかどうかの区別は不要。すべての要件を統一的に設計する。
190
-
191
- ❌ **悪い例**:
192
- ```markdown
193
- ### 実装済み(既存)
194
- - ✅ 認証・認可: NextAuth + Supabase Authで二重認証
195
-
196
- ### 新規追加(パスワード認証)
197
- - ✅ Supabase Authによるパスワード認証
125
+ (必要に応じてシーケンス図 or 擬似コード)
126
+ 集計値 M = Σ(対象) / 母集団 ※[可] or [近似]
198
127
  ```
199
128
 
200
- **良い例**:
201
- ```markdown
202
- ## 6. セキュリティ要件
129
+ - **ドメインルール / 計算式**: [境界条件・丸め・単位・null の扱いを明示]
130
+ - **トランザクション / 副作用**: [トランザクション境界・冪等性・外部送信(メール等)]
203
131
 
204
- - **認証・認可**: NextAuth + Supabase Authで二重認証
205
- - **Supabase Authによるパスワード認証**: Credentials Providerで`signInWithPassword`を使用
206
- ```
132
+ ### 4.2 その他処理フロー 〔機能固有ロジックがあれば記載・なければ省略〕
207
133
 
208
- ### 2. 削除すべきセクション
134
+ ユースケースに直接紐づかない機能固有のロジック(バッチ / スケジュール処理・共通集計・内部整合処理 等)。各フローに識別名を付け、TEST_PLAN の処理フロー別テストと対応づける。
209
135
 
210
- TECH_DESIGN.mdでは以下のセクションは**削除する**こと:
136
+ #### [処理フロー名]
211
137
 
212
- - **Integration Points**: 外部システム・内部システムの一覧
213
- - ❌ **実装順序**: フェーズ別の実装計画
214
- - ❌ **ドキュメント参照文言**: 「このドキュメントは〜を参考に作成されました」
138
+ 1. [トリガ / 手順]
139
+ 2. ...
215
140
 
216
- ### 3. チェックボックス形式の削除
141
+ ## 5. エラーハンドリング戦略
217
142
 
218
- TECH_DESIGN.mdでは、実装状態を示すチェックボックス(`- [ ]`や`- ✅`)は使用しない。
143
+ > API / 処理の失敗を**本機能がどう捌くか**。エラーコードのカタログは [`API_SPEC.md`](../../common/API_SPEC.md) を参照。
219
144
 
220
- **悪い例**:
221
- ```markdown
222
- ## 6. セキュリティ要件
145
+ | 失敗ケース | 検知 | 本機能の挙動 |
146
+ | --- | --- | --- |
147
+ | 認証切れ(401) | API レスポンス | ログイン画面へリダイレクト |
148
+ | 検証エラー(400) | API レスポンス | 該当項目にインラインエラー表示 |
149
+ | 取得失敗 / タイムアウト | API レスポンス | エラーメッセージ表示・部分クラッシュ防止・リトライ導線 |
223
150
 
224
- - [ ] 認証・認可の実装
225
- - [ ] XSS対策
226
- - ✅ CSRF対策
227
- ```
151
+ ## 6. 非機能要件
228
152
 
229
- **良い例**:
230
- ```markdown
231
- ## 6. セキュリティ要件
153
+ > REQUIREMENTS(feature / common)に非機能要件の記載がある場合のみ、その**実現方法**を書く。無ければ本章を削除する。
232
154
 
233
- - **認証・認可**: NextAuth + Supabase Authで二重認証
234
- - **XSS対策**: React自動エスケープ + DOMPurify
235
- - **CSRF対策**: NextAuthがCSRFトークンを自動管理
155
+ - **性能**: [目標値とその実現手段(インデックス / キャッシュ等)]
156
+ - **セキュリティ**: [認証・認可・データ保護の実現手段]
157
+ - **アクセシビリティ / 可用性**: [該当時]
158
+ ````
236
159
 
237
- ### スコープ外
160
+ ## 記述しない内容(責務分界)
238
161
 
239
- - 二要素認証(2FA)
240
- - アカウントロック
241
- ```
162
+ - データ構造(テーブル・カラム定義) → common の `TABLE_DEFINITION.md`
163
+ - API 入出力契約・エラーコードカタログ → common の `API_SPEC.md`
164
+ - 全体構成・技術スタック → common の `ARCHITECTURE.md`
165
+ - テスト戦略 → 同階層の `TEST_PLAN.md`
166
+ - ユースケース(振る舞い+受入基準) → `REQUIREMENTS.md`
167
+ - 関数 / メソッドの具体実装コード(擬似コード・型 I/F は可)
168
+ - 実装状態のチェックボックス(`- [ ]` / `✅`)・「実装済み / 新規追加」の区別・履歴(SSoT 原則)
@@ -0,0 +1,58 @@
1
+ # TEST_PLAN.md テンプレート(feature)
2
+
3
+ **目的**: 機能(画面単位)のテスト戦略。**REQUIREMENTS のユースケース**と **TECH_DESIGN のロジック設計**の両方を、テストレベル(E2E / Integration / Unit)に漏れなくマッピングする。
4
+
5
+ **配置**: `docs/<app>/<path>/TEST_PLAN.md`(`.stdd.config.yml` の `docs.layout.test_plan` に従う)
6
+
7
+ ## 章立ての骨格
8
+
9
+ | 章 | 内容 | 適用 |
10
+ | --- | --- | --- |
11
+ | 1. ユースケース別テスト戦略 | REQUIREMENTS §2.1 の全ユースケース × テストレベル × 根拠 | 常に |
12
+ | 2. その他処理フロー別テスト戦略 | TECH_DESIGN §4.2 その他処理フロー × テストレベル × 根拠 | TECH_DESIGN に §4.2 がある場合 |
13
+
14
+ - **網羅性の二本立て**: REQUIREMENTS のユースケース(§1)と TECH_DESIGN ロジック設計のその他処理フロー(§2)の**両方**を漏れなくカバーする。
15
+ - 各レベルを選ぶ / 選ばない**根拠(Rationale)**を必ず書く。
16
+
17
+ ## テンプレート構造
18
+
19
+ ````markdown
20
+ # [機能名] テスト計画
21
+
22
+ > ビジネス要件は [`REQUIREMENTS.md`](./REQUIREMENTS.md)、技術設計は [`TECH_DESIGN.md`](./TECH_DESIGN.md) を参照。
23
+
24
+ ## 1. ユースケース別テスト戦略
25
+
26
+ REQUIREMENTS §2.1 の**全ユースケースを 1 行ずつ**列挙する(ユースケース名は REQUIREMENTS と同名・Priority も引く)。
27
+ **振る舞い(手順)→ E2E の骨格**、**受入基準(EARS)→ Unit / Integration** で担保するのが基本対応。
28
+
29
+ | ユースケース(REQUIREMENTS §2.1) | Priority | E2E | Integration | Unit | 根拠 |
30
+ | --- | --- | --- | --- | --- | --- |
31
+ | [ユースケース名] | P0 | ✅ | ✅ | ✅ | Critical path・ビジネス直結・複数システム統合 |
32
+ | [ユースケース名] | P1 | ⚠️ 検討 | ✅ | ✅ | 頻度高い・Integration 必須・E2E はコストで判断 |
33
+ | [ユースケース名] | P2 | ❌ | ⚠️ | ✅ | 低頻度・Unit で十分 |
34
+
35
+ > 受入基準(EARS)の主要条件(例外・境界・データ制約)は、対応する Unit / Integration の根拠列に検証観点として落とす。
36
+
37
+ ## 2. その他処理フロー別テスト戦略
38
+
39
+ > TECH_DESIGN §4.2「その他処理フロー」がある場合のみ。各処理フローを 1 行ずつ列挙する(無ければ本章を削除)。
40
+
41
+ | 処理フロー(TECH_DESIGN §4.2) | E2E | Integration | Unit | 根拠 |
42
+ | --- | --- | --- | --- | --- |
43
+ | [処理フロー名] | ❌ | ✅ | ✅ | バッチ / 内部ロジック・境界値は Unit で網羅 |
44
+ ````
45
+
46
+ ## 記述基準
47
+
48
+ - **ユースケース名は REQUIREMENTS §2.1 と一致させ、全ユースケースを漏れなく 1 行ずつ記載する**(REQUIREMENTS ↔ TEST_PLAN を 1:1 で追跡可能にする)。Priority も REQUIREMENTS から引く。
49
+ - **TECH_DESIGN §4.2 その他処理フローがある場合、§2 に全フローを 1 行ずつ記載する**(TECH_DESIGN ロジック設計 ↔ TEST_PLAN も 1:1 で追跡可能にする)。
50
+ - **振る舞い(手順)→ E2E、受入基準(EARS)→ Unit / Integration** の役割で対応づける。
51
+ - テストレベルの選択は「✅ 実施 / ⚠️ 検討 / ❌ 不要」で示し、根拠列を空にしない。
52
+ - ロジック設計の検証観点(集計式・境界値)は対応する Unit / Integration の根拠に紐づける。
53
+
54
+ ## 記述しない内容(責務分界)
55
+
56
+ - ユースケース本体(振る舞い+受入基準) → `REQUIREMENTS.md`
57
+ - ロジック設計・画面項目 → `TECH_DESIGN.md`
58
+ - テストの実装コード → テストファイル本体
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: generating-wireframes
3
3
  description: |-
4
- REQUIREMENTS.md のユーザージャーニーから、低忠実度(low-fidelity)の HTML ワイヤーフレームを生成する。技術スタック非依存の素の HTML(CSS は各 HTML に `<style>` で埋め込み・自己完結)で、画面レイアウト・情報設計・主要文言(タイトル / ボタン / 項目ラベル)を合意形成用に可視化する。
4
+ REQUIREMENTS.md のユースケース(振る舞い+受入基準)から、低忠実度(low-fidelity)の HTML ワイヤーフレームを生成する。技術スタック非依存の素の HTML(CSS は各 HTML に `<style>` で埋め込み・自己完結)で、画面レイアウト・情報設計・主要文言(タイトル / ボタン / 項目ラベル)を合意形成用に可視化する。
5
5
  when_to_use: |-
6
6
  「ワイヤーフレーム」「WF」「wireframe」「画面設計」「画面イメージ」「モックの前段」「UI/UX デザインのHTML化」「REQUIREMENTS の画面を作る」に関する作業のとき。
7
7
  allowed-tools: Read, Write, Edit, Glob, Grep
@@ -9,7 +9,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep
9
9
 
10
10
  # ワイヤーフレーム生成
11
11
 
12
- REQUIREMENTS.md の **ユーザージャーニー**と**画面要素**をもとに、低忠実度の HTML ワイヤーフレーム(WF)を生成する。WF は REQUIREMENTS.md の「3. UI/UX デザイン」セクションの実体となり、ステークホルダーが画面構成・遷移・主要文言を合意するために使う。
12
+ REQUIREMENTS.md の **ユースケース**(振る舞い+受入基準)と**画面要素**をもとに、低忠実度の HTML ワイヤーフレーム(WF)を生成する。WF は REQUIREMENTS.md の「2.4 UI/UX・画面」セクションの実体となり、ステークホルダーが画面構成・遷移・主要文言を合意するために使う。
13
13
 
14
14
  ## 何を作るか / 作らないか
15
15
 
@@ -39,13 +39,13 @@ docs/<app>/<feature_path>/wireframes/
39
39
 
40
40
  ### 1. 入力を読む
41
41
 
42
- - 対象の `REQUIREMENTS.md`(ユーザージャーニー・表示要素・空 / エラー状態)
43
- - `SCREEN_ITEMS_DEFINITION.md`(存在する場合フォーム項目名・選択肢・必須/任意の出所はこれ)
42
+ - 対象の `REQUIREMENTS.md`(ユースケース:振る舞い+受入基準・表示要素)
43
+ - `TECH_DESIGN.md` の画面項目定義セクション(画面 feature にあれば フォーム項目名・選択肢・必須/任意・画面状態〔通常 / 空 / ローディング / エラー〕の出所はこれ)
44
44
  - 既存の類似画面の WF(`docs/**/wireframes/` を Glob して文言・構造を踏襲)
45
45
 
46
46
  ### 2. 画面を洗い出す
47
47
 
48
- ユーザージャーニーの各ステップが「どの画面で起きるか」を割り出し、画面のリストを作る。1 ジャーニー = 複数画面のことも、複数ジャーニーが 1 画面を共有することもある。各画面について必要な**状態**(通常 / 空 / エラー / ローディング)を決める。詳細は [guides/from-requirements.md](guides/from-requirements.md)。
48
+ ユースケースの振る舞い(手順)の各ステップが「どの画面で起きるか」を割り出し、画面のリストを作る。1 ユースケース = 複数画面のことも、複数ユースケースが 1 画面を共有することもある。各画面について必要な**状態**(通常 / 空 / エラー / ローディング)を決める。詳細は [guides/from-requirements.md](guides/from-requirements.md)。
49
49
 
50
50
  ### 3. 雛形をコピーして組む
51
51
 
@@ -54,7 +54,7 @@ docs/<app>/<feature_path>/wireframes/
54
54
  3. 各画面の `<title>` と `.wf-screen-label` に「画面名 / 状態名」を実値で入れる。
55
55
  4. `<style>` ブロックは各画面で同一内容を保つ(デザインシステムを変えたい場合は全画面の `<style>` を揃えて更新する)。CSS 単体ファイルは作らない。
56
56
 
57
- ### 4. REQUIREMENTS.md の「3. UI/UX デザイン」を更新
57
+ ### 4. REQUIREMENTS.md の「2.4 UI/UX・画面」を更新
58
58
 
59
59
  ASCII アートは置かない。代わりに以下を書く(テンプレートは `documenting-specifications` の REQUIREMENTS テンプレートに準拠):
60
60
 
@@ -64,7 +64,7 @@ ASCII アートは置かない。代わりに以下を書く(テンプレー
64
64
 
65
65
  ### 5. セルフチェック
66
66
 
67
- - [ ] すべての P0 / P1 ジャーニーに対応する画面が WF 化されている
67
+ - [ ] すべての P0 / P1 ユースケースに対応する画面が WF 化されている
68
68
  - [ ] 各画面に**実文言**のタイトル・ボタン・ラベルが入っている(ダミー `[...]` が残っていない)
69
69
  - [ ] 空状態・主要エラー状態の WF がある
70
70
  - [ ] モバイル幅でも破綻しない(`wf-page--mobile` でプレビュー確認、または論理的に 1 列化される構造)
@@ -98,8 +98,8 @@ ASCII アートは置かない。代わりに以下を書く(テンプレー
98
98
  ## STDD フローでの位置づけ
99
99
 
100
100
  ```
101
- REQUIREMENTS.md(ジャーニー)
102
- └─ ワイヤーフレーム生成(本スキル)── 「3. UI/UX デザイン」の実体に
101
+ REQUIREMENTS.md(ユースケース)
102
+ └─ ワイヤーフレーム生成(本スキル)── 「2.4 UI/UX・画面」の実体に
103
103
  └─ TECH_DESIGN.md → テスト → 実装
104
104
  ```
105
105
 
@@ -116,6 +116,6 @@ REQUIREMENTS.md(ジャーニー)
116
116
 
117
117
  - [templates/screen.html](templates/screen.html) — 画面ひな型(`<head>` に汎用デザインシステムの `<style>` を埋め込み済み=デザインシステム本体)
118
118
  - [templates/index.html](templates/index.html) — 画面一覧ひな型
119
- - [guides/from-requirements.md](guides/from-requirements.md) — ジャーニー → 画面の起こし方
119
+ - [guides/from-requirements.md](guides/from-requirements.md) — ユースケース → 画面の起こし方
120
120
  - [examples/](examples/) — toC / toB のサンプル WF
121
121
  - 関連: [documenting-specifications](../documenting-specifications/SKILL.md)(REQUIREMENTS テンプレート)
@@ -1,26 +1,26 @@
1
- # ジャーニー → 画面の起こし方
1
+ # ユースケース → 画面の起こし方
2
2
 
3
- REQUIREMENTS.md のユーザージャーニーから WF にすべき画面を導くための手順。
3
+ REQUIREMENTS.md のユースケース(振る舞い+受入基準)から WF にすべき画面を導くための手順。
4
4
 
5
- ## 1. ジャーニーのステップを「画面」に割り当てる
5
+ ## 1. ユースケースの振る舞い(手順)を「画面」に割り当てる
6
6
 
7
- 各ジャーニーの手順を読み、**ユーザーが何かを見る / 操作する単位**で画面を切る。
7
+ 各ユースケースの振る舞い(手順)を読み、**ユーザーが何かを見る / 操作する単位**で画面を切る。
8
8
 
9
- 例(一覧 → 詳細 → 申込のジャーニー):
9
+ 例(一覧 → 詳細 → 申込のユースケース):
10
10
 
11
- | ジャーニー手順 | 画面 |
11
+ | 振る舞いの手順 | 画面 |
12
12
  | -------------- | ---- |
13
13
  | 一覧を検索・絞り込みする | 一覧画面(検索条件 + 結果テーブル/カード) |
14
14
  | 1 件を選んで詳細を見る | 詳細画面 |
15
15
  | 申込フォームを入力して送信する | 申込フォーム(モーダル or 専用画面) |
16
16
  | 送信完了を確認する | 完了画面 / トースト |
17
17
 
18
- - 1 ジャーニーが複数画面にまたがる、複数ジャーニーが 1 画面を共有する、どちらもある。
19
- - 重複を避けるため、**先に全ジャーニーを通して画面の集合を作ってから** WF 化する。
18
+ - 1 ユースケースが複数画面にまたがる、複数ユースケースが 1 画面を共有する、どちらもある。
19
+ - 重複を避けるため、**先に全ユースケースを通して画面の集合を作ってから** WF 化する。
20
20
 
21
21
  ## 2. 各画面の「状態」を決める
22
22
 
23
- P0 / P1 で「期待結果」や「エラーケース」に出てくる状態を WF にする。
23
+ P0 / P1 のユースケースで、受入基準(EARS)の「エラー時(IF)」や「空・境界(WHERE)」に出てくる状態を WF にする。
24
24
 
25
25
  | 状態 | 作るべきか | クラス例 |
26
26
  | ---- | ---------- | -------- |
@@ -41,13 +41,13 @@ P0 / P1 で「期待結果」や「エラーケース」に出てくる状態を
41
41
  | ステータス管理(カンバン) | `wf-kanban--3` + `wf-kanban__col` + `wf-card` |
42
42
  | 確認 / 申込ダイアログ | `wf-modal`(`wf-modal__head/body/foot`) |
43
43
 
44
- ## 4. 文言は SCREEN_ITEMS_DEFINITION.md / REQUIREMENTS.md から取る
44
+ ## 4. 文言は TECH_DESIGN.md の画面項目定義 / REQUIREMENTS.md から取る
45
45
 
46
- - フォーム項目名・必須/任意・選択肢は `SCREEN_ITEMS_DEFINITION.md` があればそれが出所(なければ REQUIREMENTS.md の表示要素から)。
47
- - ボタン文言・タブ名・空状態メッセージは REQUIREMENTS.md のジャーニー / 期待結果から拾う。
46
+ - フォーム項目名・必須/任意・選択肢は `TECH_DESIGN.md` の画面項目定義セクション(画面 feature にあれば)が出所(なければ REQUIREMENTS.md の表示要素から)。
47
+ - ボタン文言・タブ名・空状態メッセージは REQUIREMENTS.md のユースケース(振る舞い / 受入基準)から拾う。
48
48
  - **想像で増やさない**。Spec にない項目・ボタンを WF に足すと、WF が Spec を上書きしてしまい SSOT が壊れる。足したくなったら先に REQUIREMENTS.md を更新する。
49
49
 
50
50
  ## 5. index と REQUIREMENTS のリンクを最後に整える
51
51
 
52
52
  - `index.html` に全画面・全状態を列挙。
53
- - REQUIREMENTS.md「3. UI/UX デザイン」から `./wireframes/index.html` を指し、各画面の要点(タイトル・主要ボタン・表示要素)をテキストでも残す(HTML を開けない読者・差分レビュー用)。
53
+ - REQUIREMENTS.md「2.4 UI/UX・画面」から `./wireframes/index.html` を指し、各画面の要点(タイトル・主要ボタン・表示要素)をテキストでも残す(HTML を開けない読者・差分レビュー用)。
@@ -4,7 +4,7 @@
4
4
  使い方:
5
5
  - docs/<app>/<feature_path>/wireframes/index.html としてコピーする。
6
6
  - 各画面 HTML へのリンクと、1 行説明を並べる。
7
- - REQUIREMENTS.md の「3. UI/UX デザイン」からは、まずこの index.html を指す。
7
+ - REQUIREMENTS.md の「2.4 UI/UX・画面」からは、まずこの index.html を指す。
8
8
  -->
9
9
  <!DOCTYPE html>
10
10
  <html lang="ja">
@@ -117,8 +117,11 @@ docs:
117
117
  layout:
118
118
  common_requirements: docs/common/REQUIREMENTS.md # common ティアを使う場合のみ
119
119
  common_architecture: docs/common/ARCHITECTURE.md
120
+ common_table_definition: docs/common/TABLE_DEFINITION.md
121
+ common_api_spec: docs/common/API_SPEC.md # API がある場合
120
122
  requirements: docs/{{app.id}}/{{feature_path}}/REQUIREMENTS.md
121
123
  tech_design: docs/{{app.id}}/{{feature_path}}/TECH_DESIGN.md
124
+ test_plan: docs/{{app.id}}/{{feature_path}}/TEST_PLAN.md
122
125
  plan: docs/{{app.id}}/{{feature_path}}/plans/{{date}}.md
123
126
  ```
124
127