【Claude Code 連載 第72回】Claude Code を拡張する — 9つの拡張機能をいつ使い分けるか

スポンサーリンク
【Claude Code 連載 第72回】Claude Code を拡張する — 9つの拡張機能をいつ使い分けるか 用語解説
【Claude Code 連載 第72回】Claude Code を拡張する — 9つの拡張機能をいつ使い分けるか
この記事は約20分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

スポンサーリンク

背景

この連載では、Claude Codeの公式ドキュメントを1ページずつ読み解いていきます。公式ドキュメントは情報が網羅されている分、「結局どの機能を、どんな場面で使えばいいのか」は自分で考える必要があり、読むのに意外と時間がかかります。そこで、私が実務で使うために読み込んだ内容を「使う場面→実例コード」の順に整理して残していくことにしました。専門家の解説というより、一次情報を読んだ記録です。推測や動作を確認していない部分には、その都度そう書きます。

1. 一言でいうと何か

このページは、Claude Code の拡張機能をいつ・どれを使うかの判断地図です。

前回(第71回)が「コア agentic ループの仕組み」だったのに対し、今回はその上に積む層の話。原文の位置づけがそのまま定義です。

組み込みツールはほとんどのコーディングタスクをカバーしています。このガイドは拡張レイヤーについて説明します。つまり、Claude が何を知るかをカスタマイズし、外部サービスに接続し、ワークフローを自動化するために追加する機能です。

扱われる拡張機能は9つ。CLAUDE.md/Skills/Code intelligence/MCP/Subagents/Dynamic workflows/Cross-session messaging/Hooks/Plugins(+marketplaces)。

このうち Cross-session messaging はこの連載で初登場です。****Claude があなたのセッションの1つから別のセッションにメッセージを渡すことができる機能で、第64回の並列化4アプローチにも出てきませんでした。専用ページは未執筆です。

そして、このページには始め方の指示が最初に置かれています。

Claude Code は初めてですか? CLAUDE.md でプロジェクト規約を開始します。その後、特定のトリガーが発生したときに他の拡張機能を追加してください。

**全部そろえるな、必要になってから足せ。**これが本ページ全体を貫く態度です。

2. どういう場面で役立つか

シーン1:「これはスキル?サブエージェント?」で迷ったとき

原文は5つの比較(Skill vs Subagent/CLAUDE.md vs Skill/CLAUDE.md vs Rules vs Skills/Subagent vs Dynamic workflow/MCP vs Skill/Hook vs Skill)をタブで用意しています。**一部の機能は似ているように見えることがあります。**その解きほぐしが本ページ最大の価値です。

シーン2:何を次に足すか決めたいとき

セットアップを時間をかけて構築するの節にあるトリガー表が、そのまま判断表になります。各機能には認識可能なトリガーがあり、ほとんどのチームはおおよそこの順序で追加します。

シーン3:コンテキストが苦しいとき

第70回の続きです。**追加する各機能は Claude のコンテキストの一部を消費します。**しかも問題は容量だけではありません——多すぎるとコンテキストウィンドウがいっぱいになる可能性がありますが、Claude の効果を低下させるノイズを追加することもできます。スキルが正しくトリガーされない場合や、Claude が規約を失う場合があります。

**入れすぎると「容量」ではなく「精度」が落ちる。**この指摘は重要です。

シーン4:同じ設定を他のリポジトリにも配りたいとき

Plugins はパッケージングレイヤーです。そして同じセットアップを複数のリポジトリで再利用したい場合、または marketplace を通じて他のユーザーに配布したい場合はプラグインを使用します。(第54〜61回のプラグイン8連の総括にあたります)

