Claude Code の CLAUDE.md・スキル・hooks・MCP・サブエージェントの使い分け
結論
- 毎回守らせたい規約やビルドコマンドは CLAUDE.md に、必要なときだけ使う資料や呼び出す手順はスキルに分けます。
- 毎回必ず実行させたいことや、破られては困るガードレールは hooks にします。外部サービスとの接続は MCP、大量の読み取りを切り離したい作業はサブエージェントの役割です。
- 最初から全部設定する必要はありません。同じ失敗や手作業が繰り返されたときに、該当する機能を一つずつ足していきます。
各機能が担う役割をひとことで整理する
この記事は、Claude Code(Anthropic 社が提供する、ターミナルで動く AI コーディングエージェント)の拡張機能の使い分けを、公式ドキュメントの記述に沿って整理したものです。執筆時点(2026年10月)の内容で、私が実機で試した結果ではありません。
公式ドキュメントによると、組み込みツールでほとんどのコーディング作業はこなせます。拡張機能は、Claude が何を知っているかを調整し、外部サービスとつなぎ、作業を自動化するための層です。
- CLAUDE.md:毎セッション Claude が見る、持続的な前提情報です。
- スキル:再利用できる知識や手順を書いたマークダウンのファイルです。
/deployのようなコマンドで呼ぶほか、関連するときに Claude が自動で読み込むこともできます。 - MCP:外部サービスやツールへの接続です。
- サブエージェント:独立したコンテキストで動き、要約だけを返す作業役です。
- hooks:ライフサイクルイベントに達したときに、スクリプトなどを実行する仕組みです。
- プラグイン:スキル、hooks、サブエージェント、MCP サーバーを一つにまとめて配る単位です。
CLAUDE.md とスキルの使い分け:毎回か、必要なときか
どちらも指示を保存できますが、読み込み方が違います。公式ドキュメントによると、CLAUDE.md は毎セッション自動で読み込まれ、スキルは必要になったときに読み込まれます。/deploy のように呼び出して手順を動かせるのはスキルで、CLAUDE.md にはできません。
- CLAUDE.md に置くもの:コーディング規約、ビルドコマンド、プロジェクト構成、「〜しない」ルールなど、Claude が常に知っているべきこと。
- スキルに置くもの:API ドキュメントやスタイルガイドのように、たまに必要になる資料。デプロイ、レビュー、リリースのように、呼び出して動かす手順。
目安として、CLAUDE.md は 200 行未満に保つとされています。増えてきたら、参照用の内容をスキルに移すか、.claude/rules/ のファイルに分けます。ルールに paths frontmatter を付けると、該当するファイルを扱うときだけ読み込まれ、コンテキストを節約できます。
必ず守らせたいことは hooks に書く
公式ドキュメントによると、hook はイベントのたびに必ず発火し、トリガーが保証されます。一方スキルは Claude が指示を解釈して動くため、結果がぶれることがあります。
- hooks が向く場面:編集後のリント、危険なコマンドのブロック、ログ、通知など、Claude の判断が要らず毎回同じ動きをさせたいこと。
- スキルが向く場面:Claude に適用方法を判断させたいことや、スクリプトではなく知識にあたる内容。
/releaseのチェックリストやデバッグの手順書などです。
注意したいのはガードレールです。「.env を編集しない」と CLAUDE.md やスキルに書いても、それは依頼であって保証ではありません。PreToolUse hook で編集をブロックすれば強制になります。毎回守る必要があるルールは、プロンプトの指示ではなく hook にする、というのが公式ドキュメントの考え方です。
MCP とサブエージェント:つなぐか、切り離すか
MCP は外部サービスにつなぐ
MCP は外部サービスへ接続するためのプロトコルです。公式ドキュメントによると、外部システム向けの専用ツールを Claude に与え、接続と認証はサーバー側で処理されます。例として、データベースへの問い合わせ、Slack への投稿、ブラウザの操作が挙げられています。スキルは、そのツールを上手に使うための知識を渡す役割です。MCP でデータベースにつなぎ、スキルにスキーマとクエリの型を書く、という組み合わせが紹介されています。
サブエージェントは作業を切り離す
コンテキストを分離したいとき、またはコンテキストウィンドウが埋まってきたときに使います。多数のファイルを読む調査をさせても、メインの会話には要約だけが戻ります。スキルはメインのウィンドウに内容が加わりますが、サブエージェントは別のウィンドウを使います。
組み合わせも可能です。サブエージェントに skills: field でスキルを事前に読み込ませたり、スキルに context: fork を指定して隔離した環境で動かしたりできます。詳細は公式ドキュメントで確認してください。
困りごとが出たら足す:追加のきっかけ
公式ドキュメントによると、最初にすべてを設定する必要はなく、機能ごとに目安となるきっかけがあります。
- Claude が同じ規約やコマンドを2回間違えた:CLAUDE.md に書く
- 毎回同じプロンプトを打って作業を始めている:ユーザーが呼び出せるスキルとして保存する
- 同じ手順書をチャットに3回目に貼ろうとしている:スキルにまとめる
- Claude から見えないブラウザのタブのデータを何度もコピーしている:そのシステムを MCP サーバーとして接続する
- 補助的な作業の出力が会話を埋め、後で参照しない:サブエージェントに回す
- 毎回頼まずに必ず実行させたい:hook を書く
- 2つ目のリポジトリで同じ設定が必要になった:プラグインにまとめる
繰り返される間違いやレビューコメントは、チャットでその場限りの訂正をするのではなく、CLAUDE.md の修正にします。社内に配る場合は、プラグインにまとめるとマーケットプレイス経由で配布でき、プラグインのスキルには名前空間が付くので複数のプラグインが共存できます。
コンテキスト消費と、重なったときの扱い
公式ドキュメントでは、機能を足すほどコンテキストを消費し、増やしすぎるとノイズになって、スキルが正しく起動しなくなったり規約を見失ったりすると説明されています。
- CLAUDE.md:セッション開始時に全文が読み込まれ、毎リクエストで消費します。
- スキル:説明は毎リクエスト、全文は使うときに読み込まれます。副作用のあるスキルには
disable-model-invocation: trueを付けると、名前を指定したときだけ動き、コンテキストも節約できます。 - MCP:ツール名が読み込まれ、スキーマは必要になるまで保留されます。
/mcpで接続状況、/context allでトークン消費を確認できます。 - hooks:出力を返さない限り、消費はゼロです。
- サブエージェント:メインのセッションからは分離されます。
スキルの説明があいまいだったり重なっていたりすると、別のスキルが読まれたり、役立つスキルが見逃されたりします。使わせたいスキルは名前を指定して呼び出します。なお、同じ機能が複数の階層にある場合、CLAUDE.md は全階層が加算され、スキル・サブエージェント・MCP サーバーは同名なら一つが優先され、hooks はすべて発火します。優先順位の細部は公式ドキュメントで確認してください。
よくある質問
CLAUDE.md に「触らない」と書けば、ファイルの編集を防げますか?
防げる保証はありません。公式ドキュメントによると、CLAUDE.md やスキルに書いた指示は依頼であって保証ではありません。毎回必ず守らせたいルールは、PreToolUse hook で編集をブロックする形で hook として作ります。
CLAUDE.md が長くなってきたらどうしますか?
公式ドキュメントでは 200 行未満を目安としています。参照用の内容はスキルに移すか、.claude/rules/ のファイルに分けます。ルールは paths frontmatter で、該当ファイルを扱うときだけ読み込ませることもできます。
MCP とスキルは、どちらか一方を選ぶものですか?
役割が違い、組み合わせて使います。公式ドキュメントによると、MCP は外部サービスへの接続とツールを提供し、スキルはそのツールを上手に使うための知識や手順を提供します。
関連する無料ツール
Claude Code スキル(SKILL.md)雛形生成: スキル名・説明・手順・出力の形を入れると、置き場所つきで SKILL.md のひな形を出力します。
参考(執筆時点)
- Extend Claude Code(公式ドキュメント)
この記事は、上の出典の内容を中小DXラボが要約・再構成したものです。仕様は変わることがあります。社内で使う・配る前に、公式ドキュメントで最新の情報を確認してください。