AIコーディングツール

Skills vs Subagents vs Hooks vs MCP:Claude Code 選択ガイド(2026)

2026年8月21日3分で読めます

Claude Code の skills・subagents・hooks・MCP の違いは、それぞれが「何を追加するか」と「何をきっかけに動くか」に集約されます。Skill はモデルが必要なときに読み込む再利用可能な知識です。Subagent は独自のコンテキストウィンドウで動く、委任された作業者です。Hook はライフサイクルイベントで発火する確定的なシェルコマンドです。MCP は外部ツールやデータへの橋渡しです。目安として、知識を足すなら → Skill、ツールやデータソースを足すなら → MCP、重い作業を切り離すなら → Subagent、何かを確定的に強制するなら → Hook です。

Claude Code を1週間以上使っていれば、おそらくこの壁にぶつかったはずです。機能を拡張しようとドキュメントを開くと、どれも「Claude に機能を追加する」ように聞こえる4つの異なる仕組み――Skills、Subagents、Hooks、そして Model Context Protocol(MCP)――が出てきます。これらは混乱を招くギリギリのところで重なり合っていて、どれを選べばいいのかは誰も教えてくれません。私はこの4つすべてを実際のプロジェクトで作り、リリースしてきました。だからこそ、こういう選択ガイドがあればよかったと思うものをまとめました。まったくの初心者なら、まずClaude Code とは何かから読み、それから戻ってきてください。

Skills・Subagents・Hooks・MCP をひと目で比較

こちらが選択のための表です。この4つのプリミティブはいずれも .claude ディレクトリ(または settings.json)に置かれ、それぞれ異なる拡張の問いに答えます。自分に関係する列だけ拾い読みしてください――何を追加するか何がきっかけで動くか独自のコンテキストウィンドウを持つか、確定的か、そしてどこで設定するかです。

プリミティブ追加するもの動作のきっかけ独自のコンテキストウィンドウ?確定的?設定場所
Skill再利用可能な知識・指示モデルが必要なときに読み込む(または /name と入力)いいえ――メインコンテキストで動作いいえ――モデルが判断.claude/skills/<name>/SKILL.md
Subagent隔離された作業者Claude が一致するタスクを委任はい――別ウィンドウいいえ――モデルが判断.claude/agents/<name>.md
Hookガードレール・自動化ライフサイクルイベントが発火いいえ――シェルプロセスとして動作はい――常に実行settings.json
MCP外部ツールとデータサーバーが公開するツールをモデルが呼び出すいいえ――メインコンテキストで動作いいえ――モデルが判断.mcp.json

この表で最も明確な違いはこれです――確定的なのは Hook だけ、そして独自のコンテキストウィンドウを持つのは Subagent だけです。この2つの事実さえ押さえておけば、混乱の半分は消えます。

Claude Code の Skill とは?

SkillSKILL.md ファイルを含むフォルダで、Claude が関連するときにだけ読み込む指示・チェックリスト・ドメイン知識を収めます。この仕組みはプログレッシブ・ディスクロージャー(段階的開示)と呼ばれます。Claude は起動時に各スキルの短い説明を読みますが、そのスキルが目の前のタスクに当てはまると判断するまで、本文全体をコンテキストに取り込みません。つまりスキルは、実際に発火するまでトークンをほとんど消費しないということです。Skill はモデルによって自動的に呼び出すことも、/skill-name で手動で起動することもできます。

.claude/skills/
└── pr-review/
 └── SKILL.md # instructions Claude loads when reviewing a PR

2026年向けの補足(情報アップデート):カスタムのスラッシュコマンドは現在、スキルに統合されました。かつての .claude/commands/deploy.md は、機能的には .claude/skills/deploy/SKILL.md と同じ考え方です。古いブログ記事の多くはいまだに「commands」を5つ目の独立したプリミティブとして扱っていますが、公式の Claude Code ドキュメント(2026年8月に確認)ではスキルに統合されています。したがって、考えるべきプリミティブは5つではなく4つです。

