◀ ガイドTOP 決定フレームワーク
対象拡張メカニズムの使い分けを学びたい開発者
達成目標CLAUDE.md/Hooks/Skills/MCPを適切に使い分けられる
前提知識Getting Started完了
所要時間15分

決定フレームワーク

CLAUDE.md / Hooks / Skills / MCP — 4つの拡張メカニズムの正しい使い分け。このページを読めば、「どこに何を書くべきか」の判断に迷わなくなります。

全体像

Claude Codeには4つの拡張メカニズムがあります。それぞれの目的と特性を理解し、正しく使い分けることが最も重要です。

MD

CLAUDE.md

プロジェクトの「会社ポリシー」。常時ロードされ、全会話に適用される。プロジェクトの基本方針やコーディング規約を記述する。

HK

Hooks

「セキュリティゲート」。シェルコマンドで100%確実に自動実行される。Claudeの判断を介さない決定的な安全装置。

SK

Skills

「手順書」。必要な時だけ文脈に応じて自動ロードされる。専門知識やワークフローを格納する。

MC

MCP

「専門ツールの配線」。外部サービスへの接続プロトコル。ブラウザ操作やデータベース連携など、外界との橋渡しを担う。

決定的 vs 確率的

拡張メカニズムを理解する上で最も重要な概念が「決定的(Deterministic)」と「確率的(Probabilistic)」の違いです。

毎回必ず実行

決定的(Deterministic)

  • CLAUDE.md — 起動時に100%ロード。ルールに従う確率は約80%。
  • Hooks — イベント発火時に100%実行。シェルスクリプトなので判断の余地なし。
用途: 安全ルール、禁止事項、自動チェック
Claudeが文脈で判断

確率的(Probabilistic)

  • Skills — 起動時はdescription(1行)のみロード。関連する会話が発生した時にフルコンテンツをロード。
  • Agents — サブエージェントとして呼び出され、特定タスクを処理。
用途: 専門知識、ワークフロー、タスク別手順
📝 Note

この区別がClaude Code設計の核心です。「安全に関わるものは決定的に(Hooks)」「知識やガイドラインは確率的に(Skills)」が基本原則。CLAUDE.mdは決定的にロードされますが、遵守は確率的(約80%)である点に注意してください。

CLAUDE.md

🏢

メタファー: 「会社ポリシー」 — 全社員が入社初日に読む基本ルール。常に意識されるが、100%遵守されるとは限らない。

特性

✅ 適するもの

  • プロジェクト概要と基本原則
  • コーディング規約(MUST/NEVER)
  • ワークフロー宣言(Plan Mode Default)
  • 主要ファイルパス

❌ 適さないもの

  • 長い手順書(→ Skills)
  • 自動実行すべきチェック(→ Hooks)
  • 外部ツールの設定(→ MCP)
  • 500行の百科事典(→ 分割)

Hooks

🛡️

メタファー: 「セキュリティゲート」 — オフィスの入退室ゲート。ルールに合わなければ物理的に通さない。

特性

主なイベント

イベント タイミング 用途例
PreToolUse ツール実行前 危険コマンドブロック
PostToolUse ツール実行後 結果検証
PostWrite ファイル書き込み後 自動lint/test
Stop セッション終了時 レポート生成
SubagentStop サブエージェント終了時 結果検証
UserPromptSubmit ユーザー入力時 入力バリデーション
📝 Note

Hooksは全22イベントに対応しています(上記は主要6イベント)。その他: PermissionRequest, SubagentStart, SessionStart, SessionEnd, PreCompact, PostCompact, WorktreeCreate, TaskCompleted, ConfigChange, Elicitation等。

ハンドラーは4種類: command(シェルコマンド)、http(HTTPリクエスト)、prompt(LLM判断)、agent(サブエージェント起動)

✅ 適するもの

  • 破壊操作の完全ブロック(rm -rf, force push)
  • シークレットキーの自動チェック
  • ファイル保存後の自動lint/format
  • 長セッション警告

❌ 適さないもの

  • 複雑な判断が必要な処理(→ Skills)
  • 外部API連携(→ MCP)

Skills

📖

メタファー: 「手順書」 — 必要な時だけ棚から取り出すマニュアル。普段は存在だけ知られている。

特性

✅ 適するもの

  • コードレビュー手順
  • デプロイワークフロー
  • テスト設計ガイドライン
  • フロントエンド設計パターン
  • デバッグ手順

❌ 適さないもの

  • 毎回必ず適用すべきルール(→ CLAUDE.md)
  • 100%実行すべき安全チェック(→ Hooks)
  • 外部サービスとの接続(→ MCP)

MCP

🔌

メタファー: 「専門ツールの配線」 — 電話回線のように、外部サービスへの接続を確立する標準プロトコル。

特性

✅ 適するもの

  • ブラウザ操作(Playwright)
  • ドキュメント連携(Notion)
  • データベース接続
  • Webスクレイピング(Firecrawl)
  • GitHub操作

❌ 適さないもの

  • プロジェクト内ルール(→ CLAUDE.md)
  • 自動チェック(→ Hooks)
  • 知識・手順(→ Skills)

決定木フローチャート

「このルール/機能をどこに置くべきか?」を判断するフローチャートです。上から順に質問に答えていくことで、最適な配置先が決まります。

このルール/機能をどこに置くべき?
Q1: 毎回のセッションで必要?
Yes
200行以内に収まる?
Yes
CLAUDE.md
No
.claude/rules/ に分割
No
Q2へ進む ↓
Q2: 100%実行が必須?(判断の余地なし)
Yes
Hooks
No
Q3へ進む ↓
Q3: 外部ツール/サービス連携が必要?
Yes
MCP
No
Skills
✅ Tip

迷ったらこのフローチャートに戻ってください。ほとんどのケースは3つの質問で解決します。複数のメカニズムを組み合わせる場合(例: CLAUDE.mdで方針宣言 + Hooksで強制)は、それぞれの役割を明確に分けましょう。

よくある判断ミス

多くの開発者が陥りがちな3つのアンチパターンとその対策です。

1「全部CLAUDE.mdに書く」

300行のCLAUDE.mdは情報過多でClaudeの注意力が分散します。CLAUDE.mdはプロジェクト概要とMUST/NEVERルールだけに絞り、詳細な手順はSkillsへ、カテゴリ別のルールは .claude/rules/ に分割してください。理想は80-120行です。

2「Hooksを使わずSkillsで安全を担保」

「ファイル削除前に確認して」とSkillsに書いても、Claudeは確率的にしか従いません。安全に関わるもの — 破壊的操作のブロック、シークレットキーの漏洩防止、本番環境の保護 — はHooksで100%ブロックすべきです。安全は「お願い」ではなく「仕組み」で担保してください。

3「MCPの代わりにBash toolで外部連携」

curlfetch で無理やり外部APIを叩くより、MCPサーバーを設定した方が安定・安全です。MCPでは認証やエラーハンドリングが標準化され、レート制限の管理も組み込まれます。一度設定すれば、Claudeが自然に外部ツールを使いこなせるようになります。