ddd-validate について
ddd-validateは、TypeScriptプロジェクトのドメイン駆動設計における境界や規約を確認する開発スキルです。境界づけられたコンテキスト、集約、イベント、リポジトリを点検し、結果を報告して保存します。
主な機能
- 01コンテキストの検出
- 02コンテキスト間インポートの確認
- 03集約不変条件の点検
- 04イベント規約の検証
- 05リポジトリ配置の確認
- 06結果の報告と保存
活用シーン
- 01ドメインコンテキスト間のインポート監査
- 02検証を迂回する集約セッターの特定
- 03ドメインイベントの命名と不変性の確認
- 04リポジトリのインターフェースと実装配置の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill ddd-validateインストール後、Claude Code で/ddd-validateを入力して読み込まれたか確認します。
詳細
すべての境界づけられたコンテキストで、ドメイン境界の整合性を検証します。
手順
-
コンテキストを検出する:
src/*/domain/をスキャンして、すべての境界づけられたコンテキストを見つけます。 -
境界を越える違反を確認する:
- 各コンテキストについて、すべての
.tsファイルをスキャンしてインポート文を調べます - 別のコンテキストの
domain/ディレクトリを直接参照するインポートをすべて検出します - 許可:別のコンテキストの公開
index.ts(アプリケーション層)からのインポート - 違反:
src/<other-context>/domain/entities/...からの直接インポート
# Find cross-boundary imports for ctx in $(find src -maxdepth 2 -name "domain" -type d | sed 's|src/||;s|/domain||'); do grep -rn "from ['\"].*src/" "src/$ctx/" --include="*.ts" | grep -v "src/$ctx/" || true done - 各コンテキストについて、すべての
-
集約の不変条件の適用を確認する:
- 集約ルートエンティティをスキャンし、検証を迂回するパブリックセッターを調べます
- 不変条件のチェックがない変更可能なパブリックプロパティをすべて検出します
- 子エンティティに直接アクセスできないことを確認します(集約ルート経由でアクセスする必要があります)
-
イベントの命名規則を確認する:
- ドメインイベントは過去形で命名します(例:
OrderCreated。CreateOrderではありません) - イベントは不変である必要があります(パブリックセッターなし)
- イベントには集約 ID を含める必要があります
- ドメインイベントは過去形で命名します(例:
-
リポジトリのパターンを確認する:
- リポジトリインターフェースは
infrastructure/ではなくdomain/repositories/に配置する必要があります - リポジトリの実装は
domain/ではなくinfrastructure/に配置する必要があります - 各集約ルートに対して、リポジトリは厳密に 1 つである必要があります
- リポジトリインターフェースは
-
検出結果を報告する:
- ファイルパス、行番号、違反の種類、提案を含む違反一覧の表を出力します
- 次のカテゴリに分類します:
BOUNDARY、INVARIANT、EVENT、REPOSITORY - 次の概要を出力して終了します:違反の総数、カテゴリ別の件数、重大度
-
結果を保存する:
npx @claude-flow/cli@latest memory store --key "ddd-validation-TIMESTAMP" --value "RESULTS_SUMMARY" --namespace tasks npx @claude-flow/cli@latest hooks post-task --task-id "ddd-validate" --success true --store-results true
コメント
Markdown 対応