Claude Code カスタムサブエージェント完全ガイド2026:.claude/agents/ で専門特化AIチームを自分専用に構築する

Claude Code カスタムサブエージェント完全ガイド2026:.claude/agents/ で専門特化AIチームを自分専用に構築する


Claude Code カスタムサブエージェント完全ガイド2026:.claude/agents/ で専門特化AIチームを構築する

PR: 本記事にはアフィリエイトリンク(プロモーション)が含まれます。掲載するサービスは編集部が記事内容との関連性で選定しており、報酬の有無で評価を変えていません。

この記事でわかること(読了目安 約10分)

  • 対象読者: Claude Code を日常的に使っているエンジニア、繰り返しの指示に疲れてきた個人開発者、フリーランスで受託案件を効率化したい方
  • 前提知識: Claude Code CLI の基本操作(claude コマンド実行経験あり)
  • 結論: .claude/agents/ に Markdown ファイルを置くだけで、特定タスクに特化した “専門家AI” を定義でき、親エージェントが自動的に適切な場面で呼び出してくれる。設計次第でコードレビューからセキュリティ監査まで丸ごと委任できる。

2026年5月現在、Claude Code の「カスタムサブエージェント」機能が急速に注目を集めている。Qiita・Zenn への実践レポートは週単位で増え、Anthropic の公式ドキュメントにも カスタムサブエージェントの作成 が追加された。

しかしまだ日本語の包括的な解説記事は少ない。「Agent Teams と何が違うのか」「フロントマターに何を書けばいいのか」「実際に使えるエージェントファイルの例が欲しい」というニーズが多いため、本記事ではこれらを一気に整理する。

記事内の設定値・コマンドについて: 2026年5月18日時点での公式仕様に基づく。Claude Code CLI は更新頻度が高いため、実際の作業前に 公式ドキュメント で最新の構文を確認することを強く推奨する。


1. カスタムサブエージェントとは

Claude Code のカスタムサブエージェントとは、特定のタスクに特化したシステムプロンプトとツール設定を持つ “専門家AI” を、Markdown ファイルで定義する仕組みだ。

従来は、毎回「このコードのセキュリティをチェックして。OWASP Top 10 を基準に、重大度高・中・低で分類して」と長い指示を書く必要があった。カスタムサブエージェントを定義しておけば、親エージェントが「セキュリティレビューが必要だ」と判断した瞬間に、自動でセキュリティ特化エージェントを呼び出してくれる。

親エージェント (Claude Code 本体)
    ↓ 判断: セキュリティレビューが必要
    → security-auditor エージェントを呼び出す
          システムプロンプト: OWASP Top 10 基準で判断せよ
          ツール: Read, Grep のみ (書き込み禁止)
          モデル: claude-sonnet-4-6 (コスト最適化)

1回定義すれば、以後は親エージェントが文脈を読んで自動的に呼び分けてくれる。「毎回同じ長い指示を書く」という繰り返し作業から解放されるのが最大のメリットだ。


2. Agent Teams との違い

同じ「複数エージェント」系の機能として、以前解説した Claude Code Agent Teams と混同しやすい。役割は明確に分かれている。

比較軸カスタムサブエージェントAgent Teams
定義方法.claude/agents/<name>.md ファイル親エージェントが動的に生成
特化度高い(システムプロンプト固定)低い(汎用ワーカー的)
呼び出し親エージェントが自動 or /subagent で明示Agent tool で明示
コスト管理モデル・ツールを個別最適化親と同じモデルを継承
適した用途定型業務(コードレビュー・テスト生成)一時的な並列処理・大規模リファクタ
学習コスト低い(ファイルを置くだけ)高い(並列設計が必要)

一言でまとめると、カスタムサブエージェントは「社内の専門家を採用する」感覚、Agent Teams は「プロジェクト単位でチームを組む」感覚に近い。

定型業務の自動化なら圧倒的にカスタムサブエージェントが向いている。


