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.
Files changed (61) hide show
  1. package/.windsurf/templates/documentation-rules.md +143 -0
  2. package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
  3. package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
  4. package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
  5. package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
  6. package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
  7. package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
  8. package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
  9. package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
  10. package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
  11. package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
  12. package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
  13. package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
  14. package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
  15. package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
  16. package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
  17. package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
  18. package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
  19. package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
  20. package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
  21. package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
  22. package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
  23. package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
  24. package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
  25. package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
  26. package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
  27. package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
  28. package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
  29. package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
  30. package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
  31. package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
  32. package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
  33. package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
  34. package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
  35. package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
  36. package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
  37. package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
  38. package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
  39. package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
  40. package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
  41. package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
  42. package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
  43. package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
  44. package/.windsurf/workflows/x-CI-Setup.md +641 -0
  45. package/.windsurf/workflows/x-Code-Refactor.md +71 -0
  46. package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
  47. package/.windsurf/workflows/x-Component-Create.md +359 -0
  48. package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
  49. package/.windsurf/workflows/x-Database-Seed.md +300 -0
  50. package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
  51. package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
  52. package/.windsurf/workflows/x-Logging-Add.md +682 -0
  53. package/.windsurf/workflows/x-Migration-Create.md +354 -0
  54. package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
  55. package/.windsurf/workflows/x-Repository-Push.md +375 -0
  56. package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
  57. package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
  58. package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
  59. package/README.md +280 -0
  60. package/bin/cli.js +74 -0
  61. package/package.json +28 -0