知識や繰り返しの手順を標準化したいときは Skill を選びましょう――コーディング規約、レビューのチェックリスト、コミットメッセージの社内スタイルなどです。詳しい手順はClaude Code の Skill を徹底解説を参照してください。正直な限界も挙げておくと、スキルはあくまで指示であって、コードでもツールでもありません。単体では Claude Code の外に手を伸ばせません――それは MCP の役割です。

Subagent とは?

Subagent は、独自のコンテキストウィンドウ、独自のシステムプロンプト、独自のツール許可リスト、独自の権限を持つ専門アシスタントです。Claude が subagent の説明に一致するタスクに出会うと、それを委任します。subagent は隔離されたウィンドウの中で独立して作業し、メインの会話には要約だけを返します。隔離されているため、ログやファイルの大量出力、行き止まりといったノイズの多い中間作業が、メインコンテキストを汚すことはありません。Subagent はより安価なモデル(たとえば Haiku)で動かして、委任した作業のコストを抑えることもできます。

.claude/agents/
└── code-reviewer.md # name, description, tools, model, system prompt

subagent を使う一番の合図は、その脇道タスクを放っておくとメインコンテキストがあふれてしまうときです。数十ファイルにまたがる深いリサーチ、長いログ解析、自己完結したリファクタリングなど、結論だけが大事で途中の散らかりはどうでもいい作業です。複数の subagent をつなげて使う方法はAgentKit を使った実践的な AI 開発ワークフローで学べます。

正直なアンチパターンも挙げておきます――subagent の使いすぎはトークンを浪費します。委任のたびに新しいコンテキストが立ち上がり、状態を再構築するため、2行で済むタスクを subagent で包むのは純粋な無駄です。隔離するだけの価値があるときに使いましょう。

区別しておくと役立つ細かい点が1つあります。助言系のツールの中には、隔離された subagent としてではなく、単一のツール呼び出しとしてインラインで動くものもあります――advisor ツールが subagent とどう違うか(advisor vs kongming)を参照してください。

Hook とは?

Hook は、ライフサイクルイベントで発火する確定的なシェルコマンドで、settings.json で設定します。他の3つのプリミティブと違い、hook はプロンプトではなくコードです――モデルがどう判断しようと関係なく実行されます。よく使うイベントには PreToolUse(Claude がツールを実行する前)、PostToolUse(実行後)、Stop(ターンの終了時)などがあります。そのため hook はガードレールにうってつけです。編集のたびに自動フォーマットとリントをかける、危険なコマンドをブロックする、コミット前にシークレットをスキャンする、長いタスクが終わったらデスクトップ通知を出す、といった用途です。

// settings.json
{
 "hooks": {
 "PostToolUse": [
 { "matcher": "Edit|Write",
 "hooks": [{ "type": "command", "command": "npm run format" }] }
 ]
 }
}

このページの他のすべてとの決定的な違いは、hook がモデルの許可を求めないことです。イベントが一致すれば――毎回必ず――実行されます。この確定性こそ、絶対にスキップされてはいけないことに hook を使う理由です。ライフサイクルイベントが初めてなら、Claude Code の基礎の詳しい解説を読んでください。正直なアンチパターンとしては、ブロックが過剰な hook は正当な作業でも邪魔をしてくるので、マッチャーは絞り込んでおきましょう。

MCP(Model Context Protocol)とは?

MCP(Model Context Protocol)は、MCP サーバーを介して Claude Code を外部ツールやデータソースに接続するオープンな標準規格です。サーバーは一連のツールを公開し――GitHub の PR を読む、Postgres データベースに問い合わせる、ブラウザを操作する、社内 API を叩く――Claude はそれらを組み込みツールと同じ方法で呼び出します。MCP はツール連携を標準化するので、サービスごとに専用の橋渡しを書かずに済みます。サーバーは .mcp.json に宣言します。

// .mcp.json
{
 "mcpServers": {
 "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] }
 }
}

MCP を使う一番の合図は、Claude 自身が制御できないシステムに手を伸ばす必要があるときです――自分のデータベース、課題管理ツール、稼働中の API などです。Claude に処理させるためにデータをチャットへコピペしているようなら、それは MCP サーバーの仕事です。正直なアンチパターンは、ただの Skill で足りるのに MCP に手を出すことです。Claude に規約を知ってもらえればいいだけなら、それはスキルです。MCP は、外部システムで何かを実行する必要があるときのものです。

