yodogawa 2.1.3 → 2.3.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 (89) hide show
  1. package/CHANGELOG.md +140 -94
  2. package/LICENSE +1 -1
  3. package/README.md +362 -263
  4. package/bin/checks/id-trace.js +137 -0
  5. package/bin/checks/links.js +59 -0
  6. package/bin/checks/placeholder.js +132 -0
  7. package/bin/checks/structure.js +127 -0
  8. package/bin/cli.js +51 -67
  9. package/bin/commands/doctor.js +128 -0
  10. package/bin/commands/install.js +58 -0
  11. package/bin/commands/new-task.js +117 -0
  12. package/bin/lib/check-cli.js +19 -0
  13. package/bin/lib/findings.js +31 -0
  14. package/bin/lib/markdown.js +103 -0
  15. package/bin/lib/project-spec.js +138 -0
  16. package/bin/lib/walk-md.js +23 -0
  17. package/package.json +68 -55
  18. package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
  19. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
  20. package/skills/a-002-initialize-project/SKILL.md +145 -118
  21. package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
  22. package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
  23. package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
  24. package/skills/a-002b-define-user-stories/SKILL.md +80 -0
  25. package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
  26. package/skills/a-003-create-scenarios/SKILL.md +97 -96
  27. package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
  28. package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
  29. package/skills/a-004-define-domain-model/SKILL.md +107 -98
  30. package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
  31. package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
  32. package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
  33. package/skills/a-006-review-requirements-domain/SKILL.md +79 -29
  34. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +40 -25
  35. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +67 -24
  36. package/skills/a-007-define-tech-stack/SKILL.md +99 -99
  37. package/skills/a-008-define-repository-structure/SKILL.md +96 -96
  38. package/skills/a-009-define-screen-design/SKILL.md +103 -103
  39. package/skills/a-010-define-design-system/SKILL.md +130 -130
  40. package/skills/a-011-define-data-model/SKILL.md +118 -118
  41. package/skills/a-012-define-api-spec/SKILL.md +105 -105
  42. package/skills/a-013-define-architecture/SKILL.md +98 -98
  43. package/skills/a-014-define-infrastructure/SKILL.md +118 -110
  44. package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
  45. package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
  46. package/skills/a-015-review-design/SKILL.md +15 -11
  47. package/skills/a-015-review-design/examples/review-report-template.md +17 -29
  48. package/skills/a-015-review-design/reference/consistency-checks.md +5 -3
  49. package/skills/b-001-create-task-directory/SKILL.md +68 -68
  50. package/skills/b-002-create-task-definition/SKILL.md +114 -114
  51. package/skills/b-003-create-task-research/SKILL.md +130 -128
  52. package/skills/b-004-create-task-implementation/SKILL.md +98 -98
  53. package/skills/b-005-review-task/SKILL.md +40 -24
  54. package/skills/b-005-review-task/examples/review-report-template.md +25 -35
  55. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  56. package/skills/b-005-review-task/reference/consistency-checks.md +70 -11
  57. package/skills/c-001-implement-task/SKILL.md +186 -186
  58. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  59. package/skills/c-002-update-documentation/SKILL.md +159 -159
  60. package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
  61. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
  62. package/skills/d-001-review-retrospective/SKILL.md +93 -0
  63. package/skills/d-001-review-retrospective/examples/retrospective-report-template.md +50 -0
  64. package/skills/d-001-review-retrospective/reference/friction-point-mapping.md +30 -0
  65. package/templates/LESSONS.md +15 -0
  66. package/templates/project/01-requirements/01-product-brief.md +186 -0
  67. package/templates/project/01-requirements/02-mvp-scope.md +64 -0
  68. package/templates/project/01-requirements/03-parking-lot.md +29 -0
  69. package/templates/project/01-requirements/05-user-stories.md +28 -124
  70. package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
  71. package/templates/project/02-behavior/01-core-scenarios.md +80 -0
  72. package/templates/project/03-domain/01-domain-model.md +120 -339
  73. package/templates/project/03-domain/01-domain-sketch.md +90 -0
  74. package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
  75. package/templates/project/04-design/01-tech-stack.md +367 -367
  76. package/templates/project/04-design/02-repository-structure.md +391 -391
  77. package/templates/project/04-design/03-screen-design.md +596 -596
  78. package/templates/project/04-design/04-design-system.md +261 -261
  79. package/templates/project/04-design/05-data-model.md +211 -211
  80. package/templates/project/04-design/06-api-spec.md +226 -226
  81. package/templates/project/04-design/07-architecture.md +183 -183
  82. package/templates/project/04-design/08-infrastructure.md +180 -180
  83. package/templates/project/AI_CONTEXT.md +55 -0
  84. package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
  85. package/templates/tasks/task-template/a-definition.md +143 -143
  86. package/templates/tasks/task-template/b-research.md +185 -185
  87. package/templates/tasks/task-template/c-implementation.md +200 -200
  88. package/templates/project/01-requirements/01-system-overview.md +0 -49
  89. package/templates/project/01-requirements/03-features-planned.md +0 -75