@@ -0,0 +1,118 @@
1
+ ---
2
+ description: 技術スタックに基づいてプロジェクトのディレクトリ構造、アーキテクチャパターン、命名規則を定義するワークフロー
3
+ ---
4
+
5
+ # DefineRepositoryStructure (a-008)
6
+
7
+ ## 目的
8
+
9
+ - 決定された技術スタックに基づいて、最適なリポジトリ構造を定義する。
10
+ - アーキテクチャパターン(レイヤード、機能ベース、クリーンアーキテクチャなど)を選定する。
11
+ - ディレクトリの責務、命名規則、依存関係ルールを明確化する。
12
+
13
+ ## 前提
14
+
15
+ - `docs/project/design/01-tech-stack.md` が作成されていること(先に `DefineTechStack` (a-007) を実行)。
16
+ - `docs/project/domain/01-domain-model.md` が作成されていること(推奨)。
17
+ - `docs/project/design/` ディレクトリが存在すること。
18
+
19
+ ## 手順
20
+
21
+ ### 1. ドキュメントと前提条件の確認
22
+
23
+ - `docs/project/design/01-tech-stack.md` を読み込み、技術スタックを確認する。
24
+ ```bash
25
+ ls -la docs/project/design/01-tech-stack.md 2>/dev/null || echo "ファイルが存在しません"
26
+ ```
27
+ - 存在しない場合:ユーザーに通知し、`DefineTechStack` (a-007) を実行するよう促す。
28
+
29
+ ### 2. テンプレートの準備
30
+
31
+ - テンプレートをコピーして作業用ファイルを作成する:
32
+ ```bash
33
+ cp ".windsurf/templates/project/04-design/02-repository-structure.md" "docs/project/design/02-repository-structure.md"
34
+ ```
35
+
36
+ ### 3. アーキテクチャパターンの提案
37
+
38
+ - 技術スタックと要件に基づき、最適なアーキテクチャパターンを提案する。
39
+ - **レイヤードアーキテクチャ**: 一般的なバックエンド(NestJS, Django等)
40
+ - **機能ベース (Feature-based)**: フロントエンド、モジュラーモノリス
41
+ - **クリーンアーキテクチャ**: 複雑なドメインロジックを持つ場合
42
+ - **Atomic Design / FSD**: フロントエンド特化
43
+
44
+ - ユーザーに提示:
45
+ - 「以下のアーキテクチャパターンを推奨します:[パターン名]」
46
+ - 「理由:[技術スタックとの適合性、保守性など]」
47
+
48
+ ### 4. ディレクトリ構造の詳細定義
49
+
50
+ ユーザーからのフィードバックを受け、詳細を決定する。
51
+
52
+ #### 4.1 ディレクトリ構成
53
+ - ソースコードのルート(`src/` vs `app/`)
54
+ - テストコードの配置(`tests/` vs コロケーション)
55
+ - 機能モジュールの構成(`features/`, `components/`, `lib/` 等)
56
+
57
+ #### 4.2 命名規則とルール
58
+ - ファイル名(PascalCase, camelCase, kebab-case)
59
+ - 依存関係ルール(上位層から下位層への依存のみ許可など)
60
+ - コロケーション戦略(関連ファイルをまとめるか分離するか)
61
+
62
+ ### 5. ドキュメント作成
63
+
64
+ - `docs/project/design/02-repository-structure.md` に決定事項を記入する。
65
+ - **必須項目**:
66
+ - ディレクトリツリー図(`tree`形式)
67
+ - 各ディレクトリの役割説明
68
+ - 採用したアーキテクチャパターンと理由
69
+ - 命名規則と依存ルール
70
+
71
+ ### 6. 完了条件と構造の確認
72
+
73
+ - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
74
+
75
+ 1. **構造確認**:
76
+ ```bash
77
+ # ディレクトリ構造図の確認
78
+ grep "project-root/" docs/project/design/02-repository-structure.md && echo "OK" || echo "MISSING: Directory tree"
79
+ # アーキテクチャパターンセクションの確認
80
+ grep "## アーキテクチャパターン" docs/project/design/02-repository-structure.md && echo "OK" || echo "MISSING: Architecture section"
81
+ # 命名規則セクションの確認
82
+ grep "## 命名規則" docs/project/design/02-repository-structure.md && echo "OK" || echo "MISSING: Naming convention section"
83
+ ```
84
+
85
+ 2. **チェックリスト**:
86
+ - [ ] `docs/project/design/02-repository-structure.md` が作成されている
87
+ - [ ] ディレクトリツリーが技術スタックと整合している
88
+ - [ ] 各ディレクトリの責務が定義されている
89
+
90
+ ### 7. Git への追加(オプション)
91
+
92
+ - ユーザーに確認:「作成したリポジトリ構造ドキュメントを Git に追加しますか?」
93
+ - 「はい」の場合、以下を実行:
94
+ ```bash
95
+ git add docs/project/design/02-repository-structure.md
96
+ git status
97
+ ```
98
+ - 推奨コミットメッセージ:
99
+ ```
100
+ docs: リポジトリ構造とアーキテクチャ定義の作成
101
+
102
+ - ディレクトリ構成、命名規則、依存関係ルールを定義
103
+ - 採用アーキテクチャパターン: [パターン名]
104
+ ```
105
+
106
+ ## 完了条件
107
+
108
+ - `docs/project/design/02-repository-structure.md` が作成されている。
109
+ - プロジェクトのディレクトリ構造が明確に定義されている。
110
+ - チーム開発に必要なルール(命名、配置、依存)が文書化されている。
111
+ - ユーザーが内容を承認している。
112
+
113
+ ## エスカレーション
114
+
115
+ - 技術スタックと構造の不一致がある場合:
116
+ - 「選択されたフレームワーク([名前])の標準構成と異なります。標準に従うか、独自の構造を採用するか確認しましょう。」と提案する。
117
+ - 構造が過度に複雑な場合:
118
+ - 「初期段階では複雑すぎる可能性があります。まずはフラットな構成から始め、必要に応じて分割することを推奨します。」と提案する。
@@ -0,0 +1,121 @@
1
+ ---
2
+ description: ユーザーストーリーとシナリオから画面一覧を抽出し、画面遷移フローとレスポンシブデザインポリシーを定義するワークフロー
3
+ ---
4
+
5
+ # DefineScreenDesign (a-009)
6
+
7
+ ## 目的
8
+
9
+ - ユーザーストーリーとシナリオを基に、必要な画面を網羅的に抽出する。
10
+ - 各画面の役割、アクセス権限、考慮すべき状態(Empty State含む)を明確化する。
11
+ - 画面遷移フローをMermaid図で可視化し、ユーザーの導線を明確にする。
12
+ - レスポンシブデザインポリシー(ブレークポイント、デバイス対応方針)を定義する。
13
+
14
+ ## 前提
15
+
16
+ - `docs/project/requirements/05-user-stories.md` が作成されていること。
17
+ - `docs/project/behavior/01-scenarios.md` が作成されていること。
18
+ - `docs/project/design/` ディレクトリが存在すること。
19
+
20
+ ## 手順
21
+
22
+ ### 1. ドキュメントと前提条件の確認
23
+
24
+ - 必要なドキュメントを読み込む:
25
+ - `docs/project/requirements/05-user-stories.md`
26
+ - `docs/project/behavior/01-scenarios.md`
27
+ - `docs/project/design/01-tech-stack.md` (存在する場合)
28
+
29
+ - ドキュメントが不足している場合、対応するワークフローの実行を促す。
30
+
31
+ ### 2. テンプレートの準備
32
+
33
+ - テンプレートをコピーして作業用ファイルを作成する:
34
+ ```bash
35
+ cp ".windsurf/templates/project/04-design/03-screen-design.md" "docs/project/design/03-screen-design.md"
36
+ ```
37
+
38
+ ### 3. 画面の抽出と提案
39
+
40
+ - シナリオのGiven/When/Thenステップから、必要な画面を抽出する。
41
+ - 標準的な画面(ログイン、404エラー、設定など)を追加提案する。
42
+ - **画面リスト案を提示**:
43
+ - 「以下の画面が必要と考えられます:」
44
+ - 「[画面名] (役割: [説明])」
45
+
46
+ ### 4. 詳細定義と遷移フロー
47
+
48
+ ユーザーからのフィードバックを受け、以下を定義する。
49
+
50
+ #### 4.1 各画面の詳細
51
+ - 画面ID、名称、URLパス
52
+ - アクセス権限(誰が見れるか)
53
+ - **重要な状態**: 初回訪問(Empty State)、ロード中、エラー時など
54
+
55
+ #### 4.2 画面遷移フロー
56
+ - 主要なユーザーフロー(認証、メイン機能、エラー)をMermaid図で表現する。
57
+ - デッドエンド(戻れない画面)がないか確認する。
58
+
59
+ ### 5. レスポンシブデザインポリシー
60
+
61
+ - 技術スタック(Tailwind等)に合わせたブレークポイントを定義する。
62
+ - モバイルファーストかデスクトップファーストか、方針を決定する。
63
+ - デバイスごとのレイアウトパターン(ハンバーガーメニュー、ドロワー等)を定義する。
64
+
65
+ ### 6. ドキュメント作成
66
+
67
+ - `docs/project/design/03-screen-design.md` に決定事項を記入する。
68
+ - **必須項目**:
69
+ - 画面一覧テーブル
70
+ - 画面遷移図 (Mermaid)
71
+ - レスポンシブデザインポリシー
72
+
73
+ ### 7. 完了条件と構造の確認
74
+
75
+ - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
76
+
77
+ 1. **構造確認**:
78
+ ```bash
79
+ # 画面一覧セクションの確認
80
+ grep "## 画面一覧" docs/project/design/03-screen-design.md && echo "OK" || echo "MISSING: Screen list"
81
+ # 画面遷移図の確認
82
+ grep "\`\`\`mermaid" docs/project/design/03-screen-design.md && echo "OK" || echo "MISSING: Flowchart"
83
+ # レスポンシブポリシーの確認
84
+ grep "## レスポンシブデザインポリシー" docs/project/design/03-screen-design.md && echo "OK" || echo "MISSING: Responsive policy"
85
+ ```
86
+
87
+ 2. **チェックリスト**:
88
+ - [ ] `docs/project/design/03-screen-design.md` が作成されている
89
+ - [ ] 主要な画面がすべて網羅されている
90
+ - [ ] Empty Stateについて考慮されている
91
+
92
+ ### 8. Git への追加(オプション)
93
+
94
+ - ユーザーに確認:「作成した画面設計ドキュメントを Git に追加しますか?」
95
+ - 「はい」の場合、以下を実行:
96
+ ```bash
97
+ git add docs/project/design/03-screen-design.md
98
+ git status
99
+ ```
100
+ - 推奨コミットメッセージ:
101
+ ```
102
+ docs: 画面設計ドキュメントの作成
103
+
104
+ - 画面一覧と遷移フロー(Mermaid)を追加
105
+ - レスポンシブデザインポリシーを定義
106
+ ```
107
+
108
+ ## 完了条件
109
+
110
+ - `docs/project/design/03-screen-design.md` が作成されている。
111
+ - 全画面のリストと役割が定義されている。
112
+ - 画面遷移が可視化されている。
113
+ - レスポンシブ対応方針が明確になっている。
114
+ - ユーザーが内容を承認している。
115
+
116
+ ## エスカレーション
117
+
118
+ - シナリオ不足で画面が特定できない場合:
119
+ - 「シナリオが不足しています。`CreateScenarios` (a-003) に戻ってユーザーフローを明確にしましょう。」と提案する。
120
+ - 画面数が多すぎる場合:
121
+ - 「初期リリースには多すぎる可能性があります。MVPに必要な画面に絞り込みませんか?」と提案する。
@@ -0,0 +1,125 @@
1
+ ---
2
+ description: ドメインモデルと画面設計からデータベース構造(ERD)を定義し、エンティティ、属性、リレーションシップ、制約を明確化するワークフロー
3
+ ---
4
+
5
+ # DefineDataModel (a-010)
6
+
7
+ ## 目的
8
+
9
+ - ドメインモデル(Aggregates)と画面設計を基に、データベース構造を定義する。
10
+ - エンティティ(テーブル)、属性(カラム)、リレーションシップを明確化する。
11
+ - データ型、制約(NOT NULL、UNIQUE、CHECK)、インデックス戦略を決定する。
12
+ - Mermaid ERD(Entity Relationship Diagram)で視覚化し、開発者間の認識を統一する。
13
+
14
+ ## 前提
15
+
16
+ - `docs/project/domain/01-domain-model.md` が作成されていること。
17
+ - `docs/project/design/01-tech-stack.md` が作成されていること(DB選定済み)。
18
+ - `docs/project/design/03-screen-design.md` が作成されていること。
19
+ - `docs/project/design/` ディレクトリが存在すること。
20
+
21
+ ## 手順
22
+
23
+ ### 1. ドキュメントと前提条件の確認
24
+
25
+ - 必要なドキュメントを読み込む:
26
+ - `docs/project/domain/01-domain-model.md`
27
+ - `docs/project/design/01-tech-stack.md`
28
+ - `docs/project/design/03-screen-design.md`
29
+
30
+ - ドキュメントが不足している場合、対応するワークフローの実行を促す。
31
+
32
+ ### 2. テンプレートの準備
33
+
34
+ - テンプレートをコピーして作業用ファイルを作成する:
35
+ ```bash
36
+ cp ".windsurf/templates/project/04-design/04-data-model.md" "docs/project/design/04-data-model.md"
37
+ ```
38
+
39
+ ### 3. エンティティの抽出と提案
40
+
41
+ - **ドメインモデルから**: Aggregate Rootおよび内部エンティティを抽出。
42
+ - **画面設計から**: 表示・入力項目から必要なデータ構造(履歴、設定、ログ等)を抽出。
43
+ - **エンティティ一覧案を提示**:
44
+ - 「以下のエンティティを定義します:」
45
+ - 「[エンティティ名] (対応するAggregate: [名前])」
46
+
47
+ ### 4. 詳細定義(インタビュー)
48
+
49
+ ユーザーからのフィードバックを受け、各エンティティの詳細を定義する。
50
+
51
+ #### 4.1 基本定義
52
+ - テーブル名(物理名)、論理名、説明
53
+ - 主キー(ID)の戦略(Auto Increment / UUID / CUID)
54
+
55
+ #### 4.2 属性(カラム)
56
+ - カラム名、データ型(DB製品に合わせて具体的に)
57
+ - 制約(NOT NULL, UNIQUE, DEFAULT)
58
+ - 監査カラム(created_at, updated_at)の有無
59
+
60
+ #### 4.3 リレーションシップ
61
+ - 関連するエンティティ(1:1, 1:N, N:M)
62
+ - 外部キー制約(ON DELETE CASCADE / SET NULL / RESTRICT)
63
+
64
+ ### 5. ERDの作成と正規化
65
+
66
+ - 抽出したエンティティとリレーションシップを Mermaid ERD 形式で記述する。
67
+ - 正規化(1NF-3NF)を確認し、意図的な非正規化があれば理由を記録する。
68
+ - インデックス戦略(検索頻度の高いカラム、ユニーク制約)を定義する。
69
+
70
+ ### 6. ドキュメント作成
71
+
72
+ - `docs/project/design/04-data-model.md` に決定事項を記入する。
73
+ - **必須項目**:
74
+ - エンティティ一覧
75
+ - リレーションシップ定義
76
+ - ERD (Mermaid)
77
+
78
+ ### 7. 完了条件と構造の確認
79
+
80
+ - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
81
+
82
+ 1. **構造確認**:
83
+ ```bash
84
+ # エンティティ一覧の確認
85
+ grep "## エンティティ一覧" docs/project/design/04-data-model.md && echo "OK" || echo "MISSING: Entities"
86
+ # ERDの確認
87
+ grep "\`\`\`mermaid" docs/project/design/04-data-model.md && echo "OK" || echo "MISSING: ERD"
88
+ # リレーションシップ定義の確認
89
+ grep "## リレーションシップ" docs/project/design/04-data-model.md && echo "OK" || echo "MISSING: Relationships"
90
+ ```
91
+
92
+ 2. **チェックリスト**:
93
+ - [ ] `docs/project/design/04-data-model.md` が作成されている
94
+ - [ ] 全エンティティの物理名・論理名が定義されている
95
+ - [ ] ERDが正しくレンダリングされる
96
+
97
+ ### 8. Git への追加(オプション)
98
+
99
+ - ユーザーに確認:「作成したデータモデルドキュメントを Git に追加しますか?」
100
+ - 「はい」の場合、以下を実行:
101
+ ```bash
102
+ git add docs/project/design/04-data-model.md
103
+ git status
104
+ ```
105
+ - 推奨コミットメッセージ:
106
+ ```
107
+ docs: データモデル(ERD)の定義
108
+
109
+ - エンティティ、属性、リレーションシップを定義
110
+ - MermaidによるER図を追加
111
+ ```
112
+
113
+ ## 完了条件
114
+
115
+ - `docs/project/design/04-data-model.md` が作成されている。
116
+ - データベーススキーマ(テーブル、カラム、型、制約)が定義されている。
117
+ - エンティティ間の関係性が可視化(ERD)されている。
118
+ - ユーザーが内容を承認している。
119
+
120
+ ## エスカレーション
121
+
122
+ - ドメインモデルとの不整合がある場合:
123
+ - 「ドメインモデルのAggregate構造とデータモデルが乖離しています。ORMのマッピング戦略を確認するか、ドメインモデルを見直してください。」
124
+ - パフォーマンス懸念がある場合:
125
+ - 「正規化によりJOINが多発する可能性があります。Read Model(参照用テーブル)の導入や、意図的な非正規化を検討しませんか?」
@@ -0,0 +1,123 @@
1
+ ---
2
+ description: データモデルと画面設計からAPI仕様を定義し、認証方式、エンドポイント一覧、共通レスポンス形式を明確化するワークフロー
3
+ ---
4
+
5
+ # DefineAPISpec (a-011)
6
+
7
+ ## 目的
8
+
9
+ - データモデルと画面設計を基に、API仕様の基本設計を定義する。
10
+ - API設計スタイル(REST、GraphQL、gRPC、tRPC)を決定する。
11
+ - 認証・認可方式を明確化する。
12
+ - エンドポイント一覧(メソッド、パス、説明、認証要否)を定義する。
13
+ - 共通レスポンス形式(成功/エラー)を定義する。
14
+
15
+ ## 前提
16
+
17
+ - `docs/project/design/01-tech-stack.md` が作成されていること(APIスタイル選定済み)。
18
+ - `docs/project/design/04-data-model.md` が作成されていること。
19
+ - `docs/project/design/03-screen-design.md` が作成されていること。
20
+ - `docs/project/design/` ディレクトリが存在すること。
21
+
22
+ ## 手順
23
+
24
+ ### 1. ドキュメントと前提条件の確認
25
+
26
+ - 必要なドキュメントを読み込む:
27
+ - `docs/project/design/01-tech-stack.md`
28
+ - `docs/project/design/04-data-model.md`
29
+ - `docs/project/design/03-screen-design.md`
30
+
31
+ - ドキュメントが不足している場合、対応するワークフローの実行を促す。
32
+
33
+ ### 2. テンプレートの準備
34
+
35
+ - テンプレートをコピーして作業用ファイルを作成する:
36
+ ```bash
37
+ cp ".windsurf/templates/project/04-design/05-api-spec.md" "docs/project/design/05-api-spec.md"
38
+ ```
39
+
40
+ ### 3. APIスタイルの確認と提案
41
+
42
+ - 技術スタック(01-tech-stack.md)で選定されたAPIスタイル(REST, GraphQL等)を確認する。
43
+ - データモデル(04-data-model.md)と画面設計(03-screen-design.md)から、必要なリソースと操作を抽出する。
44
+ - **エンドポイント案の提示**:
45
+ - 「以下のリソースに対するエンドポイントを定義します:」
46
+ - 「Users: 一覧, 詳細, 作成, 更新, 削除」
47
+ - 「Auth: ログイン, 登録, リフレッシュ」
48
+
49
+ ### 4. 詳細定義(インタビュー)
50
+
51
+ ユーザーからのフィードバックを受け、詳細を定義する。
52
+
53
+ #### 4.1 認証・認可
54
+ - 認証方式(JWT, OAuth等)、トークンの扱い(Cookie vs Header)
55
+ - 認可スコープやロールの定義
56
+
57
+ #### 4.2 エンドポイント詳細
58
+ - 各リソースのパス設計(RESTful原則の適用)
59
+ - 認証の要否(Public vs Private)
60
+ - CRUD以外の特殊なアクション(`/cancel`, `/publish` 等)
61
+
62
+ #### 4.3 共通レスポンス形式
63
+ - 成功時のレスポンス構造(`{ data: ... }` ラップの有無)
64
+ - エラー時のレスポンス構造(`{ error: { code, message } }` 等)
65
+ - ページネーションの仕様
66
+
67
+ ### 5. ドキュメント作成
68
+
69
+ - `docs/project/design/05-api-spec.md` に決定事項を記入する。
70
+ - **必須項目**:
71
+ - 認証・認可仕様
72
+ - エンドポイント一覧(リソース別)
73
+ - 共通レスポンス形式
74
+
75
+ ### 6. 完了条件と構造の確認
76
+
77
+ - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
78
+
79
+ 1. **構造確認**:
80
+ ```bash
81
+ # 認証セクションの確認
82
+ grep "## 認証・認可" docs/project/design/05-api-spec.md && echo "OK" || echo "MISSING: Auth section"
83
+ # エンドポイント一覧の確認
84
+ grep "## エンドポイント一覧" docs/project/design/05-api-spec.md && echo "OK" || echo "MISSING: Endpoints"
85
+ # レスポンス形式の確認
86
+ grep "## 共通レスポンス形式" docs/project/design/05-api-spec.md && echo "OK" || echo "MISSING: Response format"
87
+ ```
88
+
89
+ 2. **チェックリスト**:
90
+ - [ ] `docs/project/design/05-api-spec.md` が作成されている
91
+ - [ ] 認証方式が明確に定義されている
92
+ - [ ] 主要なリソースのCRUDエンドポイントが網羅されている
93
+
94
+ ### 7. Git への追加(オプション)
95
+
96
+ - ユーザーに確認:「作成したAPI仕様ドキュメントを Git に追加しますか?」
97
+ - 「はい」の場合、以下を実行:
98
+ ```bash
99
+ git add docs/project/design/05-api-spec.md
100
+ git status
101
+ ```
102
+ - 推奨コミットメッセージ:
103
+ ```
104
+ docs: API仕様(基本設計)の作成
105
+
106
+ - 認証・認可方式の定義
107
+ - エンドポイント一覧と共通レスポンス形式を定義
108
+ ```
109
+
110
+ ## 完了条件
111
+
112
+ - `docs/project/design/05-api-spec.md` が作成されている。
113
+ - 認証・認可の仕組みが定義されている。
114
+ - エンドポイント一覧(メソッド、パス、認証要否)が定義されている。
115
+ - 共通レスポンス形式(成功/エラー)が定義されている。
116
+ - ユーザーが内容を承認している。
117
+
118
+ ## エスカレーション
119
+
120
+ - APIスタイル(REST/GraphQL)が未定の場合:
121
+ - 「APIスタイルが未定です。`DefineTechStack` (a-007) に戻って選定してください。」
122
+ - データモデルとの不整合がある場合:
123
+ - 「データモデルに存在しないリソースのエンドポイントが要求されています。データモデルを見直すか、APIだけの概念として定義するか確認してください。」
@@ -0,0 +1,119 @@
1
+ ---
2
+ description: 技術スタック、リポジトリ構造、データモデル、API仕様を統合し、システム全体のアーキテクチャ設計とADRを定義するワークフロー
3
+ ---
4
+
5
+ # DefineArchitecture (a-012)
6
+
7
+ ## 目的
8
+
9
+ - これまでに定義された設計(技術スタック、リポジトリ構造、データモデル、API仕様)を統合する。
10
+ - システム全体の構造をMermaid図で視覚化する。
11
+ - 採用したアーキテクチャパターン(レイヤード、クリーンアーキテクチャなど)を明確化する。
12
+ - 重要なアーキテクチャ決定(ADR: Architecture Decision Record)を記録する。
13
+
14
+ ## 前提
15
+
16
+ - `docs/project/design/01-tech-stack.md` が作成されていること。
17
+ - `docs/project/design/02-repository-structure.md` が作成されていること。
18
+ - `docs/project/design/04-data-model.md` が作成されていること。
19
+ - `docs/project/design/05-api-spec.md` が作成されていること。
20
+ - `docs/project/design/` ディレクトリが存在すること。
21
+
22
+ ## 手順
23
+
24
+ ### 1. ドキュメントと前提条件の確認
25
+
26
+ - 必要なドキュメントを読み込む:
27
+ - `docs/project/design/01-tech-stack.md`
28
+ - `docs/project/design/02-repository-structure.md`
29
+ - `docs/project/design/04-data-model.md`
30
+ - `docs/project/design/05-api-spec.md`
31
+
32
+ - ドキュメントが不足している場合、対応するワークフローの実行を促す。
33
+
34
+ ### 2. テンプレートの準備
35
+
36
+ - テンプレートをコピーして作業用ファイルを作成する:
37
+ ```bash
38
+ cp ".windsurf/templates/project/04-design/06-architecture.md" "docs/project/design/06-architecture.md"
39
+ ```
40
+
41
+ ### 3. アーキテクチャの提案
42
+
43
+ - 技術スタックとリポジトリ構造から、システムの主要コンポーネント(クライアント、API、DB、外部サービス)を抽出する。
44
+ - **システム全体図の構成案を提示**:
45
+ - 「以下のコンポーネントとデータフローを図示します:」
46
+ - 「[Web] -> [API Server] -> [DB]」
47
+ - 「[API Server] -> [External Service]」
48
+
49
+ ### 4. 詳細定義(インタビュー)
50
+
51
+ ユーザーからのフィードバックを受け、詳細を定義する。
52
+
53
+ #### 4.1 システムアーキテクチャ図
54
+ - コンポーネント間の接続、プロトコル(HTTP/gRPC)、データフローをMermaid図で表現する。
55
+ - スケーラビリティや冗長化構成(ロードバランサー、レプリカDB)を反映する。
56
+
57
+ #### 4.2 アーキテクチャパターン
58
+ - 採用したパターン(レイヤード、クリーン、マイクロサービス等)とその選定理由を明確にする。
59
+
60
+ #### 4.3 ADR (Architecture Decision Records)
61
+ - 重要な技術的決定(DB選定、認証方式、フレームワーク選定など)を抽出する。
62
+ - 各決定について、背景・代替案・決定理由・影響を記録する。
63
+
64
+ ### 5. ドキュメント作成
65
+
66
+ - `docs/project/design/06-architecture.md` に決定事項を記入する。
67
+ - **必須項目**:
68
+ - システムアーキテクチャ図 (Mermaid)
69
+ - 採用アーキテクチャパターンの説明
70
+ - ADR一覧
71
+
72
+ ### 6. 完了条件と構造の確認
73
+
74
+ - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
75
+
76
+ 1. **構造確認**:
77
+ ```bash
78
+ # アーキテクチャ図の確認
79
+ grep "\`\`\`mermaid" docs/project/design/06-architecture.md && echo "OK" || echo "MISSING: Architecture Diagram"
80
+ # パターン定義の確認
81
+ grep "## 採用アーキテクチャパターン" docs/project/design/06-architecture.md && echo "OK" || echo "MISSING: Pattern definition"
82
+ # ADRセクションの確認
83
+ grep "## ADR" docs/project/design/06-architecture.md && echo "OK" || echo "MISSING: ADR section"
84
+ ```
85
+
86
+ 2. **チェックリスト**:
87
+ - [ ] `docs/project/design/06-architecture.md` が作成されている
88
+ - [ ] システム全体像が視覚化されている
89
+ - [ ] 重要な技術選定の理由(ADR)が記録されている
90
+
91
+ ### 7. Git への追加(オプション)
92
+
93
+ - ユーザーに確認:「作成したアーキテクチャ設計ドキュメントを Git に追加しますか?」
94
+ - 「はい」の場合、以下を実行:
95
+ ```bash
96
+ git add docs/project/design/06-architecture.md
97
+ git status
98
+ ```
99
+ - 推奨コミットメッセージ:
100
+ ```
101
+ docs: アーキテクチャ設計の定義
102
+
103
+ - システム全体図(Mermaid)の作成
104
+ - アーキテクチャパターンとADRの記録
105
+ ```
106
+
107
+ ## 完了条件
108
+
109
+ - `docs/project/design/06-architecture.md` が作成されている。
110
+ - システム全体の構成要素と関係性が可視化されている。
111
+ - 技術選定の背景(ADR)が文書化され、将来の参照用に残されている。
112
+ - ユーザーが内容を承認している。
113
+
114
+ ## エスカレーション
115
+
116
+ - アーキテクチャが複雑すぎる場合:
117
+ - 「コンポーネント数が多すぎます。概要図と詳細図に分割するか、主要なフローに絞って図示することを検討しましょう。」と提案する。
118
+ - 決定理由が不明確な場合:
119
+ - 「[技術名]の選定理由が曖昧です。後で振り返れるよう、比較検討した代替案も含めてADRに記録しましょう。」と促す。