yodogawa 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +60 -22
- package/bin/cli.js +3 -7
- package/package.json +1 -1
- package/skills/a-001-setup-doc-structure/SKILL.md +67 -100
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +52 -0
- package/skills/a-002-initialize-project/SKILL.md +124 -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 +68 -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 +130 -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 +97 -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,142 +1,99 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-003-create-scenarios
|
|
3
|
-
description:
|
|
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 "Feature:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Feature definition"
|
|
101
|
-
# Scenario定義の確認
|
|
102
|
-
grep "Scenario:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Scenario definition"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
2. **チェックリスト**:
|
|
106
|
-
- [ ] `docs/project/behavior/01-scenarios.md` が作成されている
|
|
107
|
-
- [ ] シナリオ一覧テーブルが更新されている
|
|
108
|
-
- [ ] 各FeatureがGherkin形式で記述されている
|
|
109
|
-
- [ ] 正常系と異常系のシナリオが網羅されている
|
|
110
|
-
|
|
111
|
-
### 8. Git への追加(オプション)
|
|
112
|
-
|
|
113
|
-
- ユーザーに確認:「作成したシナリオドキュメントを Git に追加しますか?」
|
|
114
|
-
- 「はい」の場合、以下を実行:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
git add docs/project/behavior/
|
|
118
|
-
git status
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
- 推奨コミットメッセージ:
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
docs: 振る舞い仕様(シナリオ)の作成
|
|
125
|
-
|
|
126
|
-
- ユーザーストーリーに基づくGherkinシナリオを追加
|
|
127
|
-
- 正常系・異常系・境界値ケースを定義
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## 完了条件
|
|
131
|
-
|
|
132
|
-
- `docs/project/behavior/01-scenarios.md` が作成されている。
|
|
133
|
-
- ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
|
|
134
|
-
- シナリオ一覧テーブルがメンテナンスされている。
|
|
135
|
-
- ユーザーが内容を承認している。
|
|
136
|
-
|
|
137
|
-
## エスカレーション
|
|
138
|
-
|
|
139
|
-
- ユーザーストーリーが不明確でシナリオ化できない場合:
|
|
140
|
-
- 「ユーザーストーリーの詳細化が必要です。`InitializeProject` ワークフローに戻って要件を明確にしましょう。」と提案する。
|
|
141
|
-
- 実装詳細への依存が強すぎる場合:
|
|
142
|
-
- 「UI操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」とリファクタリングを提案する。
|
|
1
|
+
---
|
|
2
|
+
name: a-003-create-scenarios
|
|
3
|
+
description: ユーザーストーリーから Gherkin 形式のシナリオを生成し、BDD で振る舞いを定義する。要件定義後、ドメインモデル設計前の振る舞い明確化に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CreateScenarios (a-003)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin 形式で記述する。
|
|
13
|
+
- Given-When-Then 構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
|
|
14
|
+
- ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/requirements/05-user-stories.md` が作成されていること(`/a-002-initialize-project` 実行済み)。
|
|
19
|
+
- `docs/project/behavior/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
|
|
20
|
+
- ユーザーが各機能の具体的な動作例を説明できること。
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ディレクトリと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`docs/project/requirements/05-user-stories.md` を読み込み、シナリオ化対象を把握する。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/02-behavior/01-scenarios.md" "docs/project/behavior/01-scenarios.md"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. 分析と提案
|
|
40
|
+
|
|
41
|
+
ユーザーストーリーを機能(Feature)単位にグルーピングし、ハッピーパスと代表的なエラーケースの案を提示。
|
|
42
|
+
|
|
43
|
+
- 「機能: [機能名] (US-XXX)」
|
|
44
|
+
- 「シナリオ案1: [ハッピーパス] / シナリオ案2: [エラーケース]」
|
|
45
|
+
|
|
46
|
+
### 4. ヒアリングと記入
|
|
47
|
+
|
|
48
|
+
機能ごとに以下を詰めて `docs/project/behavior/01-scenarios.md` を更新する。Gherkin 記述例は [examples/gherkin-templates.md](examples/gherkin-templates.md) を参照。
|
|
49
|
+
|
|
50
|
+
- **Feature 情報**: 機能名、As a/I want/So that、Background(共通前提)
|
|
51
|
+
- **ハッピーパス**: Given-When-Then で最も基本的な成功シナリオ
|
|
52
|
+
- **エラーケース・境界値**: 必要に応じて Scenario Outline(Examples テーブル)を使用
|
|
53
|
+
- **タグ付け**: `@SC-XXX` ID 採番、`@smoke` `@happy-path` `@error-handling` 等
|
|
54
|
+
|
|
55
|
+
UI 操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
|
|
56
|
+
|
|
57
|
+
### 5. シナリオ一覧テーブルの更新
|
|
58
|
+
|
|
59
|
+
ドキュメント冒頭の一覧テーブルに、全シナリオの ID・機能・シナリオ名・優先度を記載する。テーブル例は [examples/gherkin-templates.md](examples/gherkin-templates.md#シナリオ一覧テーブル例) を参照。
|
|
60
|
+
|
|
61
|
+
### 6. レビューと確認
|
|
62
|
+
|
|
63
|
+
ユーザーに提示し、実際の動作の正確性、抜け漏れ、非技術者への理解可能性を確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。
|
|
64
|
+
|
|
65
|
+
### 7. 構造チェック
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
grep "Feature:" docs/project/behavior/01-scenarios.md \
|
|
69
|
+
&& grep "Scenario:" docs/project/behavior/01-scenarios.md \
|
|
70
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
詳細なチェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
74
|
+
|
|
75
|
+
### 8. Git への追加(任意)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git add docs/project/behavior/
|
|
79
|
+
git commit -m "docs: 振る舞い仕様(シナリオ)の作成"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
|
|
83
|
+
|
|
84
|
+
## 完了条件
|
|
85
|
+
|
|
86
|
+
- `docs/project/behavior/01-scenarios.md` が作成されている。
|
|
87
|
+
- ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
|
|
88
|
+
- シナリオ一覧テーブルがメンテナンスされている。
|
|
89
|
+
- ユーザーが内容を承認している。
|
|
90
|
+
|
|
91
|
+
## エスカレーション
|
|
92
|
+
|
|
93
|
+
- **ユーザーストーリーが不明確でシナリオ化できない**: 「`/a-002-initialize-project` に戻って要件を明確にしましょう。」
|
|
94
|
+
- **実装詳細への依存が強すぎる**: 「UI 操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」
|
|
95
|
+
|
|
96
|
+
## 参考
|
|
97
|
+
|
|
98
|
+
- [examples/gherkin-templates.md](examples/gherkin-templates.md) — Feature / Scenario / Scenario Outline の記述例、タグ付けガイド、一覧テーブル例
|
|
99
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー観点、Git 追加例
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Gherkin シナリオ記述例とタグ
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜5 で使用する Gherkin 形式のテンプレートとタグ付けのサンプル。
|
|
4
|
+
|
|
5
|
+
## Feature 定義の形式
|
|
6
|
+
|
|
7
|
+
```gherkin
|
|
8
|
+
Feature: [機能名]
|
|
9
|
+
As a [役割]
|
|
10
|
+
I want [やりたいこと]
|
|
11
|
+
So that [得られる価値]
|
|
12
|
+
|
|
13
|
+
Background:
|
|
14
|
+
Given [共通の前提条件]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## ハッピーパスのシナリオ例
|
|
18
|
+
|
|
19
|
+
```gherkin
|
|
20
|
+
@SC-001 @smoke @happy-path
|
|
21
|
+
Scenario: 正常にログインできる
|
|
22
|
+
Given ユーザーは登録済みである
|
|
23
|
+
When 正しいメールアドレスとパスワードを入力する
|
|
24
|
+
And ログインボタンを押下する
|
|
25
|
+
Then ダッシュボード画面が表示される
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- UI 操作(「ボタンをクリック」)ではなく、ユーザーの意図(「ログインする」)を優先する。
|
|
29
|
+
- 複数ステップは `And` / `But` で繋ぐ。
|
|
30
|
+
|
|
31
|
+
## エラーケース・境界値(Scenario Outline)
|
|
32
|
+
|
|
33
|
+
```gherkin
|
|
34
|
+
@SC-002 @error-handling
|
|
35
|
+
Scenario Outline: 不正な入力でログインに失敗する
|
|
36
|
+
Given ユーザーは登録済みである
|
|
37
|
+
When <email> と <password> を入力する
|
|
38
|
+
Then <message> が表示される
|
|
39
|
+
|
|
40
|
+
Examples:
|
|
41
|
+
| email | password | message |
|
|
42
|
+
| invalid@mail | correctPw1 | メール形式が不正です |
|
|
43
|
+
| test@example.com | | パスワードが必要です |
|
|
44
|
+
| test@example.com | wrong | 認証に失敗しました |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## タグ付けガイド
|
|
48
|
+
|
|
49
|
+
- `@SC-XXX`: シナリオ ID(必須)
|
|
50
|
+
- `@smoke`: リリース前の最小確認対象
|
|
51
|
+
- `@happy-path`: 正常系
|
|
52
|
+
- `@error-handling`: エラーケース
|
|
53
|
+
- `@regression`: 実装済み機能のリグレッション
|
|
54
|
+
- 優先度別: `@high`, `@medium`, `@low`
|
|
55
|
+
|
|
56
|
+
## シナリオ一覧テーブル例
|
|
57
|
+
|
|
58
|
+
| シナリオID | 機能 | シナリオ名 | 優先度 |
|
|
59
|
+
|:--|:--|:--|:--|
|
|
60
|
+
| SC-001 | 認証 | 正常ログイン | High |
|
|
61
|
+
| SC-002 | 認証 | 入力エラー | High |
|
|
62
|
+
| SC-003 | 登録 | メール認証完了 | Medium |
|
|
63
|
+
|
|
64
|
+
## コミットメッセージ例
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
docs: 振る舞い仕様(シナリオ)の作成
|
|
68
|
+
|
|
69
|
+
- ユーザーストーリーに基づく Gherkin シナリオを追加
|
|
70
|
+
- 正常系・異常系・境界値ケースを定義
|
|
71
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 構造チェックとレビュー観点
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順6〜7 で使う構造確認コマンドとレビュー観点。
|
|
4
|
+
|
|
5
|
+
## セクション存在確認
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# シナリオ一覧テーブルの確認
|
|
9
|
+
grep "| シナリオID | 機能 |" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Table Header"
|
|
10
|
+
# Feature 定義の確認
|
|
11
|
+
grep "Feature:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Feature definition"
|
|
12
|
+
# Scenario 定義の確認
|
|
13
|
+
grep "Scenario:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Scenario definition"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## チェックリスト
|
|
17
|
+
|
|
18
|
+
- [ ] `docs/project/behavior/01-scenarios.md` が作成されている
|
|
19
|
+
- [ ] シナリオ一覧テーブルが更新されている
|
|
20
|
+
- [ ] 各 Feature が Gherkin 形式で記述されている
|
|
21
|
+
- [ ] 正常系と異常系のシナリオが網羅されている
|
|
22
|
+
- [ ] Empty State や境界値も考慮されている
|
|
23
|
+
- [ ] タグ(@SC-XXX, @smoke 等)が付与されている
|
|
24
|
+
|
|
25
|
+
## レビュー確認質問
|
|
26
|
+
|
|
27
|
+
- 「シナリオは実際の動作を正しく表現していますか?」
|
|
28
|
+
- 「漏れているケース(エラー、境界値)はありませんか?」
|
|
29
|
+
- 「非技術者でも理解できる表現になっていますか?」
|
|
30
|
+
- 「UI 操作に依存せず、ユーザーの意図を表現できていますか?」
|
|
31
|
+
|
|
32
|
+
## Git への追加(任意)
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git add docs/project/behavior/
|
|
36
|
+
git status
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
推奨コミットメッセージ:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
docs: 振る舞い仕様(シナリオ)の作成
|
|
43
|
+
|
|
44
|
+
- ユーザーストーリーに基づく Gherkin シナリオを追加
|
|
45
|
+
- 正常系・異常系・境界値ケースを定義
|
|
46
|
+
```
|
|
@@ -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/behavior/01-scenarios.md` が作成されている(`/a-003-create-scenarios` 実行済み)
|
|
19
|
+
- `docs/project/domain/` ディレクトリが存在(なければ `/a-001-setup-doc-structure`)
|
|
20
|
+
- ドメインエキスパートと協力できる
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ディレクトリと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/domain/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
存在しなければ `/a-001-setup-doc-structure` を促す。`docs/project/behavior/01-scenarios.md` を読み込み内容確認。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/01-domain-model.md" "docs/project/domain/01-domain-model.md"
|
|
37
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/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/domain/
|
|
80
|
+
git status
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
コミットメッセージ: [reference/event-storming-guide.md](reference/event-storming-guide.md#git-コミットメッセージ)
|
|
84
|
+
|
|
85
|
+
## 完了条件
|
|
86
|
+
|
|
87
|
+
- `docs/project/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 パターン、構造確認コマンド
|