mcpField
P
principle-model-the-domain

principle-model-the-domain

github.com/cursor開発14.6k4.2k 回インストール1 日前に更新
リポジトリ

principle-model-the-domain について

領域ルールをデータ構造で表現し、分散した分岐や無効な状態を減らす開発者向けスキルです。効果のない抽象化を避ける指針も示します。

主な機能

  1. 01状態機械でライフサイクルを表現
  2. 02型付きモデルでデータ形状を制約
  3. 03マップやユニオン型で分岐を集約
  4. 04領域知識を軸にモジュールを構成
  5. 05アクセスパターンに応じた構造選択

活用シーン

  1. 01同期が必要な複数の真偽値を置き換える
  2. 02ファイル間に散らばる条件分岐を集約する
  3. 03重複する領域ルールやフェーズ別モジュールを再構成する

インストール

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

$npx skills add https://github.com/cursor/plugins --skill principle-model-the-domain

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

詳細

ドメインをモデル化する

ドメインの実態を条件分岐に散在させるのではなく、データ構造にエンコードします。ドメインに合った構造にすると、無効な状態を表現できなくなり、分岐もなくなります。書き込み時に構造を選ぶのは簡単です。後から修正するとなるとリファクタリングのように感じられ、先送りされます。

次のような方法を検討してください。

  • 散在するブール値、フェーズ、ライフサイクルチェックの代わりに、ステートマシンを使います。
  • 緩やかなパラメーターや繰り返される形状の前提の代わりに、型付きモデルを使います。
  • 複数のファイルに分散した分岐の代わりに、マップ、レジストリ、ルックアップテーブル、または判別可能なユニオンを使います。
  • その場しのぎの状態変更の代わりに、リデューサーまたはコマンド/イベントモデルを使います。
  • load、validate、transform、save のような手順ではなく、ドメイン知識のまとまりを軸にモジュールを構成します。実行順序は責務の所在ではありません。
  • 繰り返される振る舞い、責務、または不変条件をまとめる、小さなモジュール境界を設けます。
  • アクセスパターンに応じて、キュー、キャッシュ、インデックス、グラフ、ツリー、または正規化されたコレクションを使います。
  • ほかにも、適合する構造を使います。適合するものがない場合は、コードで絶対に許してはならないことと、データの読み取られ方を整理し、それらを正確に表現する構造を見つけます。

抽象化を無理に導入しないでください。現在の形がすでに明快で、局所的に完結しており、今後大きくなる可能性も低いなら、退屈なコードを選んでください。分岐、重複したルール、無効な状態、ライフサイクル上のリスクを減らさずに間接性を増やす抽象化には、懐疑的であるべきです。

これを怠った兆候は、新機能によって既存の if/else チェーンに分岐が一つ追加されたり、最初のブール値と同期させる必要がある二つ目のブール値が追加されたりすることです。時間軸に沿った分解も、もう一つの兆候です。フェーズ名を付けたモジュールでは、同じドメインルールが各ステップで繰り返されます。

コメント