『DDD Distilled』(Vaughn Vernon) と『Domain Modeling Made Functional』(Scott Wlaschin) をベースにした、対話型ドメイン駆動設計モデリングスキル。 Claude Code / Codex CLI / Gemini CLI の3環境、macOS / Linux / Windows で動作します。
AI がファシリテーター兼ドメインエキスパート(時に批判者)として振る舞い、以下12フェーズの対話を通じてモデリングをガイドします — discover, storming, contexts, mapping, aggregates, events, validate, glossary, workflows, types, simulate, publish。
Phase 1〜8 で戦略的設計からユビキタス言語までをマークダウンに落とし、Phase 9 でワークフローのパイプライン構造を設計、Phase 10 でコンパイル可能な型定義コードに翻訳、Phase 11 で型レベルのシナリオ検証と UI 項目自動抽出まで行います。Phase 12 (publish) で docs/domain/ の全成果物を、共通ナビで相互リンクした自己完結の HTML サイト(ファイルは別だがリンクで束ねられた“1つの HTML”)に変換します。Phase 13 (sync) は --analyze で見つけたモデルと実装の差異を、計画・実装してモデルとコードを一致させます。
git clone https://github.com/tango238/distill-ddd.git
cd distill-ddd
./install.shgit clone https://github.com/tango238/distill-ddd.git
cd distill-ddd
.\install.ps1デフォルトでは対応する3つの CLI 全てにインストールされます。特定の CLI だけを対象にしたい場合はフラグを指定:
| CLI | bash | PowerShell |
|---|---|---|
| Claude Code | ./install.sh --claude |
.\install.ps1 -Claude |
| Codex CLI | ./install.sh --codex |
.\install.ps1 -Codex |
| Gemini CLI | ./install.sh --gemini |
.\install.ps1 -Gemini |
アンインストール:
./install.sh --uninstall # macOS / Linux
.\install.ps1 -Uninstall # Windows各 CLI に、スキル本体 (SKILL.md + references + scripts) と /ddd を有効化するネイティブなエントリポイントの両方を配置します。
| CLI | スキル本体 | エントリポイント (/ddd) |
|---|---|---|
| Claude Code | ~/.claude/skills/ddd/ |
同上(自動認識) |
| Codex CLI | ~/.codex/skills/ddd/ |
~/.codex/prompts/ddd.md |
| Gemini CLI | ~/.gemini/skills/ddd/ |
~/.gemini/commands/ddd.toml |
Windows では %USERPROFILE% 配下に同構造で配置されます(例: %USERPROFILE%\.codex\prompts\ddd.md)。
3つの CLI いずれからも /ddd で起動できます:
/ddd フェーズ選択メニュー
/ddd <phase> 指定フェーズに直接ジャンプ (discover, storming, contexts, ...)
/ddd <phase> --analyze 既存コードベースとモデルを突き合わせる
/ddd <phase> --challenge 批判モード: 前提を徹底的に疑う
/ddd sync モデル⇔実装の差異を計画・実装して解消する
/ddd --resume 前回のセッション状態から再開
/ddd --status 全フェーズの進捗を表示
| # | Phase | 目的 | 成果物 |
|---|---|---|---|
| 1 | discover |
Core Domain・ビジネスドライバー・問題空間を特定 | discovery.md |
| 2 | storming |
Event Storming: イベント → コマンド → 集約 | event-storming.md |
| 3 | contexts |
Bounded Context と Subdomain を定義 | bounded-contexts.md |
| 4 | mapping |
コンテキスト間関係を描いた Context Map を作成 | context-map.md |
| 5 | aggregates |
4つのルールに基づく集約設計 | aggregates.md |
| 6 | events |
ドメインイベントの命名・属性・因果関係を設計 | domain-events.md |
| 7 | validate |
ユースケース・シナリオ・UI ウォークスルーでモデルを検証 | validation.md |
| 8 | glossary |
ユビキタス言語を集約・洗練 | glossary.md |
| 9 | workflows |
ワークフローのパイプライン構造(ステージ・ステップ・依存・エラー・副作用)を対話で設計 | workflows.md |
| 10 | types |
ドメインモデルをコンパイル可能な型定義に翻訳(TypeScript / Kotlin / Scala / Rust / C# / F#) | code/types/*.ts |
| 11 | simulate |
型レベルのシナリオ検証と、Unvalidated* 型からの UI フィールド自動抽出 |
code/simulations/, ui-fields.md |
| 12 | publish |
全成果物を共通ナビで相互リンクした自己完結 HTML サイトに変換 | docs/domain/*.html |
| 13 | sync |
--analyze で見つけたモデル⇔実装の差異を、権威判定 → 計画 → 実装 → モデル再整合まで進める |
sync.md |
成果物は、スキルを動かすプロジェクトの docs/domain/ に書き出されます。
/ddd sync は --analyze の一歩先のフェーズです。--analyze が「差異を指摘するだけ」で止まるのに対し、
sync は差異ごとに モデルとコードのどちらが正か(model / code / 収束)を決め、コードを直すべき差異は
実装計画 → 承認 → TDD 実装 まで進め、コード変更で閉じた差異は docs/domain の赤付箋も更新して
モデルとコードを一致させます。コミットは依頼時のみ・デフォルトブランチなら先にブランチを切ります。
/ddd publish は同梱の scripts/build_site.py(Python 3 標準ライブラリのみ・CDN 不要)で
docs/domain/*.md を *.html に変換し、全ページ共通の sticky ナビで束ねます。冪等なので編集後に再実行可能。