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,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ユーザーストーリーから具体的なGherkinシナリオを作成し、BDD形式で振る舞いを定義するワークフロー
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# CreateScenarios (a-003)
|
|
6
|
+
|
|
7
|
+
## 目的
|
|
8
|
+
|
|
9
|
+
- ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin形式で記述する。
|
|
10
|
+
- Given-When-Then構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
|
|
11
|
+
- ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
|
|
12
|
+
|
|
13
|
+
## 前提
|
|
14
|
+
|
|
15
|
+
- `docs/project/requirements/05-user-stories.md` が作成されていること(先に `InitializeProject` (a-002) を実行)。
|
|
16
|
+
- `docs/project/behavior/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) を実行)。
|
|
17
|
+
- ユーザーが各機能の具体的な動作例を説明できること。
|
|
18
|
+
|
|
19
|
+
## 手順
|
|
20
|
+
|
|
21
|
+
### 1. ディレクトリと前提条件の確認
|
|
22
|
+
|
|
23
|
+
- `docs/project/behavior/` ディレクトリの存在を確認:
|
|
24
|
+
```bash
|
|
25
|
+
ls -la docs/project/behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- ディレクトリが存在しない場合:
|
|
29
|
+
- ユーザーに通知:「`docs/project/behavior/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してください。」
|
|
30
|
+
|
|
31
|
+
- ユーザーストーリーの確認:
|
|
32
|
+
- `docs/project/requirements/05-user-stories.md` を読み込み、内容を確認する。
|
|
33
|
+
|
|
34
|
+
### 2. テンプレートの準備
|
|
35
|
+
|
|
36
|
+
- テンプレートをコピーして作業用ファイルを作成する:
|
|
37
|
+
```bash
|
|
38
|
+
cp ".windsurf/templates/project/02-behavior/01-scenarios.md" "docs/project/behavior/01-scenarios.md"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. 分析と提案
|
|
42
|
+
|
|
43
|
+
- `docs/project/requirements/05-user-stories.md` を分析し、シナリオ作成対象の機能(Feature)をリストアップする。
|
|
44
|
+
- 各機能について、考えられるシナリオ案(ハッピーパスと代表的なエラーケース)をユーザーに提案する:
|
|
45
|
+
- 「以下のユーザーストーリーに基づいて、シナリオを作成します:」
|
|
46
|
+
- 「機能: [機能名] (US-XXX)」
|
|
47
|
+
- 「シナリオ案1: [ハッピーパス]」
|
|
48
|
+
- 「シナリオ案2: [エラーケース]」
|
|
49
|
+
|
|
50
|
+
### 4. ヒアリングと記入
|
|
51
|
+
|
|
52
|
+
各機能について、以下の順序でヒアリングを行い、`docs/project/behavior/01-scenarios.md` を更新する。
|
|
53
|
+
|
|
54
|
+
#### 4.1 Feature情報の定義
|
|
55
|
+
- 機能名、説明、対応するユーザーストーリー(As a/I want/So that)を記入する。
|
|
56
|
+
- **Background**(共通前提条件)がある場合は定義する。
|
|
57
|
+
|
|
58
|
+
#### 4.2 シナリオの作成(ハッピーパス)
|
|
59
|
+
- 「最も基本的な成功シナリオを教えてください。」
|
|
60
|
+
- **Given**(前提)、**When**(アクション)、**Then**(結果)を確認し、Gherkin形式で記述する。
|
|
61
|
+
- UI操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
|
|
62
|
+
|
|
63
|
+
#### 4.3 エラーケース・境界値の作成
|
|
64
|
+
- 「エラーケースや境界値(エッジケース)はありますか?」
|
|
65
|
+
- 必要に応じて **Scenario Outline**(パラメータ化)の使用を提案し、Examplesテーブルを作成する。
|
|
66
|
+
|
|
67
|
+
#### 4.4 タグ付け
|
|
68
|
+
- シナリオID(`@SC-XXX`)を採番する。
|
|
69
|
+
- 適切なタグ(`@smoke`, `@happy-path`, `@error-handling` など)を付与する。
|
|
70
|
+
|
|
71
|
+
### 5. シナリオ一覧テーブルの更新
|
|
72
|
+
|
|
73
|
+
- ドキュメント冒頭の「シナリオ一覧」テーブルを更新し、作成した全シナリオのID、機能、シナリオ名、優先度を記載する。
|
|
74
|
+
|
|
75
|
+
### 6. レビューと確認
|
|
76
|
+
|
|
77
|
+
- 作成したシナリオをユーザーに提示し、以下を確認:
|
|
78
|
+
- 「シナリオは実際の動作を正しく表現していますか?」
|
|
79
|
+
- 「漏れているケースはありませんか?」
|
|
80
|
+
- 「非技術者でも理解できる表現になっていますか?」
|
|
81
|
+
|
|
82
|
+
### 7. 完了条件と構造の確認
|
|
83
|
+
|
|
84
|
+
- 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
|
|
85
|
+
|
|
86
|
+
1. **構造確認**:
|
|
87
|
+
```bash
|
|
88
|
+
# シナリオ一覧テーブルの確認
|
|
89
|
+
grep "| シナリオID | 機能 |" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Table Header"
|
|
90
|
+
# Feature定義の確認
|
|
91
|
+
grep "Feature:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Feature definition"
|
|
92
|
+
# Scenario定義の確認
|
|
93
|
+
grep "Scenario:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Scenario definition"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
2. **チェックリスト**:
|
|
97
|
+
- [ ] `docs/project/behavior/01-scenarios.md` が作成されている
|
|
98
|
+
- [ ] シナリオ一覧テーブルが更新されている
|
|
99
|
+
- [ ] 各FeatureがGherkin形式で記述されている
|
|
100
|
+
- [ ] 正常系と異常系のシナリオが網羅されている
|
|
101
|
+
|
|
102
|
+
### 8. Git への追加(オプション)
|
|
103
|
+
|
|
104
|
+
- ユーザーに確認:「作成したシナリオドキュメントを Git に追加しますか?」
|
|
105
|
+
- 「はい」の場合、以下を実行:
|
|
106
|
+
```bash
|
|
107
|
+
git add docs/project/behavior/
|
|
108
|
+
git status
|
|
109
|
+
```
|
|
110
|
+
- 推奨コミットメッセージ:
|
|
111
|
+
```
|
|
112
|
+
docs: 振る舞い仕様(シナリオ)の作成
|
|
113
|
+
|
|
114
|
+
- ユーザーストーリーに基づくGherkinシナリオを追加
|
|
115
|
+
- 正常系・異常系・境界値ケースを定義
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## 完了条件
|
|
119
|
+
|
|
120
|
+
- `docs/project/behavior/01-scenarios.md` が作成されている。
|
|
121
|
+
- ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
|
|
122
|
+
- シナリオ一覧テーブルがメンテナンスされている。
|
|
123
|
+
- ユーザーが内容を承認している。
|
|
124
|
+
|
|
125
|
+
## エスカレーション
|
|
126
|
+
|
|
127
|
+
- ユーザーストーリーが不明確でシナリオ化できない場合:
|
|
128
|
+
- 「ユーザーストーリーの詳細化が必要です。`InitializeProject` ワークフローに戻って要件を明確にしましょう。」と提案する。
|
|
129
|
+
- 実装詳細への依存が強すぎる場合:
|
|
130
|
+
- 「UI操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」とリファクタリングを提案する。
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Event Storming形式でドメインモデルを定義し、ユビキタス言語を反復的に洗練させるワークフロー
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# DefineDomainModel (a-004)
|
|
6
|
+
|
|
7
|
+
## 目的
|
|
8
|
+
|
|
9
|
+
- Event Storming形式でドメインモデルを体系的に定義する。
|
|
10
|
+
- ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
|
|
11
|
+
- Bounded Context(境界づけられたコンテキスト)を特定し、各コンテキスト内のActors、Commands、Events、Policies、Aggregatesを明確化する。
|
|
12
|
+
|
|
13
|
+
## 前提
|
|
14
|
+
|
|
15
|
+
- `docs/project/behavior/01-scenarios.md` が作成されていること(先に `CreateScenarios` (a-003) を実行)。
|
|
16
|
+
- `docs/project/domain/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) を実行)。
|
|
17
|
+
- ドメインエキスパート(ビジネス側の専門家)と協力できること。
|
|
18
|
+
|
|
19
|
+
## 手順
|
|
20
|
+
|
|
21
|
+
### 1. ディレクトリと前提条件の確認
|
|
22
|
+
|
|
23
|
+
- `docs/project/domain/` ディレクトリの存在を確認:
|
|
24
|
+
```bash
|
|
25
|
+
ls -la docs/project/domain/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- ディレクトリが存在しない場合:
|
|
29
|
+
- ユーザーに通知:「`docs/project/domain/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してください。」
|
|
30
|
+
|
|
31
|
+
- シナリオの確認:
|
|
32
|
+
- `docs/project/behavior/01-scenarios.md` を読み込み、内容を確認する。
|
|
33
|
+
|
|
34
|
+
### 2. テンプレートの準備
|
|
35
|
+
|
|
36
|
+
- テンプレートをコピーして作業用ファイルを作成する:
|
|
37
|
+
```bash
|
|
38
|
+
cp ".windsurf/templates/project/03-domain/01-domain-model.md" "docs/project/domain/01-domain-model.md"
|
|
39
|
+
cp ".windsurf/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/domain/02-ubiquitous-language.md"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. Bounded Context の特定
|
|
43
|
+
|
|
44
|
+
- シナリオとユーザーストーリーを分析し、Bounded Context(ビジネス領域)を提案する。
|
|
45
|
+
- 「シナリオから、以下のBounded Contextが考えられます:[コンテキスト一覧]」
|
|
46
|
+
- 各Contextの戦略的分類(Core/Supporting/Generic)を確認する。
|
|
47
|
+
|
|
48
|
+
### 4. 各Bounded Context のドメインモデル定義
|
|
49
|
+
|
|
50
|
+
各Bounded Contextについて、以下の要素をヒアリング・定義し、`01-domain-model.md` を更新する。
|
|
51
|
+
**同時に、新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記する。**
|
|
52
|
+
|
|
53
|
+
#### 4.1 概要とアクター
|
|
54
|
+
- Contextの責務と主要な責任
|
|
55
|
+
- 登場するアクター(Actors)とその役割
|
|
56
|
+
|
|
57
|
+
#### 4.2 コマンドとイベント (Event Storming)
|
|
58
|
+
- アクターが実行するアクション(**Commands**、命令形)
|
|
59
|
+
- その結果発生するビジネス上の出来事(**Domain Events**、過去形)
|
|
60
|
+
- 自動化ルール(**Policies**、"Whenever ..., then ...")
|
|
61
|
+
|
|
62
|
+
#### 4.3 集約とモデル
|
|
63
|
+
- 一貫性を保つエンティティの塊(**Aggregates**)
|
|
64
|
+
- 画面表示用の参照モデル(**Read Models**)
|
|
65
|
+
- 連携する外部システム(**External Systems**)
|
|
66
|
+
|
|
67
|
+
### 5. ユビキタス言語の洗練
|
|
68
|
+
|
|
69
|
+
- `02-ubiquitous-language.md` を見直し、以下の点を確認・修正する:
|
|
70
|
+
- 用語の重複や曖昧さがないか
|
|
71
|
+
- 禁止用語(Data, Processなど曖昧な語)が含まれていないか
|
|
72
|
+
- 定義が具体的で、Context内での意味に限定されているか
|
|
73
|
+
|
|
74
|
+
### 6. Context Map の定義
|
|
75
|
+
|
|
76
|
+
- 各Context間の関係性(Customer-Supplier, Shared Kernelなど)を定義し、`01-domain-model.md` のContext Mapセクション(Mermaid図)を更新する。
|
|
77
|
+
|
|
78
|
+
### 7. レビューと確認
|
|
79
|
+
|
|
80
|
+
- 作成したドキュメントを提示し、以下を確認する:
|
|
81
|
+
- 「ビジネス用語は正確に表現されていますか?」
|
|
82
|
+
- 「Aggregateの境界は適切ですか?」
|
|
83
|
+
- 「ユビキタス言語の定義は明確ですか?」
|
|
84
|
+
|
|
85
|
+
### 8. 完了条件と構造の確認
|
|
86
|
+
|
|
87
|
+
- 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
|
|
88
|
+
|
|
89
|
+
1. **構造確認**:
|
|
90
|
+
```bash
|
|
91
|
+
# Bounded Context定義の確認
|
|
92
|
+
grep "Bounded Context:" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Bounded Context definition"
|
|
93
|
+
# Aggregate定義の確認
|
|
94
|
+
grep "### Aggregates" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Aggregates section"
|
|
95
|
+
# ユビキタス言語定義の確認
|
|
96
|
+
grep "| 用語 | 定義 |" docs/project/domain/02-ubiquitous-language.md && echo "OK" || echo "MISSING: Terminology table"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
2. **チェックリスト**:
|
|
100
|
+
- [ ] `docs/project/domain/01-domain-model.md` が作成され、主要なEvent Storming要素が含まれている
|
|
101
|
+
- [ ] `docs/project/domain/02-ubiquitous-language.md` が作成され、用語が定義されている
|
|
102
|
+
- [ ] ドメインモデルとユビキタス言語の整合性が取れている
|
|
103
|
+
|
|
104
|
+
### 9. Git への追加(オプション)
|
|
105
|
+
|
|
106
|
+
- ユーザーに確認:「作成したドメインモデルドキュメントを Git に追加しますか?」
|
|
107
|
+
- 「はい」の場合、以下を実行:
|
|
108
|
+
```bash
|
|
109
|
+
git add docs/project/domain/
|
|
110
|
+
git status
|
|
111
|
+
```
|
|
112
|
+
- 推奨コミットメッセージ:
|
|
113
|
+
```
|
|
114
|
+
docs: ドメインモデルとユビキタス言語の定義
|
|
115
|
+
|
|
116
|
+
- Event Stormingによるドメインモデルの作成
|
|
117
|
+
- Bounded Contextごとのユビキタス言語の整備
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 完了条件
|
|
121
|
+
|
|
122
|
+
- `docs/project/domain/01-domain-model.md` が作成されている。
|
|
123
|
+
- `docs/project/domain/02-ubiquitous-language.md` が作成されている。
|
|
124
|
+
- 各Bounded Contextについて、主要なドメイン要素(Aggregates, Commands, Events)が定義されている。
|
|
125
|
+
- ドメインモデルで使用される用語がユビキタス言語として定義されている。
|
|
126
|
+
- ユーザーが内容を承認している。
|
|
127
|
+
|
|
128
|
+
## エスカレーション
|
|
129
|
+
|
|
130
|
+
- シナリオが不足していてドメインモデルを作成できない場合:
|
|
131
|
+
- 「シナリオ不足のためモデル化が困難です。`CreateScenarios` (a-003) に戻ってシナリオを充実させましょう。」と提案する。
|
|
132
|
+
- Bounded Contextの境界が不明確な場合:
|
|
133
|
+
- 「境界が曖昧です。暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」と提案する。
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ドメインモデルをMermaid図で視覚化し、Context MapやAggregate構造を図示するワークフロー
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# CreateDomainDiagram (a-005)
|
|
6
|
+
|
|
7
|
+
## 目的
|
|
8
|
+
|
|
9
|
+
- ドメインモデルドキュメント(`01-domain-model.md`)を基に、視覚的なダイアグラムを作成する。
|
|
10
|
+
- Context Map(Bounded Context間の関係図)をMermaid形式で図示する。
|
|
11
|
+
- 各Bounded Context内のAggregate構造や関係性を図示する(オプション)。
|
|
12
|
+
|
|
13
|
+
## 前提
|
|
14
|
+
|
|
15
|
+
- `docs/project/domain/01-domain-model.md` が作成されていること(先に `DefineDomainModel` (a-004) を実行)。
|
|
16
|
+
- ドメインモデルドキュメントにBounded Contextの一覧と関係性が記述されていること。
|
|
17
|
+
|
|
18
|
+
## 手順
|
|
19
|
+
|
|
20
|
+
### 1. ドキュメントの確認
|
|
21
|
+
|
|
22
|
+
- `docs/project/domain/01-domain-model.md` を読み込み、内容を確認する。
|
|
23
|
+
```bash
|
|
24
|
+
ls -la docs/project/domain/01-domain-model.md 2>/dev/null || echo "ファイルが存在しません"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- ファイルが存在しない場合:
|
|
28
|
+
- ユーザーに通知:「ドメインモデルが見つかりません。先に `DefineDomainModel` (a-004) を実行してください。」
|
|
29
|
+
|
|
30
|
+
### 2. Context Map の情報収集と提案
|
|
31
|
+
|
|
32
|
+
- `docs/project/domain/01-domain-model.md` から以下の情報を抽出する:
|
|
33
|
+
- Bounded Contextのリスト
|
|
34
|
+
- 戦略的分類(Core / Supporting / Generic)
|
|
35
|
+
- Context間の関係性
|
|
36
|
+
|
|
37
|
+
- 抽出した情報に基づき、Mermaid図の構成案を提示する:
|
|
38
|
+
- 「以下の関係を図示します:」
|
|
39
|
+
- 「Context A --> Context B (関係パターン)」
|
|
40
|
+
|
|
41
|
+
### 3. Context Map 図の作成
|
|
42
|
+
|
|
43
|
+
- `docs/project/domain/01-domain-model.md` の `## Context Map` セクションに Mermaid図を追加(または更新)する。
|
|
44
|
+
- **スタイル定義**:
|
|
45
|
+
- Core Domain: 金色 (`fill:#FFD700`)
|
|
46
|
+
- Supporting Domain: 水色 (`fill:#87CEEB`)
|
|
47
|
+
- Generic Domain: グレー (`fill:#D3D3D3`)
|
|
48
|
+
- **エッジ定義**:
|
|
49
|
+
- 関係パターンと通信方法をラベルに記載する。
|
|
50
|
+
|
|
51
|
+
### 4. 詳細図の作成(オプション)
|
|
52
|
+
|
|
53
|
+
- ユーザーに確認:「以下の詳細図も作成しますか?」
|
|
54
|
+
- **Aggregate構造図**: クラス図形式でAggregateの内部構造と関係性を表現。
|
|
55
|
+
- **イベントフロー図**: シーケンス図形式で主要なビジネスフロー(Command -> Event -> Policy)を表現。
|
|
56
|
+
|
|
57
|
+
- 「はい」の場合、対象のBounded Contextやシナリオを確認し、図を作成してドキュメント内の適切な箇所に追加する。
|
|
58
|
+
|
|
59
|
+
### 5. レビューと確認
|
|
60
|
+
|
|
61
|
+
- 作成した図をユーザーに提示し、以下を確認:
|
|
62
|
+
- 「関係性は正しく表現されていますか?」
|
|
63
|
+
- 「分類の色分けは適切ですか?」
|
|
64
|
+
- 「複雑すぎて読みにくい箇所はありませんか?」
|
|
65
|
+
|
|
66
|
+
- フィードバックに基づき、レイアウト(TD/LR)や配置を調整する。
|
|
67
|
+
|
|
68
|
+
### 6. 完了条件と構造の確認
|
|
69
|
+
|
|
70
|
+
- 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
|
|
71
|
+
|
|
72
|
+
1. **構造確認**:
|
|
73
|
+
```bash
|
|
74
|
+
# Mermaidブロックの存在確認
|
|
75
|
+
grep "\`\`\`mermaid" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Mermaid diagram"
|
|
76
|
+
# Context Mapセクションの確認
|
|
77
|
+
grep "## Context Map" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Context Map section"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
2. **チェックリスト**:
|
|
81
|
+
- [ ] `docs/project/domain/01-domain-model.md` にContext Map図が含まれている
|
|
82
|
+
- [ ] Mermaid図が正しくレンダリングされる(構文エラーがない)
|
|
83
|
+
- [ ] 戦略的分類に応じて色分けされている
|
|
84
|
+
|
|
85
|
+
### 7. Git への追加(オプション)
|
|
86
|
+
|
|
87
|
+
- ユーザーに確認:「更新したドメインモデルドキュメントを Git に追加しますか?」
|
|
88
|
+
- 「はい」の場合、以下を実行:
|
|
89
|
+
```bash
|
|
90
|
+
git add docs/project/domain/01-domain-model.md
|
|
91
|
+
git status
|
|
92
|
+
```
|
|
93
|
+
- 推奨コミットメッセージ:
|
|
94
|
+
```
|
|
95
|
+
docs: ドメインモデル図(Context Map)の追加
|
|
96
|
+
|
|
97
|
+
- Bounded Context間の関係をMermaid図で視覚化
|
|
98
|
+
- 戦略的分類に基づく色分けを追加
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 完了条件
|
|
102
|
+
|
|
103
|
+
- `docs/project/domain/01-domain-model.md` にContext Map図が追加されている。
|
|
104
|
+
- Bounded Context間の関係性が正しく表現されている。
|
|
105
|
+
- 戦略的分類が視覚的に区別されている。
|
|
106
|
+
- オプションの詳細図(Aggregate図、シーケンス図)が必要に応じて追加されている。
|
|
107
|
+
- ユーザーが図の内容を承認している。
|
|
108
|
+
|
|
109
|
+
## エスカレーション
|
|
110
|
+
|
|
111
|
+
- ドメインモデルが不完全で図を作成できない場合:
|
|
112
|
+
- 「必要な情報(関係性など)が不足しています。`DefineDomainModel` (a-004) に戻って定義を補完しましょう。」と提案する。
|
|
113
|
+
- 図が複雑すぎて読みにくい場合:
|
|
114
|
+
- 「関係が複雑すぎます。主要な関係のみに絞るか、図を分割することを検討しましょう。」と提案する。
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 要件定義からドメインモデルまでのドキュメント間の一貫性をチェックし、不整合や漏れを検出するレビューワークフロー
|
|
3
|
+
auto_execution_mode: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ReviewRequirementsDomain (a-006)
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
- ここまでに作成されたすべてのドキュメント間の一貫性を体系的にチェックする。
|
|
11
|
+
- ドキュメント間の不整合、漏れ、矛盾を検出し、修正提案を提供する。
|
|
12
|
+
- ユビキタス言語の遵守状況を確認し、用語の一貫性を保証する。
|
|
13
|
+
- レビュー結果レポートを作成し、修正すべき項目を優先度付きでリストアップする。
|
|
14
|
+
|
|
15
|
+
## 前提
|
|
16
|
+
|
|
17
|
+
- 以下のドキュメントが作成されていること:
|
|
18
|
+
- `docs/project/requirements/01-system-overview.md`
|
|
19
|
+
- `docs/project/requirements/02-features-implemented.md`
|
|
20
|
+
- `docs/project/requirements/03-features-planned.md`
|
|
21
|
+
- `docs/project/requirements/04-non-functional-requirements.md`
|
|
22
|
+
- `docs/project/requirements/05-user-stories.md`
|
|
23
|
+
- `docs/project/behavior/01-scenarios.md`
|
|
24
|
+
- `docs/project/domain/01-domain-model.md`
|
|
25
|
+
- `docs/project/domain/02-ubiquitous-language.md`
|
|
26
|
+
|
|
27
|
+
## 手順
|
|
28
|
+
|
|
29
|
+
### 1. ドキュメント存在確認
|
|
30
|
+
|
|
31
|
+
- 必要なすべてのドキュメントが存在するか確認する:
|
|
32
|
+
```bash
|
|
33
|
+
ls -l docs/project/requirements/*.md docs/project/behavior/*.md docs/project/domain/*.md
|
|
34
|
+
```
|
|
35
|
+
- 不足しているドキュメントがある場合、対応するワークフロー(a-002, a-003, a-004)の実行を促す。
|
|
36
|
+
|
|
37
|
+
### 2. 一貫性チェックの実行
|
|
38
|
+
|
|
39
|
+
以下の項目について、自動検索(grep等)と手動確認を組み合わせて検証する。
|
|
40
|
+
|
|
41
|
+
#### 2.1 ユーザーストーリー ↔ シナリオ
|
|
42
|
+
- **カバレッジ**: すべてのユーザーストーリー(US-XXX)に対応するシナリオ(SC-XXX)が存在するか。
|
|
43
|
+
- **整合性**: ストーリーの「価値」とシナリオの「結果」が一致しているか。
|
|
44
|
+
|
|
45
|
+
#### 2.2 実装済み機能・予定機能 ↔ シナリオ
|
|
46
|
+
- **実装済み機能**: `02-features-implemented.md` に記載の機能に、リグレッションテスト用のシナリオが存在するか。
|
|
47
|
+
- **予定機能**: `03-features-planned.md` の優先度High機能にシナリオが存在するか。
|
|
48
|
+
|
|
49
|
+
#### 2.3 非機能要件 ↔ ドメインモデル
|
|
50
|
+
- **パフォーマンス**: `04-non-functional-requirements.md` の要件(読み込み速度など)に対し、Read ModelやCQRSが検討されているか。
|
|
51
|
+
- **セキュリティ**: 認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
|
|
52
|
+
|
|
53
|
+
#### 2.4 シナリオ ↔ ドメインモデル
|
|
54
|
+
- **Command**: シナリオのWhen(アクション)がドメインモデルのCommandとして定義されているか。
|
|
55
|
+
- **Event**: シナリオのThen(結果)がドメインモデルのDomain Eventとして定義されているか。
|
|
56
|
+
- **Actor**: シナリオのActorがドメインモデルに存在するか。
|
|
57
|
+
|
|
58
|
+
#### 2.5 ユビキタス言語の遵守
|
|
59
|
+
- **用語定義**: ドメインモデルの主要要素(Aggregate, Command, Event)がユビキタス言語一覧にあるか。
|
|
60
|
+
- **禁止用語**: 各ドキュメントに禁止用語(Data, Process等)が使われていないか。
|
|
61
|
+
```bash
|
|
62
|
+
# 禁止用語の簡易検索(例)
|
|
63
|
+
grep -r "Data" docs/project/domain/ || echo "No 'Data' found"
|
|
64
|
+
grep -r "Process" docs/project/domain/ || echo "No 'Process' found"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### 2.6 目的との整合性
|
|
68
|
+
- システム概要の「目的」と、ドメインモデルの「Core Domain」が一致しているか。
|
|
69
|
+
|
|
70
|
+
### 3. レビュー結果レポートの作成
|
|
71
|
+
|
|
72
|
+
- 検出された問題(Error/Warning)をまとめ、`docs/project/REVIEW-REPORT.md` を作成する。
|
|
73
|
+
|
|
74
|
+
**レポートフォーマット例**:
|
|
75
|
+
```markdown
|
|
76
|
+
# ドキュメント一貫性レビュー結果
|
|
77
|
+
**実施日**: YYYY-MM-DD
|
|
78
|
+
|
|
79
|
+
## サマリー
|
|
80
|
+
- ✅ OK: X項目
|
|
81
|
+
- ⚠️ Warning: X項目
|
|
82
|
+
- ❌ Error: X項目
|
|
83
|
+
|
|
84
|
+
## 詳細
|
|
85
|
+
|
|
86
|
+
### 1. ユーザーストーリー ↔ シナリオ
|
|
87
|
+
- ❌ **Error**: US-005 に対応するシナリオが見つかりません。
|
|
88
|
+
- ✅ OK: 優先度Highのストーリーはすべてカバーされています。
|
|
89
|
+
|
|
90
|
+
### 2. 機能要件・非機能要件
|
|
91
|
+
- ⚠️ **Warning**: 実装済み機能「決済」のシナリオが不足しています。
|
|
92
|
+
- ✅ OK: パフォーマンス要件に対応するRead Modelが定義されています。
|
|
93
|
+
|
|
94
|
+
### 3. シナリオ ↔ ドメインモデル
|
|
95
|
+
- ⚠️ **Warning**: シナリオSC-003のCommand「在庫を引き当てる」がドメインモデルに未定義です。
|
|
96
|
+
|
|
97
|
+
### 4. ユビキタス言語
|
|
98
|
+
- ❌ **Error**: 用語「ShippingAddress」がユビキタス言語一覧にありません。
|
|
99
|
+
- ⚠️ **Warning**: 禁止用語「User Data」が `01-domain-model.md` で使用されています。
|
|
100
|
+
|
|
101
|
+
## 推奨アクション
|
|
102
|
+
1. `CreateScenarios` (a-003) で US-005 のシナリオを追加する。
|
|
103
|
+
2. `DefineDomainModel` (a-004) で「在庫を引き当てる」コマンドを定義する。
|
|
104
|
+
3. `01-domain-model.md` の「User Data」を「User Profile」に修正する。
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 4. 結果の報告と修正提案
|
|
108
|
+
|
|
109
|
+
- ユーザーにレポートの内容を要約して伝える。
|
|
110
|
+
- 重大なエラー(❌)がある場合は、優先的に修正することを提案する。
|
|
111
|
+
- 「修正作業を開始しますか?それともレポートをGitに保存して終了しますか?」
|
|
112
|
+
|
|
113
|
+
### 5. Git への追加(オプション)
|
|
114
|
+
|
|
115
|
+
- ユーザーが希望する場合、レポートをコミットする。
|
|
116
|
+
```bash
|
|
117
|
+
git add docs/project/REVIEW-REPORT--YYYYMMDDHHMMSS.md
|
|
118
|
+
git commit -m "docs: 要件・ドメイン整合性レビューレポートの作成"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 完了条件
|
|
122
|
+
|
|
123
|
+
- `docs/project/REVIEW-REPORT.md` が作成されている。
|
|
124
|
+
- 全ドキュメント間の整合性がチェックされ、結果(OK/Warning/Error)が記録されている。
|
|
125
|
+
- 具体的な修正アクションが提案されている。
|
|
126
|
+
|
|
127
|
+
## エスカレーション
|
|
128
|
+
|
|
129
|
+
- 多数のエラーが検出された場合:
|
|
130
|
+
- 「不整合が多いため、ドキュメントの信頼性が低くなっています。関係者を集めて大規模なレビュー会議を行うことを推奨します。」
|
|
131
|
+
- 重要機能(Core Domain)で不整合がある場合:
|
|
132
|
+
- 「Core Domainにおける不整合はリスクが高いです。実装前に必ず解消してください。」
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 要件を分析して推奨技術スタックを提案し、ユーザーとの詳細なインタビューを通じて最適な技術選定を行うワークフロー
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# DefineTechStack (a-007)
|
|
6
|
+
|
|
7
|
+
## 目的
|
|
8
|
+
|
|
9
|
+
- 既存の要件ドキュメント(システム概要、非機能要件、ドメインモデル)を分析し、適合する技術スタックを推奨する。
|
|
10
|
+
- 推奨案を提示した上で、ユーザーと詳細なインタビューを行い、すべての技術選定を明確化する。
|
|
11
|
+
- 技術選定の理由、バージョン、選定タイミング(初期/中期/後期/随時)を明確に記録する。
|
|
12
|
+
|
|
13
|
+
## 前提
|
|
14
|
+
|
|
15
|
+
- `docs/project/requirements/` 配下のドキュメントが作成されていること。
|
|
16
|
+
- `docs/project/domain/` 配下のドキュメントが作成されていること。
|
|
17
|
+
- `docs/project/design/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) を実行)。
|
|
18
|
+
|
|
19
|
+
## 手順
|
|
20
|
+
|
|
21
|
+
### 1. ドキュメントと前提条件の確認
|
|
22
|
+
|
|
23
|
+
- `docs/project/design/` ディレクトリの存在を確認
|
|
24
|
+
```bash
|
|
25
|
+
ls -la docs/project/design/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
26
|
+
```
|
|
27
|
+
- 存在しない場合:ユーザーに通知し、`SetupDocStructure` (a-001) を実行するよう促す。
|
|
28
|
+
|
|
29
|
+
- 必要な要件ドキュメントを読み込む:
|
|
30
|
+
- `docs/project/requirements/01-system-overview.md`
|
|
31
|
+
- `docs/project/requirements/03-features-planned.md`
|
|
32
|
+
- `docs/project/requirements/04-non-functional-requirements.md`
|
|
33
|
+
- `docs/project/domain/01-domain-model.md`
|
|
34
|
+
|
|
35
|
+
### 2. テンプレートの準備
|
|
36
|
+
|
|
37
|
+
- テンプレートをコピーして作業用ファイルを作成する:
|
|
38
|
+
```bash
|
|
39
|
+
cp ".windsurf/templates/project/04-design/01-tech-stack.md" "docs/project/design/01-tech-stack.md"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. 要件分析と推奨技術スタックの生成
|
|
43
|
+
|
|
44
|
+
- **システム特性の分析**: アプリケーションタイプ(SPA/SSR等)、非機能要件(パフォーマンス/セキュリティ)、ドメイン複雑度を分析する。
|
|
45
|
+
- **推奨案の作成**: 以下のレイヤーごとに推奨技術を選定する。
|
|
46
|
+
1. フロントエンド
|
|
47
|
+
2. バックエンド
|
|
48
|
+
3. データベース
|
|
49
|
+
4. インフラ・CI/CD
|
|
50
|
+
5. 監視・テスト
|
|
51
|
+
|
|
52
|
+
- **推奨案の提示**:
|
|
53
|
+
- 「要件分析の結果、以下の技術スタックを推奨します:」
|
|
54
|
+
- 各技術について「推奨理由」と「代替案」を提示する。
|
|
55
|
+
|
|
56
|
+
### 4. 詳細インタビューと選定
|
|
57
|
+
|
|
58
|
+
ユーザーからのフィードバックを受け、各レイヤーについて詳細を確認する。
|
|
59
|
+
|
|
60
|
+
- **フロントエンド**: フレームワーク(React/Vue等)、TypeScript利用、状態管理、スタイリング。
|
|
61
|
+
- **バックエンド**: 言語、フレームワーク、APIスタイル(REST/GraphQL)。
|
|
62
|
+
- **データベース**: RDBMS/NoSQL、ORM、マイグレーション戦略。
|
|
63
|
+
- **インフラ**: クラウド/PaaS、コンテナ化(Docker)、IaC。
|
|
64
|
+
- **開発ツール**: リンター/フォーマッター、テストツール、CI/CD。
|
|
65
|
+
|
|
66
|
+
### 5. ドキュメント作成
|
|
67
|
+
|
|
68
|
+
- ヒアリング結果を `docs/project/design/01-tech-stack.md` に記入する。
|
|
69
|
+
- **必須項目**:
|
|
70
|
+
- 技術名、バージョン
|
|
71
|
+
- 選定理由(要件とのマッピング)
|
|
72
|
+
- 選定タイミング(初期/中期/後期)
|
|
73
|
+
|
|
74
|
+
### 6. 完了条件と構造の確認
|
|
75
|
+
|
|
76
|
+
- 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
|
|
77
|
+
|
|
78
|
+
1. **構造確認**:
|
|
79
|
+
```bash
|
|
80
|
+
# フロントエンドセクションの確認
|
|
81
|
+
grep "### フロントエンド" docs/project/design/01-tech-stack.md && echo "OK" || echo "MISSING: Frontend section"
|
|
82
|
+
# バックエンドセクションの確認
|
|
83
|
+
grep "### バックエンド" docs/project/design/01-tech-stack.md && echo "OK" || echo "MISSING: Backend section"
|
|
84
|
+
# 技術選定理由の確認(メモ欄など)
|
|
85
|
+
grep "|" docs/project/design/01-tech-stack.md | head -n 5
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
2. **チェックリスト**:
|
|
89
|
+
- [ ] `docs/project/design/01-tech-stack.md` が作成されている
|
|
90
|
+
- [ ] 主要なレイヤー(FE, BE, DB, Infra)の技術が選定されている
|
|
91
|
+
- [ ] 選定理由が明確に記載されている
|
|
92
|
+
|
|
93
|
+
### 7. Git への追加(オプション)
|
|
94
|
+
|
|
95
|
+
- ユーザーに確認:「作成した技術スタックドキュメントを Git に追加しますか?」
|
|
96
|
+
- 「はい」の場合、以下を実行:
|
|
97
|
+
```bash
|
|
98
|
+
git add docs/project/design/01-tech-stack.md
|
|
99
|
+
git status
|
|
100
|
+
```
|
|
101
|
+
- 推奨コミットメッセージ:
|
|
102
|
+
```
|
|
103
|
+
docs: 技術スタック選定ドキュメントの作成
|
|
104
|
+
|
|
105
|
+
- フロントエンド、バックエンド、インフラ等の技術選定を定義
|
|
106
|
+
- 選定理由と導入フェーズを明記
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 完了条件
|
|
110
|
+
|
|
111
|
+
- `docs/project/design/01-tech-stack.md` が作成されている。
|
|
112
|
+
- すべてのレイヤーについて技術選定が完了している(または「保留」として記録されている)。
|
|
113
|
+
- 選定理由とバージョンが明確になっている。
|
|
114
|
+
- ユーザーが内容を承認している。
|
|
115
|
+
|
|
116
|
+
## エスカレーション
|
|
117
|
+
|
|
118
|
+
- ユーザーが決められない場合:
|
|
119
|
+
- 「要件に基づき、最も標準的でリスクの少ない[技術名]を仮採用とし、実装フェーズで再評価しませんか?」と提案する。
|
|
120
|
+
- コストや学習コストの懸念がある場合:
|
|
121
|
+
- 「初期フェーズは慣れた技術([技術名])を採用し、複雑な要件が出てきた段階で移行を検討しましょう。」と提案する。
|