拡張機能の使い分け
CLAUDE.md・Skill・MCP・サブエージェント・エージェントチーム・フック・プラグインを、読み込まれるタイミングと役割の違いで整理する
この節で学ぶこと
この節では、CLAUDE.md・Skill・MCP・サブエージェント・エージェントチーム・フック・プラグイン・Artifact という拡張機能を、読み込まれるタイミングと解決する課題の違いで整理します。 似た機能同士の使い分けと、複数箇所で定義した時にどちらが勝つかもわかります。
いつ読み込まれるかで機能を選ぶ
サブエージェント・エージェントチーム・コードインテリジェンス・Artifact も含めた全機能を、読み込まれるタイミングと役割で整理する
イメージでつかむ
新しく入ったチームメンバーを思い浮かべてください。情報の渡し方にはいくつも種類があります。
オンボーディング資料(CLAUDE.md)
常に頭に入っている
棚のマニュアル(Skill)
必要な時だけ取り出す
電話回線(MCP)
外部システムに直接問い合わせ
臨時アシスタント(サブエージェント)
大量に調べても要約だけ返す
相談し合うアシスタントたち(エージェントチーム)
分担して働く
自動手続き(フック)
判断に関係なく毎回走る
Claude Code の拡張機能も同じ発想。エージェントループのどこに・どう介入するかで機能が分かれる
Claude Code の拡張機能も同じ発想です。Claude Code の仕組みで説明される「考える→ツールを使う→結果を見る」というエージェントループの、どこに・どう介入するかで機能が分かれています。
ここがポイント
介入するタイミングで機能が分かれる
8つの拡張機能と使いどころ
8つの拡張機能を、何をするか・使いどころ・例で整理すると次のようになります。
CLAUDE.md
毎回の会話に読み込まれる永続的なコンテキスト。プロジェクトの規約や「常に◯◯せよ」というルールに使う(例:「npmではなくpnpmを使う。コミット前にテストを実行する」)
Skill
Claude が使える指示・知識・ワークフロー。再利用したい内容や参照資料、繰り返し行う作業に使う(例: /deploy でデプロイ手順を実行する、APIドキュメントをまとめたスキル)
サブエージェント
結果だけを要約して返す、独立した実行コンテキスト。コンテキストの分離・並列作業・専門特化した作業者に使う(例: 大量のファイルを読むが要点だけ返す調査タスク)
エージェントチーム
複数の独立した Claude Code セッションを連携させる。並列調査・新機能開発・対立仮説を立てたデバッグに使う(例: セキュリティ・パフォーマンス・テストを同時にチェックするレビュアーを立てる)
コードインテリジェンス
言語サーバーによるナビゲーションと診断。型のある言語や、grep では遅く不正確な大規模コードベースに使う(例: ファイル全体を読まずにシンボルの定義へジャンプする)
MCP
外部サービスへの接続。外部データやアクションが必要な時に使う(例: データベースへの問い合わせ、Slack投稿、ブラウザ操作)
フック
イベントで発火するスクリプト・HTTPリクエスト・プロンプト・サブエージェント。一致するイベントで必ず実行させたい自動化に使う(例: ファイル編集のたびに ESLint を走らせる)
Artifact
セッションの出力を非公開のインタラクティブなWebページとして公開する。端末のテキストより視覚的に見せたい・共有したい出力に使う(例: 調査が進むたびに更新されるインシデントのタイムライン)
プラグインは配布のための層です。1つのプラグインは Skill・フック・サブエージェント・MCPサーバーを束ねてインストール可能な1単位にまとめます。プラグインのスキルは /my-plugin:review のように名前空間化されるため、複数のプラグインを同時に入れても衝突しません。同じ構成を複数リポジトリで使い回したい時や、他者に配布したい時にプラグインを使います。
拡張機能を足すタイミング
すべてを最初から作り込む必要はありません。公式ドキュメントは、次のようなきっかけが来たら該当する機能を追加する、という順番を示しています。
| きっかけ | 追加するもの |
|---|---|
| Claude が規約やコマンドを2回間違えた | CLAUDE.md に追記する |
| 同じプロンプトを何度もタスク開始時に打っている | ユーザーが呼び出せる Skill として保存する |
| 同じ手順書や複数ステップの作業を3回目もチャットに貼り付けている | Skill として切り出す |
| Claude から見えないブラウザタブのデータを毎回コピーしている | そのシステムを MCPサーバーとして接続する |
| Claude がシンボルの定義・使用箇所を探すのに大量のファイルを読んでいる | 使用言語向けのコードインテリジェンスプラグインを入れる |
| 副次的なタスクが会話にあふれ、二度と参照しない出力で埋まる | サブエージェントに任せる |
| 確認なしで毎回自動的に起きてほしいことがある | フックを書く |
| 2つ目のリポジトリで同じ構成が必要になった | プラグインとしてパッケージ化する |
同じきっかけは「既存の設定を見直すタイミング」でもあります。同じ間違いの指摘やレビューコメントが繰り返されるなら、それはチャットでのその場修正ではなく CLAUDE.md の修正案件です。
プラグイン(配布単位)
Skill・フック・サブエージェント・MCPサーバーの4機能を1つにまとめる。CLAUDE.mdは常時ロードされる別枠、エージェントチームとArtifactはこの4機能に含まれない独立した機能
Skill
呼び出し時に全文が読み込まれる
フック
イベント発火時に実行される
サブエージェント
隔離されたコンテキストで動く
MCPサーバー
名前は常時、詳細は必要時に読み込まれる
似た機能をどう使い分けるか
似た機能同士は迷いやすいところです。読み込まれるタイミングとコストの違いで整理します。
Skill
どこにでも読み込める再利用可能なコンテンツ。メインのコンテキストウィンドウを消費する。context: fork を指定すると隔離コンテキストで実行できる
サブエージェント
メインの会話から切り離されて動く独立した作業者。別のコンテキストウィンドウを持ち、結果の要約だけがメインに戻る。skills: フィールドで特定の Skill を事前ロードできる
大量のファイルを読む調査、並列作業、専門特化した処理はサブエージェント向きです。サブエージェントは別のコンテキストウィンドウを持ち、結果の要約だけがメインに戻ります。両者は組み合わせて使えます。
CLAUDE.md・Rules・Skill の違い: 3つとも指示を保存する仕組みですが、読み込まれ方が異なります。
CLAUDE.md
毎セッション自動的に全文が読み込まれる。プロジェクト全体に適用される
.claude/rules/
paths frontmatter に一致するファイルを開いた時だけ読み込まれる。ファイルパスで絞り込める
Skill
オンデマンドで、/<name> の入力時や Claude がタスクとの関連性を判断した時に読み込まれる。タスク単位
「常に知っておくべきこと」(コーディング規約・ビルドコマンド・プロジェクト構成・禁止事項)は CLAUDE.md に、「たまに必要な参照資料」は Skill に置きます。目安としてCLAUDE.md は200行未満に保つこと。増えてきたら内容を Skill に移すか、.claude/rules/ に分割します。
サブエージェント vs エージェントチーム: どちらも並列化の手段ですが構造が違います。
サブエージェント
自分のセッション内で動き、結果はメインエージェントに要約されて返る(作業の管理はメインエージェントが行う)。トークンコストは低い(結果が要約されて戻るだけ)
エージェントチーム
独立した Claude Code セッション同士がメッセージで直接やり取りする。Task ツールを持つエージェント同士は共有タスクリストでも自己調整する。各メンバーが別インスタンスのためトークンコストは高くなる
エージェントチームは実験的機能で、デフォルトでは無効。使うには明示的な設定が必要
MCP vs Skill: MCP は外部サービスに接続するためのプロトコルで、ツールとデータアクセスを提供します(接続と認証は MCPサーバー側が担当)。
MCP
外部サービスに接続するためのプロトコル。ツールとデータアクセスを提供する(接続と認証は MCPサーバー側が担当)
Skill
そのツールを効果的に使うための知識・ワークフローを提供する。組み合わせて使うのが基本形(例: MCP でデータベースに接続し、Skill でスキーマとクエリパターンを教える)
フック vs Skill: フックはライフサイクルイベントで必ず発火し、Skill は Claude の解釈に委ねられます。
フック
ライフサイクルイベント(PostToolUse や SessionStart など)で必ず発火するシェルコマンド・HTTPリクエスト・プロンプト・サブエージェント
Skill
/<name> の入力時や、Claude が説明文とタスクを照合した時に読み込まれる指示。実行するかどうか・どう適用するかは Claude の解釈に委ねられる
絶対に守らせたいガードレールはフックで強制する。CLAUDE.md や Skill に『.env を編集するな』と書くのは『お願い』に過ぎず、PreToolUse フックで編集をブロックするのが『強制』になる
設定例で見る呼び出し方
本文で言及されている代表的な設定項目を、frontmatter の形で示すと次のようになります。
副作用系は手動専用に
disable-model-invocation: true を設定すると、その Skill は手動で呼び出すまで Claude から完全に見えなくなる。通知や書き込みを伴う Skill に向く
事前ロードもできる
サブエージェント定義に skills: フィールドを書くと、起動時に指定した Skill の全文が最初から読み込まれる。通常のオンデマンド読み込みとの違いはここ
---
disable-model-invocation: true
---disable-model-invocation: true を Skill の frontmatter に設定すると、その Skill は手動で呼び出すまで Claude から完全に見えなくなります。副作用のある Skill(外部への通知や書き込みを伴うもの)に向いています。自分で書いていない Skill については、設定側の skillOverrides で同じことができます。
---
skills:
- deploy-checklist
---サブエージェントの定義に skills: フィールドを書くと、そのサブエージェントの起動時に指定した Skill の全文が最初から読み込まれます(通常の Skill のようにオンデマンドで読み込まれるのではなく、事前ロードされる点が違います)。
いつ・どれだけコンテキストを消費するか
6つの機能ごとに、いつ・何を・どれだけ読み込むかを整理すると次のようになります。
CLAUDE.md
セッション開始時に全文を読み込む。コストは毎リクエスト発生する
Skill
セッション開始時は説明文のみ、使用時に全文を読み込む。コストは低い(説明文は毎リクエスト)
MCPサーバー
セッション開始時にツール名のみ、詳細スキーマはオンデマンドで読み込む。ツールを使うまではコストが低い
コードインテリジェンス
ファイル編集後・必要時に、診断結果やシンボル参照時の位置情報を読み込む。他の箇所でのファイル読み込みを減らせるためコストは低い
サブエージェント
起動時に、指定した Skill を含む新しいコンテキスト、または fork 時は親の会話を読み込む。メインセッションから分離される
フック
発火時、何も読み込まない(外部で実行される)。フックが出力を返さない限りコストはゼロ
Skill の説明文は既定でセッション開始時に読み込まれ、Claude がいつ使うか判断できるようにしています。disable-model-invocation: true を設定した Skill だけは、呼び出すまでコストがゼロです。
複数箇所で定義したときの優先順位
同じ機能が複数の階層(ユーザー全体・プロジェクト・プラグイン・組織のポリシーなど)で定義された時、機能ごとに挙動が異なります。
CLAUDE.md(加算的)
すべての階層の内容が同時に会話へ反映される。作業ディレクトリから上位に向かって起動時に読み込まれ、サブディレクトリのものはアクセス時に追加で読み込まれる。矛盾する指示は Claude が判断し、通常はより具体的な指示が優先される
Skill・サブエージェント(1つが勝つ)
優先順位は、Skill が managed > user > project、サブエージェントが managed > CLIフラグ > project > user > plugin。プラグイン製 Skill は名前空間化されて衝突を避ける
MCPサーバー(1つが勝つ)
優先順位は local > project > user
フック(マージされる)
登録元に関係なく、一致するイベントのフックはすべて発火する
つまずきポイント
よくある誤解
CLAUDE.md や Skill に書いたルールは、Claude が必ず守ってくれると思われがち
実際は
CLAUDE.md・Skill の指示は"お願い"であり保証ではない。毎回確実に発生させたい制約(危険なコマンドの禁止など)は PreToolUse フックで強制する必要がある
よくある誤解
エージェントチームは標準機能で、特に設定しなくても使えると思われがち
実際は
エージェントチームは実験的機能で、デフォルトでは無効。使うには明示的な設定が要る
よくある誤解
Skill とサブエージェントは同じもので、どちらを使っても変わらないと思われがち
実際は
Skill は「知識・手順の置き場所」、サブエージェントは「独立して動く実行環境」で役割が違う。組み合わせて使う設計(context: fork や skills: フィールド)も用意されている
- 参考(公式ではない): 最初からすべての機能を導入する必要はありません。「同じ間違いを2回した」「同じプロンプトを何度も打っている」のような具体的なきっかけが来てから、該当する機能を1つずつ足していくと過不足のない構成になります
関連リンク
- Claude Code の基本的な仕組み: Claude Code の仕組み
- コンテキストウィンドウの詳細: コンテキストウィンドウ
- CLAUDE.md の書き方: 第1部「CLAUDE.md(メモリ)」(公開準備中)
- Skill の作り方: 第1部「Skill」(公開準備中)
- サブエージェントの定義方法: 第1部「サブエージェント」(公開準備中)
- フックの設定方法: 第1部「フック」(公開準備中)
- MCP の接続方法: 第1部「MCP」(公開準備中)
- プラグイン・マーケットプレイス: 第1部「プラグイン」(公開準備中)
- エージェントチーム: 第1部「エージェントチーム」(公開準備中)
- Artifact: 第1部「Artifact」(公開準備中)
- 権限モードの選び方: 権限モードを選ぶ
出典
- Extend Claude Code(取得日: 2026-08-18)