不要・向かないケース

  • **agentic ループそのものを知りたい。**それは第71回の範囲です。
  • **各機能のセットアップ手順が欲しい。**このページは判断に徹しています。各機能には、セットアップ指示、例、設定オプションを含む独自のガイドがあります。
  • **最初から全部そろえたい。**すべてを事前に設定する必要はありません。
  • **ルールを「確実に」守らせたい。**指示系の機能では保証されません。**CLAUDE.md またはスキルの「.env を編集しない」のような指示はリクエストであり、保証ではありません。**フックにする必要があります(後述)。
  • **コード intelligence をすぐ使いたい。**LSP ツールは、言語のコード intelligence プラグインをインストールするまで非アクティブです。

3. 使い分けの解説

**このページには読者向けのコードブロックが1つもありません。**本体は9つの表とタブ形式の比較です。中核の表(機能マトリクス/トリガー表/コンテキストコスト表/組み合わせパターン)はそのまま保持し、5つの比較タブは「判断を分ける一文」を軸に散文へ再編します。

前提:このページ自体にバージョン要件の記載はありません。コード intelligence のみプラグインが必要です。

9機能のマトリクス

原文の中心となる表です。

機能機能使用する場合
CLAUDE.mdすべての会話で読み込まれる永続的なコンテキストプロジェクト規約、「常に X を実行する」ルール「pnpm を使用し、npm は使用しない。コミット前にテストを実行する。」
SkillClaude が使用できる指示、知識、ワークフロー再利用可能なコンテンツ、リファレンスドキュメント、繰り返しタスク/deploy はデプロイメントチェックリストを実行します
Subagentサマリー結果を返す独立した実行コンテキストコンテキスト分離、並列タスク、専門的なワーカー多くのファイルを読み取るが、主要な結果のみを返す研究タスク
Dynamic workflow複数の subagents をバックグラウンドで実行するスクリプト Claude が記述複数の subagents を超えて成長する作業、または検証したい結果コードベース全体を監査し、2番目のエージェントセットが各結果を検証
Cross-session messagingClaude がセッションの1つから別のセッションにメッセージを配信実行するセッションがタスク途中で互いの結果を必要とする1つのセッションが別のセッションに警告し、変更が別のセッションが構築しているものを破壊する
Code intelligence言語サーバーナビゲーションと診断型付き言語、grep が遅いまたは不正確な大規模コードベースファイル全体を読む代わりにシンボルの定義にジャンプ
MCP外部サービスに接続外部データまたはアクションデータベースをクエリ、Slack に投稿、ブラウザを制御
Hookイベントで実行されるスクリプト、HTTP リクエスト、MCP ツール呼び出し、プロンプト、または subagentすべてのマッチングイベントで実行する必要がある自動化すべてのファイル編集後に ESLint を実行
Artifactセッション出力をプライベートでインタラクティブな Web ページとして公開ターミナルテキストではなく視覚的に見たり共有したい出力Claude が調査するにつれて更新されるインシデントタイムライン

軸は原文の言葉で言えば——常時オンのコンテキストから、あなたまたは Claude が呼び出すことができるオンデマンド機能、特定のイベントで実行されるバックグラウンド自動化まで。

Skills の位置づけだけは別格に扱われています。Skills は最も柔軟な拡張機能です。スキルは知識、ワークフロー、または指示を含むマークダウンファイルです。/deploy のようなコマンドでスキルを呼び出すことができます。または Claude は関連する場合に自動的にスキルをロードできます。スキルは現在の会話で実行することも、subagents を介して独立したコンテキストで実行することもできます。

Plugins は別レイヤーです。プラグインはスキル、フック、subagents、MCP サーバーを単一のインストール可能なユニットにバンドルします。プラグインスキルは名前空間化されています(/my-plugin:review のように)ため、複数のプラグインが共存できます。

何をいつ足すか — トリガー表

実務上、このページで最も使える部分だと思います。

