Claude Code を拡張する
CLAUDE.md、Skills、subagents、hooks、MCP、plugins をいつ使用するかを理解します。
Claude Code は、コードについて推論するモデルと、ファイル操作、検索、実行、ウェブアクセス用の組み込みツールを組み合わせています。組み込みツールはほとんどのコーディングタスクをカバーしています。このガイドは拡張レイヤーについて説明します。つまり、Claude が何を知るかをカスタマイズし、外部サービスに接続し、ワークフローを自動化するために追加する機能です。
コア agentic ループがどのように機能するかについては、How Claude Code works を参照してください。
Claude Code は初めてですか? CLAUDE.md でプロジェクト規約を開始します。その後、特定のトリガーが発生したときに他の拡張機能を追加してください。
概要
拡張機能は agentic ループのさまざまな部分に接続します。
- CLAUDE.md は、Claude がすべてのセッションで見る永続的なコンテキストを追加します
- Skills は再利用可能な知識と呼び出し可能なワークフローを追加します
- MCP は Claude を外部サービスとツールに接続します
- Subagents は独立したコンテキストで独自のループを実行し、サマリーを返します
- Agent teams は、共有タスクとピアツーピアメッセージングを使用して複数の独立したセッションを調整します
- Hooks はライフサイクルイベントで発火し、スクリプト、HTTP リクエスト、プロンプト、または subagent を実行できます
- Plugins と marketplaces はこれらの機能をパッケージ化して配布します
Skills は最も柔軟な拡張機能です。スキルは知識、ワークフロー、または指示を含むマークダウンファイルです。/deploy のようなコマンドでスキルを呼び出すことができます。または Claude は関連する場合に自動的にスキルをロードできます。スキルは現在の会話で実行することも、subagents を介して独立したコンテキストで実行することもできます。
機能をあなたの目標に合わせる
機能は、Claude がすべてのセッションで見る常時オンのコンテキストから、あなたまたは Claude が呼び出すことができるオンデマンド機能、特定のイベントで実行される背景自動化まで、さまざまです。以下の表は、利用可能な機能と各機能が適切な場合を示しています。
| 機能 | 機能 | 使用する場合 | 例 |
|---|---|---|---|
| CLAUDE.md | すべての会話で読み込まれる永続的なコンテキスト | プロジェクト規約、「常に X を実行する」ルール | 「pnpm を使用し、npm は使用しない。コミット前にテストを実行する。」 |
| Skill | Claude が使用できる指示、知識、ワークフロー | 再利用可能なコンテンツ、リファレンスドキュメント、繰り返しタスク | /deploy はデプロイメントチェックリストを実行します。エンドポイントパターンを持つ API ドキュメントスキル |
| Subagent | サマリー結果を返す独立した実行コンテキスト | コンテキスト分離、並列タスク、専門的なワーカー | 多くのファイルを読み取るが、主要な結果のみを返す研究タスク |
| Agent teams | 複数の独立した Claude Code セッションを調整 | 並列研究、新機能開発、競合する仮説でのデバッグ | セキュリティ、パフォーマンス、テストを同時にチェックするレビュアーをスポーン |
| MCP | 外部サービスに接続 | 外部データまたはアクション | データベースをクエリ、Slack に投稿、ブラウザを制御 |
| Hook | イベントで実行されるスクリプト、HTTP リクエスト、プロンプト、または subagent | すべてのマッチングイベントで実行する必要がある自動化 | すべてのファイル編集後に ESLint を実行 |
Plugins はパッケージングレイヤーです。プラグインはスキル、フック、subagents、MCP サーバーを単一のインストール可能なユニットにバンドルします。プラグインスキルは名前空間化されています(/my-plugin:review のように)ため、複数のプラグインが共存できます。同じセットアップを複数のリポジトリで再利用したい場合、または marketplace を通じて他のユーザーに配布したい場合はプラグインを使用します。
セットアップを時間をかけて構築する
すべてを事前に設定する必要はありません。各機能には認識可能なトリガーがあり、ほとんどのチームはおおよそこの順序で追加します。
| トリガー | 追加 |
|---|---|
| Claude が規約またはコマンドを 2 回間違える | CLAUDE.md に追加 |
| 同じプロンプトをタスクを開始するために何度も入力している | ユーザーが呼び出し可能な skill として保存 |
| 同じプレイブックまたは複数ステップの手順をチャットに 3 回目に貼り付けている | skill としてキャプチャ |
| Claude が見ることができないブラウザタブからデータをコピーし続けている | そのシステムを MCP server として接続 |
| サイドタスクが会話に再度参照しない出力で満杯になっている | subagent を通じてルーティング |
| 何かが毎回聞かずに起こることを望んでいる | hook を記述 |
| 2 番目のリポジトリが同じセットアップを必要としている | plugin としてパッケージ化 |
同じトリガーは、既に持っているものを更新する時期を示します。繰り返される間違いまたは繰り返されるレビューコメントは、チャットでの 1 回限りの修正ではなく、CLAUDE.md の編集です。手動で何度も調整するワークフローは、別の改訂が必要なスキルです。
類似機能を比較する
一部の機能は似ているように見えることがあります。ここでは、それらを区別する方法を説明します。
スキルと subagents は異なる問題を解決します。
- Skills は任意のコンテキストにロードできる再利用可能なコンテンツです
- Subagents はメイン会話とは別に実行される独立したワーカーです
| 側面 | Skill | Subagent |
|---|---|---|
| それは何か | 再利用可能な指示、知識、またはワークフロー | 独自のコンテキストを持つ独立したワーカー |
| 主な利点 | コンテキスト全体でコンテンツを共有 | コンテキスト分離。作業は別々に行われ、サマリーのみが返される |
| Context window への影響 | メインウィンドウに追加 | 独自の入力トークンと出力トークンを持つ別のウィンドウを使用 |
| 最適な用途 | リファレンスマテリアル、呼び出し可能なワークフロー | 多くのファイルを読み取るタスク、並列作業、専門的なワーカー |
スキルはリファレンスまたはアクションです。 リファレンススキルは Claude がセッション全体で使用する知識を提供します(API スタイルガイドなど)。アクションスキルは Claude に特定の操作を実行するよう指示します(デプロイメントワークフローを実行する /deploy など)。
コンテキスト分離が必要な場合、または コンテキストウィンドウがいっぱいになっている場合は subagent を使用します。 subagent は数十のファイルを読み取るか、広範な検索を実行する可能性がありますが、メイン会話はサマリーのみを受け取ります。subagent の作業はメインコンテキストを消費しないため、中間作業を表示したままにする必要がない場合にも便利です。カスタム subagents は独自の指示を持つことができ、スキルをプリロードできます。
それらは組み合わせることができます。 subagent は特定のスキルをプリロードできます(skills: フィールド)。スキルは context: fork を使用して独立したコンテキストで実行できます。詳細は Skills を参照してください。
どちらも指示を保存しますが、ロード方法と目的が異なります。
| 側面 | CLAUDE.md | Skill |
|---|---|---|
| ロード | すべてのセッション、自動的に | オンデマンド |
| ファイルを含めることができます | はい、@path インポート付き |
はい、@path インポート付き |
| ワークフローをトリガーできます | いいえ | はい、/<name> 付き |
| 最適な用途 | 「常に X を実行する」ルール | リファレンスマテリアル、呼び出し可能なワークフロー |
Claude が常に知っておくべき場合は CLAUDE.md に入れます。 コーディング規約、ビルドコマンド、プロジェクト構造、「X を実行しない」ルール。
Claude が時々必要とするリファレンスマテリアル(API ドキュメント、スタイルガイド)の場合、またはあなたが /<name> でトリガーするワークフロー(デプロイ、レビュー、リリース)の場合は、スキルに入れます。
経験則: CLAUDE.md を 200 行以下に保ちます。増加している場合は、リファレンスコンテンツをスキルに移動するか、.claude/rules/ ファイルに分割します。
3 つすべてが指示を保存しますが、ロード方法が異なります。
| 側面 | CLAUDE.md | .claude/rules/ |
Skill |
|---|---|---|---|
| ロード | すべてのセッション | すべてのセッション、またはマッチングファイルが開かれたとき | オンデマンド、呼び出されたときまたは関連するとき |
| スコープ | プロジェクト全体 | ファイルパスにスコープできます | タスク固有 |
| 最適な用途 | コア規約とビルドコマンド | 言語固有またはディレクトリ固有のガイドライン | リファレンスマテリアル、繰り返しワークフロー |
すべてのセッションが必要とする指示には CLAUDE.md を使用します。 ビルドコマンド、テスト規約、プロジェクトアーキテクチャ。
CLAUDE.md を焦点を当てたままにするためにルールを使用します。 paths frontmatter を持つルールは、Claude がマッチングファイルで作業するときのみロードされ、コンテキストを節約します。
Claude が時々必要とするコンテンツ(API ドキュメントまたは /<name> でトリガーするデプロイメントチェックリスト)にはスキルを使用します。
どちらも作業を並列化しますが、アーキテクチャ的には異なります。
- Subagents はセッション内で実行され、結果をメインコンテキストに報告します
- Agent teams は独立した Claude Code セッションであり、互いに通信します
| 側面 | Subagent | Agent team |
|---|---|---|
| コンテキスト | 独自のコンテキストウィンドウ。結果は呼び出し元に返される | 独自のコンテキストウィンドウ。完全に独立 |
| 通信 | 結果をメインエージェントのみに報告 | チームメイトが直接互いにメッセージを送信 |
| 調整 | メインエージェントがすべての作業を管理 | 共有タスクリストと自己調整 |
| 最適な用途 | 結果のみが重要な焦点を絞ったタスク | 議論と協力が必要な複雑な作業 |
| トークンコスト | 低い。結果がメインコンテキストに要約される | 高い。各チームメイトは個別の Claude インスタンス |
クイックで焦点を絞ったワーカーが必要な場合は subagent を使用します。 質問を研究する、主張を検証する、ファイルをレビューする。subagent は作業を実行し、サマリーを返します。メイン会話はクリーンなままです。
チームメイトが結果を共有し、互いに異議を唱え、独立して調整する必要がある場合は agent team を使用します。 Agent teams は競合する仮説での研究、並列コードレビュー、各チームメイトが個別の部分を所有する新機能開発に最適です。
遷移ポイント: 並列 subagents を実行しているがコンテキスト制限に達している場合、または subagents が互いに通信する必要がある場合、agent teams は自然な次のステップです。
Agent teams は実験的であり、デフォルトで無効になっています。セットアップと現在の制限については agent teams を参照してください。
MCP は Claude を外部サービスに接続します。スキルは Claude が知ることを拡張します。これらのサービスを効果的に使用する方法を含みます。
| 側面 | MCP | Skill |
|---|---|---|
| それは何か | 外部サービスに接続するためのプロトコル | 知識、ワークフロー、リファレンスマテリアル |
| 提供 | ツールとデータアクセス | 知識、ワークフロー、リファレンスマテリアル |
| 例 | Slack 統合、データベースクエリ、ブラウザ制御 | コードレビューチェックリスト、デプロイワークフロー、API スタイルガイド |
これらは異なる問題を解決し、一緒に機能します。
MCP は Claude に外部システムと相互作用する能力を与えます。MCP がなければ、Claude はデータベースをクエリしたり、Slack に投稿したりできません。
スキル は Claude にこれらのツールを効果的に使用する方法についての知識を与え、さらに /<name> でトリガーできるワークフローを提供します。スキルには、チームのデータベーススキーマとクエリパターン、または /post-to-slack ワークフローとチームのメッセージフォーマットルールが含まれる場合があります。
例:MCP サーバーは Claude をデータベースに接続します。スキルは Claude にデータモデル、一般的なクエリパターン、さまざまなタスクに使用するテーブルを教えます。
フックはライフサイクルイベントで発火します。スキルはコンテキストにロードされて Claude が適用します。
| 側面 | Hook | Skill |
|---|---|---|
| 実行 | シェルコマンド、HTTP リクエスト、LLM プロンプト、または subagent | Claude が読み取って従う指示 |
| トリガー | Lifecycle events(PostToolUse または SessionStart など) |
/<name> を入力するか、Claude がタスクに説明を照合 |
| 決定論性 | イベントで常に発火。トリガーは保証される | Claude が指示を解釈。結果は異なる可能性 |
| コンテキストコスト | ゼロ(フックが出力を返さない限り) | 説明は毎セッションロード。使用時に完全なコンテンツをロード |
| 最適な用途 | リント後の編集、安全でないコマンドのブロック、ロギング、通知 | 推論が必要なワークフロー、リファレンスマテリアル、複数ステップのタスク |
アクションが毎回同じ方法で実行される必要があり、Claude が考える必要がない場合は hook を使用します。 たとえば、保存時にフォーマット、rm -rf / を拒否、セッション終了時に Slack メッセージを投稿。
Claude が手順をどのように適用するかを決定する必要がある場合、またはコンテンツが知識ではなくスクリプトの場合は skill を使用します。 たとえば、/release チェックリスト、API スタイルガイド、デバッグプレイブック。
ガードレールをフックに入れます。 CLAUDE.md またはスキルの「.env を編集しない」のような指示はリクエストであり、保証ではありません。編集をブロックする PreToolUse フックは強制です。ルールが毎回保持される必要がある場合は、プロンプト指示ではなくフックにします。
フック出力はコンテキストに着地します。 リンターを実行する PostToolUse フックは結果をテキストとして返し、Claude が読み取ります。/fix-lint スキルは Claude にそれらを解決する方法を指示します。
機能がどのようにレイヤーするかを理解する
機能は複数のレベルで定義できます。ユーザー全体、プロジェクトごと、プラグイン経由、または管理ポリシーを通じて。また、CLAUDE.md ファイルをサブディレクトリにネストしたり、スキルをモノレポの特定のパッケージに配置したりすることもできます。同じ機能が複数のレベルに存在する場合、ここでそれらがどのようにレイヤーするかを示します。
- CLAUDE.md ファイル は加算的です。すべてのレベルがコンテンツを同時に Claude のコンテキストに提供します。作業ディレクトリ以上のファイルは起動時にロードされます。サブディレクトリは作業時にロードされます。指示が競合する場合、Claude は判断を使用してそれらを調整し、より具体的な指示が通常優先されます。CLAUDE.md ファイルがどのようにロードされるか を参照してください。
- スキルと subagents は名前でオーバーライドします。同じ名前が複数のレベルに存在する場合、優先度に基づいて 1 つの定義が勝ちます(スキルの場合は管理 > ユーザー > プロジェクト。subagents の場合は管理 > CLI フラグ > プロジェクト > ユーザー > プラグイン)。プラグインスキルは競合を避けるために名前空間化されています。スキル検出 と subagent スコープ を参照してください。
- MCP サーバー は名前でオーバーライドします。ローカル > プロジェクト > ユーザー。MCP スコープ を参照してください。
- Hooks はマージされます。すべての登録されたフックは、ソースに関係なく、マッチングイベントに対して発火します。Hooks を参照してください。
機能を組み合わせる
各拡張機能は異なる問題を解決します。CLAUDE.md は常時オンのコンテキストを処理し、スキルはオンデマンド知識とワークフローを処理し、MCP は外部接続を処理し、subagents は分離を処理し、フックは自動化を処理します。実際のセットアップはワークフローに基づいてそれらを組み合わせます。
たとえば、CLAUDE.md をプロジェクト規約に使用し、スキルをデプロイメントワークフローに使用し、MCP をデータベースに接続し、フックをすべての編集後にリントを実行するために使用する場合があります。各機能は最適な機能を処理します。
| パターン | 機能 | 例 |
|---|---|---|
| Skill + MCP | MCP は接続を提供します。スキルは Claude にそれを効果的に使用する方法を教えます | MCP はデータベースに接続し、スキルはスキーマとクエリパターンを文書化します |
| Skill + Subagent | スキルは並列作業のために subagents をスポーンします | /audit スキルはセキュリティ、パフォーマンス、スタイル subagents を開始し、独立したコンテキストで作業します |
| CLAUDE.md + Skills | CLAUDE.md は常時オンのルールを保持します。スキルはオンデマンドでロードされるリファレンスマテリアルを保持します | CLAUDE.md は「API 規約に従う」と言い、スキルは完全な API スタイルガイドを含みます |
| Hook + MCP | フックは MCP を通じて外部アクションをトリガーします | 編集後フックは Claude が重要なファイルを変更するときに Slack 通知を送信します |
コンテキストコストを理解する
追加する各機能は Claude のコンテキストの一部を消費します。多すぎるとコンテキストウィンドウがいっぱいになる可能性がありますが、Claude の効果を低下させるノイズを追加することもできます。スキルが正しくトリガーされない場合や、Claude が規約を失う場合があります。これらのトレードオフを理解することで、効果的なセットアップを構築するのに役立ちます。実行中のセッションでこれらの機能がどのように組み合わされるかのインタラクティブビューについては、コンテキストウィンドウを探索する を参照してください。
機能別のコンテキストコスト
各機能には異なるロード戦略とコンテキストコストがあります。
| 機能 | ロード時期 | ロード内容 | コンテキストコスト |
|---|---|---|---|
| CLAUDE.md | セッション開始 | 完全なコンテンツ | すべてのリクエスト |
| Skills | セッション開始 + 使用時 | 開始時の説明、使用時の完全なコンテンツ | 低い(毎リクエスト説明)* |
| MCP サーバー | セッション開始 | ツール名。完全な JSON スキーマはオンデマンド | 低い(ツール使用まで) |
| Subagents | スポーン時 | 指定されたスキルを持つ新しいコンテキスト | メインセッションから分離 |
| Hooks | トリガー時 | なし(外部で実行) | ゼロ(フックが追加コンテキストを返さない限り) |
*デフォルトでは、スキル説明はセッション開始時にロードされるため、Claude はそれらを使用する時期を決定できます。スキルの frontmatter で disable-model-invocation: true を設定して、手動で呼び出すまで Claude から完全に非表示にします。これにより、自分でのみトリガーするスキルのコンテキストコストをゼロに削減します。書いていないスキルの場合は、ファイルを編集せずに同じことを行うために settings で skillOverrides を設定します。
機能がどのようにロードされるかを理解する
各機能はセッション内の異なるポイントでロードされます。以下のタブは、各機能がいつロードされるか、およびコンテキストに何が入るかを説明しています。
時期: セッション開始
ロード内容: すべての CLAUDE.md ファイル(管理、ユーザー、プロジェクトレベル)の完全なコンテンツ。
継承: Claude は作業ディレクトリからルートまで CLAUDE.md ファイルを読み取り、サブディレクトリにネストされたものを、それらのファイルにアクセスするときに検出します。詳細は CLAUDE.md ファイルがどのようにロードされるか を参照してください。
CLAUDE.md を 200 行以下に保ちます。リファレンスマテリアルをスキルに移動します。スキルはオンデマンドでロードされます。
スキルは Claude のツールキットの追加機能です。リファレンスマテリアル(API スタイルガイドなど)または /<name> でトリガーする呼び出し可能なワークフロー(/deploy など)です。Claude Code は /simplify、/batch、/debug などのバンドルされたスキル を備えており、すぐに機能します。独自のスキルを作成することもできます。Claude は適切な場合にスキルを使用するか、直接呼び出すことができます。
時期: スキルの設定によって異なります。デフォルトでは、説明はセッション開始時にロードされ、完全なコンテンツは使用時にロードされます。ユーザーのみのスキル(disable-model-invocation: true)の場合、呼び出すまで何もロードされません。
ロード内容: モデル呼び出し可能なスキルの場合、Claude はすべてのリクエストで名前と説明を見ます。/<name> でスキルを呼び出すか、Claude が自動的にロードする場合、完全なコンテンツが会話にロードされます。
Claude がスキルを選択する方法: Claude はタスクをスキル説明と照合して、関連するものを決定します。説明が曖昧または重複している場合、Claude は間違ったスキルをロードするか、役立つスキルを見落とす可能性があります。Claude に特定のスキルを使用するよう指示するには、/<name> で呼び出します。disable-model-invocation: true を持つスキルは、呼び出すまで Claude に見えません。
コンテキストコスト: 使用されるまで低い。ユーザーのみのスキルは呼び出されるまでゼロコストです。
Subagents 内: スキルは subagents で異なる動作をします。オンデマンドロードの代わりに、subagent の skills フィールドにリストされているスキルは起動時にそのコンテキストに完全にプリロードされます。Subagents はスキルツールを通じて、リストされていないプロジェクト、ユーザー、プラグインスキルを発見して呼び出すことができます。
副作用を持つスキルには disable-model-invocation: true を使用します。これはコンテキストを節約し、あなたのみがそれらをトリガーすることを保証します。
時期: セッション開始。
ロード内容: 接続されたサーバーからのツール名。完全な JSON スキーマは Claude が特定のツールを必要とするまで遅延されます。
コンテキストコスト: ツール検索 はデフォルトで有効になっているため、アイドル MCP ツールは最小限のコンテキストを消費します。
信頼性に関する注記: MCP 接続はセッション中に静かに失敗する可能性があります。サーバーが切断されると、そのツールは警告なく消えます。Claude は以前アクセスできたツールを使用しようとする可能性があります。Claude が以前アクセスできた MCP ツールを使用できなくなったことに気付いた場合は、/mcp で接続を確認してください。
/mcp を実行してサーバーごとのトークンコストを確認します。積極的に使用していないサーバーを切断します。
時期: オンデマンド、タスクのためにあなたまたは Claude がスポーンするとき。
ロード内容: 以下を含む新しい独立したコンテキスト。
- システムプロンプト(キャッシュ効率のため親と共有)
- エージェントの
skills:フィールドにリストされているスキルの完全なコンテンツ - CLAUDE.md と git ステータス(親から継承)
- リードエージェントがプロンプトで渡すコンテキスト
コンテキストコスト: メインセッションから分離。Subagents は会話履歴または呼び出されたスキルを継承しません。
フルな会話コンテキストが必要ない作業に subagents を使用します。それらの分離はメインセッションの膨張を防ぎます。
時期: トリガー時。フックはツール実行、セッション境界、プロンプト送信、権限リクエスト、コンパクション などの特定のライフサイクルイベントで発火します。完全なリストは Hooks を参照してください。
ロード内容: デフォルトではなし。フックは外部で実行されます。
コンテキストコスト: ゼロ(フックが会話にメッセージとして追加されるコンテキストを返さない限り)。
フックは Claude のコンテキストに影響する必要がない副作用(リント、ロギング)に最適です。
詳細を学ぶ
各機能には、セットアップ指示、例、設定オプションを含む独自のガイドがあります。