yodogawa 1.0.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/.windsurf/templates/documentation-rules.md +143 -0
- package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
- package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
- package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
- package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
- package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
- package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
- package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
- package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
- package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
- package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
- package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
- package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
- package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
- package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
- package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
- package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
- package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
- package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
- package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
- package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
- package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
- package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
- package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
- package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
- package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
- package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
- package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
- package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
- package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
- package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
- package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
- package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
- package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
- package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
- package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
- package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
- package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
- package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
- package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
- package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
- package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
- package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
- package/.windsurf/workflows/x-CI-Setup.md +641 -0
- package/.windsurf/workflows/x-Code-Refactor.md +71 -0
- package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
- package/.windsurf/workflows/x-Component-Create.md +359 -0
- package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
- package/.windsurf/workflows/x-Database-Seed.md +300 -0
- package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
- package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
- package/.windsurf/workflows/x-Logging-Add.md +682 -0
- package/.windsurf/workflows/x-Migration-Create.md +354 -0
- package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
- package/.windsurf/workflows/x-Repository-Push.md +375 -0
- package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
- package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
- package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
- package/README.md +280 -0
- package/bin/cli.js +74 -0
- package/package.json +28 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# 実装タスクリスト
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
このドキュメントについて:
|
|
5
|
+
- 格納場所: docs/tasks/task000001-{スラッグ}/c-implementation.md
|
|
6
|
+
- 作成方法: /b-003-CreateTaskImplementation ワークフローで作成
|
|
7
|
+
- 実行方法: /c-001-ImplementTask ワークフローで各ステップを実行
|
|
8
|
+
- 前提条件: a-definition.md と b-research.md が作成済みであること
|
|
9
|
+
- 関連ドキュメント:
|
|
10
|
+
- a-definition.md (タスク定義ドキュメント)
|
|
11
|
+
- b-research.md (リサーチドキュメント)
|
|
12
|
+
|
|
13
|
+
このドキュメントの目的:
|
|
14
|
+
- 実装作業を段階的に分割して管理
|
|
15
|
+
- 進捗の可視化とチーム共有
|
|
16
|
+
- 各ステップの成果物を明確化
|
|
17
|
+
- 実装漏れの防止
|
|
18
|
+
|
|
19
|
+
更新タイミング:
|
|
20
|
+
- 実装開始前にフェーズ分割を計画
|
|
21
|
+
- 各ステップ完了時にチェック(/c-001-ImplementTask が自動更新)
|
|
22
|
+
- 新たな作業が発覚した際に追加
|
|
23
|
+
- レビュー指摘事項を反映
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## フェーズ 1: [フェーズ名]
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
フェーズの分け方:
|
|
32
|
+
- 機能単位で分割(例: フロントエンド → バックエンド → 統合)
|
|
33
|
+
- 依存関係で分割(例: データモデル → API → UI)
|
|
34
|
+
- リスクで分割(例: 検証 → 本実装 → 最適化)
|
|
35
|
+
|
|
36
|
+
ベストプラクティス:
|
|
37
|
+
- 1フェーズは 1-3 日以内で完了できる粒度
|
|
38
|
+
- フェーズごとに動作確認可能な状態にする
|
|
39
|
+
- 各フェーズで小さくコミット・PR を作成(レビュー負荷軽減)
|
|
40
|
+
-->
|
|
41
|
+
|
|
42
|
+
**目的:** <!-- 例: データモデルと API エンドポイントの実装 -->
|
|
43
|
+
|
|
44
|
+
**完了条件:** <!-- 例: API が期待通りのレスポンスを返し、ユニットテストが全て通る -->
|
|
45
|
+
|
|
46
|
+
### ステップ
|
|
47
|
+
|
|
48
|
+
<!--
|
|
49
|
+
ステップの粒度:
|
|
50
|
+
- 1ステップは 1-3 時間程度で完了できる作業
|
|
51
|
+
- コミット単位で分割すると管理しやすい
|
|
52
|
+
- 成果物が明確であること(ファイル、機能、テスト)
|
|
53
|
+
|
|
54
|
+
記載のポイント:
|
|
55
|
+
- 具体的なファイル名やコンポーネント名を含める
|
|
56
|
+
- 実装の詳細にはアルゴリズムや技術的な注意点を記載
|
|
57
|
+
- 依存関係があるステップは順序を意識
|
|
58
|
+
-->
|
|
59
|
+
|
|
60
|
+
- [ ] **ステップ 1:** データベーススキーマの定義
|
|
61
|
+
- **成果物:** `migrations/001_create_users_table.sql`
|
|
62
|
+
- **詳細:** User テーブルに `email_verified`, `verification_token`, `token_expires_at` を追加。インデックスは `verification_token` に作成
|
|
63
|
+
|
|
64
|
+
- [ ] **ステップ 2:** TypeScript 型定義の追加
|
|
65
|
+
- **成果物:** `src/types/User.ts`
|
|
66
|
+
- **詳細:** `User` インターフェースに新しいフィールドを追加。Zod スキーマも同時に定義
|
|
67
|
+
|
|
68
|
+
- [ ] **ステップ 3:** メール送信 API エンドポイントの実装
|
|
69
|
+
- **成果物:** `src/api/auth/send-verification.ts`
|
|
70
|
+
- **詳細:** トークン生成(UUID v4)、有効期限 24 時間、SendGrid API 呼び出し。エラーハンドリング実装
|
|
71
|
+
|
|
72
|
+
- [ ] **ステップ 4:** メール認証 API エンドポイントの実装
|
|
73
|
+
- **成果物:** `src/api/auth/verify-email.ts`
|
|
74
|
+
- **詳細:** トークン検証、有効期限チェック、ユーザーステータス更新。無効トークンは 400 エラー
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## フェーズ 2: [フェーズ名]
|
|
79
|
+
|
|
80
|
+
**目的:** <!-- 例: フロントエンド UI の実装とユーザーフロー統合 -->
|
|
81
|
+
|
|
82
|
+
**完了条件:** <!-- 例: ユーザー登録から認証完了までの一連の流れが動作し、E2E テストが通る -->
|
|
83
|
+
|
|
84
|
+
### ステップ
|
|
85
|
+
|
|
86
|
+
- [ ] **ステップ 1:** メール認証ページの作成
|
|
87
|
+
- **成果物:** `src/pages/EmailVerificationPage.tsx`
|
|
88
|
+
- **詳細:** URL パラメータからトークンを取得、API 呼び出し、成功/失敗メッセージ表示
|
|
89
|
+
|
|
90
|
+
- [ ] **ステップ 2:** ユーザー登録フォームにメール送信処理を追加
|
|
91
|
+
- **成果物:** `src/features/auth/RegisterForm.tsx` を更新
|
|
92
|
+
- **詳細:** 登録成功後にメール送信 API を呼び出し、「確認メールを送信しました」メッセージを表示
|
|
93
|
+
|
|
94
|
+
- [ ] **ステップ 3:** 認証状態のガード実装
|
|
95
|
+
- **成果物:** `src/middleware/requireEmailVerified.ts`
|
|
96
|
+
- **詳細:** 未認証ユーザーは特定ページにアクセス不可。リダイレクト処理を実装
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## フェーズ 3: テスト・ドキュメント
|
|
101
|
+
|
|
102
|
+
<!--
|
|
103
|
+
テストフェーズの重要性:
|
|
104
|
+
- 実装と同時にテストを書くことでバグを早期発見
|
|
105
|
+
- テストコードは仕様書の役割も果たす
|
|
106
|
+
- リグレッション防止(今後の変更で既存機能が壊れない)
|
|
107
|
+
|
|
108
|
+
記載すべきテスト:
|
|
109
|
+
- ユニットテスト(関数、コンポーネント単位)
|
|
110
|
+
- 統合テスト(API、データベース連携)
|
|
111
|
+
- E2E テスト(ユーザーフロー全体)
|
|
112
|
+
- エッジケーステスト(異常系、境界値)
|
|
113
|
+
-->
|
|
114
|
+
|
|
115
|
+
**目的:** <!-- 例: テストコード作成とドキュメント整備 -->
|
|
116
|
+
|
|
117
|
+
**完了条件:** <!-- 例: テストカバレッジ 80% 以上、README にセットアップ手順を記載 -->
|
|
118
|
+
|
|
119
|
+
### ステップ
|
|
120
|
+
|
|
121
|
+
- [ ] **ステップ 1:** ユニットテストの作成
|
|
122
|
+
- **成果物:** `src/api/auth/send-verification.test.ts`, `verify-email.test.ts`
|
|
123
|
+
- **詳細:** トークン生成、有効期限検証、エラーハンドリングのテスト。モックを使用
|
|
124
|
+
|
|
125
|
+
- [ ] **ステップ 2:** 統合テストの作成
|
|
126
|
+
- **成果物:** `tests/integration/email-verification.test.ts`
|
|
127
|
+
- **詳細:** API エンドポイントの実際の動作をテスト。テストデータベース使用
|
|
128
|
+
|
|
129
|
+
- [ ] **ステップ 3:** E2E テストの作成
|
|
130
|
+
- **成果物:** `tests/e2e/user-registration.spec.ts`
|
|
131
|
+
- **詳細:** Playwright でユーザー登録→メール確認→ログインまでの流れをテスト
|
|
132
|
+
|
|
133
|
+
- [ ] **ステップ 4:** ドキュメント更新
|
|
134
|
+
- **成果物:** `README.md`, `docs/tasks/task000001-{スラッグ}/a-definition.md`
|
|
135
|
+
- **詳細:** セットアップ手順、環境変数設定、API 仕様を記載
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 受け入れ基準
|
|
140
|
+
|
|
141
|
+
<!--
|
|
142
|
+
受け入れ基準の記載ポイント:
|
|
143
|
+
- 機能が正しく動作すること(正常系)
|
|
144
|
+
- エラーハンドリングが適切に実装されていること(異常系)
|
|
145
|
+
- エッジケースが処理されること(境界値、特殊な入力)
|
|
146
|
+
- パフォーマンス要件を満たすこと(必要に応じて)
|
|
147
|
+
- セキュリティ要件を満たすこと(XSS, CSRF, SQL Injection など)
|
|
148
|
+
- ブラウザ互換性(必要に応じて)
|
|
149
|
+
- テストが全て通ること
|
|
150
|
+
- ドキュメントが更新されていること
|
|
151
|
+
|
|
152
|
+
各フェーズの完了を判断するための具体的な基準を記載します。
|
|
153
|
+
全ての基準を満たした時点でタスク完了とみなされます。
|
|
154
|
+
-->
|
|
155
|
+
|
|
156
|
+
### フェーズ 1 の受け入れ基準
|
|
157
|
+
- [ ] データベースマイグレーションが成功する
|
|
158
|
+
- [ ] 型定義が正しく適用される(TypeScript コンパイルエラーなし)
|
|
159
|
+
- [ ] メール送信 API がトークンを生成し、メールを送信する
|
|
160
|
+
- [ ] 無効なトークンでアクセスした場合、エラーが返る
|
|
161
|
+
- [ ] トークンの有効期限切れが正しく検出される
|
|
162
|
+
|
|
163
|
+
### フェーズ 2 の受け入れ基準
|
|
164
|
+
- [ ] メール認証ページが正しく表示される
|
|
165
|
+
- [ ] 認証成功時に成功メッセージが表示される
|
|
166
|
+
- [ ] 認証失敗時にエラーメッセージが表示される
|
|
167
|
+
- [ ] 未認証ユーザーは保護されたページにアクセスできない
|
|
168
|
+
- [ ] 認証済みユーザーは全ての機能にアクセスできる
|
|
169
|
+
|
|
170
|
+
### フェーズ 3 の受け入れ基準
|
|
171
|
+
- [ ] 全てのユニットテストが通る
|
|
172
|
+
- [ ] 全ての統合テストが通る
|
|
173
|
+
- [ ] E2E テストが通る(CI 環境でも実行)
|
|
174
|
+
- [ ] テストカバレッジが 80% 以上
|
|
175
|
+
- [ ] ドキュメントに記載された手順で環境構築できる
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## メモ
|
|
180
|
+
|
|
181
|
+
<!--
|
|
182
|
+
実装全体に関する補足情報
|
|
183
|
+
|
|
184
|
+
記載すべき内容:
|
|
185
|
+
- 実装中に気づいた技術的な課題
|
|
186
|
+
- リファクタリングが必要な箇所
|
|
187
|
+
- パフォーマンス最適化の余地
|
|
188
|
+
- セキュリティ上の注意点
|
|
189
|
+
- 今後の拡張予定
|
|
190
|
+
- チームメンバーへの引き継ぎ事項
|
|
191
|
+
|
|
192
|
+
例:
|
|
193
|
+
- メール送信は現在同期処理だが、将来的にはジョブキューに移行予定
|
|
194
|
+
- トークンの有効期限は現在 24 時間だが、設定ファイルで変更可能にする
|
|
195
|
+
- SendGrid の API キーは環境変数で管理(.env.example に記載)
|
|
196
|
+
- セキュリティレビュー完了(2025-01-15、レビュアー: @john)
|
|
197
|
+
-->
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: プロジェクトのドキュメントディレクトリ構造を作成し、README で構成を説明する軽量セットアップワークフロー
|
|
3
|
+
auto_execution_mode: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SetupDocStructure (a-001)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- プロジェクトルートに標準化されたドキュメントディレクトリ構造を作成する。
|
|
13
|
+
- `docs/README.md` を作成し、ドキュメント構成と更新方針を明文化する。
|
|
14
|
+
|
|
15
|
+
## 前提
|
|
16
|
+
|
|
17
|
+
- プロジェクトのルートディレクトリへの書き込み権限があること。
|
|
18
|
+
- `docs/` ディレクトリが存在しない、または既存の構造を拡張したいこと。
|
|
19
|
+
|
|
20
|
+
## 手順
|
|
21
|
+
|
|
22
|
+
### 1. 現在の状態確認
|
|
23
|
+
|
|
24
|
+
- プロジェクトルートで `docs/` ディレクトリの存在を確認する:
|
|
25
|
+
```bash
|
|
26
|
+
ls -la docs/ 2>/dev/null || echo "docs/ ディレクトリは存在しません"
|
|
27
|
+
```
|
|
28
|
+
- 既に `docs/` が存在する場合は、ユーザーに確認する:
|
|
29
|
+
- 「既に `docs/` ディレクトリが存在します。既存の構造を保持したまま、不足しているディレクトリを追加しますか?」
|
|
30
|
+
- ユーザーが「はい」と回答した場合のみ続行する。
|
|
31
|
+
|
|
32
|
+
### 2. ディレクトリ構造の作成
|
|
33
|
+
|
|
34
|
+
- 以下のディレクトリ構造を作成する:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
docs/
|
|
38
|
+
├── project/
|
|
39
|
+
│ ├── 01-requirements/ # 要件定義
|
|
40
|
+
│ ├── 02-behavior/ # 振る舞い定義
|
|
41
|
+
│ ├── 03-domain/ # ドメインモデル
|
|
42
|
+
│ └── 04-design/ # 設計
|
|
43
|
+
└── tasks/ # 個別タスク
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- `mkdir -p` コマンドで一括作成:
|
|
47
|
+
```bash
|
|
48
|
+
mkdir -p docs/project/01-requirements docs/project/02-behavior docs/project/03-domain docs/project/04-design docs/tasks
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
- 作成結果を確認:
|
|
52
|
+
```bash
|
|
53
|
+
find docs/ -type d | sort
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. docs/README.md の作成
|
|
57
|
+
|
|
58
|
+
- `docs/README.md` が既に存在する場合は、ユーザーに確認する:
|
|
59
|
+
- 「`docs/README.md` が既に存在します。上書きしますか、それとも既存のファイルを保持しますか?」
|
|
60
|
+
|
|
61
|
+
- 以下の内容で `docs/README.md` を作成(または上書き):
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
# プロジェクトドキュメント
|
|
65
|
+
|
|
66
|
+
このディレクトリには、プロジェクト全体のドキュメントと個別タスクのドキュメントを管理します。
|
|
67
|
+
|
|
68
|
+
## 構成
|
|
69
|
+
|
|
70
|
+
### project/
|
|
71
|
+
プロジェクト全体のドキュメント。要件定義、設計、アーキテクチャなど、プロジェクトスコープ全体に関わる情報を記載します。
|
|
72
|
+
|
|
73
|
+
- **01-requirements/**: 要件定義(システム概要、機能要件、非機能要件、ユーザーストーリーなど)
|
|
74
|
+
- **02-behavior/**: 振る舞い定義(シナリオ、ユースケース、ユーザージャーニーなど)
|
|
75
|
+
- **03-domain/**: ドメインモデル(エンティティ、用語集など)
|
|
76
|
+
- **04-design/**: 設計(アーキテクチャ、データモデル、API仕様など)
|
|
77
|
+
|
|
78
|
+
### tasks/
|
|
79
|
+
個別タスクのドキュメント。Issue やチケット単位で作成します。
|
|
80
|
+
|
|
81
|
+
## 更新方針
|
|
82
|
+
|
|
83
|
+
### プロジェクト全体のドキュメント (project/)
|
|
84
|
+
- プロジェクトのスコープ全体に影響する情報を記載
|
|
85
|
+
- チーム全体で共有すべき要件・設計・アーキテクチャを管理
|
|
86
|
+
- 更新時は関係者にレビューを依頼
|
|
87
|
+
|
|
88
|
+
### 個別タスクのドキュメント (tasks/)
|
|
89
|
+
- 特定の Issue やチケットに紐づく情報を記載
|
|
90
|
+
- タスク単位で作成・完了・アーカイブ
|
|
91
|
+
- 完了後は参照資料として保持、または削除
|
|
92
|
+
|
|
93
|
+
## ドキュメント作成ガイドライン
|
|
94
|
+
|
|
95
|
+
- **具体的**: 抽象的な表現を避け、数値・期限・制約を明確に記載
|
|
96
|
+
- **測定可能**: 成功基準やパフォーマンス目標を定量化
|
|
97
|
+
- **最新**: 変更があれば速やかに更新し、古い情報を残さない
|
|
98
|
+
- **簡潔**: 必要最低限の情報に絞り、詳細はコードやリンク先に委ねる
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 4. 作成結果の確認
|
|
102
|
+
|
|
103
|
+
- ディレクトリ構造とREADMEが正しく作成されたか確認:
|
|
104
|
+
```bash
|
|
105
|
+
ls -R docs/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- ユーザーに作成結果を報告:
|
|
109
|
+
```
|
|
110
|
+
✅ ドキュメントディレクトリ構造を作成しました:
|
|
111
|
+
|
|
112
|
+
docs/
|
|
113
|
+
├── README.md (作成済み - ドキュメント構成の説明)
|
|
114
|
+
├── project/
|
|
115
|
+
│ ├── 01-requirements/
|
|
116
|
+
│ ├── 02-behavior/
|
|
117
|
+
│ ├── 03-domain/
|
|
118
|
+
│ └── 04-design/
|
|
119
|
+
└── tasks/
|
|
120
|
+
|
|
121
|
+
次のステップ:
|
|
122
|
+
- ドキュメントの作成を開始してください。
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 5. Git への追加(オプション)
|
|
126
|
+
|
|
127
|
+
- ユーザーに確認:「作成したディレクトリ構造を Git に追加しますか?」
|
|
128
|
+
- 「はい」の場合、以下を実行:
|
|
129
|
+
```bash
|
|
130
|
+
git add docs/
|
|
131
|
+
git status
|
|
132
|
+
```
|
|
133
|
+
- Git status の結果を表示し、コミットメッセージの提案をする:
|
|
134
|
+
```
|
|
135
|
+
推奨コミットメッセージ:
|
|
136
|
+
ドキュメント構造の初期化
|
|
137
|
+
|
|
138
|
+
- 標準的な構造を持つ docs/ ディレクトリを追加
|
|
139
|
+
- ドキュメント構成を説明する docs/README.md を追加
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 6. 完了条件の確認
|
|
143
|
+
|
|
144
|
+
- 以下の完了条件を満たしているか、チェックリストで確認してください:
|
|
145
|
+
- [ ] `docs/` ディレクトリが作成されている
|
|
146
|
+
- [ ] `docs/project/` 配下に `01-requirements/`, `02-behavior/`, `03-domain/`, `04-design/` ディレクトリが存在する
|
|
147
|
+
- [ ] `docs/tasks/` ディレクトリが存在する
|
|
148
|
+
- [ ] `docs/README.md` が作成されている
|
|
149
|
+
|
|
150
|
+
## 完了条件
|
|
151
|
+
|
|
152
|
+
- プロジェクトルートに `docs/` ディレクトリが作成されている。
|
|
153
|
+
- `docs/project/` 配下に `01-requirements/`, `02-behavior/`, `03-domain/`, `04-design/` ディレクトリが存在する。
|
|
154
|
+
- `docs/tasks/` ディレクトリが存在する。
|
|
155
|
+
- `docs/README.md` が作成されている。
|
|
156
|
+
- ユーザーに作成結果が報告されている。
|
|
157
|
+
|
|
158
|
+
## エスカレーション
|
|
159
|
+
|
|
160
|
+
- 既存の `docs/` ディレクトリが存在し、重要なファイルが含まれている場合:
|
|
161
|
+
- 「既存のドキュメント構造が検出されました。上書きや削除のリスクがあるため、手動で確認してください。」と警告し、処理を中断する。
|
|
162
|
+
- ファイルシステムの権限エラーが発生した場合:
|
|
163
|
+
- 「ディレクトリの作成に失敗しました。書き込み権限を確認してください。」とユーザーに通知する。
|
|
164
|
+
- Git リポジトリでない場合に Git 追加を試みた場合:
|
|
165
|
+
- 「このディレクトリは Git リポジトリではありません。Git の初期化が必要な場合は `git init` を実行してください。」と案内する。
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: プロジェクトのシステム概要・機能要件・非機能要件・ユーザーストーリーを体系的にヒアリングし、詳細なドキュメントを作成するワークフロー
|
|
3
|
+
auto_execution_mode: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# InitializeProject (a-002)
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
- プロジェクトの目的・背景・機能要件を詳細にヒアリングし、具体的で実装可能なドキュメントを作成する。
|
|
11
|
+
- システム概要・実装済み機能・予定機能・非機能要件・ユーザーストーリーを網羅する。
|
|
12
|
+
- 抽象的・曖昧な表現を避け、ユーザーとの対話を通じて具体的な数値・期限・制約・優先度を明確化する。
|
|
13
|
+
- 後続の設計・実装フェーズで参照できる、チーム全体が理解できる要件定義書を整備する。
|
|
14
|
+
|
|
15
|
+
## 前提
|
|
16
|
+
|
|
17
|
+
- `docs/project/requirements/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) ワークフローを実行)。
|
|
18
|
+
- プロジェクトリポジトリの `docs/` ディレクトリに書き込み権限があること。
|
|
19
|
+
- ユーザーがプロジェクトの概要と主要な機能について基本的な情報を提供できること。
|
|
20
|
+
|
|
21
|
+
## 手順
|
|
22
|
+
|
|
23
|
+
### 1. ドキュメントディレクトリの確認
|
|
24
|
+
|
|
25
|
+
- `docs/project/requirements/` ディレクトリの存在を確認:
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/requirements/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- ディレクトリが存在しない場合:
|
|
31
|
+
- ユーザーに通知:「`docs/project/requirements/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してディレクトリ構造を作成してください。」
|
|
32
|
+
|
|
33
|
+
### 2. システム概要の作成
|
|
34
|
+
|
|
35
|
+
1. **テンプレートの準備**:
|
|
36
|
+
```bash
|
|
37
|
+
cp ".windsurf/templates/project/01-requirements/01-system-overview.md" "docs/project/requirements/01-system-overview.md"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
2. **ヒアリングと記入**:
|
|
41
|
+
以下の質問を行い、その回答で `docs/project/requirements/01-system-overview.md` を更新する。
|
|
42
|
+
|
|
43
|
+
#### 背景
|
|
44
|
+
- 「このシステムで解決しようとしている**具体的な問題や課題**は何ですか?」
|
|
45
|
+
- 「その問題はなぜ重要ですか?放置した場合のリスクは?」
|
|
46
|
+
- 「問題の影響を受けるステークホルダー(ユーザー、組織、チームなど)は誰ですか?」
|
|
47
|
+
- 「具体的な数値やデータ(例:作業時間、コスト、離脱率など)があれば教えてください。」
|
|
48
|
+
|
|
49
|
+
#### 目的
|
|
50
|
+
- 「このシステムが提供する**具体的な価値や解決策**は何ですか?」
|
|
51
|
+
- 「期待される成果や変化を、測定可能な形で表現できますか?(例:作業時間50%削減)」
|
|
52
|
+
- 「どのように問題を解決するか、具体的なメカニズムや仕組みを教えてください。」
|
|
53
|
+
|
|
54
|
+
### 3. 実装済み機能一覧の作成
|
|
55
|
+
|
|
56
|
+
1. **テンプレートの準備**:
|
|
57
|
+
```bash
|
|
58
|
+
cp ".windsurf/templates/project/01-requirements/02-features-implemented.md" "docs/project/requirements/02-features-implemented.md"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
2. **コードベースの調査と提案**:
|
|
62
|
+
- プロジェクト内のソースコードを簡易検索し、実装済みの兆候を探す。
|
|
63
|
+
```bash
|
|
64
|
+
# 主要なソースディレクトリの構造を確認(例)
|
|
65
|
+
find src app lib -maxdepth 2 -type d 2>/dev/null
|
|
66
|
+
# 特徴的なファイル名を検索
|
|
67
|
+
find . -type f -name "*Controller*" -o -name "*Service*" -o -name "*Component*" | head -n 20
|
|
68
|
+
```
|
|
69
|
+
- 検出されたディレクトリ名やファイル名から機能を推測し、ユーザーに提案する。
|
|
70
|
+
- 「`src/auth` ディレクトリが見つかりました。認証機能(ログイン、登録など)は実装済みですか?」
|
|
71
|
+
- 「`PaymentController` があります。決済機能は稼働していますか?」
|
|
72
|
+
|
|
73
|
+
3. **ヒアリングと記入**:
|
|
74
|
+
提案内容へのフィードバックを含め、以下の質問を行う。回答をテーブル形式で `docs/project/requirements/02-features-implemented.md` に記入する(該当なしの場合は「なし」と記載)。
|
|
75
|
+
|
|
76
|
+
- 「既に実装済みの機能はありますか?(提案した機能含む)ある場合、以下の情報を教えてください:」
|
|
77
|
+
- **Category 1**(大分類:ユーザー管理、コンテンツなど)
|
|
78
|
+
- **Category 2**(中分類:認証、プロフィールなど)
|
|
79
|
+
- **機能名**(ユーザー視点の名称)
|
|
80
|
+
- **説明**(何ができるか)
|
|
81
|
+
- **機能ID**(FN-XXX形式、連番)
|
|
82
|
+
|
|
83
|
+
### 4. 予定機能一覧の作成
|
|
84
|
+
|
|
85
|
+
1. **テンプレートの準備**:
|
|
86
|
+
```bash
|
|
87
|
+
cp ".windsurf/templates/project/01-requirements/03-features-planned.md" "docs/project/requirements/03-features-planned.md"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
2. **要件ギャップ分析と提案**:
|
|
91
|
+
- 「システム概要」で確認した目的・スコープと、「実装済み機能」の差分を分析する。
|
|
92
|
+
- 未実装と思われる主要機能をリストアップし、ユーザーに提案する。
|
|
93
|
+
- 「システム概要で『〇〇機能』への言及がありましたが、まだ実装されていないようです。これを予定機能に追加しますか?」
|
|
94
|
+
- 「現在の実装には『××』が含まれていますが、これに関連する『△△機能』は将来的に必要になりますか?」
|
|
95
|
+
|
|
96
|
+
3. **ヒアリングと記入**:
|
|
97
|
+
提案内容へのフィードバックを含め、以下の質問を行う。回答をテーブル形式で `docs/project/requirements/03-features-planned.md` に記入する。
|
|
98
|
+
|
|
99
|
+
- 「今後実装予定の機能をリストアップしてください(提案した機能含む)。各機能について以下を明確にします:」
|
|
100
|
+
- **Category 1**(大分類)
|
|
101
|
+
- **Category 2**(中分類)
|
|
102
|
+
- **機能名**(アイデア段階でも可)
|
|
103
|
+
- **説明**(目的や価値を中心に)
|
|
104
|
+
|
|
105
|
+
※テンプレートの方針に従い、**機能ID**や**優先度**はこの段階では確定させず、柔軟性を重視して記載しない。
|
|
106
|
+
|
|
107
|
+
### 5. 非機能要件一覧の作成
|
|
108
|
+
|
|
109
|
+
1. **テンプレートの準備**:
|
|
110
|
+
```bash
|
|
111
|
+
cp ".windsurf/templates/project/01-requirements/04-non-functional-requirements.md" "docs/project/requirements/04-non-functional-requirements.md"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
2. **必要性の確認と標準提案**:
|
|
115
|
+
- ユーザーに定義の必要性を確認する:
|
|
116
|
+
- 「現段階で非機能要件(パフォーマンス、セキュリティなど)を詳細に定義する必要がありますか?『標準的な設定』で仮置きして後で調整することも可能です。」
|
|
117
|
+
|
|
118
|
+
- 必要または仮置きの場合、一般的なベストプラクティスを提案する:
|
|
119
|
+
- 「Webアプリケーションの標準的な目標値として、以下を提案します。これで問題ないか確認してください:」
|
|
120
|
+
- **パフォーマンス**: ページ読み込み3秒以内、API応答500ms以内
|
|
121
|
+
- **セキュリティ**: HTTPS必須、パスワードはハッシュ化、基本認証/OAuth
|
|
122
|
+
- **可用性**: 日次バックアップ、稼働率99.5%(平日日中)
|
|
123
|
+
|
|
124
|
+
3. **ヒアリングと記入**:
|
|
125
|
+
提案内容への合意、または独自の要件がある場合、以下の観点で**定量的な目標**を確認し、回答で `docs/project/requirements/04-non-functional-requirements.md` の各テーブルを更新する。
|
|
126
|
+
|
|
127
|
+
#### パフォーマンス
|
|
128
|
+
- 「ページ読み込み時間の目標は?」
|
|
129
|
+
- 「APIレスポンス時間の目標は?」
|
|
130
|
+
- 「想定される同時接続ユーザー数、データ量は?」
|
|
131
|
+
|
|
132
|
+
#### セキュリティ
|
|
133
|
+
- 「認証方式、機密データの扱い、コンプライアンス要件は?」
|
|
134
|
+
|
|
135
|
+
#### 可用性・信頼性
|
|
136
|
+
- 「稼働率目標、許容ダウンタイム、バックアップ要件は?」
|
|
137
|
+
|
|
138
|
+
#### スケーラビリティ
|
|
139
|
+
- 「ユーザー数の成長予測、ピーク時のトラフィック想定は?」
|
|
140
|
+
|
|
141
|
+
#### ユーザビリティ・保守性
|
|
142
|
+
- 「アクセシビリティ、対応言語、デバイス、ブラウザは?」
|
|
143
|
+
- 「ログ・監視要件、デプロイ頻度は?」
|
|
144
|
+
|
|
145
|
+
### 6. ユーザーストーリーの作成
|
|
146
|
+
|
|
147
|
+
1. **テンプレートの準備**:
|
|
148
|
+
```bash
|
|
149
|
+
cp ".windsurf/templates/project/01-requirements/05-user-stories.md" "docs/project/requirements/05-user-stories.md"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
2. **分析と提案**:
|
|
153
|
+
- ここまで作成した「システム概要」「機能一覧(実装済み/予定)」を分析し、主要なユーザージャーニーを抽出する。
|
|
154
|
+
- ユーザーに代表的なストーリーを提案する:
|
|
155
|
+
- 「『〇〇機能』に基づき、以下のストーリーが考えられますが、いかがでしょうか?」
|
|
156
|
+
- 「[役割]として、[〇〇機能]を使いたい、なぜなら[価値]だから」
|
|
157
|
+
|
|
158
|
+
3. **ヒアリングと記入**:
|
|
159
|
+
提案内容へのフィードバックを含め、以下の質問を行う。回答をテーブル形式で `docs/project/requirements/05-user-stories.md` に記入する。
|
|
160
|
+
|
|
161
|
+
- 「他に主要なユーザージャーニーがあれば教えてください([役割]として、[目的]がしたい、なぜなら[理由])。」
|
|
162
|
+
- 各ストーリーの優先度、受け入れ基準を確認する。
|
|
163
|
+
|
|
164
|
+
### 7. 全体レビュー
|
|
165
|
+
|
|
166
|
+
- 作成した全てのドキュメントをユーザーに提示し、内容の正確性を確認する。
|
|
167
|
+
- 「記載内容に誤りや漏れはありませんか?」
|
|
168
|
+
- 「抽象的すぎる記述や、後で解釈が分かれそうな表現はありますか?」
|
|
169
|
+
- 「テンプレートのコメントや不要な例示は適切に処理(残す/削除)されていますか?」
|
|
170
|
+
|
|
171
|
+
### 8. 完了条件と構造の確認
|
|
172
|
+
|
|
173
|
+
- 以下の完了条件を満たしていて、且つドキュメントの構造が適切であることを確認します。
|
|
174
|
+
|
|
175
|
+
1. **ファイルの存在と構造確認**:
|
|
176
|
+
各ファイルが存在し、テンプレートの主要な構造(見出しやテーブル)が維持されているか検証する。
|
|
177
|
+
```bash
|
|
178
|
+
# 01-system-overview.md: 主要セクションの確認
|
|
179
|
+
grep "## 背景" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 背景"
|
|
180
|
+
grep "## 目的" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 目的"
|
|
181
|
+
|
|
182
|
+
# 02-features-implemented.md: テーブルヘッダーの確認
|
|
183
|
+
grep "| 機能ID | Category 1 |" docs/project/requirements/02-features-implemented.md && echo "OK" || echo "MISSING: Table Header"
|
|
184
|
+
|
|
185
|
+
# 03-features-planned.md: テーブルヘッダーの確認
|
|
186
|
+
grep "| Category 1 | Category 2 |" docs/project/requirements/03-features-planned.md && echo "OK" || echo "MISSING: Table Header"
|
|
187
|
+
|
|
188
|
+
# 04-non-functional-requirements.md: テーブルヘッダーの確認
|
|
189
|
+
grep "| カテゴリ | 要件 |" docs/project/requirements/04-non-functional-requirements.md && echo "OK" || echo "MISSING: Table Header"
|
|
190
|
+
|
|
191
|
+
# 05-user-stories.md: テーブルヘッダーの確認
|
|
192
|
+
grep "| ストーリーID | ストーリー |" docs/project/requirements/05-user-stories.md && echo "OK" || echo "MISSING: Table Header"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
2. **チェックリスト**:
|
|
196
|
+
- [ ] すべてのファイルが存在する
|
|
197
|
+
- [ ] 各ファイルがテンプレートの基本構造を維持していて、主要なセクションやテーブルが適切に記載されている
|
|
198
|
+
- [ ] プレースホルダーが適切な内容に置き換わっていいる
|
|
199
|
+
|
|
200
|
+
### 9. Git への追加(オプション)
|
|
201
|
+
|
|
202
|
+
- ユーザーに確認:「作成した要件定義ドキュメントを Git に追加しますか?」
|
|
203
|
+
- 「はい」の場合、以下を実行:
|
|
204
|
+
```bash
|
|
205
|
+
git add docs/project/requirements/
|
|
206
|
+
git status
|
|
207
|
+
```
|
|
208
|
+
- Git status の結果を表示し、コミットメッセージの提案をする:
|
|
209
|
+
```
|
|
210
|
+
推奨コミットメッセージ:
|
|
211
|
+
docs: 要件定義ドキュメントの作成
|
|
212
|
+
|
|
213
|
+
- システム概要、機能要件、非機能要件、ユーザーストーリーを追加
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 完了条件
|
|
217
|
+
|
|
218
|
+
- `docs/project/requirements/` 配下に一連の要件定義ドキュメントが作成されている。
|
|
219
|
+
- すべてのドキュメントで抽象的な表現が最小化され、具体的な数値・期限・制約が記載されている。
|
|
220
|
+
- ユーザーがドキュメント内容を確認し、承認またはフィードバックを提供している。
|
|
221
|
+
|
|
222
|
+
## エスカレーション
|
|
223
|
+
|
|
224
|
+
- ユーザーが重要な情報を提供できない場合:
|
|
225
|
+
- 「この情報は後続の設計・実装で必須です。確認できる担当者や資料はありますか?」と確認し、TODO として記録する。
|
|
226
|
+
- 競合する要件や矛盾が発見された場合:
|
|
227
|
+
- 「以下の要件が競合しています:[詳細]。優先順位や調整方針を確認させてください。」と報告する。
|
|
228
|
+
- 想定工数が非現実的に大きい場合:
|
|
229
|
+
- 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案する。
|