本当の違い(横並びで整理)

定義そのものは簡単で、混乱は重なり合う部分に潜んでいます。ここでは、4つを実際に分ける軸で整理します。

SkillSubagentHookMCP
追加するもの知識隔離された作業者ガードレールツール・データ
きっかけモデルが判断モデルが判断イベントで確定モデルが判断
コンテキストの隔離メインコンテキスト別ウィンドウシェルプロセスメインコンテキスト
呼び出し方自動または /name委任ライフサイクルイベントツール呼び出し

Skill と MCP は最もよくある取り違えです。スキルは指示を足すもので、Claude が何を知り、どう振る舞うかを変えます。MCP は能力を足すもので、そのままでは触れないシステムに Claude が触れられるようにします。「うちの PR チェックリストに従う」はスキル、「GitHub から実際の PR を読む」は MCP です。この2つはよく組み合わせて使われます。

Skill と Subagent は2つ目の落とし穴です。どちらも「Claude に専門性を持たせる」ように感じられますが、スキルはメインのモデル自身が使う「コンテキスト内」の知識であるのに対し、subagent はコンテキストの外で独立して仕事を片付ける作業者です。メインスレッドに特定の振る舞いをさせたいならスキルを、ウィンドウを散らかさないようにタスクを切り離したいなら subagent を使いましょう。

設定場所の早見表を1か所にまとめます。スキルは .claude/skills/、subagent は .claude/agents/、hook は settings.json、MCP サーバーは .mcp.json にあります。4つのプリミティブに、4つの置き場所です。

どれをいつ使うべき?(目的から選ぶ)

理論は飛ばして、やりたいことから始めましょう。よくある一言を、それぞれ正しいプリミティブに対応づけました。

  • 繰り返しの手順を標準化したい(レビューのチェックリスト、コミットのスタイル)→ Skill
  • リサーチやログの多いタスクをメインコンテキストから追い出したいSubagent
  • フォーマット、テスト、シークレットスキャンを毎回必ず強制したいHook
  • Claude にデータベースへの問い合わせ、PR の作成、API の呼び出しをさせたいMCP
  • Claude に常に守らせる社内の決まりが欲しいSkill
  • 途中のノイズを見ずに大きなリファクタリングを終わらせたいSubagent
  • 危険なコマンドを実行前にブロックしたいHook

パターンに気づいてください。知識と振る舞いは Skill 寄り、隔離は Subagent 寄り、譲れない強制はいつでも Hook、そしてアプリの境界を越えるものはすべて MCP です。

4つを同時に使える?(使えます――そして使うべきです)

これらのプリミティブは競合するのではなく、組み合わさります。成熟した Claude Code のセットアップは4つを同時に使い、それぞれが最も得意なことを1つずつ担います。コードレビューの流れを、最初から最後まで具体的な例で見てみましょう。

  1. Skill がレビュー手順を定義します――何を、どの順番で確認するか、そしてチームの基準です。
  2. Claude は実際のレビューを Subagent に委任し、ファイルごとの分析はそれ専用のコンテキストで走り、返ってくるのは結論だけです。
  3. その subagent は GitHub の MCP サーバーを使って、実際のプルリクエスト――差分、コメント、CI のステータス――を読み取ります。
  4. Hook は、モデルがどう結論づけようと、テストが失敗すればコミットを確定的にブロックします。

これがまさに要点です。1つのスキル、1つの subagent、1つの MCP サーバー、1つの hook が、それぞれ他では埋められない穴を埋めます。これをすべて手作業で組み上げるのは、れっきとした作業です――スキルファイルを書き、subagent のプロンプトを書き、MCP サーバーを配線し、hook をテストする。すべてをゼロから作りたくないなら、これらのプリミティブをあらかじめ用意したキットもあります。私が人に勧めているのは AgentKit for Claude Code(リンク経由で20%オフ)です。詳しくは次で説明します。

セットアップを省く――AgentKit で4つすべてを既製で手に入れる

