mcpField
D
domain-modeling

domain-modeling

github.com/jayden-dang開発149 回インストール4 日前に更新
リポジトリ

domain-modeling について

domain-modeling は、プロジェクトの用語を整理し、確定した定義を CONTEXT.md に記録するスキルです。曖昧さや矛盾を検討してコードと照合し、決定や ADR を所定の記録先に振り分けます。

主な機能

  1. 01プロジェクト用語集の整理と更新
  2. 02曖昧または矛盾する用語の検討
  3. 03用語とコードの照合
  4. 04確定時点での定義記録
  5. 05三つの条件による ADR 判断

活用シーン

  1. 01意味が重なるドメイン用語の明確化
  2. 02用語集とコードの不一致解消
  3. 03プロジェクトの標準用語の記録
  4. 04選択が ADR に値するかの判断

インストール

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

$npx skills add https://github.com/jayden-dang/skills --skill domain-modeling

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

詳細

ドメインモデリング

設計しながら、プロジェクトの用語集を積極的に作り、磨き上げます。語彙を知るために CONTEXT.md をただ 読む ことは、どのスキルでも行う習慣です。このスキルはモデルを 変更する ためのものです。用語に疑問を投げかけ、境界を探り、合意に至った時点ですぐに記録します。

会話中

別のスキルがヒアリングを担当している場合(たとえば brainstorm 内の grilling)、このスキルは2人目の聞き手にはならず、受動的に動作します。静かな作業は直接行います。合意した用語を CONTEXT.md に記録し、コードとの相互参照を行います。ただし、ユーザーへの確認が必要なこと(異議の提示、意味の明確化、境界ケースの確認)は、独自のターンを設けません。ヒアリングで使われている唯一の質問チャネルに引き継ぎ、依存関係の順に一度に1つずつ質問します。このスキルが単独で呼び出された場合に限り、自ら質問を進めます。

用語を用語集と照合して検証します。 ユーザーの用法が CONTEXT.md と食い違う場合、その場で指摘します。「用語集では 取消 は注文全体を無効にすることと定義されていますが、ここでは1つの商品項目を削除する意味のようです。どちらでしょうか?」

曖昧な表現を明確にします。 用語が曖昧だったり、複数の意味に使われたりしている場合は、正確で標準となる用語を提案します。「何度も アカウント とおっしゃっていますが、Customer と User のどちらでしょうか?ここでは異なるものです。」

境界ケースのシナリオで負荷をかけます。 概念同士の関係が話題になったら、境界を試す具体的なシナリオを考えます。「請求期間の途中で、未払いの Invoice がある Member が退会したら、その Workspace はどうなりますか?」境界を暗黙のままにせず、明示させます。

コードとの相互参照を行います。 ユーザーが何かの動作を説明したら、コードと一致しているか確認します。矛盾があれば明確に示します。「用語集でもあなたも部分返金があるとしていますが、コードでは全額返金しかできません。どちらが正しいでしょうか?」用語集とコードの食い違いを、黙って放置してはいけません。

CONTEXT.md の更新

用語が合意されたら、その場ですぐ CONTEXT.md を更新します。用語集の編集を後回しにしてまとめて行ってはいけません。まとめて記録しようとした用語は忘れられます。CONTEXT.md がまだ存在しない場合は、最初の用語が合意された時点で必要に応じて作成します(プラグインとしてインストールされている場合はスキルセットの templates/CONTEXT.md を ${CLAUDE_PLUGIN_ROOT}/templates から、そうでない場合はこの SKILL.md からの相対パス ../../../templates からコピーします)。

CONTEXT.md に記録するのは、用語の定義だけです。決定事項は ADR に、実装の詳細や仕様の断片は仕様書に記録します。用語の形式は次のとおりです。

**Workspace**:
The top-level container a team collaborates in; owns all Notes and Folders.
_Avoid_: project, space, tenant

明確な方針を持ち、標準用語を1つだけ定め、競合する用語は _Avoid_ リストに入れます。定義は1〜3行の簡潔なものにとどめます。対象が何であるかを記し、どのように実装されるかは記しません。プロジェクト固有の概念だけを含め、一般的なプログラミング用語は含めません。

ADR — 3つの条件をすべて満たす場合に限り作成

ADR を提案するのは、次の 3つすべて を満たす場合に限ります。

  1. 覆すのが難しい — 後から方針を変えるには、実質的なコストがかかります。
  2. 背景を知らないと意外に思える — 将来の読者が「なぜわざわざこの方法にしたのか」と疑問に思うでしょう。
  3. 実際のトレードオフがある — 現実的な選択肢が複数あり、特定の理由からそのうちの1つを選びました。

1つでも満たさない場合は、ADR を作成しません。対比例として、意外で実際のトレードオフがある決定でも、簡単に覆せる なら ADR は不要です。検索ボックスのデバウンスを200 msにする決定は、応答性とリクエスト量のトレードオフがありますが、後から変えるのは1行の変更なので、「覆すのが難しい」という条件を満たしません。ADR ではなくコードに記録します。形式は docs/adr/NNNN-slug.md とします(ディレクトリは必要になった時点で作成します)。番号は連番とし、既存の番号をスキャンして最も大きい番号の次を使います。本文は短いタイトルと 1〜3文 で、背景、決定、理由を記します。それだけで十分です。価値があるのは、セクションを埋めることではなく、決定とその理由を記録することです。

新しい決定が既存の ADR と矛盾する場合は、その矛盾をユーザーに伝え、明示的に解決します(古い ADR を番号で指定して置き換えます)。

コメント