トリガー追加
Claude が規約またはコマンドを2回間違えるCLAUDE.md に追加
同じプロンプトをタスクを開始するために何度も入力しているユーザーが呼び出し可能な skill として保存
同じプレイブックまたは複数ステップの手順をチャットに3回目に貼り付けているskill としてキャプチャ
Claude が見ることができないブラウザタブからデータをコピーし続けているそのシステムを MCP server として接続
Claude が多くのファイルを読み取ってシンボルが定義または使用されている場所を見つける言語用の code intelligence plugin をインストール
サイドタスクが会話に再度参照しない出力で満杯になっているsubagent を通じてルーティング
何かが毎回聞かずに起こることを望んでいるhook を記述
2番目のリポジトリが同じセットアップを必要としているplugin としてパッケージ化

**「2回間違えたら CLAUDE.md」「3回貼ったらスキル」**という回数の閾値が具体的に置かれているのが良いところです。

そして更新側にも同じ表が効きます。同じトリガーは、既に持っているものを更新する時期を示します。繰り返される間違いまたは繰り返されるレビューコメントは、チャットでの1回限りの修正ではなく、CLAUDE.md の編集です。手動で何度も調整するワークフローは、別の改訂が必要なスキルです。

紛らわしい組み合わせを解く

原文は5つの比較を用意しています。ここでは判断を分ける一文を軸に整理します。

**Skill と Subagent。**原文の定義が簡潔です。Skills は任意のコンテキストにロードできる再利用可能なコンテンツです。Subagents はメイン会話とは別に実行される独立したワーカーです。

側面SkillSubagent
それは何か再利用可能な指示、知識、またはワークフロー独自のコンテキストを持つ独立したワーカー
主な利点コンテキスト全体でコンテンツを共有コンテキスト分離。作業は別々に行われ、サマリーのみが返される
コンテキストウィンドウへの影響メインウィンドウに追加独自の入力トークンと出力トークンを持つ別のウィンドウを使用
最適な用途リファレンスマテリアル、呼び出し可能なワークフロー多くのファイルを読み取るタスク、並列作業、専門的なワーカー

スキル側にはさらに分類があります。スキルはリファレンスまたはアクションです。リファレンススキルは Claude がセッション全体で使用する知識を提供します(API スタイルガイドなど)。アクションスキルは Claude に特定の操作を実行するよう指示します(デプロイメントワークフローを実行する /deploy など)。

そして両者は排他ではありませんsubagent は特定のスキルをプリロードできます(skills: フィールド)。スキルは context: fork を使用して独立したコンテキストで実行できます。——スキル側から分離を要求する context: fork は、この連載で初出です。

**CLAUDE.md と Skill。**分かれ目は1文。Claude が常に知っておくべき場合は CLAUDE.md に入れます。逆にClaude が時々必要とするリファレンスマテリアル(API ドキュメント、スタイルガイド)の場合、またはあなたが /<name> でトリガーするワークフロー(デプロイ、レビュー、リリース)の場合は、スキルに入れます。

機能差で決定的なのはワークフローをトリガーできるかです。CLAUDE.md はいいえ、スキルははい、/<name> 付き。どちらも @path インポートは使えます。

そして経験則が再掲されます。CLAUDE.md を200行以下に保ちます。増加している場合は、リファレンスコンテンツをスキルに移動するか、.claude/rules/ ファイルに分割します。

CLAUDE.md と Rules と Skills。3者はロードのタイミングで分かれます。CLAUDE.md はすべてのセッション、ルールはすべてのセッション、またはマッチングファイルが開かれたとき、スキルはオンデマンド、呼び出されたときまたは関連するとき

ルールの存在理由が明快です。CLAUDE.md を焦点を当てたままにするためにルールを使用します。paths frontmatter を持つルールは、Claude がマッチングファイルで作業するときのみロードされ、コンテキストを節約します。

ただし第70回で見たとおり、paths: 付きルールはコンパクションで消える(会話履歴に載るため)。恒久性が要るなら CLAUDE.md へ——この2ページを合わせて読むと判断が定まります。

