id3-cli 0.9.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/README.ja-JP.md +769 -0
- package/README.ko-KR.md +769 -0
- package/README.md +769 -0
- package/README.tr-TR.md +769 -0
- package/README.zh-CN.md +769 -0
- package/dist/bin/cli.d.ts +2 -0
- package/dist/bin/cli.js +40 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/scripts/build-hooks.d.ts +1 -0
- package/dist/scripts/build-hooks.js +58 -0
- package/dist/scripts/build-hooks.js.map +1 -0
- package/dist/src/hooks/auto-audit.d.ts +4 -0
- package/dist/src/hooks/auto-audit.js +47 -0
- package/dist/src/hooks/auto-audit.js.map +1 -0
- package/dist/src/hooks/claude-pretool-entry.d.ts +1 -0
- package/dist/src/hooks/claude-pretool-entry.js +36 -0
- package/dist/src/hooks/claude-pretool-entry.js.map +1 -0
- package/dist/src/hooks/claude-stop-entry.d.ts +1 -0
- package/dist/src/hooks/claude-stop-entry.js +7 -0
- package/dist/src/hooks/claude-stop-entry.js.map +1 -0
- package/dist/src/hooks/post-commit-entry.d.ts +1 -0
- package/dist/src/hooks/post-commit-entry.js +7 -0
- package/dist/src/hooks/post-commit-entry.js.map +1 -0
- package/dist/src/hooks/pre-commit-entry.d.ts +1 -0
- package/dist/src/hooks/pre-commit-entry.js +16 -0
- package/dist/src/hooks/pre-commit-entry.js.map +1 -0
- package/dist/src/hooks/rule-check.d.ts +8 -0
- package/dist/src/hooks/rule-check.js +101 -0
- package/dist/src/hooks/rule-check.js.map +1 -0
- package/dist/src/hooks/schema-drift.d.ts +17 -0
- package/dist/src/hooks/schema-drift.js +151 -0
- package/dist/src/hooks/schema-drift.js.map +1 -0
- package/dist/src/hooks/shared.d.ts +43 -0
- package/dist/src/hooks/shared.js +98 -0
- package/dist/src/hooks/shared.js.map +1 -0
- package/dist/src/init.d.ts +20 -0
- package/dist/src/init.js +193 -0
- package/dist/src/init.js.map +1 -0
- package/dist/src/preview/mockup-generator.d.ts +56 -0
- package/dist/src/preview/mockup-generator.js +402 -0
- package/dist/src/preview/mockup-generator.js.map +1 -0
- package/dist/src/preview/renderer.d.ts +30 -0
- package/dist/src/preview/renderer.js +145 -0
- package/dist/src/preview/renderer.js.map +1 -0
- package/dist/src/preview/server.d.ts +9 -0
- package/dist/src/preview/server.js +55 -0
- package/dist/src/preview/server.js.map +1 -0
- package/dist/src/preview/ui-auditor.d.ts +27 -0
- package/dist/src/preview/ui-auditor.js +141 -0
- package/dist/src/preview/ui-auditor.js.map +1 -0
- package/dist/src/preview/ui-gate.d.ts +66 -0
- package/dist/src/preview/ui-gate.js +210 -0
- package/dist/src/preview/ui-gate.js.map +1 -0
- package/dist/src/utils/ascii.d.ts +7 -0
- package/dist/src/utils/ascii.js +41 -0
- package/dist/src/utils/ascii.js.map +1 -0
- package/dist/src/utils/fs.d.ts +6 -0
- package/dist/src/utils/fs.js +39 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/templates/hooks/iddd-auto-audit.js +121 -0
- package/dist/templates/hooks/iddd-schema-drift.js +279 -0
- package/dist/templates/hooks/post-commit +121 -0
- package/dist/templates/hooks/pre-commit +348 -0
- package/package.json +37 -0
- package/templates/.agents/skills/.gitkeep +0 -0
- package/templates/.claude/hooks/.gitkeep +0 -0
- package/templates/.claude/hooks/hook-config.json +34 -0
- package/templates/.claude/skills/.gitkeep +0 -0
- package/templates/.codex/.gitkeep +0 -0
- package/templates/.codex/hooks.json +40 -0
- package/templates/.iddd/commit-count +1 -0
- package/templates/.iddd/preview/.gitkeep +0 -0
- package/templates/AGENTS.md +204 -0
- package/templates/CLAUDE.md +215 -0
- package/templates/README.md +476 -0
- package/templates/docs/.gitkeep +0 -0
- package/templates/docs/business-rules.md +14 -0
- package/templates/docs/domain-glossary.md +8 -0
- package/templates/docs/info-debt.md +17 -0
- package/templates/docs/model-changelog.md +12 -0
- package/templates/hooks/.gitkeep +0 -0
- package/templates/hooks/iddd-auto-audit.js +121 -0
- package/templates/hooks/iddd-schema-drift.js +279 -0
- package/templates/hooks/post-commit +121 -0
- package/templates/hooks/pre-commit +348 -0
- package/templates/skills/id3-design-information/SKILL.md +170 -0
- package/templates/skills/id3-design-information/references/phase2-procedure.md +241 -0
- package/templates/skills/id3-design-ui/.gitkeep +0 -0
- package/templates/skills/id3-design-ui/SKILL.md +200 -0
- package/templates/skills/id3-design-ui/references/.gitkeep +0 -0
- package/templates/skills/id3-design-ui/references/step1-structure-derivation.md +177 -0
- package/templates/skills/id3-design-ui/references/step2-visual-contract.md +257 -0
- package/templates/skills/id3-design-ui/references/step3-gate-and-mockup.md +177 -0
- package/templates/skills/id3-design-ui/references/step4-implementation.md +244 -0
- package/templates/skills/id3-identify-entities/SKILL.md +239 -0
- package/templates/skills/id3-identify-entities/references/.gitkeep +0 -0
- package/templates/skills/id3-identify-entities/references/phase0-brownfield.md +377 -0
- package/templates/skills/id3-identify-entities/references/phase1-greenfield.md +319 -0
- package/templates/skills/id3-info-audit/.gitkeep +0 -0
- package/templates/skills/id3-info-audit/SKILL.md +191 -0
- package/templates/skills/id3-preview/.gitkeep +0 -0
- package/templates/skills/id3-preview/SKILL.md +168 -0
- package/templates/skills/id3-spawn-team/.gitkeep +0 -0
- package/templates/skills/id3-spawn-team/SKILL.md +213 -0
- package/templates/specs/.gitkeep +0 -0
- package/templates/specs/data-model.md +26 -0
- package/templates/specs/entity-catalog.md +22 -0
- package/templates/specs/ui-design-contract.md +54 -0
- package/templates/specs/ui-inventory.md +24 -0
- package/templates/specs/ui-structure.md +32 -0
- package/templates/src/.gitkeep +0 -0
- package/templates/steering/.gitkeep +0 -0
- package/templates/steering/data-conventions.md +42 -0
- package/templates/steering/product.md +38 -0
package/README.ja-JP.md
ADDED
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
[English](README.md) · [한국어](README.ko-KR.md) · [简体中文](README.zh-CN.md) · **日本語** · [Türkçe](README.tr-TR.md)
|
|
4
|
+
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
╔════════════════════════════════════════════════════════════════════════════════════════╗
|
|
9
|
+
║ ║
|
|
10
|
+
║ ██╗██████╗ ██████╗ ██████╗ ║
|
|
11
|
+
║ ██║██╔══██╗██╔══██╗██╔══██╗ Information Design-Driven Development ║
|
|
12
|
+
║ ██║██║ ██║██║ ██║██║ ██║ ║
|
|
13
|
+
║ ██║██║ ██║██║ ██║██║ ██║ "What information exists?" ║
|
|
14
|
+
║ ██║██████╔╝██████╔╝██████╔╝ -- always the first question. ║
|
|
15
|
+
║ ╚═╝╚═════╝ ╚═════╝ ╚═════╝ v0.9.1 ║
|
|
16
|
+
║ ║
|
|
17
|
+
║ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ║
|
|
18
|
+
║ ║
|
|
19
|
+
║ ┌─────────────────────────┐ ┌─────────────────────────┐ ║
|
|
20
|
+
║ │ │ │ │ ║
|
|
21
|
+
║ │ INFORMATION │ │ AGENT │ ║
|
|
22
|
+
║ │ MODEL │──────────>│ HARNESS │ ║
|
|
23
|
+
║ │ │ │ │ ║
|
|
24
|
+
║ │ - Entity Catalog │ │ - Hook Enforcement │ ║
|
|
25
|
+
║ │ - Data Model │ │ - Drift Detection │ ║
|
|
26
|
+
║ │ - Business Rules │ │ - Auto Audit │ ║
|
|
27
|
+
║ │ - Domain Glossary │ │ - Version Tracking │ ║
|
|
28
|
+
║ │ │ │ │ ║
|
|
29
|
+
║ └─────────────────────────┘ └────────────┬────────────┘ ║
|
|
30
|
+
║ │ ║
|
|
31
|
+
║ v ║
|
|
32
|
+
║ ┌─────────────────────────┐ ║
|
|
33
|
+
║ │ │ ║
|
|
34
|
+
║ │ AI AGENT │ ║
|
|
35
|
+
║ │ (Constrained) │ ║
|
|
36
|
+
║ │ │ ║
|
|
37
|
+
║ │ Agent = Model │ ║
|
|
38
|
+
║ │ + Harness │ ║
|
|
39
|
+
║ │ │ ║
|
|
40
|
+
║ └─────────────────────────┘ ║
|
|
41
|
+
║ ║
|
|
42
|
+
╚════════════════════════════════════════════════════════════════════════════════════════╝
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**「どんな情報が存在するか?」から始める -- 「どんな機能を構築すべきか?」からではなく**
|
|
46
|
+
|
|
47
|
+
IDDDは、**情報モデル**をソフトウェア開発全体の中心に据える開発方法論およびAIエージェントスキルパッケージです。技術選定の前に、厳密な Entity カタログ、データモデル、ビジネスルール、ドメイン用語集を構築することで、IDDDは論理モデルの段階でアプリケーション動作の80%がすでに定義されていることを保証します。情報モデルは、要件、API コントラクト、画面設計、バリデーションルールが体系的に導出される生成的中心となります。
|
|
48
|
+
|
|
49
|
+
このパッケージは、IDDDをAIエージェントスキル、Harness Hook、およびドキュメントテンプレートのセットとしてインストールし、コーディングエージェントが開発ライフサイクル全体を通じて情報優先の規律を強制できるようにします。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## IDDDとは?
|
|
54
|
+
|
|
55
|
+
多くのソフトウェアプロジェクトは*「どんな機能を構築すべきか?」*と問うことから始まり、すぐに実装に飛び込みます。IDDDはこれを逆転させます。**「このドメインにはどんな情報が存在するか?」**から出発し、情報モデルを仕様書の一セクションとしてではなく、他のすべての開発成果物が導出される**唯一の信頼できる情報源**として扱います。
|
|
56
|
+
|
|
57
|
+
### 基本原則
|
|
58
|
+
|
|
59
|
+
1. **情報モデルが生成的中心である。** すべてのコード、API、UI、テストは Entity カタログとデータモデルから導出されます。コードと仕様が矛盾する場合、仕様が優先されます。
|
|
60
|
+
2. **Entity 優先の識別。** コードを書く前に、Entity を識別して文書化する必要があります。新機能は「どの Entity が関係するか?」から始まり、「どのエンドポイントが必要か?」からではありません。
|
|
61
|
+
3. **データモデルのトレーサビリティ。** コードベース内のすべてのカラム、制約、Relationship は Entity カタログのエントリまで遡れなければなりません。追跡されていないスキーマ要素はドリフトとみなされます。
|
|
62
|
+
4. **出力優先の設計。** 入力(フォーム、API)を設計する前に、ユーザーが*見る*もの(ダッシュボード、レポート、一覧)を設計します。出力イメージが情報モデルを駆動します。
|
|
63
|
+
5. **ビジネスルールは明示的である。** すべてのバリデーション、制約、導出ルールはBR-xxx識別子で登録されます。コードのみのルールは負債とみなされます。
|
|
64
|
+
|
|
65
|
+
### ソフトウェア開発にマッピングされた三段階データモデリング
|
|
66
|
+
|
|
67
|
+
IDDDは、古典的な三段階データモデリングプロセスをソフトウェア開発フェーズに直接マッピングします:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
71
|
+
│ Conceptual Model │ │ 要件定義 / スコープ定義 │
|
|
72
|
+
│ "どんな情報が存在するか?" │────────>│ Entity 識別、ユーザーストーリー │
|
|
73
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
74
|
+
│
|
|
75
|
+
v
|
|
76
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
77
|
+
│ Logical Model │ │ API コントラクト / バリデーション / BizLogic │
|
|
78
|
+
│ "どのように構造化されているか?" │────────>│ 動作の80%がここで定義される │
|
|
79
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
80
|
+
│
|
|
81
|
+
v
|
|
82
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
83
|
+
│ Physical Model │ │ 実装上の意思決定 │
|
|
84
|
+
│ "どのように保存/実行されるか?" │────────>│ 技術選定、ストレージ、デプロイメント │
|
|
85
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
情報モデルの各要素は自動的に開発成果物を暗示します:
|
|
89
|
+
|
|
90
|
+
| 情報モデル要素 | 導出される成果物 |
|
|
91
|
+
|------------------------------|-----------------------------------------------------|
|
|
92
|
+
| Entity 識別 | 要件スコープ、ユーザーストーリー |
|
|
93
|
+
| Relationship と Cardinality | API エンドポイント構造、ナビゲーション |
|
|
94
|
+
| Attribute とデータ型 | フォームフィールド、バリデーションルール、DTO |
|
|
95
|
+
| 制約 | 入力バリデーション、型定義 |
|
|
96
|
+
| 導出 Attribute | ビジネスロジック、計算ルール |
|
|
97
|
+
| 状態遷移 | ワークフロー、状態管理 |
|
|
98
|
+
| 集約 / 関連ルール | トランザクション境界、整合性ルール |
|
|
99
|
+
|
|
100
|
+
**論理モデルが完成すると、技術選定の前にアプリケーション動作の80%がすでに定義されています。**
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 対応プラットフォーム
|
|
105
|
+
|
|
106
|
+
| プラットフォーム | エージェントシステム | マルチエージェント戦略 |
|
|
107
|
+
|------------------|---------------------------|------------------------------------------------------|
|
|
108
|
+
| Claude Code | Claude Agent Teams | ピアメッセージング、独立ワークツリー |
|
|
109
|
+
| OpenAI Codex | Codex Agents SDK | MCP Server を介した Handoff パターン |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 前提条件
|
|
114
|
+
|
|
115
|
+
| 要件 | 詳細 |
|
|
116
|
+
|----------------|------------------------------------------------------|
|
|
117
|
+
| Node.js | **18+**(npm または互換性のあるパッケージマネージャ) |
|
|
118
|
+
| Claude Code | **Claude Max** メンバーシップ + Agent Teams 有効化 |
|
|
119
|
+
| OpenAI Codex | **ChatGPT Plus** 以上(Pro/Business/Enterprise) |
|
|
120
|
+
|
|
121
|
+
インストーラ `npx` のために Node.js が必要です。AIプラットフォームのサブスクリプションは、使用するプラットフォームに応じて必要です。
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## インストール
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx id3@latest
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
サブコマンドは不要です -- `id3` は直接 init プロセスを実行します。以下を行います:
|
|
132
|
+
|
|
133
|
+
1. すべてのIDDDテンプレート(仕様、ドキュメント、ステアリング、スキル、Hook)をプロジェクトにコピーします。
|
|
134
|
+
2. プラットフォーム固有のシンボリックリンク(`.claude/skills/` または `.agents/skills/`)を作成し、正規の `skills/` オリジナルを指すようにします。
|
|
135
|
+
3. プラットフォームの設定ファイルに Harness Hook を登録します。
|
|
136
|
+
4. `.iddd/` 状態ディレクトリ(コミットカウンタ、プレビュー出力)を初期化します。
|
|
137
|
+
|
|
138
|
+
### オプション
|
|
139
|
+
|
|
140
|
+
| オプション | 説明 |
|
|
141
|
+
|-----------------|----------------------------------------------------------|
|
|
142
|
+
| `[target-dir]` | ターゲットディレクトリ(デフォルトはカレントディレクトリ `.`) |
|
|
143
|
+
| `--no-symlink` | シンボリックリンクの代わりにスキルファイルをコピー(Windowsで有用) |
|
|
144
|
+
| `--platform` | プラットフォームを強制指定: `claude`、`codex`、または `all` |
|
|
145
|
+
|
|
146
|
+
### 上書き検出
|
|
147
|
+
|
|
148
|
+
ターゲットディレクトリに `CLAUDE.md` がすでに存在する場合、`id3` はプロンプトを表示します:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
"IDDD appears to be already installed. Overwrite? (y/N)"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### インストール後の出力
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
┌── IDDD installed ─────────────────────────────────────────┐
|
|
158
|
+
│ │
|
|
159
|
+
│ Next steps: │
|
|
160
|
+
│ │
|
|
161
|
+
│ 1. Fill in steering/product.md │
|
|
162
|
+
│ 2. Run /id3-identify-entities to start │
|
|
163
|
+
│ 3. Customize steering/data-conventions.md │
|
|
164
|
+
│ │
|
|
165
|
+
│ Skills: │
|
|
166
|
+
│ ├── id3-identify-entities (Phase 0/1) │
|
|
167
|
+
│ ├── id3-design-information (Phase 2) │
|
|
168
|
+
│ ├── id3-design-ui (Phase 2.5) │
|
|
169
|
+
│ ├── id3-spawn-team (Phase 3-5) │
|
|
170
|
+
│ ├── id3-info-audit (Audit) │
|
|
171
|
+
│ └── id3-preview (Visual Preview) │
|
|
172
|
+
│ │
|
|
173
|
+
└───────────────────────────────────────────────────────────┘
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## インストール後のディレクトリ構造
|
|
179
|
+
|
|
180
|
+
`npx id3@latest` を実行した後、プロジェクトに以下の構造が追加されます:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
your-project/
|
|
184
|
+
│
|
|
185
|
+
│ ===== 共通(全プラットフォーム) =====
|
|
186
|
+
│
|
|
187
|
+
├── skills/ スキルオリジナル(唯一の信頼できる情報源)
|
|
188
|
+
│ ├── id3-identify-entities/ Phase 0/1: Entity 識別
|
|
189
|
+
│ │ ├── SKILL.md
|
|
190
|
+
│ │ └── references/
|
|
191
|
+
│ │ ├── phase0-brownfield.md 既存コードからの逆抽出
|
|
192
|
+
│ │ └── phase1-greenfield.md 新規プロジェクト向け構造化インタビュー
|
|
193
|
+
│ ├── id3-design-information/ Phase 2: 情報の構造化
|
|
194
|
+
│ │ ├── SKILL.md
|
|
195
|
+
│ │ └── references/
|
|
196
|
+
│ │ └── phase2-procedure.md リファインメント手順
|
|
197
|
+
│ ├── id3-design-ui/ Phase 2.5: UI設計と実装
|
|
198
|
+
│ │ ├── SKILL.md
|
|
199
|
+
│ │ └── references/
|
|
200
|
+
│ │ ├── step1-structure-derivation.md
|
|
201
|
+
│ │ ├── step2-visual-contract.md
|
|
202
|
+
│ │ ├── step3-gate-and-mockup.md
|
|
203
|
+
│ │ └── step4-implementation.md
|
|
204
|
+
│ ├── id3-spawn-team/ マルチエージェント実装のディスパッチ
|
|
205
|
+
│ ├── id3-info-audit/ エントロピー監査(ドリフト検出)
|
|
206
|
+
│ └── id3-preview/ 情報モデルのビジュアルプレビュー
|
|
207
|
+
│
|
|
208
|
+
├── specs/ 情報モデル成果物
|
|
209
|
+
│ ├── entity-catalog.md Entity インベントリ + サマリーテーブル
|
|
210
|
+
│ ├── data-model.md Mermaid ERD + 設計上の意思決定
|
|
211
|
+
│ ├── ui-inventory.md 画面インベントリ + マッピングマトリクス
|
|
212
|
+
│ ├── ui-structure.md 画面インベントリ + ナビゲーション (Phase 2.5)
|
|
213
|
+
│ └── ui-design-contract.md デザイントークン + コンポーネントマッピング (Phase 2.5)
|
|
214
|
+
│
|
|
215
|
+
├── docs/ サポートドキュメント
|
|
216
|
+
│ ├── business-rules.md BR-xxx インデックス付きビジネスルール
|
|
217
|
+
│ ├── domain-glossary.md 用語 / 英語 / 定義 / 備考
|
|
218
|
+
│ ├── info-debt.md 不整合トラッカー
|
|
219
|
+
│ └── model-changelog.md Keep a Changelog 形式
|
|
220
|
+
│
|
|
221
|
+
├── steering/ プロジェクトレベルの規約
|
|
222
|
+
│ ├── product.md プロダクトビジョンとスコープ(ユーザー記述)
|
|
223
|
+
│ └── data-conventions.md PK 戦略、命名規則、タイムスタンプなど
|
|
224
|
+
│
|
|
225
|
+
├── hooks/ Harness Hook スクリプト(ビルド済みJSバンドル)
|
|
226
|
+
│ ├── iddd-schema-drift.js schema-drift 検出
|
|
227
|
+
│ ├── iddd-rule-check.js ビジネスルールの追跡
|
|
228
|
+
│ ├── iddd-auto-audit.js 自動エントロピー監査
|
|
229
|
+
│ ├── pre-commit Git Hook(schema-drift + rule-check)
|
|
230
|
+
│ └── post-commit Git Hook(auto-audit)
|
|
231
|
+
│
|
|
232
|
+
├── .iddd/ IDDD 内部状態
|
|
233
|
+
│ ├── commit-count auto-audit インターバルカウンタ
|
|
234
|
+
│ └── preview/ 生成されたプレビューHTML
|
|
235
|
+
│
|
|
236
|
+
│ ===== プラットフォーム: Claude Code =====
|
|
237
|
+
│
|
|
238
|
+
├── CLAUDE.md リードエージェントのコンテキストドキュメント
|
|
239
|
+
├── .claude/
|
|
240
|
+
│ ├── settings.local.json Hook 登録(init で注入)
|
|
241
|
+
│ ├── skills/ -> skills/ skills/ オリジナルへのシンボリックリンク
|
|
242
|
+
│ └── hooks/
|
|
243
|
+
│ └── hook-config.json IDDD Hook 設定
|
|
244
|
+
│
|
|
245
|
+
│ ===== プラットフォーム: OpenAI Codex =====
|
|
246
|
+
│
|
|
247
|
+
├── AGENTS.md クロスプラットフォームエージェント指示書
|
|
248
|
+
├── .agents/
|
|
249
|
+
│ └── skills/ -> skills/ skills/ オリジナルへのシンボリックリンク
|
|
250
|
+
└── .codex/
|
|
251
|
+
└── hooks.json Codex Hook 設定
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### スキルファイル共有戦略
|
|
255
|
+
|
|
256
|
+
スキルコンテンツは単一の正規の場所(`skills/`)で管理されます。プラットフォーム固有のパス(`.claude/skills/`、`.agents/skills/`)は `init` CLI によって動的に作成されるシンボリックリンクです。これにより、すべてのプラットフォームで単一のメンテナンスポイントが保証されます。Windowsでは `--no-symlink` を使用してコピーを作成してください。
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## ワークフロー
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
╔══════════════════════════════════════════════════════════════════════════╗
|
|
264
|
+
║ IDDD WORKFLOW OVERVIEW ║
|
|
265
|
+
╚══════════════════════════════════════════════════════════════════════════╝
|
|
266
|
+
|
|
267
|
+
┌──────────────┐ ┌──────────────┐
|
|
268
|
+
│ │<--- dialog ----->│ │
|
|
269
|
+
│ User │ │ Lead Agent │
|
|
270
|
+
│ │ │ │
|
|
271
|
+
└──────────────┘ └──────┬───────┘
|
|
272
|
+
│
|
|
273
|
+
┌──────────────────┴──────────────────┐
|
|
274
|
+
│ │
|
|
275
|
+
v v
|
|
276
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
277
|
+
│ Existing code? │ │ No existing code? │
|
|
278
|
+
└─────────┬──────────┘ └─────────┬──────────┘
|
|
279
|
+
│ │
|
|
280
|
+
v v
|
|
281
|
+
┌──────────────────────────────────┐ ┌──────────────────────────────────┐
|
|
282
|
+
│ Phase 0: Reverse-Extract │ │ Phase 1: Structured Interview │
|
|
283
|
+
│ │ │ │
|
|
284
|
+
│ - Scan ORM / schema files │ │ "What information does │
|
|
285
|
+
│ - Extract entities │ │ your domain manage?" │
|
|
286
|
+
│ - Extract relationships │ │ - Identify core entities │
|
|
287
|
+
│ - Verification Interview │ │ - Discover relationships │
|
|
288
|
+
└────────────────┬─────────────────┘ └────────────────┬─────────────────┘
|
|
289
|
+
│ │
|
|
290
|
+
v v
|
|
291
|
+
┌─────────────────────────────────────────────────────┐
|
|
292
|
+
│ Entity Catalog Produced │
|
|
293
|
+
└─────────────────────────┬───────────────────────────┘
|
|
294
|
+
│
|
|
295
|
+
v
|
|
296
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
297
|
+
│ Phase 2: Information Design │
|
|
298
|
+
│ │
|
|
299
|
+
│ - Conceptual --> Logical model │
|
|
300
|
+
│ - Derive business rules (BR-xxx) │
|
|
301
|
+
│ - Register hooks + version headers │
|
|
302
|
+
└─────────────────────────────────┬──────────────────────────────────┘
|
|
303
|
+
│
|
|
304
|
+
v
|
|
305
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
306
|
+
│ Phase 2.5: UI Design (id3-design-ui) │
|
|
307
|
+
│ │
|
|
308
|
+
│ - Entity --> Screen auto-derivation │
|
|
309
|
+
│ - Visual design contract (tokens, components) │
|
|
310
|
+
│ - 7-Pillar gate + 3-level mockup preview │
|
|
311
|
+
│ - Agent Teams implementation + post-audit │
|
|
312
|
+
└─────────────────────────────────┬──────────────────────────────────┘
|
|
313
|
+
│
|
|
314
|
+
v
|
|
315
|
+
┌─────────────────────────────────────────────────────┐
|
|
316
|
+
│ /id3-spawn-team │
|
|
317
|
+
└─────────────────────────┬───────────────────────────┘
|
|
318
|
+
│
|
|
319
|
+
┌──────────────┴──────────────┐
|
|
320
|
+
│ │
|
|
321
|
+
v v
|
|
322
|
+
┌────────────────────────────────┐ ┌────────────────────────────────┐
|
|
323
|
+
│ Claude Code: Agent Teams │ │ Codex: Agents SDK │
|
|
324
|
+
│ │ │ │
|
|
325
|
+
│ ┌────────┐ ┌──────┐ ┌────┐ │ │ ┌──────────────────────────┐ │
|
|
326
|
+
│ │ spec │ │ impl │ │ qa │ │ │ │ Handoff Pattern │ │
|
|
327
|
+
│ └───┬────┘ └──┬───┘ └─┬──┘ │ │ │ via MCP Server │ │
|
|
328
|
+
│ │ │ │ │ │ └──────────────────────────┘ │
|
|
329
|
+
│ └── messaging ────┘ │ │ │
|
|
330
|
+
│ (peer-to-peer) │ │ spec -> impl -> qa │
|
|
331
|
+
│ │ │ (sequential handoff) │
|
|
332
|
+
└────────────────────────────────┘ └────────────────────────────────┘
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Phase ウォークスルー
|
|
336
|
+
|
|
337
|
+
**Phase 0/1 -- Entity 識別:**
|
|
338
|
+
AIコーディングエージェントを開き、`/id3-identify-entities` を実行します。エージェントは既存のコードベースがあるか(ブラウンフィールド)、新規プロジェクトか(グリーンフィールド)を自動検出し、適切な識別フローを実行します。
|
|
339
|
+
|
|
340
|
+
**Phase 2 -- 情報設計:**
|
|
341
|
+
`/id3-design-information` を実行します。エージェントは概念モデルを論理モデルに洗練し、ビジネスルールを導出し、バージョンヘッダーと Hook 設定をセットアップします。
|
|
342
|
+
|
|
343
|
+
**Phase 2.5 -- UI設計:**
|
|
344
|
+
`/id3-design-ui` を実行します。エージェントは Entity カタログから画面構造を導出し、デザイントークンでビジュアルデザインコントラクトを確立し、インタラクティブなモックアッププレビュー付きの 7-Pillar 品質ゲートを実行した後、Agent Teams を生成して画面を並列実装し、事後監査を行います。
|
|
345
|
+
|
|
346
|
+
**Phase 3-5 -- Agent Teams による実装:**
|
|
347
|
+
`/id3-spawn-team` を実行します。エージェントは確定した情報モデルを読み込み、専門化されたエージェントチーム(spec-generator、implementer、qa-reviewer)を生成して、並列でシステムを実装します。
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## スキル
|
|
352
|
+
|
|
353
|
+
### id3-identify-entities (Phase 0/1)
|
|
354
|
+
|
|
355
|
+
IDDDワークフローのエントリーポイント。このスキルはブラウンフィールドとグリーンフィールドのパスを**自動的に分岐**します。
|
|
356
|
+
|
|
357
|
+
**トリガーキーワード:** `identify entities`、`information analysis`、`domain analysis`、`new project`、`entity identification`
|
|
358
|
+
|
|
359
|
+
**自動検出ロジック:** スキルはプロジェクトルートでORM/スキーマファイル(Prisma、Drizzle、Djangoモデル、TypeORM Entity、SQLマイグレーション、Sequelize設定)をスキャンします。見つかった場合は Phase 0 に入り、そうでない場合は Phase 1 に入ります。
|
|
360
|
+
|
|
361
|
+
#### Phase 0: ブラウンフィールド -- 情報モデルの逆抽出
|
|
362
|
+
|
|
363
|
+
既存のコードベースに対して、エージェントは4つのレイヤーから暗黙の情報モデルを体系的に抽出します:
|
|
364
|
+
|
|
365
|
+
| レイヤー | ソース | 調査内容 | 信頼性 |
|
|
366
|
+
|----------|------------------|--------------------------------------------------------|-------------|
|
|
367
|
+
| L1 | DBスキーマ | テーブル、カラム、FK、インデックス、制約 | 最高 |
|
|
368
|
+
| L2 | ORM / モデル | 仮想フィールド、導出 Attribute、論理削除、状態 | 高 |
|
|
369
|
+
| L3 | API コントラクト | エンドポイント、DTO、バリデーションロジック | 中 |
|
|
370
|
+
| L4 | フロントエンド | ルート、コンポーネント、フォームフィールド | 参考 |
|
|
371
|
+
|
|
372
|
+
L4調査は徹底的です:ファイルベースルーティング(Next.js `app/`、`pages/`)、React Router、Vue Routerなどをスキャンし、画面-Entity マッピングマトリクスを含む完全なUIインベントリ(`specs/ui-inventory.md`)を構築します。
|
|
373
|
+
|
|
374
|
+
発見事項は**一致**(レイヤー間で整合性あり)、**不一致**(`docs/info-debt.md` に記録)、または**暗黙的**(コードロジックに隠れていたものを明示的なビジネスルールとして表出)に分類されます。
|
|
375
|
+
|
|
376
|
+
抽出後、**検証インタビュー**でユーザーに正確性を確認します。
|
|
377
|
+
|
|
378
|
+
**生成される成果物:** `specs/entity-catalog.md`、`specs/data-model.md`、`specs/ui-inventory.md`、`docs/business-rules.md`、`docs/info-debt.md`
|
|
379
|
+
|
|
380
|
+
#### Phase 1: グリーンフィールド -- 構造化インタビュー
|
|
381
|
+
|
|
382
|
+
新規プロジェクトに対して、エージェントはドメイン情報を発見するための構造化インタビューを実施します:
|
|
383
|
+
|
|
384
|
+
1. **情報の識別** -- 「このシステムが管理する核となる『もの』(名詞)は何ですか?」
|
|
385
|
+
2. **Relationship の発見** -- 「これらのものはどのように関連していますか?一対多ですか、多対多ですか?」
|
|
386
|
+
3. **ルールの発見** -- 「どんなルールを強制する必要がありますか?状態遷移はありますか?」
|
|
387
|
+
4. **Silverston ユニバーサルパターンチェックリスト** -- エージェントは発見された Entity を実証済みパターンと照合します:Party、Product/Service、Order/Transaction、Classification、Status/Lifecycle、Hierarchy、Contact Mechanism、Document/Content。
|
|
388
|
+
|
|
389
|
+
**生成される成果物:** `specs/entity-catalog.md`、`specs/data-model.md`、`docs/business-rules.md`
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
### id3-design-information (Phase 2)
|
|
394
|
+
|
|
395
|
+
概念モデルを**論理モデル**に洗練します。ビジネスルール、妥当性制約、導出ルールは情報モデルから自動的に導出されます。
|
|
396
|
+
|
|
397
|
+
**トリガーキーワード:** `design information`、`refine model`、`logical model`、`schema design`、`information structuring`
|
|
398
|
+
|
|
399
|
+
**前提条件:** `specs/entity-catalog.md` が存在し、少なくとも2つの識別済み Entity が含まれている必要があります。
|
|
400
|
+
|
|
401
|
+
**手順:**
|
|
402
|
+
|
|
403
|
+
1. **Attribute のリファインメント** -- 具体的なデータ型(UUID、TEXT、INTEGER、TIMESTAMP、JSONB など)、NOT NULL / DEFAULT / UNIQUE 制約、およびインデックス要件を割り当てます。
|
|
404
|
+
2. **Relationship の具体化** -- FK の配置、削除/更新ルール(CASCADE、SET NULL、RESTRICT)を決定し、多対多 Relationship のジャンクションテーブルを識別します。
|
|
405
|
+
3. **ビジネスルールの自動導出:**
|
|
406
|
+
- NOT NULL 制約 --> 「このフィールドは必須です」(BR-xxx)
|
|
407
|
+
- UNIQUE 制約 --> 「重複は許可されません」(BR-xxx)
|
|
408
|
+
- FK + CASCADE --> 「親を削除すると子も削除されます」(BR-xxx)
|
|
409
|
+
- 状態遷移 --> 「許可される遷移パス」(BR-xxx)
|
|
410
|
+
- 導出 Attribute --> 「計算ルール」(BR-xxx)
|
|
411
|
+
4. **設計上の意思決定に関する質問** -- エージェントは、大容量データの保存戦略、論理削除のスコープ、マルチテナンシー、監査証跡のニーズなどについてユーザーに質問します。
|
|
412
|
+
5. **成果物の確定** -- すべての仕様ファイルをバージョンヘッダーと Hook 設定で更新します。
|
|
413
|
+
|
|
414
|
+
**更新される成果物:** `specs/entity-catalog.md`、`specs/data-model.md`、`docs/business-rules.md`
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
### id3-design-ui (Phase 2.5)
|
|
419
|
+
|
|
420
|
+
情報モデルからUI構造とビジュアルデザインを導出し、Agent Teams を使用して画面を実装します。
|
|
421
|
+
|
|
422
|
+
**トリガーキーワード:** `design ui`、`ui design`、`screen design`、`phase 2.5`、`ui structure`
|
|
423
|
+
|
|
424
|
+
**前提条件:** Phase 2 完了(`entity-catalog.md` version >= `"1.0"`)。
|
|
425
|
+
|
|
426
|
+
**4ステップパイプライン:**
|
|
427
|
+
|
|
428
|
+
1. **UI構造の導出** -- 9つの導出ルール(entity -> list/detail/form/dashboard)を使用して Entity を画面に自動マッピングします。12のタイプベースルールで Attribute を Widget にマッピングします。「出力優先、入力後回し」の原則を適用します。
|
|
429
|
+
2. **ビジュアルデザインコントラクト** -- 既存のフロントエンドフレームワーク(React、Vue、Svelte など)とUIライブラリを検出します。5つのデザイントークン領域(spacing、typography、color、copywriting、component registry)を確立します。
|
|
430
|
+
3. **実装前ゲート** -- 7-Pillar 検証(構造の完全性、spacing、typography、color、copywriting、component registry、traceability)を実行します。サンプルデータで3レベルのHTMLモックアップ(wireframe、styled、interactive)を生成します。
|
|
431
|
+
4. **実装 + 事後監査** -- Agent Teams を生成して画面を並列実装します。実装後のビジュアル監査が各 Pillar を1-4でスコアリングし、上位3つの修正点を導出します。
|
|
432
|
+
|
|
433
|
+
**成果物:** `specs/ui-structure.md`、`specs/ui-design-contract.md`、`.iddd/preview/mockup-*.html`、`.iddd/preview/ui-audit.html`
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
### id3-spawn-team (Phase 3-5)
|
|
438
|
+
|
|
439
|
+
確定した情報モデルに基づいてシステムを実装する専門化されたエージェントチームを生成します。
|
|
440
|
+
|
|
441
|
+
**前提条件:** `specs/entity-catalog.md` と `specs/data-model.md` が存在し、Phase 2 が完了している必要があります。
|
|
442
|
+
|
|
443
|
+
#### Claude Code: Agent Teams
|
|
444
|
+
|
|
445
|
+
3つのチームメンバーが生成され、それぞれ独立したコンテキストウィンドウと独立した Git ワークツリーを持ちます:
|
|
446
|
+
|
|
447
|
+
| チームメンバー | 役割 |
|
|
448
|
+
|------------------|---------------------------------------------------------------|
|
|
449
|
+
| spec-generator | 情報モデルを requirements.md と api-contracts.md に変換 |
|
|
450
|
+
| implementer | 仕様からコードを構築、Entity ごとのアトミックコミット |
|
|
451
|
+
| qa-reviewer | 情報モデルに対する実装を検証、失敗時は implementer にダイレクトメッセージを送信 |
|
|
452
|
+
|
|
453
|
+
**タスク生成ルール:**
|
|
454
|
+
- Entity カタログを読み込み、Entity ごとに1タスクを作成(モデル + マイグレーション + API + バリデーション + テスト)。
|
|
455
|
+
- データモデルの FK 依存関係が依存グラフを決定します。
|
|
456
|
+
- 独立した Entity は並列で実行され、依存する Entity は親の完了を待ちます。
|
|
457
|
+
|
|
458
|
+
#### OpenAI Codex: Agents SDK + Handoff パターン
|
|
459
|
+
|
|
460
|
+
Codex では、マルチエージェント作業は Agents SDK の Handoff パターンを使用します。Codex は MCP Server として起動され(`codex --mcp-server`)、プロジェクトマネージャーエージェントが Entity カタログを読み込み、同じ3つの役割(spec-generator、implementer、qa-reviewer)にハンドオフを通じてタスクを分配します。
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
### id3-info-audit
|
|
465
|
+
|
|
466
|
+
情報モデルに対するコードベースを監査し、ドリフトとエントロピーを検出します。
|
|
467
|
+
|
|
468
|
+
**トリガーキーワード:** `info audit`、`information audit`、`model audit`、`drift check`
|
|
469
|
+
|
|
470
|
+
**手順:**
|
|
471
|
+
|
|
472
|
+
1. `specs/entity-catalog.md` から Entity リストを読み込みます。
|
|
473
|
+
2. コードベースをスキャンして以下を検出します:
|
|
474
|
+
- 未実装の Entity / 未定義のモデル
|
|
475
|
+
- `docs/business-rules.md` のビジネスルールがコードに反映されていない
|
|
476
|
+
- データ型 / 制約の不一致
|
|
477
|
+
3. `specs/ui-structure.md` と `specs/ui-design-contract.md` に対するUI整合性をチェックします:
|
|
478
|
+
- 未実装の画面 / 未定義の画面
|
|
479
|
+
- フォームフィールドと Attribute のマッピング不一致
|
|
480
|
+
- 欠落しているナビゲーションパス
|
|
481
|
+
4. バージョンヘッダーを更新します(`last_verified`、`audit_status`)。
|
|
482
|
+
5. Hook バイパス履歴(`.iddd/skip-history.log`)をチェックします。
|
|
483
|
+
6. ビジュアルインジケーター付きの Entity ごとのステータスレポートを出力します。
|
|
484
|
+
|
|
485
|
+
**ビジュアル出力:** 監査結果は `.iddd/preview/audit-{date}.html` にインタラクティブなHTMLダッシュボードとしてレンダリングされます。
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
### id3-preview
|
|
490
|
+
|
|
491
|
+
ブラウザで情報モデルと監査結果を表示するための軽量なローカルHTTPサーバーを起動します。
|
|
492
|
+
|
|
493
|
+
**トリガーキーワード:** `preview`、`show erd`、`show model`、`visual preview`
|
|
494
|
+
|
|
495
|
+
サーバーは `listen(0)`(OSが割り当てるポート)を使用し、以下を配信します:
|
|
496
|
+
- **ERD プレビュー** -- Entity クリックスルーでカタログ詳細に遷移するインタラクティブな Mermaid ERD
|
|
497
|
+
- **UIモックアップ** -- `specs/ui-structure.md` と `specs/ui-design-contract.md` から導出されたワイヤーフレームレイアウト
|
|
498
|
+
- **監査ダッシュボード** -- ビジネスルールカバレッジ付きの Entity ごとのステータスカード
|
|
499
|
+
|
|
500
|
+
すべてのHTMLファイルは `.iddd/preview/` に永続化され、サーバーなしでもブラウザで直接開くことができます。
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Harness Hook システム
|
|
505
|
+
|
|
506
|
+
IDDDは自動化された Hook を通じて情報優先の規律を強制します。その哲学は「プロセスに従ってください」ではなく、**「従わなければコミットがブロックされます」**です。
|
|
507
|
+
|
|
508
|
+
### Hook 概要
|
|
509
|
+
|
|
510
|
+
| Hook | トリガー | アクション | 重大度 |
|
|
511
|
+
|----------------|------------------|---------------------------------------------------------|------------|
|
|
512
|
+
| schema-drift | pre-commit | スキーマ変更が entity-catalog.md と一致するか検証 | **BLOCK**(コミット拒否) |
|
|
513
|
+
| rule-check | pre-commit | 新しいバリデーションロジックが business-rules.md に対応しているかチェック | **WARN**(コミット許可、メッセージ表示) |
|
|
514
|
+
| auto-audit | post-commit | N コミットごとに info-audit を実行 | **INFO**(レポート生成) |
|
|
515
|
+
|
|
516
|
+
### schema-drift (BLOCK)
|
|
517
|
+
|
|
518
|
+
スキーマ関連ファイル(Prisma、Drizzle、Djangoモデル、TypeORM Entity、SQLマイグレーションなど)を変更する際、Hook は `specs/entity-catalog.md` が対応して更新されているかチェックします。更新されていない場合、コミットは**拒否されます**。情報モデルは常にコードの*前に*更新される必要があります。
|
|
519
|
+
|
|
520
|
+
**監視対象のファイルパターン**(設定可能):
|
|
521
|
+
```
|
|
522
|
+
prisma/schema.prisma, drizzle/**/*.ts, **/migrations/*.sql,
|
|
523
|
+
**/models.py, **/entities/*.ts, **/entities/*.java, schema.sql
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
### rule-check (WARN)
|
|
527
|
+
|
|
528
|
+
バリデーションロジック(Zod、Yup、Joi、Pydanticなど)を追加または変更する際、Hook は `docs/business-rules.md` に対応する `BR-xxx` エントリがあるかチェックします。存在しない場合、警告が発行されます。コミットは続行されますが、欠落しているルールがフラグされます。
|
|
529
|
+
|
|
530
|
+
**監視対象のファイルパターン**(設定可能):
|
|
531
|
+
```
|
|
532
|
+
*.schema.ts, *.validator.*, **/validators/**
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### auto-audit (INFO)
|
|
536
|
+
|
|
537
|
+
N コミットごと(デフォルト:10、設定可能)に、Harness は情報モデルに対するコードベースの info-audit を自動的に実行します。コミットカウンタは `.iddd/commit-count` に保存されます。結果は `.iddd/preview/audit-{date}.html` に書き込まれます。
|
|
538
|
+
|
|
539
|
+
### Hook 設定
|
|
540
|
+
|
|
541
|
+
すべての Hook 設定は `.claude/hooks/hook-config.json`(Claude Code)または `.codex/hooks.json`(Codex)にあります。
|
|
542
|
+
|
|
543
|
+
```json
|
|
544
|
+
{
|
|
545
|
+
"enabled": true,
|
|
546
|
+
"hooks": {
|
|
547
|
+
"pre-commit": {
|
|
548
|
+
"schema-drift": {
|
|
549
|
+
"enabled": true,
|
|
550
|
+
"severity": "block",
|
|
551
|
+
"monitored_patterns": [
|
|
552
|
+
"prisma/schema.prisma",
|
|
553
|
+
"drizzle/**/*.ts",
|
|
554
|
+
"**/migrations/*.sql",
|
|
555
|
+
"**/models.py",
|
|
556
|
+
"**/entities/*.ts",
|
|
557
|
+
"**/entities/*.java"
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
"rule-check": {
|
|
561
|
+
"enabled": true,
|
|
562
|
+
"severity": "warn",
|
|
563
|
+
"validation_patterns": [
|
|
564
|
+
"*.schema.ts",
|
|
565
|
+
"*.validator.*",
|
|
566
|
+
"**/validators/**"
|
|
567
|
+
]
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"post-commit": {
|
|
571
|
+
"auto-audit": {
|
|
572
|
+
"enabled": true,
|
|
573
|
+
"interval_commits": 10
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
すべてのIDDD Hook を無効にするには、トップレベルの `"enabled"` を `false` に設定します。単一の Hook を無効にするには、その `"enabled"` を `false` に設定します。auto-audit の頻度を変更するには、`"interval_commits"` を調整します。
|
|
581
|
+
|
|
582
|
+
### Hook バイパス
|
|
583
|
+
|
|
584
|
+
`IDDD_SKIP_HOOKS=1` を設定すると、すべての Hook を一時的にスキップできます。バイパスは `.iddd/skip-history.log` に記録され、監査時にレビューされます。
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## エントロピー管理
|
|
589
|
+
|
|
590
|
+
時間の経過とともに、情報モデルはコードからドリフトします。IDDDは3つのメカニズムでエントロピーに対抗します:
|
|
591
|
+
|
|
592
|
+
### バージョンヘッダー
|
|
593
|
+
|
|
594
|
+
`specs/entity-catalog.md` と `specs/data-model.md` は、モデルの状態を追跡するYAMLフロントマターを含みます:
|
|
595
|
+
|
|
596
|
+
```yaml
|
|
597
|
+
---
|
|
598
|
+
version: "1.0"
|
|
599
|
+
last_verified: "2026-04-05"
|
|
600
|
+
phase: "Phase 2 Complete"
|
|
601
|
+
entity_count: 12
|
|
602
|
+
rule_count: 19
|
|
603
|
+
audit_status: "clean"
|
|
604
|
+
---
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
**ルール:**
|
|
608
|
+
- `version` は各 Phase 完了時にインクリメントされます(Phase 1: `"0.1"`、Phase 2: `"1.0"`、以降: `"1.1"`、`"1.2"`、...)。
|
|
609
|
+
- `last_verified` はモデルが監査または検証されるたびに更新されます。
|
|
610
|
+
- `last_verified` が**7日以上古い**場合、エージェントは新しい作業を進める前に `/id3-info-audit` の実行を促します。古いモデルはドリフトにつながります。
|
|
611
|
+
|
|
612
|
+
### 変更ログ
|
|
613
|
+
|
|
614
|
+
すべてのモデル変更は [Keep a Changelog](https://keepachangelog.com/) 形式で `docs/model-changelog.md` に記録されます:
|
|
615
|
+
|
|
616
|
+
```markdown
|
|
617
|
+
## [1.0] -- 2026-04-05
|
|
618
|
+
### Phase 2 Complete
|
|
619
|
+
- 12 entities finalized in logical model
|
|
620
|
+
- 19 business rules derived
|
|
621
|
+
- Design decisions: D-01 (S3 separation), D-02 (multi-tenant reservation), D-03 (soft delete scope)
|
|
622
|
+
- UI proposals: 6 screens generated
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### 自動監査
|
|
626
|
+
|
|
627
|
+
`auto-audit` Hook(post-commit)はNコミットごとにフル情報監査を実行し、ドリフトが蓄積する前にキャッチします。
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## カスタマイズガイド
|
|
632
|
+
|
|
633
|
+
IDDDはプロジェクトの規約に合わせて適応できるよう設計されています。何をどこでカスタマイズするかを以下に示します:
|
|
634
|
+
|
|
635
|
+
| カスタマイズ対象 | 編集するファイル |
|
|
636
|
+
|------------------------------------------------|------------------------------------|
|
|
637
|
+
| プロダクトビジョンとスコープ | `steering/product.md` |
|
|
638
|
+
| 命名規則、PK 戦略、タイムスタンプ、論理削除ポリシー、ENUM vs 参照テーブル | `steering/data-conventions.md` |
|
|
639
|
+
| Entity 定義 | `specs/entity-catalog.md` |
|
|
640
|
+
| データモデル(ERD) | `specs/data-model.md` |
|
|
641
|
+
| ビジネスルール | `docs/business-rules.md` |
|
|
642
|
+
| ドメイン用語集 | `docs/domain-glossary.md` |
|
|
643
|
+
| UI画面インベントリ | `specs/ui-inventory.md` |
|
|
644
|
+
| UI構造(画面導出) | `specs/ui-structure.md` |
|
|
645
|
+
| UIデザインコントラクト(トークン、コンポーネント) | `specs/ui-design-contract.md` |
|
|
646
|
+
| Hook の動作(有効/無効、重大度) | `.claude/hooks/hook-config.json` |
|
|
647
|
+
| Hook の監視対象ファイルパターン | `.claude/hooks/hook-config.json` |
|
|
648
|
+
| auto-audit のコミットインターバル | `.claude/hooks/hook-config.json` |
|
|
649
|
+
| Codex Hook 設定 | `.codex/hooks.json` |
|
|
650
|
+
|
|
651
|
+
**ヒント:** すべての `specs/` と `docs/` ファイルはバージョンヘッダー付きのYAMLフロントマターを使用しています。IDDD Harness はこれらのバージョンを追跡してエントロピーのドリフトを検出します。仕様ファイルを変更する際は、必ずバージョンヘッダーを更新してください。
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## 使用例
|
|
656
|
+
|
|
657
|
+
### 例1: 新規プロジェクトの開始(グリーンフィールド)
|
|
658
|
+
|
|
659
|
+
```
|
|
660
|
+
$ mkdir my-saas && cd my-saas && git init
|
|
661
|
+
$ npx id3@latest
|
|
662
|
+
|
|
663
|
+
IDDD installed. Next: fill in steering/product.md
|
|
664
|
+
|
|
665
|
+
$ claude
|
|
666
|
+
> /id3-identify-entities
|
|
667
|
+
|
|
668
|
+
Agent: "What core 'things' does your system manage?"
|
|
669
|
+
You: "Users, Organizations, Subscriptions, Invoices, and Features."
|
|
670
|
+
Agent: "How are Users related to Organizations?"
|
|
671
|
+
You: "Many-to-many through a Membership entity with a role attribute."
|
|
672
|
+
...
|
|
673
|
+
|
|
674
|
+
Entity catalog produced: specs/entity-catalog.md (5 entities, 7 relationships)
|
|
675
|
+
|
|
676
|
+
> /id3-design-information
|
|
677
|
+
|
|
678
|
+
Agent refines attributes, derives 14 business rules.
|
|
679
|
+
specs/entity-catalog.md updated (version: 1.0)
|
|
680
|
+
docs/business-rules.md updated (BR-001 through BR-014)
|
|
681
|
+
|
|
682
|
+
> /id3-design-ui
|
|
683
|
+
|
|
684
|
+
Step 1: Deriving UI structure from 5 entities... 8 screens mapped
|
|
685
|
+
Step 2: Design contract established (React + Tailwind detected)
|
|
686
|
+
Step 3: 7-Pillar gate passed. Mockup preview: http://localhost:52341
|
|
687
|
+
Step 4: Spawning Agent Teams for screen implementation...
|
|
688
|
+
Post-audit: all 7 pillars scored 3+/4
|
|
689
|
+
|
|
690
|
+
specs/ui-structure.md generated
|
|
691
|
+
specs/ui-design-contract.md generated
|
|
692
|
+
|
|
693
|
+
> /id3-spawn-team
|
|
694
|
+
|
|
695
|
+
Spawning Agent Teams:
|
|
696
|
+
- spec-generator: generating requirements.md, api-contracts.md
|
|
697
|
+
- implementer: building User -> Organization -> Membership -> ...
|
|
698
|
+
- qa-reviewer: verifying against information model
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### 例2: 既存プロジェクトへの適用(ブラウンフィールド)
|
|
702
|
+
|
|
703
|
+
```
|
|
704
|
+
$ cd existing-django-project
|
|
705
|
+
$ npx id3@latest
|
|
706
|
+
|
|
707
|
+
Detected: Django models (models.py), PostgreSQL migrations
|
|
708
|
+
IDDD installed.
|
|
709
|
+
|
|
710
|
+
$ claude
|
|
711
|
+
> /id3-identify-entities
|
|
712
|
+
|
|
713
|
+
Phase 0 (Brownfield) activated.
|
|
714
|
+
Scanning L1 (DB schema)... 23 tables found
|
|
715
|
+
Scanning L2 (Django models)... 19 models found
|
|
716
|
+
Scanning L3 (API contracts)... DRF serializers analyzed
|
|
717
|
+
Scanning L4 (Frontend)... React routes mapped
|
|
718
|
+
|
|
719
|
+
Discrepancies found:
|
|
720
|
+
- 4 tables have no corresponding Django model (logged in info-debt.md)
|
|
721
|
+
- 3 implicit business rules surfaced from view logic
|
|
722
|
+
|
|
723
|
+
Agent: "Does this information model accurately reflect your codebase?"
|
|
724
|
+
You: "Yes, but the legacy_audit table is deprecated -- remove it."
|
|
725
|
+
|
|
726
|
+
Entity catalog produced: 19 entities, 11 info-debt items
|
|
727
|
+
|
|
728
|
+
> /id3-design-information
|
|
729
|
+
|
|
730
|
+
Refining existing model...
|
|
731
|
+
New business rules derived from Django validators: BR-015 through BR-023
|
|
732
|
+
|
|
733
|
+
> /id3-design-ui
|
|
734
|
+
|
|
735
|
+
Step 1: Deriving UI structure... comparing with existing ui-inventory.md
|
|
736
|
+
Change summary: 2 new screens proposed, 3 existing screens updated
|
|
737
|
+
Step 2-4: Design contract, gate, and implementation...
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
---
|
|
741
|
+
|
|
742
|
+
## 知的系譜
|
|
743
|
+
|
|
744
|
+
IDDDはいくつかの知的伝統からアイデアを統合しています:
|
|
745
|
+
|
|
746
|
+
- **Peter Chen の ER モデル (1976)** -- 「現実世界は Entity と Relationship から成る。」情報構造がアプリケーションロジックに先行するという基礎的な洞察。
|
|
747
|
+
- **Len Silverston のユニバーサルデータモデル** -- 再利用可能な情報パターン(Party、Product、Order、Hierarchy)。発見された Entity を検証するチェックリストとして機能します。
|
|
748
|
+
- **Eric Evans の Domain-Driven Design (2003)** -- Bounded Context、Ubiquitous Language、Aggregate パターン。IDDDはドメイン言語と明示的な境界への重点を継承しています。
|
|
749
|
+
- **Sophia Prater の OOUX (Object-Oriented UX)** -- 「インタラクションの前にオブジェクトをデザインせよ。」ORCAフレームワーク(Objects、Relationships、CTAs、Attributes)はIDDDの出力優先UI導出に直接影響を与えています。
|
|
750
|
+
- **Jamie Lord の "Data First, Code Second" (2024)** -- 「知識をデータに畳み込め。」Unix の表現の法則を現代のソフトウェア開発に適用。
|
|
751
|
+
- **Mitchell Hashimoto の Harness Engineering (2026)** -- `Agent = Model + Harness`。AIエージェントが長期にわたって効果的であり続けるには、アーキテクチャ上の制約、コンテキストエンジニアリング、およびエントロピー管理が必要であるという洞察。IDDDの Hook システム、バージョンヘッダー、auto-audit は Harness Engineering の原則を直接適用したものです。
|
|
752
|
+
|
|
753
|
+
**核となる洞察:** *論理モデルが完成すると、技術選定の前にアプリケーション動作の80%がすでに定義されている。そしてその情報モデル自体が、AIエージェントにとって最良の Harness である。*
|
|
754
|
+
|
|
755
|
+
---
|
|
756
|
+
|
|
757
|
+
## ライセンス
|
|
758
|
+
|
|
759
|
+
MIT
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
```
|
|
764
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
765
|
+
│ │
|
|
766
|
+
│ "What information exists?" -- always the first question. │
|
|
767
|
+
│ │
|
|
768
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
769
|
+
```
|