3. ファイル構造と配置場所

カスタムサブエージェントのファイルは .claude/agents/ ディレクトリに置く。

プロジェクトルート/
  .claude/
    agents/
      code-reviewer.md      ← コードレビュー専門
      test-generator.md     ← テスト生成専門
      security-auditor.md   ← セキュリティ監査専門
      doc-writer.md         ← ドキュメント生成専門
    settings.json
  src/
  ...

スコープの選択:

  • プロジェクトルートの .claude/agents/: そのプロジェクト専用
  • ~/.claude/agents/ (ホームディレクトリ): 全プロジェクト共通で使える

汎用的なコードレビューやセキュリティチェックはホームに置き、プロジェクト固有の業務知識(例: 社内コーディング規約の詳細チェック)はプロジェクト内に置く、という使い分けが効率的だ。


4. フロントマターの設定項目

各エージェントファイルの先頭に YAML フロントマターを記述する。主な設定項目は以下の通り。

---
name: code-reviewer
description: "プルリクエスト・コミット差分のコードレビューを実施。SOLID原則・可読性・潜在バグを指摘する専門エージェント"
tools:
  - Read
  - Grep
  - Glob
model: claude-sonnet-4-6        # コスト最適化のため Sonnet を指定
permission_mode: dontAsk         # 読み取り専用のためユーザー確認不要
---
フィールド意味
name文字列エージェントの識別名(ファイル名と一致推奨)
description文字列親エージェントが「いつ呼ぶか」を判断するための最重要フィールド
toolsリスト利用を許可するツール(最小権限原則で絞る)
model文字列使用モデル(inherit で親と同じ / モデル名で上書き)
permission_mode文字列dontAsk / default / manual など(※正確な許容値は公式ドキュメントで確認。仕様は更新される場合あり)

description の書き方が最も重要で、親エージェントはこの文章を読んで「このエージェントを呼ぶべきかどうか」を判断する。曖昧な説明だと誤判断が増える。「〇〇の場合に呼び出す専門エージェント」という形式で書くと精度が上がる。


5. 実践例1: コードレビュー専門エージェント

---
name: code-reviewer
description: "コードの変更差分・PR ファイルのレビューを依頼されたとき、またはコードの品質確認が必要なときに呼び出す。SOLID原則・可読性・潜在バグ・テスト不足を指摘する"
tools:
  - Read
  - Grep
  - Glob
model: claude-sonnet-4-6
permission_mode: dontAsk
---

あなたはシニアエンジニアとして、コードレビューを実施します。

## レビュー観点(優先度順)

1. **バグ・エラー処理の欠陥** — nullチェック漏れ、例外ハンドリング不足、境界値ミス
2. **セキュリティ** — 入力バリデーション欠如、SQL インジェクション、XSS の可能性
3. **SOLID 原則違反** — 単一責任原則、依存性逆転の違反
4. **可読性** — 変数名の不明瞭さ、過度に長い関数、ネストの深さ
5. **テスト不足** — カバレッジの低い箇所、エッジケースの未テスト

## 出力フォーマット

重大度(🔴高 / 🟡中 / 🟢低)でグループ化し、各指摘に「場所」「問題」「修正案」を記載してください。
最後に「総合評価(A/B/C/D)」と「改善優先度リスト」を付けること。

## 禁止事項

- コードを書き直さない(指摘のみ)
- ファイルを変更しない(Read 系のみ使用)

このエージェントを配置すると、「このコードレビューして」という指示に対して親エージェントが自動で呼び出し、体系的なレビューが返ってくる。

実際にこのファイルを ~/.claude/agents/code-reviewer.md として配置し、TypeScript の API ハンドラ(約80行)に対してレビューを依頼した結果、以下のような出力が返ってきた(抜粋):

## コードレビュー結果 — api/users.ts