@@ -1,130 +1,130 @@
1
- ---
2
- name: a-010-define-design-system
3
- description: カラー・タイポグラフィ・スペーシング・コンポーネントスタイルを含むデザインシステムを定義する。画面設計後、UI 実装のスタイル基盤を固める際に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # DefineDesignSystem (a-010)
9
-
10
- ## 目的
11
-
12
- - プロジェクト全体で一貫したビジュアルデザインを実現するデザインシステムを定義する。
13
- - カラーパレット、タイポグラフィ、スペーシング、コンポーネントスタイルを標準化する。
14
- - デザイナーと開発者が共通言語として使える仕様書を作成する。
15
-
16
- ## 前提
17
-
18
- - `docs/project/04-design/03-screen-design.md` が作成されている(画面設計完了)
19
- - `docs/project/04-design/01-tech-stack.md` が作成されている(UI フレームワーク決定)
20
-
21
- ## 手順
22
-
23
- ### 1. 既存ドキュメントの確認
24
-
25
- - `docs/project/04-design/01-tech-stack.md` — 使用する CSS フレームワーク(Tailwind, MUI 等)
26
- - `docs/project/04-design/03-screen-design.md` — 画面設計とレスポンシブポリシー
27
- - ブランドガイドラインがあれば参照
28
-
29
- ### 2. テンプレートの準備
30
-
31
- このスキルの配置ディレクトリ(`skills/a-010-define-design-system/`)を起点に、相対パス `../../templates/project/04-design/04-design-system.md` を Read で読み込み、その内容を `docs/project/04-design/04-design-system.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
32
-
33
- ### 3. カラーパレットの定義
34
-
35
- - **Primary Colors**: ブランドカラー(1〜2色)
36
- - **Secondary Colors**: アクセントカラー
37
- - **Semantic Colors**: Success, Warning, Error, Info
38
- - **Neutral Colors**: グレースケール(背景、テキスト、ボーダー)
39
- - **Dark Mode 対応**: 必要に応じてダークテーマも定義
40
-
41
- CSS 変数のサンプルは [examples/css-tokens.md](examples/css-tokens.md#カラーパレット) を参照。
42
-
43
- ### 4. タイポグラフィの定義
44
-
45
- - **フォントファミリー**: 見出し用、本文用、コード用
46
- - **フォントサイズスケール**: xs, sm, base, lg, xl, 2xl, 3xl, 4xl
47
- - **行間**: tight, normal, relaxed
48
- - **フォントウェイト**: normal, medium, semibold, bold
49
-
50
- サンプル: [examples/css-tokens.md](examples/css-tokens.md#タイポグラフィ)
51
-
52
- ### 5. スペーシングシステムの定義
53
-
54
- 基本単位は 4px または 8px ベース。スケール・用途・サンプルは [examples/css-tokens.md](examples/css-tokens.md#スペーシング) と [reference/component-catalog.md](reference/component-catalog.md#スペーシングの設計方針) を参照。
55
-
56
- ### 6. コンポーネントスタイルの定義
57
-
58
- 以下のコンポーネントについて、バリアントとステートを定義:
59
-
60
- - ボタン
61
- - フォーム要素(Input, Textarea, Select, Checkbox, Radio)
62
- - カード / コンテナ
63
- - その他(Badge, Tag, Avatar, Tooltip, Modal)
64
-
65
- 詳細なバリアント・ステート一覧は [reference/component-catalog.md](reference/component-catalog.md#コンポーネントスタイル) を参照。
66
-
67
- ### 7. アイコン・イラストガイドライン
68
-
69
- - アイコンライブラリ(Lucide / Heroicons / Material Icons 等)の選定
70
- - サイズ規定とスタイル統一(Outline / Filled のいずれか)
71
-
72
- 詳細: [reference/component-catalog.md](reference/component-catalog.md#アイコンガイドライン)
73
-
74
- ### 8. アニメーション・トランジション
75
-
76
- - Duration: fast(150ms), normal(300ms), slow(500ms)
77
- - Easing: ease-in-out をデフォルトに
78
-
79
- サンプル: [examples/css-tokens.md](examples/css-tokens.md#アニメーション)
80
-
81
- ### 9. ドキュメント作成
82
-
83
- `docs/project/04-design/04-design-system.md` に以下を必須セクションとして記入:
84
-
85
- - カラーパレット
86
- - タイポグラフィ
87
- - スペーシング
88
- - コンポーネントスタイル(主要なもの)
89
-
90
- ### 10. 完了条件の確認
91
-
92
- - [ ] `04-design-system.md` が作成されている
93
- - [ ] カラーパレットが定義されている
94
- - [ ] タイポグラフィスケールが定義されている
95
- - [ ] スペーシングシステムが定義されている
96
- - [ ] 主要コンポーネント(ボタン、フォーム)のスタイルが定義されている
97
-
98
- ### 11. Git への追加(オプション)
99
-
100
- ```bash
101
- git add docs/project/04-design/04-design-system.md
102
- git status
103
- ```
104
-
105
- 推奨コミットメッセージ:
106
-
107
- ```
108
- docs: デザインシステムの定義
109
-
110
- - カラーパレット、タイポグラフィ、スペーシングを定義
111
- - 主要コンポーネントのスタイルガイドを追加
112
- ```
113
-
114
- ## 完了条件
115
-
116
- - `docs/project/04-design/04-design-system.md` が作成されている
117
- - カラー・タイポグラフィ・スペーシングが定義されている
118
- - 主要コンポーネントのスタイルが定義されている
119
- - ユーザーが内容を承認している
120
-
121
- ## エスカレーション
122
-
123
- - **ブランドガイドラインなし**: 「ブランドカラーやフォントの指定がありますか?なければ汎用的なパレットを提案します。」
124
- - **CSS フレームワーク未定**: 「`/a-007-define-tech-stack` で技術スタックを先に決定しましょう。」
125
- - **コンポーネントが多すぎる**: 「まずはボタン・フォーム・カードから始め、必要に応じて拡張しましょう。」
126
-
127
- ## 参考
128
-
129
- - [examples/css-tokens.md](examples/css-tokens.md) — カラー/タイポ/スペーシング/アニメーションの CSS サンプル
130
- - [reference/component-catalog.md](reference/component-catalog.md) — コンポーネント・アイコン・アニメーションの標準仕様
1
+ ---
2
+ name: a-010-define-design-system
3
+ description: カラー・タイポグラフィ・スペーシング・コンポーネントスタイルを含むデザインシステムを定義する。画面設計後、UI 実装のスタイル基盤を固める際に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # DefineDesignSystem (a-010)
9
+
10
+ ## 目的
11
+
12
+ - プロジェクト全体で一貫したビジュアルデザインを実現するデザインシステムを定義する。
13
+ - カラーパレット、タイポグラフィ、スペーシング、コンポーネントスタイルを標準化する。
14
+ - デザイナーと開発者が共通言語として使える仕様書を作成する。
15
+
16
+ ## 前提
17
+
18
+ - `docs/project/04-design/03-screen-design.md` が作成されている(画面設計完了)
19
+ - `docs/project/04-design/01-tech-stack.md` が作成されている(UI フレームワーク決定)
20
+
21
+ ## 手順
22
+
23
+ ### 1. 既存ドキュメントの確認
24
+
25
+ - `docs/project/04-design/01-tech-stack.md` — 使用する CSS フレームワーク(Tailwind, MUI 等)
26
+ - `docs/project/04-design/03-screen-design.md` — 画面設計とレスポンシブポリシー
27
+ - ブランドガイドラインがあれば参照
28
+
29
+ ### 2. テンプレートの準備
30
+
31
+ このスキルの配置ディレクトリ(`skills/a-010-define-design-system/`)を起点に、相対パス `../../templates/project/04-design/04-design-system.md` を Read で読み込み、その内容を `docs/project/04-design/04-design-system.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
32
+
33
+ ### 3. カラーパレットの定義
34
+
35
+ - **Primary Colors**: ブランドカラー(1〜2色)
36
+ - **Secondary Colors**: アクセントカラー
37
+ - **Semantic Colors**: Success, Warning, Error, Info
38
+ - **Neutral Colors**: グレースケール(背景、テキスト、ボーダー)
39
+ - **Dark Mode 対応**: 必要に応じてダークテーマも定義
40
+
41
+ CSS 変数のサンプルは [examples/css-tokens.md](examples/css-tokens.md#カラーパレット) を参照。
42
+
43
+ ### 4. タイポグラフィの定義
44
+
45
+ - **フォントファミリー**: 見出し用、本文用、コード用
46
+ - **フォントサイズスケール**: xs, sm, base, lg, xl, 2xl, 3xl, 4xl
47
+ - **行間**: tight, normal, relaxed
48
+ - **フォントウェイト**: normal, medium, semibold, bold
49
+
50
+ サンプル: [examples/css-tokens.md](examples/css-tokens.md#タイポグラフィ)
51
+
52
+ ### 5. スペーシングシステムの定義
53
+
54
+ 基本単位は 4px または 8px ベース。スケール・用途・サンプルは [examples/css-tokens.md](examples/css-tokens.md#スペーシング) と [reference/component-catalog.md](reference/component-catalog.md#スペーシングの設計方針) を参照。
55
+
56
+ ### 6. コンポーネントスタイルの定義
57
+
58
+ 以下のコンポーネントについて、バリアントとステートを定義:
59
+
60
+ - ボタン
61
+ - フォーム要素(Input, Textarea, Select, Checkbox, Radio)
62
+ - カード / コンテナ
63
+ - その他(Badge, Tag, Avatar, Tooltip, Modal)
64
+
65
+ 詳細なバリアント・ステート一覧は [reference/component-catalog.md](reference/component-catalog.md#コンポーネントスタイル) を参照。
66
+
67
+ ### 7. アイコン・イラストガイドライン
68
+
69
+ - アイコンライブラリ(Lucide / Heroicons / Material Icons 等)の選定
70
+ - サイズ規定とスタイル統一(Outline / Filled のいずれか)
71
+
72
+ 詳細: [reference/component-catalog.md](reference/component-catalog.md#アイコンガイドライン)
73
+
74
+ ### 8. アニメーション・トランジション
75
+
76
+ - Duration: fast(150ms), normal(300ms), slow(500ms)
77
+ - Easing: ease-in-out をデフォルトに
78
+
79
+ サンプル: [examples/css-tokens.md](examples/css-tokens.md#アニメーション)
80
+
81
+ ### 9. ドキュメント作成
82
+
83
+ `docs/project/04-design/04-design-system.md` に以下を必須セクションとして記入:
84
+
85
+ - カラーパレット
86
+ - タイポグラフィ
87
+ - スペーシング
88
+ - コンポーネントスタイル(主要なもの)
89
+
90
+ ### 10. 完了条件の確認
91
+
92
+ - [ ] `04-design-system.md` が作成されている
93
+ - [ ] カラーパレットが定義されている
94
+ - [ ] タイポグラフィスケールが定義されている
95
+ - [ ] スペーシングシステムが定義されている
96
+ - [ ] 主要コンポーネント(ボタン、フォーム)のスタイルが定義されている
97
+
98
+ ### 11. Git への追加(オプション)
99
+
100
+ ```bash
101
+ git add docs/project/04-design/04-design-system.md
102
+ git status
103
+ ```
104
+
105
+ 推奨コミットメッセージ:
106
+
107
+ ```
108
+ docs: デザインシステムの定義
109
+
110
+ - カラーパレット、タイポグラフィ、スペーシングを定義
111
+ - 主要コンポーネントのスタイルガイドを追加
112
+ ```
113
+
114
+ ## 完了条件
115
+
116
+ - `docs/project/04-design/04-design-system.md` が作成されている
117
+ - カラー・タイポグラフィ・スペーシングが定義されている
118
+ - 主要コンポーネントのスタイルが定義されている
119
+ - ユーザーが内容を承認している
120
+
121
+ ## エスカレーション
122
+
123
+ - **ブランドガイドラインなし**: 「ブランドカラーやフォントの指定がありますか?なければ汎用的なパレットを提案します。」
124
+ - **CSS フレームワーク未定**: 「`/a-007-define-tech-stack` で技術スタックを先に決定しましょう。」
125
+ - **コンポーネントが多すぎる**: 「まずはボタン・フォーム・カードから始め、必要に応じて拡張しましょう。」
126
+
127
+ ## 参考
128
+
129
+ - [examples/css-tokens.md](examples/css-tokens.md) — カラー/タイポ/スペーシング/アニメーションの CSS サンプル
130
+ - [reference/component-catalog.md](reference/component-catalog.md) — コンポーネント・アイコン・アニメーションの標準仕様
@@ -1,118 +1,118 @@
1
- ---
2
- name: a-011-define-data-model
3
- description: ドメインモデルと画面設計からデータベース構造(ERD・エンティティ・属性・リレーションシップ・制約)を定義する。画面設計後、永続化層を設計する際に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # DefineDataModel (a-011)
9
-
10
- ## 目的
11
-
12
- - ドメインモデル(Aggregates)と画面設計を基に、データベース構造を定義する。
13
- - エンティティ(テーブル)、属性(カラム)、リレーションシップを明確化する。
14
- - データ型、制約(NOT NULL、UNIQUE、CHECK)、インデックス戦略を決定する。
15
- - Mermaid ERD(Entity Relationship Diagram)で視覚化し、開発者間の認識を統一する。
16
-
17
- ## 前提
18
-
19
- - `docs/project/03-domain/01-domain-model.md` が作成されていること。
20
- - `docs/project/04-design/01-tech-stack.md` が作成されていること(DB 選定済み)。
21
- - `docs/project/04-design/03-screen-design.md` が作成されていること。
22
- - `docs/project/04-design/` ディレクトリが存在すること。
23
-
24
- ## 手順
25
-
26
- ### 1. ドキュメントと前提条件の確認
27
-
28
- 以下を読み込む:
29
-
30
- - `docs/project/03-domain/01-domain-model.md`
31
- - `docs/project/04-design/01-tech-stack.md`
32
- - `docs/project/04-design/03-screen-design.md`
33
-
34
- 不足があれば対応スキルの実行を促す。
35
-
36
- ### 2. テンプレートの準備
37
-
38
- このスキルの配置ディレクトリ(`skills/a-011-define-data-model/`)を起点に、相対パス `../../templates/project/04-design/05-data-model.md` を Read で読み込み、その内容を `docs/project/04-design/05-data-model.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
39
-
40
- ### 3. エンティティの抽出と提案
41
-
42
- - **ドメインモデルから**: Aggregate Root および内部エンティティを抽出
43
- - **画面設計から**: 表示・入力項目から必要なデータ構造(履歴、設定、ログ等)を抽出
44
- - 「[エンティティ名] (対応 Aggregate: [名前])」形式で一覧化
45
-
46
- エンティティ一覧の記述例は [examples/erd-templates.md](examples/erd-templates.md#エンティティ一覧テーブル) を参照。
47
-
48
- ### 4. 詳細定義(インタビュー)
49
-
50
- #### 4.1 基本定義
51
-
52
- - テーブル名(物理名)、論理名、説明
53
- - 主キー戦略(Auto Increment / UUID / CUID)— 選択ガイドは [examples/erd-templates.md](examples/erd-templates.md#主キー戦略) を参照
54
-
55
- #### 4.2 属性(カラム)
56
-
57
- - カラム名、データ型(DB 製品に合わせて具体化)
58
- - 制約(NOT NULL, UNIQUE, DEFAULT, CHECK)
59
- - 監査カラム(created_at, updated_at)の有無
60
-
61
- カラム定義の例は [examples/erd-templates.md](examples/erd-templates.md#カラム定義テンプレート) を参照。
62
-
63
- #### 4.3 リレーションシップ
64
-
65
- - 関連(1:1 / 1:N / N:M)
66
- - 外部キー制約(ON DELETE CASCADE / SET NULL / RESTRICT)— 選択基準は [examples/erd-templates.md](examples/erd-templates.md#外部キー削除動作の選択) を参照
67
-
68
- ### 5. ERD の作成と正規化
69
-
70
- - Mermaid ERD 形式で記述(テンプレートは [examples/erd-templates.md](examples/erd-templates.md#mermaid-erd-記述例) を参照)
71
- - 正規化(1NF-3NF)を確認。意図的な非正規化があれば理由を記録
72
- - インデックス戦略(検索頻度、UNIQUE、複合インデックス)を定義
73
-
74
- 正規化の目安は [reference/structure-check.md](reference/structure-check.md#正規化レベルの目安) を参照。
75
-
76
- ### 6. ドキュメント作成
77
-
78
- `docs/project/04-design/05-data-model.md` に以下を記入する:
79
-
80
- - エンティティ一覧
81
- - リレーションシップ定義
82
- - ERD(Mermaid)
83
- - インデックス戦略・非正規化の記録
84
-
85
- ### 7. 構造チェック
86
-
87
- ```bash
88
- grep "## エンティティ一覧" docs/project/04-design/05-data-model.md \
89
- && grep "\`\`\`mermaid" docs/project/04-design/05-data-model.md \
90
- && grep "## リレーションシップ" docs/project/04-design/05-data-model.md \
91
- && echo "OK" || echo "MISSING SECTION"
92
- ```
93
-
94
- 詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
95
-
96
- ### 8. Git への追加(任意)
97
-
98
- ```bash
99
- git add docs/project/04-design/05-data-model.md
100
- git commit -m "docs: データモデル(ERD)の定義"
101
- ```
102
-
103
- ## 完了条件
104
-
105
- - `docs/project/04-design/05-data-model.md` が作成されている。
106
- - データベーススキーマ(テーブル、カラム、型、制約)が定義されている。
107
- - エンティティ間の関係性が可視化(ERD)されている。
108
- - ユーザーが内容を承認している。
109
-
110
- ## エスカレーション
111
-
112
- - **ドメインモデルとの不整合**: 「Aggregate 構造とデータモデルが乖離しています。ORM のマッピング戦略を確認するか、ドメインモデルを見直してください。」
113
- - **パフォーマンス懸念**: 「正規化により JOIN が多発する可能性があります。Read Model や意図的な非正規化を検討しませんか?」
114
-
115
- ## 参考
116
-
117
- - [examples/erd-templates.md](examples/erd-templates.md) — エンティティ一覧、カラム定義、主キー戦略、外部キー動作、Mermaid ERD、インデックス・非正規化の例
118
- - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、正規化レベル、レビュー質問
1
+ ---
2
+ name: a-011-define-data-model
3
+ description: ドメインモデルと画面設計からデータベース構造(ERD・エンティティ・属性・リレーションシップ・制約)を定義する。画面設計後、永続化層を設計する際に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # DefineDataModel (a-011)
9
+
10
+ ## 目的
11
+
12
+ - ドメイン(Domain Sketch の中核エンティティ、Full DDD 採用時は Aggregates)と画面設計を基に、データベース構造を定義する。
13
+ - エンティティ(テーブル)、属性(カラム)、リレーションシップを明確化する。
14
+ - データ型、制約(NOT NULL、UNIQUE、CHECK)、インデックス戦略を決定する。
15
+ - Mermaid ERD(Entity Relationship Diagram)で視覚化し、開発者間の認識を統一する。
16
+
17
+ ## 前提
18
+
19
+ - `docs/project/03-domain/01-domain-sketch.md` が作成されていること(Full DDD 採用時は `01-domain-model.md`)。
20
+ - `docs/project/04-design/01-tech-stack.md` が作成されていること(DB 選定済み)。
21
+ - `docs/project/04-design/03-screen-design.md` が作成されていること。
22
+ - `docs/project/04-design/` ディレクトリが存在すること。
23
+
24
+ ## 手順
25
+
26
+ ### 1. ドキュメントと前提条件の確認
27
+
28
+ 以下を読み込む:
29
+
30
+ - `docs/project/03-domain/01-domain-sketch.md`(Full DDD 採用時は `01-domain-model.md`)
31
+ - `docs/project/04-design/01-tech-stack.md`
32
+ - `docs/project/04-design/03-screen-design.md`
33
+
34
+ 不足があれば対応スキルの実行を促す。
35
+
36
+ ### 2. テンプレートの準備
37
+
38
+ このスキルの配置ディレクトリ(`skills/a-011-define-data-model/`)を起点に、相対パス `../../templates/project/04-design/05-data-model.md` を Read で読み込み、その内容を `docs/project/04-design/05-data-model.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
39
+
40
+ ### 3. エンティティの抽出と提案
41
+
42
+ - **ドメインモデルから**: Aggregate Root および内部エンティティを抽出
43
+ - **画面設計から**: 表示・入力項目から必要なデータ構造(履歴、設定、ログ等)を抽出
44
+ - 「[エンティティ名] (対応 Aggregate: [名前])」形式で一覧化
45
+
46
+ エンティティ一覧の記述例は [examples/erd-templates.md](examples/erd-templates.md#エンティティ一覧テーブル) を参照。
47
+
48
+ ### 4. 詳細定義(インタビュー)
49
+
50
+ #### 4.1 基本定義
51
+
52
+ - テーブル名(物理名)、論理名、説明
53
+ - 主キー戦略(Auto Increment / UUID / CUID)— 選択ガイドは [examples/erd-templates.md](examples/erd-templates.md#主キー戦略) を参照
54
+
55
+ #### 4.2 属性(カラム)
56
+
57
+ - カラム名、データ型(DB 製品に合わせて具体化)
58
+ - 制約(NOT NULL, UNIQUE, DEFAULT, CHECK)
59
+ - 監査カラム(created_at, updated_at)の有無
60
+
61
+ カラム定義の例は [examples/erd-templates.md](examples/erd-templates.md#カラム定義テンプレート) を参照。
62
+
63
+ #### 4.3 リレーションシップ
64
+
65
+ - 関連(1:1 / 1:N / N:M)
66
+ - 外部キー制約(ON DELETE CASCADE / SET NULL / RESTRICT)— 選択基準は [examples/erd-templates.md](examples/erd-templates.md#外部キー削除動作の選択) を参照
67
+
68
+ ### 5. ERD の作成と正規化
69
+
70
+ - Mermaid ERD 形式で記述(テンプレートは [examples/erd-templates.md](examples/erd-templates.md#mermaid-erd-記述例) を参照)
71
+ - 正規化(1NF-3NF)を確認。意図的な非正規化があれば理由を記録
72
+ - インデックス戦略(検索頻度、UNIQUE、複合インデックス)を定義
73
+
74
+ 正規化の目安は [reference/structure-check.md](reference/structure-check.md#正規化レベルの目安) を参照。
75
+
76
+ ### 6. ドキュメント作成
77
+
78
+ `docs/project/04-design/05-data-model.md` に以下を記入する:
79
+
80
+ - エンティティ一覧
81
+ - リレーションシップ定義
82
+ - ERD(Mermaid)
83
+ - インデックス戦略・非正規化の記録
84
+
85
+ ### 7. 構造チェック
86
+
87
+ ```bash
88
+ grep "## エンティティ一覧" docs/project/04-design/05-data-model.md \
89
+ && grep "\`\`\`mermaid" docs/project/04-design/05-data-model.md \
90
+ && grep "## リレーションシップ" docs/project/04-design/05-data-model.md \
91
+ && echo "OK" || echo "MISSING SECTION"
92
+ ```
93
+
94
+ 詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
95
+
96
+ ### 8. Git への追加(任意)
97
+
98
+ ```bash
99
+ git add docs/project/04-design/05-data-model.md
100
+ git commit -m "docs: データモデル(ERD)の定義"
101
+ ```
102
+
103
+ ## 完了条件
104
+
105
+ - `docs/project/04-design/05-data-model.md` が作成されている。
106
+ - データベーススキーマ(テーブル、カラム、型、制約)が定義されている。
107
+ - エンティティ間の関係性が可視化(ERD)されている。
108
+ - ユーザーが内容を承認している。
109
+
110
+ ## エスカレーション
111
+
112
+ - **ドメインモデルとの不整合**: 「Aggregate 構造とデータモデルが乖離しています。ORM のマッピング戦略を確認するか、ドメインモデルを見直してください。」
113
+ - **パフォーマンス懸念**: 「正規化により JOIN が多発する可能性があります。Read Model や意図的な非正規化を検討しませんか?」
114
+
115
+ ## 参考
116
+
117
+ - [examples/erd-templates.md](examples/erd-templates.md) — エンティティ一覧、カラム定義、主キー戦略、外部キー動作、Mermaid ERD、インデックス・非正規化の例
118
+ - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、正規化レベル、レビュー質問