名前が紛らわしいので、先に区別しておきます。ここで言うのは agentkit.bestAgentKit for Claude Code(CLI は ak)であって、OpenAI の AgentKit(Agent Builder / ChatKit)ではありません。まったく別の製品です。

1つずつ書かずにプリミティブが欲しいですか?AgentKit には 108以上のスキル45のエージェント(subagent)、そして MCP 連携――さらに既製のワークフロー――がまとまっており、このページの4つのプリミティブのうち3つが最初から用意されています。(念のため:hook はキットの宣伝対象には含まれていないので、それだけは自分で配線することになります。)Engineer Kit は 99ドル、Bundle は 149ドルです。ページには返金保証と生涯アップデートが記載されており、キットに継続課金の表示はありません。これは近道であって必須ではありません――4つすべてを自分の手で作ることも十分に可能です。

AgentKit for Claude Code を見る(リンク経由で20%オフ)→

決める前に、AgentKit レビューで私の率直な評価をすべて読むか、AgentKit と他の選択肢の比較で他のオプションと天秤にかけてください。

よくある質問

Skill と subagent――繰り返しのタスクにはどちら?

Skill を使ってください。繰り返しの手順(レビューのチェックリスト、コミットメッセージのスタイル)は、メインのモデルがコンテキスト内で適用する知識です。subagent に頼るのは、そのタスクが十分に重く、メインの会話を散らかさないよう独自のコンテキストウィンドウに隔離したいときだけにしましょう。

MCP はスキルの代わりになりますか?

いいえ。両者は異なる問題を解決します。Skill は指示と知識を足し、MCP はデータベースや GitHub のような外部ツールとデータに手を伸ばす能力を足します。Claude が何かを知るだけでよいならスキルを、外部システムで何かを実行する必要があるなら MCP を使ってください。両者はよく一緒に働きます。

hook は AI ですか、それともただのスクリプトですか?

ただのスクリプトです。hook は、PreToolUse や Stop のようなライフサイクルイベントで発火する確定的なシェルコマンドです。モデルの判断に関係なく実行されるので、自動フォーマット、テストの強制、シークレットスキャンといったガードレールにこそ最適な選択肢になります。

subagent はトークンを多く消費しますか?

その可能性はあります。各 subagent は独自のコンテキストを立ち上げて状態を再構築するため、ささいなタスクを subagent で包むのは純粋な無駄です。一方で、重い作業をメインコンテキストの外に出せば、全体としてはトークンを節約できます。コストを抑えるために、subagent をより安価なモデルで動かすこともできます。

スラッシュコマンドはスキルになったのですか?

はい。2026年時点で、カスタムのスラッシュコマンドはスキルに統合されました――かつての .claude/commands/x.mdSKILL.md と同じ概念です。commands は、5つ目の独立したプリミティブではなく、スキルを名前で呼び出す手段だと考えてください。

4つすべてが必要ですか?

最初から必要というわけではありません。多くの人は1つか2つから始め、必要が出てきたら残りを足していきます。とはいえ完成されたセットアップは4つすべてを使いますし、既製のものが欲しいなら、AgentKit のようなキットがスキル、subagent、MCP 連携を作り込んだ形で提供しているので、あなたが自分で配線するのは hook だけで済みます。

まとめと次のステップ

この目安は覚えておく価値があります。知識を足すなら → Skill、ツールやデータソースを足すなら → MCP、重い作業を切り離すなら → Subagent、何かを確定的に強制するなら → Hook です。2つの軸――確定的なのは Hook だけ、独自のコンテキストウィンドウを持つのは Subagent だけ――を覚えておけば、毎回正しいプリミティブを選べます。ここから先は、Claude Code の Skillをさらに深掘りするか、既製の土台から始めたいなら、まずキットを入手し(リンク経由で20%オフ)率直な AgentKit レビューを読んでください。

J

Jasmine

著者 · Jasmine Daily

Jasmine Dailyを綴る書き手。思ったこと、経験したこと、日々の瞬間を書き留めています。正直に、急がず、完璧でなくても。

Jasmine Daily

まだ読みものが待っています。

この記事が心に響いたなら、ジャーナルのほかのページものぞいてみてください。

次に読む

関連する投稿