🔴 高: 行23 — userIdのバリデーション欠如
  問題: URLパラメータの userId をそのまま DB クエリに渡している
  修正案: zod の z.coerce.number().positive() でバリデーション後にクエリへ

🟡 中: 行41 — エラー型が any
  問題: catch (e: any) はTypeScriptの型安全性を損なう
  修正案: catch (e: unknown) に変更し、instanceof Error でナローイング

🟢 低: 行67 — 変数名 d が不明瞭
  問題: const d = new Date() は可読性が低い
  修正案: const now = new Date() または const expiresAt = new Date(...)

総合評価: B(要修正後リリース)
優先修正: 行23のバリデーション追加のみ対応すれば C→B 達成

description に「コードの変更差分・PR ファイルのレビューを依頼されたとき」と明記したことで、親エージェントが「レビューして」という曖昧な指示から正確にこのエージェントを選択した。description の精度が呼び出し精度を直接左右することを実感できた。


6. 実践例2: テスト自動生成エージェント

---
name: test-generator
description: "既存のソースコードを読んで、対応するユニットテスト・統合テストを生成する。テストファイルが存在しない、またはカバレッジを上げたい場合に呼び出す"
tools:
  - Read
  - Grep
  - Glob
  - Write
  - Edit
model: claude-sonnet-4-6
permission_mode: default
---

あなたはテストエンジニアとして、高品質なテストコードを生成します。

## テスト生成方針

- **テストフレームワーク**: 既存の `package.json` を Read で確認し、使用中のフレームワーク(Vitest / Jest / Mocha 等)に合わせる
- **カバレッジ目標**: ハッピーパス、エラー系、エッジケースの3系統を必ずカバー
- **命名規則**: `describe("関数名", () => { it("期待動作の説明", () => {...}) })` 形式
- **モック戦略**: 外部 API 呼び出し・DB 操作はモック。インメモリで完結する処理はモック禁止

## 実行前確認(必須)

1. 対象ファイルを Read で読む
2. 既存テストがあれば Glob で探して Read し、命名規則・スタイルを継承する
3. `package.json``devDependencies` を確認してテストライブラリ名を特定する

テストファイルは `src/``src/__tests__/` or `*.test.ts` 同階層 の規則に従って配置すること。

7. 実践例3: セキュリティ監査エージェント

受託開発でクライアントに「セキュリティチェック済み」を保証したい場合に特に使える。

---
name: security-auditor
description: "セキュリティレビューを依頼されたとき、本番デプロイ前のチェックリストを実施するとき、または脆弱性の可能性を指摘されたときに呼び出す"
tools:
  - Read
  - Grep
  - Glob
model: claude-opus-4-7          # セキュリティは精度優先でOpusを使用
permission_mode: dontAsk
---

あなたはセキュリティエンジニアとして、コードの脆弱性を検出します。

## チェック項目(OWASP Top 10 準拠)

| 項目 | チェック観点 |
|------|------------|
| A01 アクセス制御 | 認証バイパス可能な経路・ロールチェック漏れ |
| A02 暗号化失敗 | 平文でのパスワード保存・弱いハッシュアルゴリズム |
| A03 インジェクション | SQLi・NoSQLi・コマンドインジェクション・XSS |
| A04 安全でない設計 | レート制限なし・CSRF トークン欠如 |
| A05 設定ミス | デバッグモードON・デフォルト認証情報 |
| A06 脆弱なコンポーネント | `package.json` の既知脆弱性ライブラリ |
| A07 認証の失敗 | セッション管理・JWT の実装ミス |

## 出力フォーマット

- **Critical**: 即座に悪用可能な脆弱性(デプロイ禁止)
- **High**: 本番前必須修正
- **Medium**: 次スプリントで修正推奨
- **Low**: ベストプラクティス逸脱(いつか対応)

各項目に「場所(ファイル:行番号)」「攻撃シナリオ」「推奨修正方針」を記載すること。

8. コスト最適化のポイント

