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.
Files changed (75) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +60 -22
  3. package/bin/cli.js +3 -7
  4. package/package.json +1 -1
  5. package/skills/a-001-setup-doc-structure/SKILL.md +67 -100
  6. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +52 -0
  7. package/skills/a-002-initialize-project/SKILL.md +124 -289
  8. package/skills/a-002-initialize-project/examples/nfr-baseline.md +38 -0
  9. package/skills/a-002-initialize-project/reference/hearing-questions.md +92 -0
  10. package/skills/a-002-initialize-project/reference/structure-check.md +48 -0
  11. package/skills/a-003-create-scenarios/SKILL.md +99 -142
  12. package/skills/a-003-create-scenarios/examples/gherkin-templates.md +71 -0
  13. package/skills/a-003-create-scenarios/reference/structure-check.md +46 -0
  14. package/skills/a-004-define-domain-model/SKILL.md +99 -144
  15. package/skills/a-004-define-domain-model/reference/event-storming-guide.md +71 -0
  16. package/skills/a-005-create-domain-diagram/SKILL.md +94 -120
  17. package/skills/a-005-create-domain-diagram/examples/mermaid-templates.md +73 -0
  18. package/skills/a-005-create-domain-diagram/reference/structure-check.md +43 -0
  19. package/skills/a-006-review-requirements-domain/SKILL.md +85 -144
  20. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +58 -0
  21. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +60 -0
  22. package/skills/a-007-define-tech-stack/SKILL.md +102 -130
  23. package/skills/a-007-define-tech-stack/examples/stack-interview.md +83 -0
  24. package/skills/a-007-define-tech-stack/reference/structure-check.md +51 -0
  25. package/skills/a-008-define-repository-structure/SKILL.md +99 -129
  26. package/skills/a-008-define-repository-structure/examples/structure-templates.md +108 -0
  27. package/skills/a-008-define-repository-structure/reference/structure-check.md +55 -0
  28. package/skills/a-009-define-screen-design/SKILL.md +106 -130
  29. package/skills/a-009-define-screen-design/examples/screen-templates.md +66 -0
  30. package/skills/a-009-define-screen-design/reference/structure-check.md +47 -0
  31. package/skills/a-010-define-design-system/SKILL.md +134 -212
  32. package/skills/a-010-define-design-system/examples/css-tokens.md +71 -0
  33. package/skills/a-010-define-design-system/reference/component-catalog.md +44 -0
  34. package/skills/a-011-define-data-model/SKILL.md +121 -134
  35. package/skills/a-011-define-data-model/examples/erd-templates.md +108 -0
  36. package/skills/a-011-define-data-model/reference/structure-check.md +56 -0
  37. package/skills/a-012-define-api-spec/SKILL.md +108 -132
  38. package/skills/a-012-define-api-spec/examples/api-templates.md +117 -0
  39. package/skills/a-012-define-api-spec/reference/structure-check.md +49 -0
  40. package/skills/a-013-define-architecture/SKILL.md +101 -128
  41. package/skills/a-013-define-architecture/examples/architecture-templates.md +98 -0
  42. package/skills/a-013-define-architecture/reference/structure-check.md +53 -0
  43. package/skills/a-014-define-infrastructure/SKILL.md +113 -130
  44. package/skills/a-014-define-infrastructure/examples/infrastructure-templates.md +97 -0
  45. package/skills/a-014-define-infrastructure/reference/structure-check.md +63 -0
  46. package/skills/a-015-review-design/SKILL.md +88 -140
  47. package/skills/a-015-review-design/examples/review-report-template.md +59 -0
  48. package/skills/a-015-review-design/reference/consistency-checks.md +47 -0
  49. package/skills/b-001-create-task-directory/SKILL.md +68 -78
  50. package/skills/b-001-create-task-directory/examples/naming-convention.md +39 -0
  51. package/skills/b-002-create-task-definition/SKILL.md +115 -172
  52. package/skills/b-002-create-task-definition/examples/hearing-and-criteria.md +49 -0
  53. package/skills/b-002-create-task-definition/reference/structure-check.md +42 -0
  54. package/skills/b-003-create-task-research/SKILL.md +130 -454
  55. package/skills/b-003-create-task-research/examples/research-tables.md +63 -0
  56. package/skills/b-003-create-task-research/reference/investigation-guide.md +106 -0
  57. package/skills/b-004-create-task-implementation/SKILL.md +97 -100
  58. package/skills/b-004-create-task-implementation/examples/phase-step-template.md +57 -0
  59. package/skills/b-004-create-task-implementation/reference/structure-check.md +34 -0
  60. package/skills/b-005-review-task/SKILL.md +117 -324
  61. package/skills/b-005-review-task/examples/review-report-template.md +62 -0
  62. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -0
  63. package/skills/b-005-review-task/reference/consistency-checks.md +69 -0
  64. package/skills/c-001-implement-task/SKILL.md +186 -521
  65. package/skills/c-001-implement-task/examples/commit-and-pr.md +92 -0
  66. package/skills/c-001-implement-task/examples/task-list-format.md +50 -0
  67. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -0
  68. package/skills/c-001-implement-task/reference/validation-loop.md +66 -0
  69. package/skills/c-002-update-documentation/SKILL.md +159 -853
  70. package/skills/c-002-update-documentation/examples/project-doc-updates.md +190 -0
  71. package/skills/c-002-update-documentation/examples/task-doc-updates.md +102 -0
  72. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +100 -0
  73. package/templates/tasks/task-template/a-definition.md +1 -1
  74. package/templates/tasks/task-template/b-research.md +1 -1
  75. package/templates/tasks/task-template/c-implementation.md +2 -2
