@careerchain/stdd 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/assets/.claude/agents/code-reviewer.md +170 -0
- package/assets/.claude/agents/implementer.md +96 -0
- package/assets/.claude/agents/plan-writer.md +124 -0
- package/assets/.claude/agents/qa-engineer.md +133 -0
- package/assets/.claude/agents/spec-reviewer.md +173 -0
- package/assets/.claude/agents/spec-writer.md +194 -0
- package/assets/.claude/agents/test-reviewer.md +218 -0
- package/assets/.claude/docs/spec-driven-development-guide.md +436 -0
- package/assets/.claude/hooks/pre-push-check.sh +160 -0
- package/assets/.claude/settings.json +67 -0
- package/assets/.claude/skills/auto-implement/SKILL.md +168 -0
- package/assets/.claude/skills/auto-implement/references/github-project.md +54 -0
- package/assets/.claude/skills/auto-implement/references/phases.md +244 -0
- package/assets/.claude/skills/create-pr/SKILL.md +112 -0
- package/assets/.claude/skills/documenting-plans/SKILL.md +217 -0
- package/assets/.claude/skills/documenting-plans/templates/plan.md +182 -0
- package/assets/.claude/skills/documenting-specifications/SKILL.md +300 -0
- package/assets/.claude/skills/documenting-specifications/guides/error-handling.md +78 -0
- package/assets/.claude/skills/documenting-specifications/guides/stdd-violations.md +237 -0
- package/assets/.claude/skills/documenting-specifications/templates/requirements.md +184 -0
- package/assets/.claude/skills/documenting-specifications/templates/screen-items-definition.md +179 -0
- package/assets/.claude/skills/documenting-specifications/templates/tech-design.md +241 -0
- package/assets/.claude/skills/generating-wireframes/SKILL.md +121 -0
- package/assets/.claude/skills/generating-wireframes/examples/tob-form.html +497 -0
- package/assets/.claude/skills/generating-wireframes/examples/tob-list.html +536 -0
- package/assets/.claude/skills/generating-wireframes/examples/toc-form.html +493 -0
- package/assets/.claude/skills/generating-wireframes/examples/toc-list.html +538 -0
- package/assets/.claude/skills/generating-wireframes/guides/from-requirements.md +53 -0
- package/assets/.claude/skills/generating-wireframes/templates/index.html +472 -0
- package/assets/.claude/skills/generating-wireframes/templates/screen.html +480 -0
- package/assets/.claude/skills/introducing-stdd/SKILL.md +185 -0
- package/assets/.claude/skills/introducing-stdd/templates/introduction-plan.md +64 -0
- package/assets/.claude/skills/kaizen/SKILL.md +129 -0
- package/assets/.claude/skills/kaizen/references/code-examples.md +233 -0
- package/assets/.claude/skills/reverse-engineering-common-spec/SKILL.md +137 -0
- package/assets/.claude/skills/reverse-engineering-feature-spec/SKILL.md +463 -0
- package/assets/.claude/skills/reverse-engineering-feature-spec/guides/accuracy.md +215 -0
- package/assets/.claude/skills/reverse-engineering-feature-spec/guides/figma-capture.md +313 -0
- package/assets/.claude/skills/review-pr-with-agents/SKILL.md +159 -0
- package/assets/.claude/skills/searching-existing-solutions/SKILL.md +110 -0
- package/assets/.claude/skills/setup-stdd/SKILL.md +82 -0
- package/assets/.claude/skills/software-architecture/SKILL.md +260 -0
- package/assets/.claude/skills/starting-new-with-stdd/SKILL.md +142 -0
- package/assets/.claude/skills/starting-new-with-stdd/templates/bootstrap-plan.md +73 -0
- package/assets/.claude/skills/tailoring-spec-format/SKILL.md +103 -0
- package/assets/.claude/skills/verifying-consistency/SKILL.md +90 -0
- package/assets/stdd.config.yml.tpl +34 -0
- package/dist/cli.js +148 -0
- package/dist/cli.js.map +1 -0
- package/dist/install.js +121 -0
- package/dist/install.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: documenting-plans
|
|
3
|
+
description: |-
|
|
4
|
+
PLAN ドキュメント(実装タスクリスト)の作成・管理ガイドライン。STDD 方法論において、セッションごとの実装計画を管理する。
|
|
5
|
+
when_to_use: |-
|
|
6
|
+
「PLAN」「タスクリスト」「実装計画」「セッション計画」「実装開始」「STDD実装」「機能実装」に関する作業のとき。
|
|
7
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PLAN ドキュメントの作成・管理
|
|
11
|
+
|
|
12
|
+
STDD(Spec and Test Driven Development)方法論において、セッションごとの実装タスクを管理するPLANドキュメントを作成・管理します。
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
### PLANドキュメントとは
|
|
17
|
+
|
|
18
|
+
**当該セッションで行う実装のタスクを、実装可能な単位に分解したタスクリスト**
|
|
19
|
+
|
|
20
|
+
Claudeは実際の作業をこのタスクリストに従って進めます。
|
|
21
|
+
|
|
22
|
+
### 目的
|
|
23
|
+
|
|
24
|
+
**SSoT(Single Source of Truth)としてのSpecドキュメントと、フローのドキュメントを明確に分けるため**
|
|
25
|
+
|
|
26
|
+
- Specドキュメント: 要件・仕様のSSoT(常に最新の状態を維持)
|
|
27
|
+
- PLANドキュメント: 当該セッションの作業計画
|
|
28
|
+
|
|
29
|
+
### テンプレート
|
|
30
|
+
|
|
31
|
+
詳細なテンプレートは [templates/plan.md](./templates/plan.md) を参照。
|
|
32
|
+
|
|
33
|
+
## ドキュメント配置ルール
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
docs/<app>/<feature-path>/plans/[yyyy-mm-dd].md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**例**:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
docs/<app.id>/projects/project-list/plans/2026-01-30.md
|
|
43
|
+
docs/<app.id>/profile/skills/plans/2026-01-30.md
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 作成タイミング
|
|
47
|
+
|
|
48
|
+
### 新規機能を実装する場合(Specドキュメントを新規作成する場合)
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
1. REQUIREMENTS.md作成
|
|
52
|
+
↓
|
|
53
|
+
2. TECH_DESIGN.md作成
|
|
54
|
+
↓
|
|
55
|
+
3. ステークホルダー/アーキテクトレビュー
|
|
56
|
+
↓
|
|
57
|
+
4. ★ PLANドキュメント作成
|
|
58
|
+
- タスクはテスト・実装のみになる
|
|
59
|
+
↓
|
|
60
|
+
5. テスト作成 → 実装
|
|
61
|
+
↓
|
|
62
|
+
6. レビュー
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 既存機能に追加実装する場合(Specドキュメントが既に存在する場合)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
1. ★ PLANドキュメント作成
|
|
69
|
+
- タスクの一つとしてSpecドキュメントの更新が含まれる
|
|
70
|
+
↓
|
|
71
|
+
2. Specドキュメント更新(REQUIREMENTS.md、TECH_DESIGN.md)
|
|
72
|
+
↓
|
|
73
|
+
3. テスト・実装計画の更新に基づいてPLANドキュメントも更新
|
|
74
|
+
↓
|
|
75
|
+
4. テスト作成 → 実装
|
|
76
|
+
↓
|
|
77
|
+
5. レビュー
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## PLANドキュメントの構成
|
|
81
|
+
|
|
82
|
+
PLANドキュメントには以下のセクションを含める:
|
|
83
|
+
|
|
84
|
+
### 1. 実装スコープ
|
|
85
|
+
|
|
86
|
+
- REQUIREMENTS.md / TECH_DESIGN.md のどの範囲を実装するか
|
|
87
|
+
- P0/P1/P2 のどれを対象とするか
|
|
88
|
+
|
|
89
|
+
### 2. タスクリスト
|
|
90
|
+
|
|
91
|
+
テスト作成 → 実装の順序でタスクを分解:
|
|
92
|
+
|
|
93
|
+
1. **Specドキュメント更新**(既存機能の場合)
|
|
94
|
+
2. **テスト作成(Red状態)**: Unit → Integration → E2E
|
|
95
|
+
3. **実装(Green状態)**: テストに対応する実装
|
|
96
|
+
4. **テスト実行・検証**
|
|
97
|
+
|
|
98
|
+
### 3. ファイル構成
|
|
99
|
+
|
|
100
|
+
**目的**: 今回のセッションで作成・変更するファイルの一覧を明確にする
|
|
101
|
+
|
|
102
|
+
**凡例**:
|
|
103
|
+
|
|
104
|
+
- `(新規)`: 新規作成するファイル
|
|
105
|
+
- `(既存修正)`: 既存ファイルを修正
|
|
106
|
+
- `(既存維持)`: 変更なし(参照のみ)
|
|
107
|
+
|
|
108
|
+
### 4. 実装詳細
|
|
109
|
+
|
|
110
|
+
各ファイルの実装方針を簡潔に記載:
|
|
111
|
+
|
|
112
|
+
- ページコンポーネント: サーバー/クライアントコンポーネントの選択理由
|
|
113
|
+
- Server Actions: 処理フローの概要
|
|
114
|
+
- バリデーション: 主要なバリデーションルール
|
|
115
|
+
- Domain層: Entity/Repository/Serviceの役割分担
|
|
116
|
+
|
|
117
|
+
**注意**: コード例は記載しない。詳細は実装ファイル自体を参照。
|
|
118
|
+
|
|
119
|
+
### 5. 実装時の注意事項
|
|
120
|
+
|
|
121
|
+
セッション中に把握した技術的な注意点を記録:
|
|
122
|
+
|
|
123
|
+
- 認証・セッションの制約
|
|
124
|
+
- エラーハンドリングの方針
|
|
125
|
+
- 外部サービスとの連携方法
|
|
126
|
+
|
|
127
|
+
**注意**: コード例は記載しない。詳細は実装ファイル自体を参照。
|
|
128
|
+
|
|
129
|
+
### 6. 備考
|
|
130
|
+
|
|
131
|
+
- セッション中に発生した課題や決定事項
|
|
132
|
+
- 次回セッションへの引き継ぎ事項
|
|
133
|
+
|
|
134
|
+
### 7. 既知の制限事項
|
|
135
|
+
|
|
136
|
+
- 現時点での制限
|
|
137
|
+
- スコープ外の項目(REQUIREMENTS.mdの「Out of Scope」と連携)
|
|
138
|
+
|
|
139
|
+
## セッション開始時の確認事項
|
|
140
|
+
|
|
141
|
+
**STDDにおいて、Claudeは毎セッションでPLANドキュメント作成前に以下を開発者に確認すること**:
|
|
142
|
+
|
|
143
|
+
### 1. 実装スコープの確認
|
|
144
|
+
|
|
145
|
+
- Specのうち一部を実装するのか、全部を実装するのか
|
|
146
|
+
- 一部の場合、どの部分を今セッションで実装するのか
|
|
147
|
+
|
|
148
|
+
### 2. 確認の例
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
「REQUIREMENTS.mdを確認しました。今回のセッションでは以下のどの範囲を実装しますか?
|
|
152
|
+
|
|
153
|
+
A) 全てのUser Journey(P0〜P2)
|
|
154
|
+
B) P0のCritical Pathsのみ
|
|
155
|
+
C) 特定のJourneyのみ(指定してください)
|
|
156
|
+
|
|
157
|
+
また、既存のPLANドキュメントがある場合は、そちらを継続しますか?」
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 3. この確認が必要な理由
|
|
161
|
+
|
|
162
|
+
- 大きな機能は複数セッションに分割して実装することが多い
|
|
163
|
+
- スコープを明確にすることで、PLANドキュメントの精度が上がる
|
|
164
|
+
- 開発者との認識齟齬を防ぐ
|
|
165
|
+
|
|
166
|
+
## タスク分解の原則
|
|
167
|
+
|
|
168
|
+
**最初のタスク**: Test Strategyに従ってテストを作成(Red状態)
|
|
169
|
+
|
|
170
|
+
テスト作成の順序:
|
|
171
|
+
|
|
172
|
+
1. **Unit testが必要** → Unit testを作成
|
|
173
|
+
2. **Integration testが必要** → Integration testを作成
|
|
174
|
+
3. **E2E testが必要** → E2E testを作成
|
|
175
|
+
|
|
176
|
+
実装の順序:
|
|
177
|
+
|
|
178
|
+
4. **Unit testに対応する実装**を作成
|
|
179
|
+
5. **Integration testに対応する実装**を作成
|
|
180
|
+
6. **E2E testに対応する実装**を作成
|
|
181
|
+
|
|
182
|
+
## チェックリスト
|
|
183
|
+
|
|
184
|
+
### PLANドキュメント作成時
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
□ 開発者に実装スコープを確認した
|
|
188
|
+
□ REQUIREMENTS.md と TECH_DESIGN.md を確認した
|
|
189
|
+
□ 実装スコープを明記した
|
|
190
|
+
□ ファイル構成を記載した(新規/既存修正/既存維持を区別)
|
|
191
|
+
□ テスト作成タスクを優先的に配置した(Unit → Integration → E2E)
|
|
192
|
+
□ 実装タスクを具体的に記載した
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### セッション終了時
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
□ 完了したタスクにチェックを入れた
|
|
199
|
+
□ 実装時の注意事項を記載した
|
|
200
|
+
□ 未完了タスクがある場合、次回セッションへの引き継ぎ事項を備考に記載した
|
|
201
|
+
□ 発生した課題や決定事項を備考に記載した
|
|
202
|
+
□ 既知の制限事項を記載した(必要な場合)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## When NOT to Use This Skill
|
|
206
|
+
|
|
207
|
+
以下の場合はこのスキルを使用しない:
|
|
208
|
+
|
|
209
|
+
- **単純なバグ修正**: タスク分解が不要な場合
|
|
210
|
+
- **ドキュメント修正のみ**: 実装を伴わない場合
|
|
211
|
+
- **即時対応が必要な緊急修正**: 計画よりも実行を優先する場合
|
|
212
|
+
|
|
213
|
+
## 参照ファイル
|
|
214
|
+
|
|
215
|
+
- [PLANドキュメントテンプレート](./templates/plan.md)
|
|
216
|
+
- [STDD開発ガイド](../../docs/spec-driven-development-guide.md)
|
|
217
|
+
- [Specドキュメント作成スキル](../documenting-specifications/SKILL.md)
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# PLANドキュメント テンプレート
|
|
2
|
+
|
|
3
|
+
**目的**: セッションごとの実装タスクを管理し、作業計画を明確化する
|
|
4
|
+
|
|
5
|
+
**配置**: `docs/<app>/<feature-path>/plans/[yyyy-mm-dd].md`
|
|
6
|
+
|
|
7
|
+
## テンプレート構造
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# PLAN: [機能名] - [日付]
|
|
11
|
+
|
|
12
|
+
## 実装スコープ
|
|
13
|
+
|
|
14
|
+
**対象**: REQUIREMENTS.md / TECH_DESIGN.md のどの範囲を実装するか
|
|
15
|
+
|
|
16
|
+
- [ ] P0: Critical Paths(全て / 一部を指定)
|
|
17
|
+
- [ ] P1: Important(全て / 一部を指定)
|
|
18
|
+
- [ ] P2: Nice to Have(全て / 一部を指定)
|
|
19
|
+
|
|
20
|
+
**除外**: 今回のセッションでは実装しないもの
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## タスクリスト
|
|
25
|
+
|
|
26
|
+
### 1. Specドキュメント更新(既存機能の場合)
|
|
27
|
+
|
|
28
|
+
- [ ] REQUIREMENTS.md の更新
|
|
29
|
+
- [ ] TECH_DESIGN.md の更新
|
|
30
|
+
|
|
31
|
+
### 2. テスト作成(Red状態)
|
|
32
|
+
|
|
33
|
+
**Unit Test**:
|
|
34
|
+
- [ ] `lib/validation/<schema>/index.test.ts` - バリデーションテスト(N件)
|
|
35
|
+
|
|
36
|
+
**Integration Test**:
|
|
37
|
+
- [ ] `components/<feature>/<Component>/index.test.tsx` - コンポーネントテスト(N件)
|
|
38
|
+
|
|
39
|
+
**E2E Test(P0のみ)**:
|
|
40
|
+
- [ ] `e2e/tests/<app>/<feature>.spec.ts` - E2Eテスト(N件)
|
|
41
|
+
|
|
42
|
+
### 3. 実装(Green状態)
|
|
43
|
+
|
|
44
|
+
**Unit testに対応する実装**:
|
|
45
|
+
- [ ] `lib/validation/<schema>/index.ts` - バリデーションスキーマ
|
|
46
|
+
|
|
47
|
+
**Integration testに対応する実装**:
|
|
48
|
+
- [ ] `actions/<feature>-actions/index.ts` - Server Actions
|
|
49
|
+
- [ ] `components/<feature>/<Component>/index.tsx` - コンポーネント
|
|
50
|
+
|
|
51
|
+
**E2E testに対応する実装**:
|
|
52
|
+
- [ ] `app/<feature>/page.tsx` - ページ
|
|
53
|
+
|
|
54
|
+
### 4. テスト実行・検証
|
|
55
|
+
|
|
56
|
+
- [ ] Unit test 通過確認
|
|
57
|
+
- [ ] Integration test 通過確認
|
|
58
|
+
- [ ] E2E test 通過確認
|
|
59
|
+
- [ ] `commands.typecheck`(`.stdd.config.yml`)型チェック通過
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## ファイル構成
|
|
64
|
+
|
|
65
|
+
今回のセッションで作成・変更するファイルの一覧。
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
<app>/
|
|
69
|
+
├── app/
|
|
70
|
+
│ └── <feature>/
|
|
71
|
+
│ └── page.tsx # ページコンポーネント(新規/既存修正)
|
|
72
|
+
├── components/
|
|
73
|
+
│ └── <feature>/
|
|
74
|
+
│ ├── <Component>/
|
|
75
|
+
│ │ ├── index.tsx # コンポーネント(新規/既存修正)
|
|
76
|
+
│ │ └── index.test.tsx # Integration test
|
|
77
|
+
├── lib/
|
|
78
|
+
│ └── validation/
|
|
79
|
+
│ └── <schema>/
|
|
80
|
+
│ ├── index.ts # Zodバリデーションスキーマ
|
|
81
|
+
│ └── index.test.ts # Unit test
|
|
82
|
+
├── actions/
|
|
83
|
+
│ └── <feature>-actions/
|
|
84
|
+
│ ├── index.ts # Server Actions
|
|
85
|
+
│ └── index.test.ts # Server Actions テスト
|
|
86
|
+
└── domain/
|
|
87
|
+
├── models/
|
|
88
|
+
│ └── <entity>.ts # Entity定義
|
|
89
|
+
├── repository/
|
|
90
|
+
│ └── <entity>.ts # Repository
|
|
91
|
+
└── services/
|
|
92
|
+
└── <entity>Service.ts # Service
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**凡例**:
|
|
96
|
+
- `(新規)`: 新規作成するファイル
|
|
97
|
+
- `(既存修正)`: 既存ファイルを修正
|
|
98
|
+
- `(既存維持)`: 変更なし(参照のみ)
|
|
99
|
+
|
|
100
|
+
### 実装詳細
|
|
101
|
+
|
|
102
|
+
各ファイルの実装詳細を記載。
|
|
103
|
+
|
|
104
|
+
- **ページコンポーネント**: サーバーコンポーネント/クライアントコンポーネントの選択理由
|
|
105
|
+
- **Server Actions**: 処理フローの概要
|
|
106
|
+
- **バリデーション**: 主要なバリデーションルール
|
|
107
|
+
- **Domain層**: Entity/Repository/Serviceの役割分担
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 実装時の注意事項
|
|
112
|
+
|
|
113
|
+
セッション中に把握した実装上の注意点を記録。
|
|
114
|
+
|
|
115
|
+
### 認証・セッション
|
|
116
|
+
|
|
117
|
+
- (例)`/set-password`ページはSupabase認証後のリダイレクト時のみ機能
|
|
118
|
+
- (例)セッションはリロードやブラウザ再起動後には維持されない
|
|
119
|
+
|
|
120
|
+
### エラーハンドリング
|
|
121
|
+
|
|
122
|
+
- (例)エラー表示: 「認証エラー」タイトルと具体的なメッセージ
|
|
123
|
+
- (例)ユーザー対応: フローを最初からやり直す導線を提供
|
|
124
|
+
|
|
125
|
+
### 外部サービス連携
|
|
126
|
+
|
|
127
|
+
- (例)Resendを使用したメール送信
|
|
128
|
+
- (例)Supabase Authのトークン検証フロー
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 備考
|
|
133
|
+
|
|
134
|
+
セッション中に発生した課題や決定事項を記録。
|
|
135
|
+
|
|
136
|
+
- (例)XXの実装方針についてYYに変更
|
|
137
|
+
- (例)次回セッションへの引き継ぎ事項
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 既知の制限事項
|
|
142
|
+
|
|
143
|
+
現時点での制限や、Out of Scopeの項目。
|
|
144
|
+
|
|
145
|
+
- (例)パスワードリセット: 未実装(Out of Scope)
|
|
146
|
+
- (例)セッション無効化: JWT戦略のため即座の無効化が不可(最大24時間)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 重要なポイント
|
|
150
|
+
|
|
151
|
+
### ファイル構成セクションについて
|
|
152
|
+
|
|
153
|
+
**目的**: TECH_DESIGN.mdの「Implementation Notes」に記載されていた内容をPLANドキュメントに移動
|
|
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
|
+
- REQUIREMENTS.mdの「Out of Scope」と重複する場合は、REQUIREMENTS.mdを参照する形でも可
|
|
182
|
+
- セッション中に発見された新たな制限は、ここに記録後、必要に応じてREQUIREMENTS.mdに反映
|
|
@@ -0,0 +1,300 @@
|
|
|
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.md と TECH_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` §3.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
|
+
```
|