Claude Code Media
連載 12/12この記事は「Claude Code 完全ガイド」シリーズの第 12 回 / 全 12シリーズ全体を見る →
123,046中級

Claude Code Skills × Subagents × Hooks 使い分け完全マップ【2026年5月】

Claude Code の 3 大拡張機構 Skills / Subagents / Hooks をどう使い分けるか、ユースケース別の意思決定フローと組み合わせパターンを実装例とともに整理。「結局どれを使えばいいか分からない」を 10 分で解決する 1 枚マップ付き。

By claude-code-media 編集部

Claude Code の拡張機構には Skills / Subagents / Hooks / Slash Commands / CLAUDE.md / MCP と 6 種類あり、「結局どれを使えばいいか分からない」が中級者の最大の悩みです。本稿は Skills × Subagents × Hooks の 3 つ に絞り、役割の違い・選び方の意思決定フロー・組み合わせパターンを 12 分で読み切れる形に整理しました。

結論: 1 文での違い

機構1 行で言うといつ動くか文脈
Skill「知識を自動注入する Markdown」リクエスト内容がマッチしたら自動メインの会話と同じ文脈
Subagent「専門役の Claude にタスクを委譲」ユーザー or メイン Claude が明示的に呼ぶ独立した新規文脈
Hook「ライフサイクル介入の shell コマンド」Tool 実行の前後・セッション終了時文脈を持たず、外部プロセス

3 つは「役割が違う」だけでなく 「動くタイミングが違う」「文脈の独立性が違う」 の 2 軸で完全に分かれています。

意思決定フロー(1 枚マップ)

以下 4 つの質問を順番に答えると、どれを使うべきか分岐します。

Q1. その作業は「Claude に毎回プロンプトで説明している知識」か?
  YES → Skill 候補
  NO  → Q2 へ

Q2. その作業は「メインの会話とは別に、独立した文脈で動かしたい」か?
  YES → Subagent 候補
  NO  → Q3 へ

Q3. その処理は「Claude のツール実行を前後で監視 / 介入したい」か?
  YES → Hook 候補
  NO  → Q4 へ

Q4. ユーザーが「明示的に手動で呼びたい」か?
  YES → Slash Command 候補
  NO  → MCP Server か通常プロンプトで対応

1. Skill(スキル)— 知識の自動注入

こういう時に使う

  • 社内 API の使い方を毎回プロンプトに書いている
  • 文章のトーンガイドを Claude に再現してほしい
  • 経理 / 法務 / 採用などの業務手順を Claude が標準的に守ってほしい

構造

.claude/skills/<skill-name>/
├ SKILL.md   ← フロントマターに description / when_to_use を必須
└ ...        ← 補助ファイル(テンプレ、規約、参照ドキュメント)

動作の仕組み