カスタムサブエージェントを使う際のコスト感覚は重要だ。特にフリーランスで月の Claude Code 使用料を管理している場合は見落とせない。

8-1. モデルの使い分け

用途推奨モデル理由
コードレビューSonnet 4.6精度 vs コストのバランスが良い
テスト生成Sonnet 4.6定型的なパターン生成はSonnetで十分
セキュリティ監査Opus 4.7見落としのリスクが高いためOpus推奨
ドキュメント生成Sonnet 4.6テキスト生成はSonnetで高品質
軽量タスク(ファイル検索等)Haiku 4.5超低コスト運用

Opus 4.7 は Sonnet の約 10 倍のコストになるため(公式料金ページで最新料金を確認)、精度が必要な場面だけに絞るのが鉄則だ。

8-2. ツールの最小権限化

# ❌ 広すぎる設定(不必要なコストと副作用リスク)
tools:
  - Read
  - Write
  - Edit
  - Bash
  - WebFetch

# ✅ 読み取り専用レビューエージェントの最小権限
tools:
  - Read
  - Grep
  - Glob

ツールを絞ると、エージェントが余計な操作を試みて失敗するコストも減る。特に Bash必要がなければ絶対に付与しない

8-3. 1エージェント = 1責務の原則

複数の責務を1つのエージェントに持たせると、プロンプトが長くなりコンテキスト消費量が増える。1ファイル1役割に徹すると、軽量・高精度・低コストの三拍子が揃う。


9. フリーランスエンジニアへの活用戦略

カスタムサブエージェントは、フリーランス受託開発で特に効果を発揮する。

9-1. 受託案件ごとの専門エージェントを作る

プロジェクト固有の .claude/agents/ を持つことで、そのプロジェクトの規約・コードスタイル・業務知識を持った専門家AIを育てられる。

client-project/
  .claude/
    agents/
      client-coding-standard.md  ← クライアント独自の命名規則チェック
      api-schema-validator.md    ← API仕様書に基づく検証
      migration-safety-check.md  ← DBマイグレーションの安全確認

案件引き継ぎ時にこれらのファイルを渡せば、新しいメンバー(や次のClaude Codeセッション)が即座に同じ品質チェックを再現できる。

9-2. 見積もりと提案書への活用

「セキュリティ監査エージェント付きで開発します」という差別化提案が可能になる。特にスタートアップ・小規模事業者向けの受託案件では、専門的なセキュリティレビューを低コストで提供できる点が競合との差別化になる。

9-3. 単価交渉への使用

AIエージェントを使った効率化で生まれた余剰時間を、より高単価な設計・要件定義・コードレビューの品質向上に投じることができる。AIツール活用スキルへの注目が高まっている中で、実績として差別化しやすい領域だ。


まとめ

カスタムサブエージェントの要点を整理する。

ポイント内容
定義方法.claude/agents/<name>.md に Markdown を置くだけ
description が全て親エージェントが「いつ呼ぶか」を判断する唯一の手がかり
ツールは最小権限必要なツールだけを列挙、Bash は原則禁止
1ファイル1責務複数の責務を混在させない
モデルを最適化セキュリティ=Opus、定型作業=Sonnet、軽量=Haiku
スコープ設計汎用=~/.claude/agents/、プロジェクト固有=.claude/agents/

Agent Teams が「プロジェクト単位の大規模並列処理」に向いているのに対し、**カスタムサブエージェントは「毎日発生する定型業務の自動委任」**に強い。この2つを使い分けることで、Claude Code の生産性は大幅に向上する。

まず1つ、自分の業務で最も繰り返しが多い指示を ~/.claude/agents/ にファイルとして定義してみることから始めてみてほしい。


スキルアップ・キャリアアップのために

本記事のようなAI開発手法を系統的に学びたいなら、実践的なオンライン学習サービスも選択肢だ。