**Subagent と Dynamic workflow。**第67回の軸がここでも繰り返されます。subagents では Claude がターンごとに次に実行するものを決定します。ワークフローではスクリプトが決定します。

使い分けは規模です。クイックで焦点を絞ったワーカーが必要な場合は subagent を使用します。対してジョブが複数の subagents を超えて成長する場合、または結果を見る前に検証したい場合は dynamic workflow を使用します。

ここで新情報が1つ。**Claude が名前を付けてスポーンした subagents は、互いにメッセージを送信することもできます。**第64回では「サブエージェントは生成元の会話にのみ報告する」と整理していましたが、名前付きなら相互通信もできるとここでは書かれています。第64回の記述との差異なので、実運用では公式の最新記述を確認したほうがよさそうです。

さらにセッションの1つから別のセッションに結果を渡すには、最初のセッションの Claude に送信するよう依頼してください。Claude は cross-session messaging で配信します。

**MCP と Skill。**これは対立ではなく補完です。MCP は Claude を外部サービスに接続します。スキルは Claude が知ることを拡張します。これらのサービスを効果的に使用する方法を含みます。

分かりやすい言い方が続きます。MCP がなければ、Claude はデータベースをクエリしたり、Slack に投稿したりできません。そしてスキルは Claude にこれらのツールを効果的に使用する方法についての知識を与え、さらに /<name> でトリガーできるワークフローを提供します。

**Hook と Skill。**この比較が最も実務的です。

側面HookSkill
実行シェルコマンド、HTTP リクエスト、MCP ツール呼び出し、LLM プロンプト、または subagentClaude が読み取って従う指示
トリガーライフサイクルイベント(PostToolUse または SessionStart など)/<name> を入力するか、Claude がタスクに説明を照合
決定論性イベントで常に発火。トリガーは保証されるClaude が指示を解釈。結果は異なる可能性
コンテキストコストゼロ(フックが出力を返さない限り)説明は毎セッションロード。使用時に完全なコンテンツをロード
最適な用途リント後の編集、安全でないコマンドのブロック、ロギング、通知推論が必要なワークフロー、リファレンスマテリアル、複数ステップのタスク

決定論性の行が判断を決めます。アクションが毎回同じ方法で実行される必要があり、Claude が考える必要がない場合は hook を使用します。逆にClaude が手順をどのように適用するかを決定する必要がある場合、またはコンテンツが知識ではなくスクリプトの場合は skill を使用します。

そして、このページで最も強い主張がここに置かれています。

ガードレールをフックに入れます。CLAUDE.md またはスキルの「.env を編集しない」のような指示はリクエストであり、保証ではありません。編集をブロックする PreToolUse フックは強制です。ルールが毎回保持される必要がある場合は、プロンプト指示ではなくフックにします。

**「お願い」と「強制」の区別。**CLAUDE.md に禁止事項を書き連ねている人は、ここを読む価値があります。

補足としてフック出力はコンテキストに着地します。リンターを実行する PostToolUse フックは結果をテキストとして返し、Claude が読み取ります。/fix-lint スキルは Claude にそれらを解決する方法を指示します。(第70回で見た additionalContext の話と接続します)

同じ機能が複数レベルにあるとき

**機能は複数のレベルで定義できます。ユーザー全体、プロジェクトごと、プラグイン経由、または管理ポリシーを通じて。**衝突時の扱いが機能ごとに違います。

  • **CLAUDE.md ファイルは加算的です。**すべてのレベルが同時にコンテキストへ入ります。作業ディレクトリ以上のファイルは起動時にロードされます。サブディレクトリは作業時にロードされます。衝突したらClaude は判断を使用してそれらを調整し、より具体的な指示が通常優先されます。
  • スキルと subagents は名前でオーバーライドします。優先順位はスキルの場合は管理 > ユーザー > プロジェクト。subagents の場合は管理 > CLI フラグ > プロジェクト > ユーザー > プラグイン。
  • MCP サーバーは名前でオーバーライドします。ローカル > プロジェクト > ユーザー。
  • Hooks はマージされます。すべての登録されたフックは、ソースに関係なく、マッチングイベントに対して発火します。