Claude Code はセッション開始時に .claude/skills/*/SKILL.mddescription のみを読み込み、会話の文脈に応じて該当 Skill 本体を自動的にロードします。description のフレーズマッチが採用率を決めるので、5W1H で具体的に書くこと。

1 行で言える成功パターン

「毎回同じ前提を書いている」 → Skill 化で書かなくて済むようになる

実装例

---
name: "email-reply-style"
description: "取引先・社内メールへの返信文を、当社のトーン(敬語強め・短文・要点 3 行)で生成するときに使う"
when_to_use: "メール文の返信案を作成するとき"
---

# Email Reply Style Guide

## 当社のトーン
- 敬語は「させていただきます」より「いたします」を優先
- 1 文 60 字以内
- 要点を 3 行に圧縮し、その後に詳細補足を続ける

## 過去の良いメール例
... (略)

2. Subagent(サブエージェント)— 専門家への委譲

こういう時に使う

  • 「コードレビュー専門」「セキュリティ監査専門」「テスト生成専門」など 役割を完全に分離したい
  • メイン文脈のトークンを食い潰したくない長文タスクがある
  • 複数の Subagent を 並列実行して結果を統合したい(例: 同じコードを「セキュリティ」「パフォーマンス」「可読性」3 視点で同時レビュー)

構造

.claude/agents/<agent-name>.md

frontmatter に name / description / tools / model / color を書き、Markdown 本文がそのエージェントの persona(システムプロンプト相当)となります。

動作の仕組み

メイン Claude が Agent ツールで subagent_type=<name> を指定して呼び出すと、完全に独立した新規セッションで Subagent が動きます。返ってくるのは要約文字列のみで、メインのコンテキストには Subagent 内部の途中経過は流れません(= トークン圧縮装置として使える)。

1 行で言える成功パターン

「メインの会話を汚さずに、長い分析タスクを並列でやりたい」 → Subagent

実装例

---
name: "code-reviewer"
description: "コードレビュー専門。書きたて / 修正したてのコードに対し、命名・責務分離・例外処理・テスト不足を指摘する"
model: opus
tools: Read, Grep, Bash
color: blue
---

# Code Reviewer

あなたは熟練のシニアエンジニアです。
以下の観点で 5-10 個の指摘を箇条書きで返してください。

1. 命名は意図を反映しているか
2. 1 関数の責務は単一か(50 行を超えていないか)
3. 例外処理は早期 return で書かれているか
4. テストの不足箇所
5. パフォーマンス上の懸念

抽象的な指摘は禁止。すべて「ファイル:行番号」と「具体的な修正案」を添えること。

3. Hook(フック)— ライフサイクル介入

こういう時に使う

  • ファイル編集後に 自動 fmt / lint したい
  • コミット前に 危険なコマンド を物理ブロックしたい
  • セッション終了時に「未テストファイルが残っていないか」を最終チェックしたい

構造

~/.claude/settings.json または <project>/.claude/settings.jsonhooks 配列で定義します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/post-mdx-quality.sh \"$CLAUDE_TOOL_FILE\""
          }
        ]
      }
    ]
  }
}

動作の仕組み

Claude のツール呼び出しのライフサイクル(PreToolUse → ToolUse → PostToolUse → Stop)の各ポイントで、対応するシェルコマンドがClaude のプロセス外で実行されます。stdout / exit code により「ブロック」「警告」「通過」を制御できます。

1 行で言える成功パターン

「人間が忘れがちな処理を、Claude のツール実行に絡めて強制したい」 → Hook

実装例

#!/usr/bin/env bash
# .claude/hooks/post-mdx-quality.sh — MDX 書込み後に文字数・H2 数・内部リンク数をチェック
FILE="$1"
[[ "$FILE" != *.mdx ]] && exit 0

WORD_COUNT=$(grep -v '^---' "$FILE" | wc -w)
H2_COUNT=$(grep -c '^## ' "$FILE")

if [[ $WORD_COUNT -lt 1500 ]]; then
  echo "⚠ 本文 < 1,500 字 ($WORD_COUNT)"
fi
if [[ $H2_COUNT -lt 3 ]]; then
  echo "⚠ H2 < 3 ($H2_COUNT)"
fi
exit 0   # exit 1 にすると Claude がブロックされる

4. 組み合わせパターン: 三位一体運用

実プロジェクトでは 3 つを単独で使うことは少なく、役割を分担させるのが定石です。

パターン A: 記事制作の品質ゲート

Skill:      .claude/skills/article-writing.md   ← トーン・構成テンプレを自動注入
Subagent:   .claude/agents/e-e-a-t-validator.md ← 公開前の信頼性チェック専門
Hook:       PostToolUse on Edit *.mdx          ← 書込み毎に文字数・H2 数チェック

→ Claude が記事を書く → Hook が即時 lint → 完成したら Subagent が信頼性を独立評価。

パターン B: 安全な業務自動化(経理)

Skill:      .claude/skills/accounting-rules.md  ← 勘定科目・摘要テンプレ
Subagent:   .claude/agents/freee-poster.md      ← freee MCP 経由の起票専門
Hook:       PreToolUse on Bash                 ← `rm` 含む危険コマンドを物理ブロック

→ Claude が領収書を読む → Skill が仕訳ルールを供給 → Subagent が freee に起票 → Hook が誤操作を未然防止。

パターン C: 開発フロー全体

Skill:      .claude/skills/test-driven-development.md
Subagent:   .claude/agents/code-reviewer.md / security-reviewer.md
Hook:       PostToolUse on Edit *.ts          → tsc + prettier 自動
Hook:       Stop                              → 修正ファイル全件で console.log 残存チェック

→ TDD ループは Skill で強制 → 書き終わったら 2 体の Subagent が並列レビュー → Hook で型 / 整形 / デバッグ漏れを毎回確認。

5. やりがちな間違い 4 つ

間違い 1: Subagent と Skill を混同する

症状: Skill に「○○の専門家として振る舞ってください」と書いて、毎回ロードしている
正解: 「会話の文脈と独立して、別タスクで動かしたい」なら Subagent。Skill は「会話の文脈に追加する知識」。

間違い 2: Hook で「全 Bash コマンドを毎回確認」する

症状: PreToolUse Hook で read -p プロンプトを出して、Claude のループが止まる
正解: Hook は 自動判定用。「危険なコマンドだけ exit 1 でブロック」「無害なものは通過」のロジックを書く。インタラクティブ確認は許可モード(permission-mode)で制御。

間違い 3: MCP で済むものを Subagent にする

症状: 「Slack を読んで要約する Subagent」を作る
正解: それは MCP の領域。MCP Server をセットアップして tool として公開し、メイン Claude から呼ぶのが正攻法。Subagent は「思考プロセスごと別文脈に隔離したい」場合のみ。

間違い 4: 全部 CLAUDE.md に書く

症状: CLAUDE.md が 3,000 字超え。すべてのプロジェクトルール・コーディング規約・ドキュメント手順が混在
正解: トーン・ディレクトリ構成は CLAUDE.md、再利用可能な手順は Skill、専門タスクは Subagent、自動化は Hook。分割して責務を持たせる

6. 1 枚マップ(再掲)

SkillSubagentHook
動くタイミング文脈マッチ時自動明示呼び出しToolUse 前後 / Stop
文脈メインに合流独立新規文脈なし
出力プロンプトに混ざる要約文字列で返るstdout / exit code
並列実行✅ 複数同時✅ matcher 別
ファイル.claude/skills/<name>/SKILL.md.claude/agents/<name>.md~/.claude/settings.json
設計の単位「知識」「役割(人格)」「自動処理」

まとめ

「知識 = Skill / 役割 = Subagent / 自動化 = Hook」 の三位一体で覚えると迷いません。最初は Skill から始めるのが安全です(誤動作しても挙動が予測可能)。Subagent は「複数視点の並列レビュー」「長文タスクのトークン圧縮」が欲しくなったら、Hook は「Claude に頼らない強制チェック」が必要になったら導入する、という順序が現実的です。

実装で詰まった方は以下の関連記事もどうぞ。

Byclaude-code-media 編集部

AI支援で執筆 — 本記事は Claude Code エージェントによる執筆支援を受け、編集部が事実確認・編集を行っています。 数値・引用元は記事更新日時点で確認済みですが、最新情報は各公式サイトでご確認ください。

Related

続けて読む

すべての記事 →