@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,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
|
-
|
|
18
|
+
**横断要素は common を参照**(再定義しない):
|
|
15
19
|
|
|
16
|
-
|
|
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
|
-
|
|
28
|
+
**実コード(関数 / コンポーネント / Server Action の実装)は書かない**。ただし設計情報としての擬似コード・型シグネチャ・I/F・式は可。ロジック設計は「手順・擬似コード・計算式」で表現する。
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
## テンプレート構造
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
**理由**: ...
|
|
32
|
+
不要な章(2 / 3 / 6 など適用条件付き)は削除する。
|
|
37
33
|
|
|
38
|
-
|
|
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
|
-
|
|
42
|
+
- **目的**: (この機能が何を実現するか)
|
|
43
|
+
- **スコープ**: (対象 / 対象外)
|
|
44
|
+
- **参照**: 使用テーブル [`users`, `applies` 等](common の `TABLE_DEFINITION.md` を指す)
|
|
46
45
|
|
|
47
|
-
###
|
|
46
|
+
### 1.1 対応ユースケース
|
|
48
47
|
|
|
49
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
63
|
+
## 2. 主要な設計判断
|
|
85
64
|
|
|
86
|
-
|
|
65
|
+
> この機能**特有**の判断のみ。共通方針は ARCHITECTURE に従う。判断が無ければ本章を削除する。
|
|
87
66
|
|
|
88
|
-
|
|
67
|
+
### 判断 1: [テーマ]
|
|
89
68
|
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
| `EMAIL_ALREADY_EXISTS` | 409 | このメールアドレスは既に使用されています | メール重複 |
|
|
119
|
-
| `VALIDATION_ERROR` | 400 | 入力内容を確認してください | バリデーション失敗 |
|
|
86
|
+
| ボタン | 表示条件 | 活性条件 | アクション |
|
|
87
|
+
| --- | --- | --- | --- |
|
|
88
|
+
| [登録] | Create / Edit | View: 非活性 | 全バリデーション後に保存 |
|
|
120
89
|
|
|
121
|
-
|
|
90
|
+
**バリデーション適用ルール**(下書き保存等のモードがある場合)
|
|
122
91
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
92
|
+
| 種別 | 本登録 | 下書き保存 |
|
|
93
|
+
| --- | --- | --- |
|
|
94
|
+
| 必須チェック | ✅ | ❌ |
|
|
95
|
+
| 型 / 桁 / 形式 / 範囲チェック | ✅ | ✅ |
|
|
126
96
|
|
|
127
|
-
|
|
97
|
+
(SELECT の選択肢は共通定義を参照 ID `S.x` で指す。DB カラムは `TABLE_DEFINITION.md` の定義を正とする)
|
|
128
98
|
|
|
129
|
-
|
|
99
|
+
**画面状態**(画面全体の表示状態)
|
|
130
100
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
101
|
+
| 状態 | 表示 |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| 通常 | [項目・データを表示] |
|
|
104
|
+
| 空(0 件) | [空表示の文言・代替表示] |
|
|
105
|
+
| ローディング | [取得中の表示] |
|
|
106
|
+
| エラー | [失敗時の表示。挙動は §5 を参照] |
|
|
136
107
|
|
|
137
|
-
|
|
108
|
+
## 4. ロジック設計
|
|
138
109
|
|
|
139
|
-
|
|
110
|
+
> 本機能のコア。集計式・変換・ドメインルール・トランザクション境界・副作用・複数テーブル横断の流れを
|
|
111
|
+
> **手順 / 擬似コード / 計算式**で記述する(実コードは書かない)。API を持たない機能(DB 直接参照等)でもここに書く。
|
|
140
112
|
|
|
141
|
-
|
|
142
|
-
- **API応答時間**: 500ms以内
|
|
143
|
-
- **同時接続数**: 1000ユーザー
|
|
113
|
+
### 4.1 ユースケース別ロジック
|
|
144
114
|
|
|
145
|
-
|
|
115
|
+
REQUIREMENTS §2.1 の各ユースケースの実現ロジックを**ユースケース単位**で記述する(§1.1 の対応表と紐づく。各ユースケースが必ずロジックとして設計されていること)。
|
|
146
116
|
|
|
147
|
-
|
|
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
|
-
|
|
202
|
-
## 6. セキュリティ要件
|
|
129
|
+
- **ドメインルール / 計算式**: [境界条件・丸め・単位・null の扱いを明示]
|
|
130
|
+
- **トランザクション / 副作用**: [トランザクション境界・冪等性・外部送信(メール等)]
|
|
203
131
|
|
|
204
|
-
|
|
205
|
-
- **Supabase Authによるパスワード認証**: Credentials Providerで`signInWithPassword`を使用
|
|
206
|
-
```
|
|
132
|
+
### 4.2 その他処理フロー 〔機能固有ロジックがあれば記載・なければ省略〕
|
|
207
133
|
|
|
208
|
-
|
|
134
|
+
ユースケースに直接紐づかない機能固有のロジック(バッチ / スケジュール処理・共通集計・内部整合処理 等)。各フローに識別名を付け、TEST_PLAN の処理フロー別テストと対応づける。
|
|
209
135
|
|
|
210
|
-
|
|
136
|
+
#### [処理フロー名]
|
|
211
137
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
- ❌ **ドキュメント参照文言**: 「このドキュメントは〜を参考に作成されました」
|
|
138
|
+
1. [トリガ / 手順]
|
|
139
|
+
2. ...
|
|
215
140
|
|
|
216
|
-
|
|
141
|
+
## 5. エラーハンドリング戦略
|
|
217
142
|
|
|
218
|
-
|
|
143
|
+
> API / 処理の失敗を**本機能がどう捌くか**。エラーコードのカタログは [`API_SPEC.md`](../../common/API_SPEC.md) を参照。
|
|
219
144
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
155
|
+
- **性能**: [目標値とその実現手段(インデックス / キャッシュ等)]
|
|
156
|
+
- **セキュリティ**: [認証・認可・データ保護の実現手段]
|
|
157
|
+
- **アクセシビリティ / 可用性**: [該当時]
|
|
158
|
+
````
|
|
236
159
|
|
|
237
|
-
|
|
160
|
+
## 記述しない内容(責務分界)
|
|
238
161
|
|
|
239
|
-
-
|
|
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
|
|
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 の
|
|
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
|
-
- `
|
|
42
|
+
- 対象の `REQUIREMENTS.md`(ユースケース:振る舞い+受入基準・表示要素)
|
|
43
|
+
- `TECH_DESIGN.md` の画面項目定義セクション(画面 feature にあれば — フォーム項目名・選択肢・必須/任意・画面状態〔通常 / 空 / ローディング / エラー〕の出所はこれ)
|
|
44
44
|
- 既存の類似画面の WF(`docs/**/wireframes/` を Glob して文言・構造を踏襲)
|
|
45
45
|
|
|
46
46
|
### 2. 画面を洗い出す
|
|
47
47
|
|
|
48
|
-
|
|
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 の「
|
|
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
|
|
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
|
-
└─ ワイヤーフレーム生成(本スキル)── 「
|
|
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
|
|
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
|
|
19
|
-
-
|
|
18
|
+
- 1 ユースケースが複数画面にまたがる、複数ユースケースが 1 画面を共有する、どちらもある。
|
|
19
|
+
- 重複を避けるため、**先に全ユースケースを通して画面の集合を作ってから** WF 化する。
|
|
20
20
|
|
|
21
21
|
## 2. 各画面の「状態」を決める
|
|
22
22
|
|
|
23
|
-
P0 / P1
|
|
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. 文言は
|
|
44
|
+
## 4. 文言は TECH_DESIGN.md の画面項目定義 / REQUIREMENTS.md から取る
|
|
45
45
|
|
|
46
|
-
- フォーム項目名・必須/任意・選択肢は `
|
|
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「
|
|
53
|
+
- REQUIREMENTS.md「2.4 UI/UX・画面」から `./wireframes/index.html` を指し、各画面の要点(タイトル・主要ボタン・表示要素)をテキストでも残す(HTML を開けない読者・差分レビュー用)。
|
|
@@ -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
|
|