yodogawa 2.0.0 → 2.1.1
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/CHANGELOG.md +39 -0
- package/LICENSE +21 -0
- package/README.md +66 -22
- package/bin/cli.js +3 -7
- package/package.json +2 -2
- package/scripts/create-task.sh +77 -0
- package/scripts/init-project-docs.sh +90 -0
- package/scripts/init-task-doc.sh +77 -0
- package/skills/a-001-setup-doc-structure/SKILL.md +67 -100
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +48 -0
- package/skills/a-002-initialize-project/SKILL.md +125 -289
- package/skills/a-002-initialize-project/examples/nfr-baseline.md +38 -0
- package/skills/a-002-initialize-project/reference/hearing-questions.md +92 -0
- package/skills/a-002-initialize-project/reference/structure-check.md +48 -0
- package/skills/a-003-create-scenarios/SKILL.md +99 -142
- package/skills/a-003-create-scenarios/examples/gherkin-templates.md +71 -0
- package/skills/a-003-create-scenarios/reference/structure-check.md +46 -0
- package/skills/a-004-define-domain-model/SKILL.md +99 -144
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +71 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +94 -120
- package/skills/a-005-create-domain-diagram/examples/mermaid-templates.md +73 -0
- package/skills/a-005-create-domain-diagram/reference/structure-check.md +43 -0
- package/skills/a-006-review-requirements-domain/SKILL.md +85 -144
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +58 -0
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +60 -0
- package/skills/a-007-define-tech-stack/SKILL.md +102 -130
- package/skills/a-007-define-tech-stack/examples/stack-interview.md +83 -0
- package/skills/a-007-define-tech-stack/reference/structure-check.md +51 -0
- package/skills/a-008-define-repository-structure/SKILL.md +99 -129
- package/skills/a-008-define-repository-structure/examples/structure-templates.md +108 -0
- package/skills/a-008-define-repository-structure/reference/structure-check.md +55 -0
- package/skills/a-009-define-screen-design/SKILL.md +106 -130
- package/skills/a-009-define-screen-design/examples/screen-templates.md +66 -0
- package/skills/a-009-define-screen-design/reference/structure-check.md +47 -0
- package/skills/a-010-define-design-system/SKILL.md +134 -212
- package/skills/a-010-define-design-system/examples/css-tokens.md +71 -0
- package/skills/a-010-define-design-system/reference/component-catalog.md +44 -0
- package/skills/a-011-define-data-model/SKILL.md +121 -134
- package/skills/a-011-define-data-model/examples/erd-templates.md +108 -0
- package/skills/a-011-define-data-model/reference/structure-check.md +56 -0
- package/skills/a-012-define-api-spec/SKILL.md +108 -132
- package/skills/a-012-define-api-spec/examples/api-templates.md +117 -0
- package/skills/a-012-define-api-spec/reference/structure-check.md +49 -0
- package/skills/a-013-define-architecture/SKILL.md +101 -128
- package/skills/a-013-define-architecture/examples/architecture-templates.md +98 -0
- package/skills/a-013-define-architecture/reference/structure-check.md +53 -0
- package/skills/a-014-define-infrastructure/SKILL.md +113 -130
- package/skills/a-014-define-infrastructure/examples/infrastructure-templates.md +97 -0
- package/skills/a-014-define-infrastructure/reference/structure-check.md +63 -0
- package/skills/a-015-review-design/SKILL.md +88 -140
- package/skills/a-015-review-design/examples/review-report-template.md +59 -0
- package/skills/a-015-review-design/reference/consistency-checks.md +47 -0
- package/skills/b-001-create-task-directory/SKILL.md +62 -78
- package/skills/b-001-create-task-directory/examples/naming-convention.md +39 -0
- package/skills/b-002-create-task-definition/SKILL.md +115 -172
- package/skills/b-002-create-task-definition/examples/hearing-and-criteria.md +49 -0
- package/skills/b-002-create-task-definition/reference/structure-check.md +42 -0
- package/skills/b-003-create-task-research/SKILL.md +129 -454
- package/skills/b-003-create-task-research/examples/research-tables.md +63 -0
- package/skills/b-003-create-task-research/reference/investigation-guide.md +106 -0
- package/skills/b-004-create-task-implementation/SKILL.md +99 -100
- package/skills/b-004-create-task-implementation/examples/phase-step-template.md +57 -0
- package/skills/b-004-create-task-implementation/reference/structure-check.md +34 -0
- package/skills/b-005-review-task/SKILL.md +117 -324
- package/skills/b-005-review-task/examples/review-report-template.md +62 -0
- package/skills/b-005-review-task/reference/assessment-criteria.md +79 -0
- package/skills/b-005-review-task/reference/consistency-checks.md +69 -0
- package/skills/c-001-implement-task/SKILL.md +186 -521
- package/skills/c-001-implement-task/examples/commit-and-pr.md +92 -0
- package/skills/c-001-implement-task/examples/task-list-format.md +50 -0
- package/skills/c-001-implement-task/reference/implementation-loop.md +65 -0
- package/skills/c-001-implement-task/reference/validation-loop.md +66 -0
- package/skills/c-002-update-documentation/SKILL.md +159 -853
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +190 -0
- package/skills/c-002-update-documentation/examples/task-doc-updates.md +102 -0
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +100 -0
- package/templates/tasks/task-template/a-definition.md +1 -1
- package/templates/tasks/task-template/b-research.md +1 -1
- package/templates/tasks/task-template/c-implementation.md +2 -2
|
@@ -1,144 +1,99 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-004-define-domain-model
|
|
3
|
-
description: Event Storming
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
grep "Bounded Context:" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Bounded Context definition"
|
|
101
|
-
# Aggregate定義の確認
|
|
102
|
-
grep "### Aggregates" docs/project/domain/01-domain-model.md && echo "OK" || echo "MISSING: Aggregates section"
|
|
103
|
-
# ユビキタス言語定義の確認
|
|
104
|
-
grep "| 用語 | 定義 |" docs/project/domain/02-ubiquitous-language.md && echo "OK" || echo "MISSING: Terminology table"
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
2. **チェックリスト**:
|
|
108
|
-
- [ ] `docs/project/domain/01-domain-model.md` が作成され、主要なEvent Storming要素が含まれている
|
|
109
|
-
- [ ] `docs/project/domain/02-ubiquitous-language.md` が作成され、用語が定義されている
|
|
110
|
-
- [ ] ドメインモデルとユビキタス言語の整合性が取れている
|
|
111
|
-
|
|
112
|
-
### 9. Git への追加(オプション)
|
|
113
|
-
|
|
114
|
-
- ユーザーに確認:「作成したドメインモデルドキュメントを Git に追加しますか?」
|
|
115
|
-
- 「はい」の場合、以下を実行:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
git add docs/project/domain/
|
|
119
|
-
git status
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
- 推奨コミットメッセージ:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
docs: ドメインモデルとユビキタス言語の定義
|
|
126
|
-
|
|
127
|
-
- Event Stormingによるドメインモデルの作成
|
|
128
|
-
- Bounded Contextごとのユビキタス言語の整備
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## 完了条件
|
|
132
|
-
|
|
133
|
-
- `docs/project/domain/01-domain-model.md` が作成されている。
|
|
134
|
-
- `docs/project/domain/02-ubiquitous-language.md` が作成されている。
|
|
135
|
-
- 各Bounded Contextについて、主要なドメイン要素(Aggregates, Commands, Events)が定義されている。
|
|
136
|
-
- ドメインモデルで使用される用語がユビキタス言語として定義されている。
|
|
137
|
-
- ユーザーが内容を承認している。
|
|
138
|
-
|
|
139
|
-
## エスカレーション
|
|
140
|
-
|
|
141
|
-
- シナリオが不足していてドメインモデルを作成できない場合:
|
|
142
|
-
- 「シナリオ不足のためモデル化が困難です。`CreateScenarios` (a-003) に戻ってシナリオを充実させましょう。」と提案する。
|
|
143
|
-
- Bounded Contextの境界が不明確な場合:
|
|
144
|
-
- 「境界が曖昧です。暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」と提案する。
|
|
1
|
+
---
|
|
2
|
+
name: a-004-define-domain-model
|
|
3
|
+
description: Event Storming 形式でドメインモデル(イベント・コマンド・集約)を定義し、ユビキタス言語を整備する。シナリオ作成後、ドメイン設計を開始する際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DefineDomainModel (a-004)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- Event Storming 形式でドメインモデルを体系的に定義する。
|
|
13
|
+
- ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
|
|
14
|
+
- Bounded Context を特定し、Actors / Commands / Events / Policies / Aggregates を明確化する。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/02-behavior/01-scenarios.md` が作成されている(`/a-003-create-scenarios` 実行済み)
|
|
19
|
+
- `docs/project/03-domain/` ディレクトリが存在(なければ `/a-001-setup-doc-structure`)
|
|
20
|
+
- ドメインエキスパートと協力できる
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ディレクトリと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/03-domain/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
存在しなければ `/a-001-setup-doc-structure` を促す。`docs/project/02-behavior/01-scenarios.md` を読み込み内容確認。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/01-domain-model.md" "docs/project/03-domain/01-domain-model.md"
|
|
37
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/03-domain/02-ubiquitous-language.md"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Bounded Context の特定
|
|
41
|
+
|
|
42
|
+
シナリオとユーザーストーリーから Bounded Context を提案し、戦略的分類(Core / Supporting / Generic)を確認。詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#bounded-context-の特定) を参照。
|
|
43
|
+
|
|
44
|
+
### 4. 各 Bounded Context のドメインモデル定義
|
|
45
|
+
|
|
46
|
+
各 Context について以下を定義し、`01-domain-model.md` を更新。新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記。
|
|
47
|
+
|
|
48
|
+
- 概要とアクター
|
|
49
|
+
- コマンド / イベント / ポリシー(Event Storming)
|
|
50
|
+
- 集約 / Read Models / External Systems
|
|
51
|
+
|
|
52
|
+
各要素の詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#各-context-の定義項目) を参照。
|
|
53
|
+
|
|
54
|
+
### 5. ユビキタス言語の洗練
|
|
55
|
+
|
|
56
|
+
`02-ubiquitous-language.md` を見直し、重複・曖昧さ・禁止用語を排除。観点は [reference/event-storming-guide.md](reference/event-storming-guide.md#ユビキタス言語の洗練観点) を参照。
|
|
57
|
+
|
|
58
|
+
### 6. Context Map の定義
|
|
59
|
+
|
|
60
|
+
Context 間の関係性(Customer-Supplier, Shared Kernel 等)を Mermaid 図で定義。関係パターン: [reference/event-storming-guide.md](reference/event-storming-guide.md#context-map-の関係性)
|
|
61
|
+
|
|
62
|
+
### 7. レビューと確認
|
|
63
|
+
|
|
64
|
+
作成したドキュメントを提示し、ビジネス用語の正確性 / Aggregate 境界 / ユビキタス言語定義を確認。
|
|
65
|
+
|
|
66
|
+
### 8. 完了条件と構造の確認
|
|
67
|
+
|
|
68
|
+
構造確認コマンドは [reference/event-storming-guide.md](reference/event-storming-guide.md#構造確認コマンド) を参照。
|
|
69
|
+
|
|
70
|
+
チェックリスト:
|
|
71
|
+
|
|
72
|
+
- [ ] `01-domain-model.md` に主要な Event Storming 要素が含まれている
|
|
73
|
+
- [ ] `02-ubiquitous-language.md` の用語が定義されている
|
|
74
|
+
- [ ] ドメインモデルとユビキタス言語の整合性が取れている
|
|
75
|
+
|
|
76
|
+
### 9. Git への追加(オプション)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git add docs/project/03-domain/
|
|
80
|
+
git status
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
コミットメッセージ: [reference/event-storming-guide.md](reference/event-storming-guide.md#git-コミットメッセージ)
|
|
84
|
+
|
|
85
|
+
## 完了条件
|
|
86
|
+
|
|
87
|
+
- `docs/project/03-domain/01-domain-model.md` と `02-ubiquitous-language.md` が作成されている
|
|
88
|
+
- 各 Bounded Context の主要ドメイン要素(Aggregates, Commands, Events)が定義されている
|
|
89
|
+
- ドメインモデルで使用される用語がユビキタス言語として定義されている
|
|
90
|
+
- ユーザーが内容を承認している
|
|
91
|
+
|
|
92
|
+
## エスカレーション
|
|
93
|
+
|
|
94
|
+
- **シナリオが不足**: 「`/a-003-create-scenarios` に戻ってシナリオを充実させましょう。」
|
|
95
|
+
- **Bounded Context の境界が不明確**: 「暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」
|
|
96
|
+
|
|
97
|
+
## 参考
|
|
98
|
+
|
|
99
|
+
- [reference/event-storming-guide.md](reference/event-storming-guide.md) — Event Storming の観点、Context Map パターン、構造確認コマンド
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Event Storming ガイド
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜6で使うドメインモデル定義の観点集。
|
|
4
|
+
|
|
5
|
+
## Bounded Context の特定
|
|
6
|
+
|
|
7
|
+
シナリオとユーザーストーリーを分析し、ビジネス領域を特定。
|
|
8
|
+
|
|
9
|
+
- **戦略的分類**:
|
|
10
|
+
- **Core**: ビジネスの中核的な競争優位を生む領域
|
|
11
|
+
- **Supporting**: Core を支援する領域
|
|
12
|
+
- **Generic**: 汎用的に解決できる領域(既製ソリューション候補)
|
|
13
|
+
|
|
14
|
+
## 各 Context の定義項目
|
|
15
|
+
|
|
16
|
+
### 概要とアクター
|
|
17
|
+
|
|
18
|
+
- Context の責務と主要な責任
|
|
19
|
+
- 登場するアクター(Actors)とその役割
|
|
20
|
+
|
|
21
|
+
### コマンドとイベント(Event Storming)
|
|
22
|
+
|
|
23
|
+
- **Commands**: アクターが実行するアクション(命令形、例: `RegisterUser`)
|
|
24
|
+
- **Domain Events**: 結果として発生するビジネス上の出来事(過去形、例: `UserRegistered`)
|
|
25
|
+
- **Policies**: 自動化ルール(`Whenever X, then Y` 形式)
|
|
26
|
+
|
|
27
|
+
### 集約とモデル
|
|
28
|
+
|
|
29
|
+
- **Aggregates**: 一貫性を保つエンティティの塊
|
|
30
|
+
- **Read Models**: 画面表示用の参照モデル
|
|
31
|
+
- **External Systems**: 連携する外部システム
|
|
32
|
+
|
|
33
|
+
## ユビキタス言語の洗練観点
|
|
34
|
+
|
|
35
|
+
- 用語の重複や曖昧さがないか
|
|
36
|
+
- 禁止用語(`Data`, `Process` など曖昧な語)が含まれていないか
|
|
37
|
+
- 定義が具体的で Context 内での意味に限定されているか
|
|
38
|
+
|
|
39
|
+
## Context Map の関係性
|
|
40
|
+
|
|
41
|
+
- **Customer-Supplier**: 上流/下流の依存関係
|
|
42
|
+
- **Shared Kernel**: 共有される小さなモデル
|
|
43
|
+
- **Anticorruption Layer**: 外部モデルの変換層
|
|
44
|
+
- **Conformist**: 上流に従う
|
|
45
|
+
- **Partnership**: 相互協調
|
|
46
|
+
|
|
47
|
+
## レビュー観点
|
|
48
|
+
|
|
49
|
+
- ビジネス用語は正確に表現されているか
|
|
50
|
+
- Aggregate の境界は適切か
|
|
51
|
+
- ユビキタス言語の定義は明確か
|
|
52
|
+
|
|
53
|
+
## 構造確認コマンド
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
grep "Bounded Context:" docs/project/03-domain/01-domain-model.md \
|
|
57
|
+
&& echo "OK" || echo "MISSING: Bounded Context definition"
|
|
58
|
+
grep "### Aggregates" docs/project/03-domain/01-domain-model.md \
|
|
59
|
+
&& echo "OK" || echo "MISSING: Aggregates section"
|
|
60
|
+
grep "| 用語 | 定義 |" docs/project/03-domain/02-ubiquitous-language.md \
|
|
61
|
+
&& echo "OK" || echo "MISSING: Terminology table"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Git コミットメッセージ
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
docs: ドメインモデルとユビキタス言語の定義
|
|
68
|
+
|
|
69
|
+
- Event Stormingによるドメインモデルの作成
|
|
70
|
+
- Bounded Contextごとのユビキタス言語の整備
|
|
71
|
+
```
|
|
@@ -1,120 +1,94 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-005-create-domain-diagram
|
|
3
|
-
description: ドメインモデルをMermaid
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
git status
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
- 推奨コミットメッセージ:
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
docs: ドメインモデル図(Context Map)の追加
|
|
102
|
-
|
|
103
|
-
- Bounded Context間の関係をMermaid図で視覚化
|
|
104
|
-
- 戦略的分類に基づく色分けを追加
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## 完了条件
|
|
108
|
-
|
|
109
|
-
- `docs/project/domain/01-domain-model.md` にContext Map図が追加されている。
|
|
110
|
-
- Bounded Context間の関係性が正しく表現されている。
|
|
111
|
-
- 戦略的分類が視覚的に区別されている。
|
|
112
|
-
- オプションの詳細図(Aggregate図、シーケンス図)が必要に応じて追加されている。
|
|
113
|
-
- ユーザーが図の内容を承認している。
|
|
114
|
-
|
|
115
|
-
## エスカレーション
|
|
116
|
-
|
|
117
|
-
- ドメインモデルが不完全で図を作成できない場合:
|
|
118
|
-
- 「必要な情報(関係性など)が不足しています。`DefineDomainModel` (a-004) に戻って定義を補完しましょう。」と提案する。
|
|
119
|
-
- 図が複雑すぎて読みにくい場合:
|
|
120
|
-
- 「関係が複雑すぎます。主要な関係のみに絞るか、図を分割することを検討しましょう。」と提案する。
|
|
1
|
+
---
|
|
2
|
+
name: a-005-create-domain-diagram
|
|
3
|
+
description: ドメインモデルを Mermaid 図(Context Map・Aggregate 構造)として可視化する。ドメインモデル定義後、関係性を図で確認する際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CreateDomainDiagram (a-005)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- ドメインモデルドキュメント(`01-domain-model.md`)を基に、視覚的なダイアグラムを作成する。
|
|
13
|
+
- Context Map(Bounded Context 間の関係図)を Mermaid 形式で図示する。
|
|
14
|
+
- 各 Bounded Context 内の Aggregate 構造や関係性を図示する(オプション)。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/03-domain/01-domain-model.md` が作成されていること(`/a-004-define-domain-model` 実行済み)。
|
|
19
|
+
- ドメインモデルドキュメントに Bounded Context の一覧と関係性が記述されていること。
|
|
20
|
+
|
|
21
|
+
## 手順
|
|
22
|
+
|
|
23
|
+
### 1. ドキュメントの確認
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ls -la docs/project/03-domain/01-domain-model.md 2>/dev/null || echo "ファイルが存在しません"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
未作成の場合、`/a-004-define-domain-model` の実行を促す。
|
|
30
|
+
|
|
31
|
+
### 2. Context Map の情報収集と提案
|
|
32
|
+
|
|
33
|
+
`docs/project/03-domain/01-domain-model.md` から以下を抽出し、構成案を提示する:
|
|
34
|
+
|
|
35
|
+
- Bounded Context のリスト
|
|
36
|
+
- 戦略的分類(Core / Supporting / Generic)
|
|
37
|
+
- Context 間の関係性と通信方法
|
|
38
|
+
|
|
39
|
+
### 3. Context Map 図の作成
|
|
40
|
+
|
|
41
|
+
`## Context Map` セクションに Mermaid 図を追加する。スタイル定義と記述テンプレートは [examples/mermaid-templates.md](examples/mermaid-templates.md#context-mapbounded-context-間の関係) を参照。
|
|
42
|
+
|
|
43
|
+
- Core Domain: 金色、Supporting: 水色、Generic: グレー
|
|
44
|
+
- エッジラベルに関係パターン(Customer/Supplier、ACL 等)と通信方法を記載
|
|
45
|
+
|
|
46
|
+
### 4. 詳細図の作成(オプション)
|
|
47
|
+
|
|
48
|
+
ユーザー確認の上、以下を追加作成する:
|
|
49
|
+
|
|
50
|
+
- **Aggregate 構造図**: クラス図形式。Aggregate 内部の Entity/Value Object と関係を表現。
|
|
51
|
+
- **イベントフロー図**: シーケンス図形式。主要ビジネスフロー(Command → Event → Policy)を表現。
|
|
52
|
+
|
|
53
|
+
テンプレートは [examples/mermaid-templates.md](examples/mermaid-templates.md#aggregate-構造図クラス図形式) を参照。
|
|
54
|
+
|
|
55
|
+
### 5. レビューと確認
|
|
56
|
+
|
|
57
|
+
作成した図を提示し、関係性の正確性、色分けの適切性、読みやすさを確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。フィードバックに応じてレイアウト(TD/LR)や配置を調整する。
|
|
58
|
+
|
|
59
|
+
### 6. 構造チェック
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
grep "\`\`\`mermaid" docs/project/03-domain/01-domain-model.md \
|
|
63
|
+
&& grep "## Context Map" docs/project/03-domain/01-domain-model.md \
|
|
64
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
68
|
+
|
|
69
|
+
### 7. Git への追加(任意)
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git add docs/project/03-domain/01-domain-model.md
|
|
73
|
+
git commit -m "docs: ドメインモデル図(Context Map)の追加"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
|
|
77
|
+
|
|
78
|
+
## 完了条件
|
|
79
|
+
|
|
80
|
+
- `docs/project/03-domain/01-domain-model.md` に Context Map 図が追加されている。
|
|
81
|
+
- Bounded Context 間の関係性が正しく表現されている。
|
|
82
|
+
- 戦略的分類が視覚的に区別されている。
|
|
83
|
+
- オプションの詳細図(Aggregate 図、シーケンス図)が必要に応じて追加されている。
|
|
84
|
+
- ユーザーが図の内容を承認している。
|
|
85
|
+
|
|
86
|
+
## エスカレーション
|
|
87
|
+
|
|
88
|
+
- **ドメインモデルが不完全で図を作成できない**: 「`/a-004-define-domain-model` に戻って定義を補完しましょう。」
|
|
89
|
+
- **図が複雑すぎて読みにくい**: 「主要な関係のみに絞るか、図を分割することを検討しましょう。」
|
|
90
|
+
|
|
91
|
+
## 参考
|
|
92
|
+
|
|
93
|
+
- [examples/mermaid-templates.md](examples/mermaid-templates.md) — Context Map / Aggregate / シーケンス図の Mermaid テンプレート、スタイル定義、エッジラベル例
|
|
94
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、Git 追加例
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Mermaid 図のテンプレート集
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜4 で使用する Mermaid 記述例。
|
|
4
|
+
|
|
5
|
+
## Context Map(Bounded Context 間の関係)
|
|
6
|
+
|
|
7
|
+
```mermaid
|
|
8
|
+
flowchart LR
|
|
9
|
+
Order[Order Context]:::core
|
|
10
|
+
Customer[Customer Context]:::supporting
|
|
11
|
+
Payment[Payment Context]:::generic
|
|
12
|
+
|
|
13
|
+
Order -->|Customer/Supplier| Customer
|
|
14
|
+
Order -->|Published Language| Payment
|
|
15
|
+
|
|
16
|
+
classDef core fill:#FFD700,stroke:#333,stroke-width:2px;
|
|
17
|
+
classDef supporting fill:#87CEEB,stroke:#333,stroke-width:1px;
|
|
18
|
+
classDef generic fill:#D3D3D3,stroke:#333,stroke-width:1px;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### スタイル定義
|
|
22
|
+
|
|
23
|
+
- Core Domain: 金色 `fill:#FFD700`
|
|
24
|
+
- Supporting Domain: 水色 `fill:#87CEEB`
|
|
25
|
+
- Generic Domain: グレー `fill:#D3D3D3`
|
|
26
|
+
|
|
27
|
+
### エッジ(関係)のラベル例
|
|
28
|
+
|
|
29
|
+
- `-->|Customer/Supplier|`
|
|
30
|
+
- `-->|Conformist|`
|
|
31
|
+
- `-->|Published Language|`
|
|
32
|
+
- `-->|Anti-Corruption Layer|`
|
|
33
|
+
- `-->|Shared Kernel|`
|
|
34
|
+
|
|
35
|
+
## Aggregate 構造図(クラス図形式)
|
|
36
|
+
|
|
37
|
+
```mermaid
|
|
38
|
+
classDiagram
|
|
39
|
+
class Order {
|
|
40
|
+
+OrderId id
|
|
41
|
+
+CustomerId customerId
|
|
42
|
+
+OrderStatus status
|
|
43
|
+
+place()
|
|
44
|
+
+cancel()
|
|
45
|
+
}
|
|
46
|
+
class OrderItem {
|
|
47
|
+
+ProductId productId
|
|
48
|
+
+int quantity
|
|
49
|
+
}
|
|
50
|
+
Order "1" *-- "N" OrderItem : contains
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## イベントフロー図(シーケンス図形式)
|
|
54
|
+
|
|
55
|
+
```mermaid
|
|
56
|
+
sequenceDiagram
|
|
57
|
+
participant U as User
|
|
58
|
+
participant O as OrderAggregate
|
|
59
|
+
participant P as PaymentPolicy
|
|
60
|
+
|
|
61
|
+
U->>O: PlaceOrder (Command)
|
|
62
|
+
O-->>P: OrderPlaced (Event)
|
|
63
|
+
P->>P: trigger ProcessPayment
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## コミットメッセージ例
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
docs: ドメインモデル図(Context Map)の追加
|
|
70
|
+
|
|
71
|
+
- Bounded Context 間の関係を Mermaid 図で視覚化
|
|
72
|
+
- 戦略的分類に基づく色分けを追加
|
|
73
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 構造チェックとレビュー観点
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順5〜7 で使用する確認コマンドとレビュー観点。
|
|
4
|
+
|
|
5
|
+
## セクション存在確認
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Mermaid ブロックの存在確認
|
|
9
|
+
grep "\`\`\`mermaid" docs/project/03-domain/01-domain-model.md && echo "OK" || echo "MISSING: Mermaid diagram"
|
|
10
|
+
# Context Map セクションの確認
|
|
11
|
+
grep "## Context Map" docs/project/03-domain/01-domain-model.md && echo "OK" || echo "MISSING: Context Map section"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## チェックリスト
|
|
15
|
+
|
|
16
|
+
- [ ] `docs/project/03-domain/01-domain-model.md` に Context Map 図が含まれている
|
|
17
|
+
- [ ] Mermaid 図が正しくレンダリングされる(構文エラーがない)
|
|
18
|
+
- [ ] 戦略的分類に応じて色分けされている(Core / Supporting / Generic)
|
|
19
|
+
- [ ] 関係パターン(Customer/Supplier など)と通信方法がエッジに記載されている
|
|
20
|
+
- [ ] 必要に応じて Aggregate 図やシーケンス図が追加されている
|
|
21
|
+
|
|
22
|
+
## レビュー確認質問
|
|
23
|
+
|
|
24
|
+
- 「関係性は正しく表現されていますか?」
|
|
25
|
+
- 「分類の色分けは適切ですか?」
|
|
26
|
+
- 「複雑すぎて読みにくい箇所はありませんか?」
|
|
27
|
+
- 「主要なユースケース(Command → Event)が追えますか?」
|
|
28
|
+
|
|
29
|
+
## Git への追加(任意)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git add docs/project/03-domain/01-domain-model.md
|
|
33
|
+
git status
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
推奨コミットメッセージ:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
docs: ドメインモデル図(Context Map)の追加
|
|
40
|
+
|
|
41
|
+
- Bounded Context 間の関係を Mermaid 図で視覚化
|
|
42
|
+
- 戦略的分類に基づく色分けを追加
|
|
43
|
+
```
|