原典: Extend Claude Code / 日本語版
一行要約
CLAUDE.md / output style / skills / subagents / dynamic workflow / MCP / hooks / plugins の使い分けを決める判断ガイドであり、判断軸は「機能の高機能さ」ではなく「agentic loop のどこに刺さるか」と「context をいつ・どれだけ食うか」の2つ。
要点
前提として、Claude Code は「コードを推論するモデル + ファイル操作・検索・実行・Web アクセスの組み込みツール」であり、組み込みツールでほとんどのコーディング作業は足りる。このページが扱うのはその上の拡張レイヤである、と明言されている。
何がどこに刺さるか
| 拡張 | agentic loop のどこに刺さるか |
|---|---|
| CLAUDE.md | 毎セッション Claude が見る永続 context |
| Output styles | そのセッションの全応答について、Claude の役割・口調・応答形式を決める |
| Skills | 再利用可能な知識と、呼び出せるワークフロー |
| Code intelligence | language server 接続。シンボル単位の移動と型エラー |
| MCP | 外部サービス・ツールへの接続 |
| Subagents | 隔離された context で独自のループを回し、要約だけ返す |
| Dynamic workflows | Claude が書いたスクリプトが多数の subagent を回し、1つの結果を返す |
| Cross-session messaging | 自分のあるセッションから別のセッションへ Claude がメッセージを届ける |
| Hooks | lifecycle event で自分のスクリプト / HTTP リクエスト / プロンプト / subagent を走らせる |
| Plugins / marketplaces | 上記をまとめて配布する梱包レイヤ |
Skills が最も柔軟な拡張と位置づけられている。skill は知識・ワークフロー・指示を書いた markdown ファイルで、
/deployのようなコマンドで呼べるし、Claude が関連を判断して自動で読むこともできる。現在の会話でも、subagent 経由の隔離 context でも走らせられる。
目的から機能を選ぶ表
| 機能 | 何をするか | いつ使うか | 例 |
|---|---|---|---|
| CLAUDE.md | 毎会話ロードされる永続 context | プロジェクト規約、「常に X せよ」 | “Use pnpm, not npm. Run tests before committing.” |
| Output style | セッション全体の役割・口調・応答形式を決める指示 | 毎回の応答で欲しい声・長さ・形式。ソフトウェアエンジニア以外の役割で使うとき | 組み込みの Concise で短く / 何を聞いても図から答える自作スタイル |
| Skill | Claude が使える指示・知識・ワークフロー | 再利用する内容、参照文書、繰り返す作業 | /deploy がデプロイ手順を実行 / API docs skill |
| Subagent | 要約だけ返す隔離実行 context | context 隔離、並列タスク、専門ワーカー | 大量のファイルを読むが要点だけ返す調査 |
| Dynamic workflow | Claude が書いたスクリプトが多数の subagent を裏で回す | subagent 数本では収まらない仕事、結果を相互検証させたいとき | コードベース全体の監査を、別のエージェント群が各指摘を検証しながら回す |
| Cross-session messaging | 自分のセッション間で Claude がメッセージを届ける | 作業の途中で互いの発見が要る、自分で動かしている複数セッション | 片方が「いま入れた変更が、そちらの土台を壊す」と知らせる |
| Code intelligence | language server による移動と診断 | 型付き言語、grep が遅い / 不正確な大規模コードベース | ファイル全読みせずシンボル定義へ飛ぶ |
| MCP | 外部サービス接続 | 外部のデータや操作 | DB クエリ、Slack 投稿、ブラウザ操作 |
| Hook | イベントで発火するスクリプト等 | 必ず走らせたい自動化 | ファイル編集のたびに ESLint |
| Artifact | セッション出力を非公開の対話 web ページとして公開 | 端末テキストより視覚的に見たい / 共有したい出力 | 調査の進行に応じて更新されるインシデント年表 |
「いつ足すか」— トリガー駆動で育てる
You don’t need to configure everything up front.
すべてを最初から設定しておく必要はない。
最初から全部を設定する必要はなく、それぞれに分かりやすい引き金がある。多くのチームはおよそこの順で足していく。
| 引き金 | 足すもの |
|---|---|
| Claude が規約やコマンドを2回間違えた | CLAUDE.md に書く |
| もっと短く / もっと説明して / 同じ形式で、と毎回頼んでいる | output style を設定する |
| 同じプロンプトを毎回打っている | user-invocable な skill にする |
| 同じ手順書を3回目チャットに貼った | skill にする |
| Claude が見られないブラウザタブからデータをコピーし続けている | MCP server として接続する |
| シンボルの定義・使用箇所を探すのに大量のファイルを読んでいる | code intelligence プラグインを入れる |
| 二度と参照しない出力で会話が溢れている | subagent に回す |
| 頼まなくても毎回起きてほしい | hook を書く |
| 2つ目のリポジトリで同じ設定が要る | plugin にする |
同じ引き金は更新のタイミングでもある。繰り返す間違いやレビュー指摘は、チャットでの一度きりの訂正ではなく CLAUDE.md の編集である。毎回手で直しているワークフローは、改訂が必要な skill である。
紛らわしい組み合わせの見分け方
Skill vs Subagent — skill は「どの context にも読み込める再利用コンテンツ」、subagent は「本会話から分離して走るワーカー」。
| 観点 | Skill | Subagent |
|---|---|---|
| 正体 | 再利用可能な指示・知識・ワークフロー | 独自 context を持つ隔離ワーカー |
| 主な利点 | context 間で共有できる | context 隔離。作業は別で進み、要約だけ返る |
| context window への影響 | メイン window に加算される | 独立した window(入出力とも別勘定) |
| 向いている用途 | 参照資料、呼び出すワークフロー | 大量ファイル読解、並列作業、専門ワーカー |
skill は reference(セッション中ずっと使う知識) と action(/deploy のように何かをさせる) に分かれる。両者は組み合わせられる — subagent は skills: フィールドで skill を preload でき、skill は context: fork で隔離 context 実行できる。
CLAUDE.md vs Skill
| 観点 | CLAUDE.md | Skill |
|---|---|---|
| ロード | 毎セッション、自動 | オンデマンド |
@path import | 可 | 可 |
| ワークフロー起動 | 不可 | 可(/<name>) |
| 向く用途 | 「常に X せよ」 | 参照資料、呼び出すワークフロー |
Rule of thumb: Keep CLAUDE.md under 200 lines.
目安: CLAUDE.md は200行未満に保て。
膨らんできたら参照コンテンツを skill に移すか、.claude/rules/ に分割する。
CLAUDE.md vs Rules vs Skills — .claude/rules/ は「毎セッション、または該当ファイルを開いたとき」にロードされる中間物。paths frontmatter を持つ rule は該当ファイルを触るときだけ読まれるので context を節約できる。
CLAUDE.md vs Output style — どちらも常時効く指示だが、CLAUDE.md は「Claude が知っておくべきこと」、output style は「どう応答するか」。
| 観点 | CLAUDE.md | Output style |
|---|---|---|
| 持つもの | プロジェクトについての事実とルール | 役割・口調・応答形式 |
| 切り替え | 常にロードされる | 一度に1つだけ有効。いつでも切り替えられる |
| 向く用途 | ビルドコマンド、規約、「絶対に X するな」 | 短い応答、コードに添える説明、エンジニア以外の役割 |
- どのスタイルでも真であること(規約・ビルドコマンド・構成)は CLAUDE.md
- 応答そのものについてで、また切りたくなるかもしれないもの(長さ・形式・説明量・別の役割)は output style
- 両立する。 CLAUDE.md はどのスタイルでもロードされたまま。ただしどちらも指示であって強制ではない —— 毎回必ず起きてほしいことは hook にする
Subagent vs Dynamic workflow —— どちらも本会話の外で働くが、次に何を走らせるかを、subagent では Claude がターンごとに決め、workflow ではスクリプトが決める。
- subagent は Claude が起こすワーカーで、起こした会話に要約を返す。素早く絞られた仕事(調査、主張の検証、1ファイルのレビュー)向き。起動時に名前を付けた subagent 同士はメッセージを送り合える
- dynamic workflow は Claude が書いたスクリプトが多数の subagent を裏で回して1つの結果を返す。subagent 数本では収まらない仕事や、見る前に指摘を相互検証させたいとき(コードベース全体の監査、大規模移行、複数の角度から起こす計画)
- 自分の別セッションに発見を渡したいなら、最初のセッションの Claude に送らせる(cross-session messaging)
MCP vs Skill — MCP は「接続と認証を肩代わりする、外部システム向けの専用ツール」を与える。skill は「そのツールをうまく使うための知識」を与える。例: MCP が DB に繋ぎ、skill がデータモデル・よく使うクエリ・どのテーブルを使うかを教える。
Hook vs Skill — ここが最も実務的な区別。
| 観点 | Hook | Skill |
|---|---|---|
| 走るもの | shell コマンド / HTTP / LLM プロンプト / subagent | Claude が読んで従う指示 |
| 起動 | PostToolUse、SessionStart などの lifecycle event | /<name> の入力、または description との一致 |
| 決定性 | 必ず発火する。引き金が保証される | Claude が解釈する。結果はぶれる |
| context コスト | 出力を返さない限りゼロ | description は毎セッション、本体は使用時 |
| 向く用途 | 編集後の lint、危険コマンドのブロック、ログ、通知 | 推論が要るワークフロー、参照資料、多段タスク |
Put guardrails in hooks. An instruction like “never edit
.env” in CLAUDE.md or a skill is a request, not a guarantee. APreToolUsehook that blocks the edit is enforcement.ガードレールは hook に置け。CLAUDE.md や skill に書いた「
.envは絶対に編集するな」という指示はお願いであって、保証ではない。編集を止めるPreToolUsehook が強制である。
ルールが毎回必ず成立しなければならないなら、prompt の指示ではなく hook にする。
多層定義の解決規則
同じ機能が user / project / plugin / managed の複数レベルに存在するときの挙動が明示されている。ここは種類ごとに規則が違う。
- CLAUDE.md — 加算的。全レベルが同時に context に寄与する。作業ディレクトリとその上位が起動時にロードされ、サブディレクトリは作業中に読まれる。矛盾は Claude が判断で調停し、より具体的な指示が優先されるのが通常
- Skills / subagents — 名前で上書き。優先順は skills が
managed > user > project、subagents がmanaged > CLI flag > project > user > plugin。plugin skill は namespace 付き - MCP servers — 名前で上書き。
local > project > user - Hooks — マージ。出所に関係なく、該当イベントの hook はすべて発火する
context コストの理解
Too much can fill up your context window, but it can also add noise that makes Claude less effective; skills may not trigger correctly, or Claude may lose track of your conventions.
多すぎれば context window を埋めるだけでなく、Claude の性能を落とすノイズにもなる。skill が正しく起動しなかったり、Claude が規約を見失ったりする。
context を食い潰す問題だけでなく、ノイズによって skill の発火精度が落ちる / 規約を見失うことが害として挙げられている点が重要。
| 機能 | いつロードされるか | 何がロードされるか | context コスト |
|---|---|---|---|
| CLAUDE.md | セッション開始 | 全文 | 毎リクエスト |
| Output styles | セッション開始と、スタイルを切り替えたとき | 有効なスタイルの指示の全文(Default スタイルは何もロードしない) | 毎リクエスト |
| Skills | 開始時 + 使用時 | 開始時は description、使用時に本体 | 低(description のみ毎リクエスト) |
| MCP servers | セッション開始 | ツール名のみ。スキーマは要求時まで遅延 | ツールを使うまで低い |
| Code intelligence | 編集後・参照時 | 編集後の診断、シンボル参照時の位置情報 | 低。むしろファイル読解を減らす |
| Subagents | spawn 時 | 指定 skill 込みの新規 context。fork なら親の会話そのもの | メインから隔離 |
| Hooks | 発火時 | 何もロードしない(外部実行) | ゼロ(出力を返さない限り) |
- skill の description は既定でセッション開始時にロードされる。frontmatter に
disable-model-invocation: trueを置くと description が Claude の context に入らなくなり、呼ぶまで context コストがゼロになる。自分で書いていない skill には settings のskillOverridesで同じことができる - 副作用のある skill には
disable-model-invocation: trueを使うのが推奨。context 節約に加え、名前を挙げたときにだけ走るようにできる - MCP は tool search が既定で有効なので、待機中のツールの context 消費は最小。
/mcpで接続状態とサーバごとのトークンコストを確認できる - subagent が起動時に読むもの: エージェント自身の system prompt(Claude Code のフル system prompt ではない)、
skills:の全文、CLAUDE.md と git status(ただし組み込みの Explore / Plan エージェントは両方とも読まない)、リードエージェントが prompt で渡した内容。会話履歴も、起動済み skill も継承しない
組み合わせパターン
| パターン | 仕組み | 例 |
|---|---|---|
| Skill + MCP | MCP が接続を、skill が使い方を与える | MCP が DB 接続、skill がスキーマとクエリパターンを文書化 |
| Skill + Subagent | skill が並列作業のため subagent を起動 | /audit が security / performance / style の subagent を隔離 context で起動 |
| CLAUDE.md + Skills | CLAUDE.md に常時ルール、skill に参照資料 | CLAUDE.md「API 規約に従え」、skill に API スタイルガイド全文 |
| Hook + MCP | hook が MCP 経由で外部操作 | 重要ファイル変更時に Slack 通知 |
そのまま使える具体例
CLAUDE.md が膨らんだときの分割先:
.claude/rules/——pathsfrontmatter で該当ファイル作業時のみロードCLAUDE.md—— 200行以内に保つ
副作用のある skill を Claude から隠す:
---
name: deploy
description: Runs the production deployment checklist.
disable-model-invocation: true # 名前を挙げるまでロードされない。context コスト 0
---subagent に skill を preload する / skill を隔離 context で走らせる:
# subagent 側
skills: [api-style-guide, deployment-checklist]
# skill 側
context: forkMCP のトークンコストを確認する:
/mcp原典で言及されている関連文書
- claude-code-best-practices — CLAUDE.md の書き方と運用の実務
- agent-skills-best-practices — skill 本体の書き方(description、progressive disclosure)
- effective-context-engineering-for-ai-agents — 「context コスト」節の理論的背景
- how-claude-code-works — agentic loop の内部
- context-window — 起動時に何が読まれるかの実測
- memory — CLAUDE.md と auto memory
- skills
- sub-agents
- workflows — dynamic workflow(subagent 数本で収まらないとき)
- mcp
- cross-session-messaging
- hooks-guide / hooks
- https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more — 選び分けの詳しい解説記事
- tools-reference — code intelligence
- plugins — skill/agent/hook/MCP をまとめて配布する