@@ -1,142 +1,99 @@
1
- ---
2
- name: a-003-create-scenarios
3
- description: ユーザーストーリーから具体的なGherkinシナリオを作成し、BDD形式で振る舞いを定義するワークフロー
4
- ---
5
-
6
- # CreateScenarios (a-003)
7
-
8
- ## 目的
9
-
10
- - ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin形式で記述する。
11
- - Given-When-Then構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
12
- - ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
13
-
14
- ## 前提
15
-
16
- - `docs/project/requirements/05-user-stories.md` が作成されていること(先に `InitializeProject` (a-002) を実行)。
17
- - `docs/project/behavior/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) を実行)。
18
- - ユーザーが各機能の具体的な動作例を説明できること。
19
-
20
- ## 手順
21
-
22
- ### 1. ディレクトリと前提条件の確認
23
-
24
- - `docs/project/behavior/` ディレクトリの存在を確認:
25
-
26
- ```bash
27
- ls -la docs/project/behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- - ディレクトリが存在しない場合:
31
- - ユーザーに通知:「`docs/project/behavior/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してください。」
32
-
33
- - ユーザーストーリーの確認:
34
- - `docs/project/requirements/05-user-stories.md` を読み込み、内容を確認する。
35
-
36
- ### 2. テンプレートの準備
37
-
38
- - テンプレートをコピーして作業用ファイルを作成する:
39
-
40
- ```bash
41
- SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
42
- cp "$SCRIPT_DIR/templates/project/02-behavior/01-scenarios.md" "docs/project/behavior/01-scenarios.md"
43
- ```
44
-
45
- ### 3. 分析と提案
46
-
47
- - `docs/project/requirements/05-user-stories.md` を分析し、シナリオ作成対象の機能(Feature)をリストアップする。
48
- - 各機能について、考えられるシナリオ案(ハッピーパスと代表的なエラーケース)をユーザーに提案する:
49
- - 「以下のユーザーストーリーに基づいて、シナリオを作成します:」
50
- - 「機能: [機能名] (US-XXX)」
51
- - 「シナリオ案1: [ハッピーパス]」
52
- - 「シナリオ案2: [エラーケース]」
53
-
54
- ### 4. ヒアリングと記入
55
-
56
- 各機能について、以下の順序でヒアリングを行い、`docs/project/behavior/01-scenarios.md` を更新する。
57
-
58
- #### 4.1 Feature情報の定義
59
-
60
- - 機能名、説明、対応するユーザーストーリー(As a/I want/So that)を記入する。
61
- - **Background**(共通前提条件)がある場合は定義する。
62
-
63
- #### 4.2 シナリオの作成(ハッピーパス)
64
-
65
- - 「最も基本的な成功シナリオを教えてください。」
66
- - **Given**(前提)、**When**(アクション)、**Then**(結果)を確認し、Gherkin形式で記述する。
67
- - UI操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
68
-
69
- #### 4.3 エラーケース・境界値の作成
70
-
71
- - 「エラーケースや境界値(エッジケース)はありますか?」
72
- - 必要に応じて **Scenario Outline**(パラメータ化)の使用を提案し、Examplesテーブルを作成する。
73
-
74
- #### 4.4 タグ付け
75
-
76
- - シナリオID(`@SC-XXX`)を採番する。
77
- - 適切なタグ(`@smoke`, `@happy-path`, `@error-handling` など)を付与する。
78
-
79
- ### 5. シナリオ一覧テーブルの更新
80
-
81
- - ドキュメント冒頭の「シナリオ一覧」テーブルを更新し、作成した全シナリオのID、機能、シナリオ名、優先度を記載する。
82
-
83
- ### 6. レビューと確認
84
-
85
- - 作成したシナリオをユーザーに提示し、以下を確認:
86
- - 「シナリオは実際の動作を正しく表現していますか?」
87
- - 「漏れているケースはありませんか?」
88
- - 「非技術者でも理解できる表現になっていますか?」
89
-
90
- ### 7. 完了条件と構造の確認
91
-
92
- - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
93
-
94
- 1. **構造確認**:
95
-
96
- ```bash
97
- # シナリオ一覧テーブルの確認
98
- grep "| シナリオID | 機能 |" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Table Header"
99
- # Feature定義の確認
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
- # DefineDomainModel (a-004)
7
-
8
- ## 目的
9
-
10
- - Event Storming形式でドメインモデルを体系的に定義する。
11
- - ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
12
- - Bounded Context(境界づけられたコンテキスト)を特定し、各コンテキスト内のActors、Commands、Events、Policies、Aggregatesを明確化する。
13
-
14
- ## 前提
15
-
16
- - `docs/project/behavior/01-scenarios.md` が作成されていること(先に `CreateScenarios` (a-003) を実行)。
17
- - `docs/project/domain/` ディレクトリが存在すること(存在しない場合は先に `SetupDocStructure` (a-001) を実行)。
18
- - ドメインエキスパート(ビジネス側の専門家)と協力できること。
19
-
20
- ## 手順
21
-
22
- ### 1. ディレクトリと前提条件の確認
23
-
24
- - `docs/project/domain/` ディレクトリの存在を確認:
25
-
26
- ```bash
27
- ls -la docs/project/domain/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- - ディレクトリが存在しない場合:
31
- - ユーザーに通知:「`docs/project/domain/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してください。」
32
-
33
- - シナリオの確認:
34
- - `docs/project/behavior/01-scenarios.md` を読み込み、内容を確認する。
35
-
36
- ### 2. テンプレートの準備
37
-
38
- - テンプレートをコピーして作業用ファイルを作成する:
39
-
40
- ```bash
41
- SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
42
- cp "$SCRIPT_DIR/templates/project/03-domain/01-domain-model.md" "docs/project/domain/01-domain-model.md"
43
- cp "$SCRIPT_DIR/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/domain/02-ubiquitous-language.md"
44
- ```
45
-
46
- ### 3. Bounded Context の特定
47
-
48
- - シナリオとユーザーストーリーを分析し、Bounded Context(ビジネス領域)を提案する。
49
- - 「シナリオから、以下のBounded Contextが考えられます:[コンテキスト一覧]」
50
- - 各Contextの戦略的分類(Core/Supporting/Generic)を確認する。
51
-
52
- ### 4. 各Bounded Context のドメインモデル定義
53
-
54
- 各Bounded Contextについて、以下の要素をヒアリング・定義し、`01-domain-model.md` を更新する。
55
- **同時に、新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記する。**
56
-
57
- #### 4.1 概要とアクター
58
-
59
- - Contextの責務と主要な責任
60
- - 登場するアクター(Actors)とその役割
61
-
62
- #### 4.2 コマンドとイベント (Event Storming)
63
-
64
- - アクターが実行するアクション(**Commands**、命令形)
65
- - その結果発生するビジネス上の出来事(**Domain Events**、過去形)
66
- - 自動化ルール(**Policies**、"Whenever ..., then ...")
67
-
68
- #### 4.3 集約とモデル
69
-
70
- - 一貫性を保つエンティティの塊(**Aggregates**)
71
- - 画面表示用の参照モデル(**Read Models**)
72
- - 連携する外部システム(**External Systems**)
73
-
74
- ### 5. ユビキタス言語の洗練
75
-
76
- - `02-ubiquitous-language.md` を見直し、以下の点を確認・修正する:
77
- - 用語の重複や曖昧さがないか
78
- - 禁止用語(Data, Processなど曖昧な語)が含まれていないか
79
- - 定義が具体的で、Context内での意味に限定されているか
80
-
81
- ### 6. Context Map の定義
82
-
83
- - 各Context間の関係性(Customer-Supplier, Shared Kernelなど)を定義し、`01-domain-model.md` のContext Mapセクション(Mermaid図)を更新する。
84
-
85
- ### 7. レビューと確認
86
-
87
- - 作成したドキュメントを提示し、以下を確認する:
88
- - 「ビジネス用語は正確に表現されていますか?」
89
- - 「Aggregateの境界は適切ですか?」
90
- - 「ユビキタス言語の定義は明確ですか?」
91
-
92
- ### 8. 完了条件と構造の確認
93
-
94
- - 以下の完了条件を満たしているか、コマンドとチェックリストで確認してください:
95
-
96
- 1. **構造確認**:
97
-
98
- ```bash
99
- # Bounded Context定義の確認
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 パターン、構造確認コマンド