mcpField
D
ddd-aggregate

ddd-aggregate

github.com/ruvnet開発80.0k749 回インストール今日更新
リポジトリ

ddd-aggregate について

ddd-aggregateは、既存の境界づけられたコンテキスト内にドメイン駆動設計の集約ルートを作成する開発スキルです。ドメイン層のファイルとテストのひな型を用意し、モデルをRufloに記録します。

主な機能

  1. 01既存の境界づけられたコンテキストを検証
  2. 02集約ルートと値オブジェクトを作成
  3. 03リポジトリーインターフェースを定義
  4. 04作成・更新のドメインイベントを追加
  5. 05ユニットテストのひな型とbarrel exportを生成
  6. 06モデルをRufloに保存

活用シーン

  1. 01既存コンテキスト内で新しい集約を開始
  2. 02ドメインエンティティとIDの構造を整備
  3. 03リポジトリーとイベント定義をひな型化

MCP 対応

RufloのMCPツールを使い、集約をドメインモデルグラフとタスクメモリーに保存します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ruvnet/ruflo --skill ddd-aggregate

インストール後、Claude Code で/ddd-aggregateを入力して読み込まれたか確認します。

詳細

バウンデッドコンテキスト内に、完全な集約ルートをスキャフォールディングします。

$ARGUMENTS を <context-name> <aggregate-name>(どちらも kebab-case)として解析します。コンテキストは src/ 配下にすでに存在している必要があります。

手順

  1. 検証:src/<context>/domain/ が存在することを確認します。存在しない場合は、最初に /ddd-context <context> を実行するよう提案します。

  2. タスク前フック:npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: <aggregate-name> in <context>"

  3. 集約ルートエンティティの作成:

    • ファイル:src/<context>/domain/entities/<aggregate-name>.entity.ts
    • 含める内容:一意の ID フィールド、不変条件の検証を行うコンストラクター、ビジネスルールを適用するドメインメソッド、ID に基づく equals()
    • ベースの AggregateRoot インターフェースを拡張または実装する TypeScript クラスをエクスポートします。
  4. 値オブジェクトの作成:

    • ファイル:src/<context>/domain/value-objects/<aggregate-name>-id.value-object.ts
    • 含める内容:ファクトリーメソッドと検証を備えた不変の ID 値オブジェクト
    • 集約のプロパティとして適切な追加の値オブジェクトを追加します。
  5. リポジトリーインターフェースの作成:

    • ファイル:src/<context>/domain/repositories/<aggregate-name>.repository.ts
    • 含める内容:findById、save、delete メソッド
    • 集約ルートとその ID 値オブジェクトを型として使用します。
    • インターフェースのみを作成し、実装は作成しません(インフラストラクチャの関心事です)。
  6. ドメインイベントの作成:

    • ファイル:src/<context>/domain/events/<aggregate-name>-created.event.ts
    • ファイル:src/<context>/domain/events/<aggregate-name>-updated.event.ts
    • 含める内容:イベント名(過去形)、タイムスタンプ、集約 ID、ペイロード
  7. ユニットテストのスタブを作成:

    • ファイル:src/<context>/domain/entities/<aggregate-name>.entity.test.ts
    • 含める内容:コンストラクターの不変条件、ドメインメソッド、等価性のテストケース
    • describe/it を使用し、名前は should [behavior] when [condition] の形式にします。
  8. バレルエクスポートの更新:関連する index.ts バレルファイルに新しいファイルを追加します。

  9. ドメインモデルグラフへの保存:

    mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store --parent "context:<context>" --child "aggregate:<aggregate-name>" --relation "contains"
    mcp__plugin_ruflo-core_ruflo__memory_store --key "ddd-aggregate-<context>-<aggregate-name>" --value "AGGREGATE_SUMMARY" --namespace tasks
    
  10. タスク後フック:npx @claude-flow/cli@latest hooks post-task --task-id "ddd-aggregate-<aggregate-name>" --success true --train-neural true

コメント