【Claude Code】カスタムサブエージェントの作成 - タスク特化型AIアシスタントの構築方法

PUBLISHED 2026-02-04

Claude Codeでは、特定のタスクを効率的に処理するためのカスタムサブエージェントを作成できます。サブエージェントは、独自のコンテキストウィンドウ、カスタムシステムプロンプト、ツール制限を持つ特化したAIアシスタントです。

この記事では、サブエージェントの基本概念から、作成方法、設定オプション、実践的な使用パターンまでを詳しく解説します。

サブエージェントとは

サブエージェントは、特定の種類のタスクを処理する特化したAIアシスタントです。各サブエージェントは以下の特徴を持ちます。

  • 独自のコンテキストウィンドウで実行
  • カスタムシステムプロンプトによる動作の定義
  • 特定のツールアクセスの制限
  • 独立した権限の設定

Claudeがサブエージェントの説明に一致するタスクに遭遇すると、自動的にそのサブエージェントに委譲され、独立して動作した後、結果を返します。

サブエージェントのメリット

🧠 コンテキストの保持

探索と実装をメイン会話から分離することで、コンテキストを効率的に管理できます。

🔒 制約の強制

サブエージェントが使用できるツールを制限し、安全性を確保できます。

🔄 設定の再利用

ユーザーレベルのサブエージェントで、プロジェクト全体で共通の設定を使用できます。

💰 コスト制御

Haikuのような高速で安価なモデルにタスクをルーティングできます。

組み込みサブエージェント

Claude Codeには、以下の組み込みサブエージェントが含まれています。

Explore

コードベースの検索と分析に最適化された読み取り専用エージェントです。

項目内容
モデルHaiku(高速、低レイテンシ)
ツール読み取り専用(Write/Editは拒否)
用途ファイル検出、コード検索、コードベース探索
💡 徹底度レベルの指定

Exploreを呼び出す際、Claudeは徹底度レベルを指定します。quick(ターゲット検索)、medium(バランス)、very thorough(包括的分析)から選択されます。

Plan

プランモード中にコンテキストを収集するための研究エージェントです。

項目内容
モデルメイン会話から継承
ツール読み取り専用(Write/Editは拒否)
用途計画のためのコードベース研究

General-purpose

探索とアクションの両方を必要とする複雑なマルチステップタスク用のエージェントです。

項目内容
モデルメイン会話から継承
ツールすべてのツール
用途複雑な研究、マルチステップ操作、コード変更

カスタムサブエージェントの作成

/agentsコマンドを使用する方法

最も簡単な方法は、/agentsコマンドを使用することです。

1
サブエージェントインターフェースを開く

Claude Codeで以下を実行します。

/agents
2
新しいエージェントを作成

Create new agentを選択し、スコープを選択します。

  • User-level: ~/.claude/agents/に保存、すべてのプロジェクトで利用可能
  • Project-level: .claude/agents/に保存、現在のプロジェクトのみ
3
Claudeで生成またはガイド付きセットアップ

Generate with Claudeを選択すると、説明からシステムプロンプトと設定が自動生成されます。

ファイルをスキャンして、可読性、パフォーマンス、
およびベストプラクティスの改善を提案するコード改善エージェント。
4
ツールとモデルを選択

読み取り専用ならRead-only toolsを選択し、モデルを選びます。

5
保存して使用

保存するとすぐに利用可能になります(再起動不要)。

code-improverエージェントを使用して、このプロジェクトの改善を提案してください

サブエージェントファイルを手動で作成

サブエージェントはYAMLフロントマター付きのMarkdownファイルで定義します。

---
name: code-reviewer
description: コード品質とベストプラクティスのレビュー
tools: Read, Glob, Grep
model: sonnet
---

あなたはコードレビュアーです。呼び出されたときは、
コードを分析し、品質、セキュリティ、および
ベストプラクティスに関する具体的で実行可能な
フィードバックを提供してください。

サブエージェントのスコープ

サブエージェントは保存場所によって異なるスコープを持ちます。

場所スコープ優先度
--agents CLIフラグ現在のセッション1(最高)
.claude/agents/現在のプロジェクト2
~/.claude/agents/すべてのプロジェクト3
プラグインのagents/ディレクトリプラグインが有効な場所4(最低)
💡 CLIでの一時的な定義

セッションのみ有効なサブエージェントは、CLIフラグで定義できます。

claude --agents '{
  "code-reviewer": {
    "description": "エキスパートコードレビュアー",
    "prompt": "あなたはシニアコードレビュアーです。",
    "tools": ["Read", "Grep", "Glob", "Bash"],
    "model": "sonnet"
  }
}'

設定オプション

フロントマターフィールド

フィールド必須説明
nameはい小文字とハイフンを使用した一意の識別子
descriptionはいClaudeがこのサブエージェントに委譲するべき時の説明
toolsいいえ使用できるツール(省略時はすべて継承)
disallowedToolsいいえ拒否するツール
modelいいえsonnetopushaikuinherit
permissionModeいいえ権限モードの設定
skillsいいえスタートアップ時に読み込むスキル
hooksいいえライフサイクルフック

利用可能なツール

サブエージェントは、Claude Codeの内部ツールを使用できます。デフォルトでは、メイン会話から利用可能なすべてのツール(MCPツール含む)を継承します。

