Claude Code の教科書
第1章 Claude Code とは何か

拡張機能の使い分け

CLAUDE.md・Skill・MCP・サブエージェント・エージェントチーム・フック・プラグインを、読み込まれるタイミングと役割の違いで整理する

第1部 クイックスタート0/12

この節で学ぶこと

この節では、CLAUDE.md・Skill・MCP・サブエージェント・エージェントチーム・フック・プラグイン・Artifact という拡張機能を、読み込まれるタイミングと解決する課題の違いで整理します。 似た機能同士の使い分けと、複数箇所で定義した時にどちらが勝つかもわかります。

いつ読み込まれるかで機能を選ぶ

拡張機能
常時ロード
オンデマンド
イベント発火
CLAUDE.mdSkillMCPフック

サブエージェント・エージェントチーム・コードインテリジェンス・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 の解釈に委ねられます。

フック

ライフサイクルイベント(PostToolUseSessionStart など)で必ず発火するシェルコマンド・HTTPリクエスト・プロンプト・サブエージェント

Skill

/<name> の入力時や、Claude が説明文とタスクを照合した時に読み込まれる指示。実行するかどうか・どう適用するかは Claude の解釈に委ねられる

絶対に守らせたいガードレールはフックで強制する。CLAUDE.md や Skill に『.env を編集するな』と書くのは『お願い』に過ぎず、PreToolUse フックで編集をブロックするのが『強制』になる

設定例で見る呼び出し方

本文で言及されている代表的な設定項目を、frontmatter の形で示すと次のようになります。

副作用系は手動専用に

disable-model-invocation: true を設定すると、その Skill は手動で呼び出すまで Claude から完全に見えなくなる。通知や書き込みを伴う Skill に向く

事前ロードもできる

サブエージェント定義に skills: フィールドを書くと、起動時に指定した Skill の全文が最初から読み込まれる。通常のオンデマンド読み込みとの違いはここ

Skill の frontmatter 例 - 自動起動を止めて手動専用にする
---
disable-model-invocation: true
---

disable-model-invocation: true を Skill の frontmatter に設定すると、その Skill は手動で呼び出すまで Claude から完全に見えなくなります。副作用のある Skill(外部への通知や書き込みを伴うもの)に向いています。自分で書いていない Skill については、設定側の skillOverrides で同じことができます。

サブエージェント定義の例 - skills: フィールドで事前ロード
---
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: forkskills: フィールド)も用意されている

  • 参考(公式ではない): 最初からすべての機能を導入する必要はありません。「同じ間違いを2回した」「同じプロンプトを何度も打っている」のような具体的なきっかけが来てから、該当する機能を1つずつ足していくと過不足のない構成になります

関連リンク

  • Claude Code の基本的な仕組み: Claude Code の仕組み
  • コンテキストウィンドウの詳細: コンテキストウィンドウ
  • CLAUDE.md の書き方: 第1部「CLAUDE.md(メモリ)」(公開準備中)
  • Skill の作り方: 第1部「Skill」(公開準備中)
  • サブエージェントの定義方法: 第1部「サブエージェント」(公開準備中)
  • フックの設定方法: 第1部「フック」(公開準備中)
  • MCP の接続方法: 第1部「MCP」(公開準備中)
  • プラグイン・マーケットプレイス: 第1部「プラグイン」(公開準備中)
  • エージェントチーム: 第1部「エージェントチーム」(公開準備中)
  • Artifact: 第1部「Artifact」(公開準備中)
  • 権限モードの選び方: 権限モードを選ぶ

出典

On this page