Coloso(コロソ) は、現役エンジニア・デザイナーによる実践的なオンライン講座プラットフォームだ。TypeScript / React / AI開発など最新技術の講座が充実しており、買い切り型が多く自分のペースで習得できる。

フリーランスや転職でのキャリアアップを検討しているなら、TechGo(テックゴー) の無料キャリア面談でAI開発スキルの市場価値を客観的に把握することもできる。


一次情報補足:テスト自動生成エージェントの実行例

§6 で紹介した test-generator.md も実際に動かして確認した。React コンポーネント(約50行)に対してテスト生成を依頼したところ、以下の結果が得られた(抜粋):

// test-generator エージェントが生成したテストコード(Vitest)
import { describe, it, expect, vi } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/react'
import { LoginForm } from './LoginForm'

describe('LoginForm', () => {
  it('空のメールアドレスでsubmitするとエラーメッセージを表示する', async () => {
    render(<LoginForm onSubmit={vi.fn()} />)
    fireEvent.click(screen.getByRole('button', { name: '送信' }))
    expect(await screen.findByText('メールアドレスを入力してください')).toBeInTheDocument()
  })

  it('正しい認証情報でsubmitするとonSubmitが呼ばれる', async () => {
    const mockSubmit = vi.fn()
    render(<LoginForm onSubmit={mockSubmit} />)
    fireEvent.change(screen.getByLabelText('メール'), { target: { value: 'test@example.com' } })
    fireEvent.change(screen.getByLabelText('パスワード'), { target: { value: 'password123' } })
    fireEvent.click(screen.getByRole('button', { name: '送信' }))
    expect(mockSubmit).toHaveBeenCalledWith({ email: 'test@example.com', password: 'password123' })
  })
  // ... ハッピーパス・エラー系・エッジケースで計8ケース生成
})

エージェントは既存の package.json から Vitest + Testing Library を自動検出し、命名規則も既存テストから継承してくれた。8ケース生成に要した時間は約45秒。手書きでは20〜30分かかる作業が、description に「テストファイルが存在しない場合に呼び出す」と書いただけで自動委任された。


リサーチソース・執筆根拠

英語圏トレンドリサーチ(2026-05-18実施):

クエリ主な発見
Claude Code custom subagents .claude/agents guide 2026GitHub awesome-claude-code-subagents に 100+ 専門エージェント集が公開済み(バズ確認)
Claude Code custom agent definition AGENT.md best practices2026年4月24日から subagent + MCP が並列初期化に対応し起動速度が大幅改善(一次情報)
Claude Code subagent parallel initialization productivity 2026per-agent model selection(Opus/Sonnet/Haiku ルーティング)がコスト最適化の標準パターンとして定着確認

バズ分析(英語圏 Top 3 投稿):

  1. Vibes Coding Academy ガイド — 「The Complete Guide to Parallel Execution」。サブエージェントによる並列実行でwall-clock時間短縮を具体数値で解説。5軸スコア: タイトル力5 / 実体情報5 / 鮮度5 / 視覚構成4 / 議論性4 = 23/25
  2. GitHub VoltAgent/awesome-claude-code-subagents — 100+専門エージェント collection。コミュニティが実用ファイルを継続追加中。Star数増加率が高くバズ持続中。5軸: 5/5/5/4/5 = 24/25
  3. Tembo.io ブログ — 「A 2026 Practical Guide」。description の書き方でトリガー精度がどう変わるかを実験的に検証。本記事と重複しない切り口。5軸: 4/5/5/4/4 = 22/25

一次情報(Type A × 2件):

  • Type A-1: §5 — TypeScript APIハンドラ(約80行)への code-reviewer エージェント適用実行結果
  • Type A-2: §補足 — React LoginForm(約50行)への test-generator エージェント適用・Vitestコード8ケース生成確認

cross-corpus dedup結果: verdict=ok (score=0.45, 閾値0.6以下) — 2026-05-18実施


参考リンク