---
name: safe-researcher
description: 制限された機能を持つ研究エージェント
tools: Read, Grep, Glob, Bash
disallowedTools: Write, Edit
---

権限モード

モード動作
defaultプロンプト付きの標準権限チェック
acceptEditsファイル編集を自動受け入れ
dontAsk権限プロンプトを自動拒否
bypassPermissionsすべての権限チェックをスキップ
planプランモード(読み取り専用探索)
⚠️

bypassPermissionsは注意して使用してください。すべての権限チェックをスキップし、サブエージェントが承認なしに任意の操作を実行できるようになります。

サブエージェントの使用パターン

自動委譲

Claudeは、リクエスト内のタスク説明とサブエージェントのdescriptionフィールドに基づいて、タスクを自動的に委譲します。

💡 積極的な委譲を促進

サブエージェントの説明に「use proactively」などのフレーズを含めると、自動的に委譲されやすくなります。

フォアグラウンドとバックグラウンド

✅ フォアグラウンド

メイン会話が完了するまでブロック。権限プロンプトと質問はユーザーに渡される。

❌ バックグラウンド

並行して実行。親の権限を継承し、事前に承認されていないものは自動拒否。

大量の操作を分離

サブエージェントの効果的な使用法の1つは、大量の出力を生成する操作を分離することです。

サブエージェントを使用してテストスイートを実行し、
失敗したテストとそのエラーメッセージのみを報告してください

並列研究

独立した調査の場合、複数のサブエージェントを生成して同時に作業させます。

認証、データベース、およびAPIモジュールを
並列で調査するために、別々のサブエージェントを使用してください

サブエージェントをチェーン

マルチステップワークフローの場合、Claudeに順序でサブエージェントを使用するよう依頼します。

code-reviewerサブエージェントを使用してパフォーマンスの問題を見つけ、
次にoptimizerサブエージェントを使用してそれらを修正してください

サブエージェントの例

コードレビュアー

コードを変更せずにレビューする読み取り専用サブエージェント。

---
name: code-reviewer
description: コード品質とセキュリティのためにコードを積極的にレビュー
tools: Read, Grep, Glob, Bash
model: inherit
---

あなたはコード品質とセキュリティの高い基準を確保する
シニアコードレビュアーです。

呼び出されたときは:
1. git diffを実行して最近の変更を確認
2. 変更されたファイルに焦点を当てる
3. すぐにレビューを開始

レビューチェックリスト:
- コードは明確で読みやすい
- 関数と変数は適切に命名されている
- 重複したコードはない
- 適切なエラーハンドリング
- 公開されたシークレットまたはAPIキーはない
- 入力検証が実装されている
- 良好なテストカバレッジ
- パフォーマンスの考慮事項に対応している

デバッガー

問題を分析して修正できるサブエージェント。

---
name: debugger
description: エラー、テスト失敗、予期しない動作のデバッグ専門家
tools: Read, Edit, Bash, Grep, Glob
---

あなたは根本原因分析を専門とするエキスパートデバッガーです。

呼び出されたときは:
1. エラーメッセージとスタックトレースをキャプチャ
2. 再現ステップを特定
3. 失敗の場所を分離
4. 最小限の修正を実装
5. ソリューションが機能することを確認

データベースクエリバリデーター

フックを使用して読み取り専用クエリのみを許可するサブエージェント。

---
name: db-reader
description: 読み取り専用データベースクエリを実行
tools: Bash
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/validate-readonly-query.sh"
---

あなたは読み取り専用アクセス権を持つデータベースアナリストです。
SELECTクエリを実行してデータに関する質問に答えてください。

検証スクリプトの例:

#!/bin/bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then
  echo "ブロック:SELECTクエリのみが許可されています" >&2
  exit 2
fi

exit 0

サブエージェントとメイン会話の使い分け

✅ メイン会話を使用
  • 頻繁なやり取りや反復的な改善が必要
  • 複数のフェーズが重要なコンテキストを共有
  • 迅速でターゲット化された変更
  • レイテンシが重要
❌ サブエージェントを使用
  • タスクが詳細な出力を生成
  • 特定のツール制限を強制したい
  • 作業が自己完結型で要約を返せる
📌

サブエージェントは他のサブエージェントを生成できません。ネストされた委譲が必要な場合は、スキルを使用するか、メイン会話からサブエージェントをチェーンしてください。

サブエージェントの再開

サブエージェントが完了すると、ClaudeはそのエージェントIDを受け取ります。前の作業を続けるには、Claudeに再開を依頼します。

code-reviewerサブエージェントを使用して認証モジュールをレビューしてください
[エージェントが完了]

そのコードレビューを続けて、今度は認可ロジックを分析してください
[Claudeは前の会話から完全なコンテキストでサブエージェントを再開]

まとめ

サブエージェント活用のポイント
  • 焦点を絞る 各サブエージェントは1つの特定のタスクに優れさせる
  • 詳細な説明 Claudeが委譲するかどうかを決定できるよう明確に記述
  • ツールアクセス制限 セキュリティと焦点のために必要な権限のみを付与
  • バージョン管理 プロジェクトサブエージェントをチームと共有

サブエージェントを活用することで、Claude Codeでのワークフローを大幅に効率化できます。コードレビュー、デバッグ、データ分析など、繰り返し行うタスクを特化したエージェントに委譲することで、メインの会話コンテキストを保持しながら、効率的に作業を進められます。

参考文献

CATEGORY
TAGS
円