加算(CLAUDE.md)/上書き(スキル・subagent・MCP)/マージ(フック)の3種類。しかもスキルは「ユーザー > プロジェクト」、subagent は「プロジェクト > ユーザー」と順序が逆です。ここは間違えやすいので、原文の記述をそのまま押さえておくべきところです。

組み合わせの定番

パターン機能
Skill + MCPMCP は接続を提供します。スキルは Claude にそれを効果的に使用する方法を教えますMCP はデータベースに接続し、スキルはスキーマとクエリパターンを文書化します
Skill + Subagentスキルは並列作業のために subagents をスポーンします/audit スキルはセキュリティ、パフォーマンス、スタイル subagents を開始し、独立したコンテキストで作業します
CLAUDE.md + SkillsCLAUDE.md は常時オンのルールを保持します。スキルはオンデマンドでロードされるリファレンスマテリアルを保持しますCLAUDE.md は「API 規約に従う」と言い、スキルは完全な API スタイルガイドを含みます
Hook + MCPフックは MCP を通じて外部アクションをトリガーします編集後フックは Claude が重要なファイルを変更するときに Slack 通知を送信します

コンテキストコスト

第70回を機能別に整理し直した表です。

機能ロード時期ロード内容コンテキストコスト
CLAUDE.mdセッション開始完全なコンテンツすべてのリクエスト
Skillsセッション開始 + 使用時開始時の説明、使用時の完全なコンテンツ低い(毎リクエスト説明)
MCP サーバーセッション開始ツール名。完全なスキーマはオンデマンド低い(ツール使用まで)
Code intelligenceファイル編集後およびオンデマンド編集後の診断。シンボル検索時の定義、参照、型情報低い。ファイル読み取りを削減
Subagentsスポーン時指定されたスキルを持つ新しいコンテキスト、または fork の親会話メインセッションから分離
Hooksトリガー時なし(外部で実行)ゼロ(フックが追加コンテキストを返さない限り)

**Code intelligence だけはコンテキストを「減らしうる」**のが特徴です。シンボル検索は多くの場合、広範なファイル読み取りを置き換えるため、ネットコンテキスト使用量は減少する可能性があります。

スキルのゼロコスト化についても再掲されます。スキルの frontmatter で disable-model-invocation: true を設定して、手動で呼び出すまで Claude から完全に非表示にします。書いていないスキルの場合は、ファイルを編集せずに同じことを行うために settings で skillOverrides を設定します。

ロードの細部

タブで機能ごとに説明されている中から、これまでの回で出ていない点を拾います。

**Skills。**組み込みのものがあります。Claude Code は /code-review/batch/debug などのバンドルされたスキルを備えており、すぐに機能します。/batch は第64回にも登場しました)

選択の失敗パターンも明記されています。Claude はタスクをスキル説明と照合して、関連するものを決定します。説明が曖昧または重複している場合、Claude は間違ったスキルをロードするか、役立つスキルを見落とす可能性があります。——スキルの description は精度に直結するということです。確実に使わせたいなら**/<name> で呼び出します。**

subagent 内での挙動が違う点は重要です。オンデマンドロードの代わりに、subagent の skills フィールドにリストされているスキルは起動時にそのコンテキストに完全にプリロードされます。ただしSubagents はスキルツールを通じて、リストされていないプロジェクト、ユーザー、プラグインスキルを発見して呼び出すことができます。

MCP servers。確認コマンドが2つ示されています。/mcp を実行して各サーバーの接続ステータスを確認します。/context all を実行して、ロードされた各 MCP ツールが使用するトークン数を確認します。——/context all はこの連載で初出です。運用も自動化されています。Claude Code は、リモートサーバーが切断された場合は自動的に再接続し、積極的に使用していないサーバーを切断できます。

**Subagents。**起動時にロードされるものが列挙されています。エージェント独自のシステムプロンプト(Claude Code システムプロンプトではない)/エージェントの skills: フィールドにリストされているスキルの完全なコンテンツ/CLAUDE.md と git ステータス/リードエージェントがプロンプトで渡すコンテキスト。

例外が2種類。組み込みの Explore および Plan エージェントは両方を省略し、エージェント定義が omitClaudeMd を設定する場合はユーザー、プロジェクト、ローカル CLAUDE.md ファイルをスキップします。——omitClaudeMd も初出です。第70回では「Explore と Plan は CLAUDE.md を読まない」とだけ書かれていましたが、git ステータスも省略され、任意のエージェントで同じことを設定できることがここで分かります。

**Hooks。**発火点の範囲が示されています。ツール実行、セッション境界、プロンプト送信、権限リクエスト、コンパクションなど。

**CLAUDE.md。**肥大化への対処にコマンドが用意されています。**チェックインされた CLAUDE.md のトリム提案を取得するには、/doctor を実行します。**第71回で /doctor は「インストールと設定の問題を診断する」と紹介されていましたが、CLAUDE.md の削減提案も出すとここで補足されています。

4. まとめ + 次回予告

  • 拡張機能は9つ——CLAUDE.md/Skills/Code intelligence/MCP/Subagents/Dynamic workflows/Cross-session messaging/Hooks/Plugins。
  • **Cross-session messaging はこの連載で初登場。**セッション間でメッセージを配送する機能(専用ページは未執筆)。
  • **始め方は「CLAUDE.md だけ」。あとはトリガーが起きたら足す。**2回間違えたら CLAUDE.md、3回貼ったらスキル、2つ目のリポジトリが要ったらプラグイン。
  • Skills が最も柔軟。リファレンスにもアクションにもなり、メイン会話でも subagent でも走る。
  • **Skill と Subagent は排他ではない。**subagent は skills: でプリロードでき、スキルは context: fork で分離実行できる。
  • **CLAUDE.md は「常に知っておくべきこと」、Skill は「時々必要なもの・/<name> で呼ぶもの」、Rules は「一致するファイルのときだけ」。**CLAUDE.md は200行以下。
  • Subagent は Claude が毎ターン決め、Dynamic workflow はスクリプトが決める。
  • **MCP は「できること」を増やし、Skill は「使い方」を教える。**補完関係。
  • ガードレールはフックに入れる。指示はリクエストであって保証ではない。PreToolUse フックだけが強制
  • レベル衝突の扱いは3種類——CLAUDE.md は加算、スキル/subagent/MCP は上書き、フックはマージ。優先順位はスキル=管理>ユーザー>プロジェクトsubagent=管理>CLIフラグ>プロジェクト>ユーザー>プラグインMCP=ローカル>プロジェクト>ユーザースキルと subagent で順序が逆なので注意。
  • コンテキストコストはCLAUDE.md が最も重く(毎リクエスト全文)、フックがゼロCode intelligence だけは総量を減らしうる。
  • **スキルの description の質が、正しく呼ばれるかを決める。**確実に使わせたいなら /<name>
  • 確認コマンド——/mcp(接続状態)//context all(MCP ツール別トークン)//doctor(CLAUDE.md のトリム提案)。
  • subagent の起動時ロードは独自システムプロンプト+skills: のスキル+CLAUDE.md+git ステータス+渡されたコンテキスト。Explore と Plan は CLAUDE.md と git ステータスを省略、omitClaudeMd で同じことを任意のエージェントに設定できる。

次回予告(暫定):今回初登場した**Cross-session messaging(cross-session-messaging)**を取り上げ、Claude がセッション間でメッセージを配送する仕組みと、第64回の並列化アプローチとの関係を扱う予定です。


よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました