はじめに

Claude Codeのサブエージェント機能を活用することで、コードレビューやデバッグといった専門タスクをAIに委任できます。しかし、ビルトインのサブエージェントだけでは、プロジェクト固有のワークフローや、チーム独自のコーディング規約に対応しきれない場面があります。

本記事では、.claude/agents/ディレクトリを使ったカスタムエージェントの作成方法を詳しく解説します。専門タスク向けプロンプトの設計手法、ツールアクセスの制御、Agent Skillsとの連携、そしてチームで共有するための運用方法まで、実践的な内容をカバーします。

この記事を読むことで、以下のことができるようになります。

  • カスタムエージェントのファイル構造と設定フィールドを理解する
  • プロジェクト固有のタスクに特化したエージェントを設計・作成する
  • ツールアクセスと権限を適切に制御する
  • Agent Skillsと連携した高度なエージェントを構築する
  • チーム全体で統一されたエージェント運用を実現する

実行環境

  • オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
  • ハードウェア: 4GB以上のRAM
  • Node.js 18以上(npmインストールの場合のみ必要)
  • インターネット接続(認証およびAI処理に必要)
  • シェル環境: Bash、Zsh、またはFish推奨

前提条件

  • Claude Codeがインストール済みであること
  • コマンドライン操作の基礎知識
  • サブエージェントの基本概念を理解していること(サブエージェント活用ガイド参照)

カスタムエージェントとは

カスタムエージェントは、特定のタスクや専門領域に最適化されたAIペルソナを定義するMarkdownファイルです。ビルトインのサブエージェント(Explore、Plan、汎用)と異なり、プロジェクト固有の要件や、チーム独自のワークフローに合わせて自由にカスタマイズできます。

flowchart TB
    subgraph BuiltIn[ビルトインエージェント]
        E[Explore<br>高速検索・読み取り専用]
        P[Plan<br>計画立案・調査]
        G[汎用<br>複合タスク]
    end
    subgraph Custom[カスタムエージェント]
        C1[コードレビュー担当]
        C2[セキュリティ監査]
        C3[ドキュメント生成]
        C4[プロジェクト固有タスク]
    end
    User[ユーザーリクエスト] --> Claude[Claude Code]
    Claude --> BuiltIn
    Claude --> Custom

カスタムエージェントの利点

利点 説明
専門性の最適化 特定ドメインに特化したプロンプトで高い精度を実現
コンテキスト分離 メイン会話を汚染せず、独立したコンテキストで作業
ツール制限 必要なツールのみを許可し、セキュリティを向上
再利用性 一度作成すれば、異なるプロジェクトやチームで共有可能
バージョン管理 Gitで管理し、チームで改善を続けられる

カスタムエージェントの保存場所

カスタムエージェントは配置場所によってスコープと優先度が異なります。

種類 配置場所 スコープ 優先度
プロジェクト .claude/agents/ 現在のプロジェクトのみ 最高
ユーザー ~/.claude/agents/ 全プロジェクトで利用可能 低い
プラグイン プラグインのagents/ディレクトリ プラグイン導入済み環境 最低

同じ名前のエージェントが存在する場合、プロジェクトレベルが優先されます。チーム共有にはプロジェクトレベル、個人用の汎用エージェントにはユーザーレベルを使い分けましょう。

カスタムエージェントのファイル構造

カスタムエージェントはMarkdownファイルで定義します。ファイルはYAMLフロントマター(メタデータ)とMarkdown本文(システムプロンプト)で構成されます。

基本構造

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
name: your-agent-name
description: エージェントの目的と使用タイミングの説明
tools: Read, Grep, Glob, Bash
model: sonnet
permissionMode: default
skills: skill1, skill2
---

エージェントのシステムプロンプトをここに記述します。

## 役割
このエージェントの役割と責任範囲を明確に定義します。

## 作業手順
1. 最初のステップ
2. 次のステップ
3. 最終ステップ

## 制約事項
- 守るべきルール
- 禁止事項

設定フィールドの詳細

フィールド 必須 説明
name はい 小文字とハイフンを使用した一意の識別子(例: code-reviewer
description はい エージェントの目的を説明する自然言語。自動委任のトリガーになる
tools いいえ カンマ区切りのツールリスト。省略時はすべてのツールを継承
model いいえ 使用するモデル(sonnetopushaiku)またはinherit
permissionMode いいえ パーミッションモード(後述)
skills いいえ 自動ロードするスキル名のカンマ区切りリスト

モデル選択の指針

modelフィールドでエージェントが使用するAIモデルを制御できます。

設定値 説明 推奨用途
haiku 高速・低レイテンシー 単純な検索、ファイル一覧、クイック応答
sonnet バランス型(デフォルト) コードレビュー、デバッグ、一般的なタスク
opus 高度な推論 複雑なアーキテクチャ分析、セキュリティ監査
inherit メイン会話と同じ 一貫性が必要な場合

パーミッションモード

permissionModeフィールドでエージェントの権限動作を制御します。

モード 説明
default 標準の確認プロセス
acceptEdits ファイル編集を自動承認
dontAsk ツール使用の確認をスキップ
bypassPermissions すべての権限チェックをバイパス(注意して使用)
plan 読み取り専用モード(変更不可)
ignore パーミッション設定を無視

カスタムエージェントの作成方法

方法1: /agentsコマンドで作成(推奨)

対話形式でエージェントを作成できます。Claudeに初期バージョンを生成させてからカスタマイズするのが最も効率的です。

1
/agents
  1. 「Create New Agent」を選択
  2. プロジェクトレベルかユーザーレベルかを選択
  3. エージェントの詳細を入力(Claudeに生成させることも可能)
  4. アクセスを許可するツールを選択
  5. 保存して使用開始

この方法の利点は、利用可能なすべてのツール(MCPツール含む)がリストで表示されるため、選択が容易なことです。

方法2: ファイルを直接作成

手動でMarkdownファイルを作成することもできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# プロジェクトレベルのエージェントを作成
mkdir -p .claude/agents

cat > .claude/agents/my-agent.md << 'EOF'
---
name: my-agent
description: カスタムエージェントの説明
tools: Read, Grep, Glob
---

エージェントの指示をここに記述
EOF

手動で作成したファイルは、次回Claude Codeセッション開始時に読み込まれます。即座に使用したい場合は/agentsコマンドを使用してください。

方法3: CLIフラグで動的に定義

--agentsフラグを使用して、セッション固有のエージェントを定義できます。

1
2
3
4
5
6
7
8
claude --agents '{
  "quick-reviewer": {
    "description": "高速コードレビュー",
    "prompt": "コード品質を素早くチェックしてください。",
    "tools": ["Read", "Grep"],
    "model": "haiku"
  }
}'

この方法は以下の場面で有用です。

  • エージェント設定の素早いテスト
  • セッション固有のエージェント(保存不要な場合)
  • 自動化スクリプトでのカスタムエージェント

効果的なプロンプト設計

カスタムエージェントの性能は、システムプロンプトの質に大きく依存します。効果的なプロンプトを設計するためのガイドラインを紹介します。

プロンプト設計の原則

flowchart LR
    A[役割定義] --> B[作業手順]
    B --> C[出力形式]
    C --> D[制約事項]
    D --> E[具体例]

1. 明確な役割定義

エージェントが何者で、何を専門とするかを最初に明記します。

1
2
You are a senior security engineer specializing in application security 
and vulnerability detection for web applications.

2. 具体的な作業手順

曖昧な指示ではなく、ステップバイステップの手順を記述します。

1
2
3
4
5
When invoked:
1. Run `git diff` to identify recent changes
2. Focus on files that handle user input or authentication
3. Check for OWASP Top 10 vulnerabilities
4. Generate a prioritized report

3. 期待する出力形式

レポートや結果の形式を明示します。

1
2
3
4
5
For each finding, provide:
- Severity level (Critical, High, Medium, Low)
- Vulnerable code location with file path and line number
- Exploitation scenario
- Recommended fix with code example

4. 制約事項と禁止事項

やってはいけないことを明確にします。

1
2
3
4
5
Constraints:
- Do NOT modify any files
- Do NOT execute arbitrary commands
- Focus only on security-related issues
- Skip false positives and known safe patterns

5. 具体例の提供

期待する動作の例を含めると、エージェントの精度が向上します。

1
2
3
4
5
6
7
8
Example output:
## Critical: SQL Injection in user_controller.py:45
- **Impact**: Attacker can execute arbitrary SQL queries
- **Code**: `cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")`
- **Fix**: Use parameterized queries
  ```python
  cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
  ```

descriptionフィールドの重要性

descriptionフィールドは、Claude Codeがエージェントを自動的に選択するトリガーになります。効果的な説明文のポイントは以下の通りです。

悪い例(曖昧):

1
description: コードをチェックする

良い例(具体的なキーワードを含む):

1
description: Expert code review specialist. Reviews code for quality, security, and maintainability. Use immediately after writing or modifying code, or when reviewing pull requests.

より積極的にエージェントを使用させたい場合は、以下のフレーズを含めます。

  • Use PROACTIVELY when...
  • MUST BE USED for...
  • Use immediately after...

実践的なカスタムエージェント例

フロントエンドコンポーネントレビュー担当

Reactコンポーネントのレビューに特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
---
name: react-component-reviewer
description: React component review specialist. Reviews React/TypeScript components for best practices, accessibility, and performance. Use PROACTIVELY when creating or modifying React components.
tools: Read, Grep, Glob, Bash
model: sonnet
---

You are a senior frontend engineer specializing in React and TypeScript.

## When Invoked

1. Run `git diff --staged` to identify changed component files
2. Focus on `.tsx` and `.jsx` files
3. Apply the review checklist below
4. Provide actionable feedback

## Review Checklist

### Component Design
- Single responsibility principle
- Proper prop types with TypeScript
- Meaningful component and prop names
- Appropriate use of hooks

### Performance
- Unnecessary re-renders (missing useMemo/useCallback)
- Large bundle imports
- Missing lazy loading for heavy components

### Accessibility (a11y)
- Semantic HTML elements
- ARIA attributes where needed
- Keyboard navigation support
- Color contrast compliance

### Code Quality
- Consistent naming conventions
- No inline styles (use CSS modules or styled-components)
- Proper error boundaries
- Test coverage

## Output Format

Organize feedback by priority:
- **Critical**: Must fix before merge
- **Warning**: Should fix, may cause issues
- **Suggestion**: Consider for improvement

Include specific file paths and line numbers with code examples.

APIエンドポイントテスター

REST APIのテストに特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
name: api-tester
description: API testing specialist. Validates REST API endpoints for correctness, security, and performance. Use when implementing or modifying API endpoints.
tools: Read, Bash, Grep, WebFetch
model: sonnet
permissionMode: acceptEdits
---

You are an API testing expert with deep knowledge of REST conventions and security best practices.

## When Invoked

1. Identify the API endpoint being tested
2. Review the endpoint implementation
3. Generate and execute test requests
4. Validate responses against expected behavior
5. Check for security vulnerabilities

## Testing Categories

### Functional Testing
- Correct HTTP status codes
- Response body structure
- Error handling
- Edge cases (empty input, large payloads)

### Security Testing
- Authentication/Authorization checks
- Input validation
- SQL injection prevention
- XSS prevention
- Rate limiting

### Performance
- Response time
- Payload size
- N+1 query detection

## Test Execution

Use curl for API testing:
```bash
# GET request
curl -X GET http://localhost:3000/api/resource -H "Authorization: Bearer $TOKEN"

# POST request
curl -X POST http://localhost:3000/api/resource \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"key": "value"}'
```

## Output Format

For each test:
- Test name and purpose
- Request details
- Expected vs actual result
- Pass/Fail status
- Recommendations if failed

データベースマイグレーションアシスタント

スキーマ変更とマイグレーションに特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
name: migration-assistant
description: Database migration specialist. Helps create and review database migrations, ensuring data integrity and backward compatibility. Use when modifying database schema.
tools: Read, Write, Bash, Grep
model: opus
skills: database-patterns
---

You are a database architect specializing in schema design and migration strategies.

## When Invoked

1. Analyze the requested schema change
2. Review existing migrations for context
3. Generate migration files
4. Validate migration safety

## Migration Principles

### Safety First
- Always provide rollback (down) migration
- Use transactions where supported
- Test with production-like data volumes
- Consider foreign key constraints

### Backward Compatibility
- Avoid breaking changes to existing columns
- Use additive migrations when possible
- Plan multi-step migrations for complex changes

### Performance
- Add indexes for frequently queried columns
- Consider migration duration for large tables
- Use batch operations for data migrations

## Migration Template

```sql
-- Migration: YYYYMMDDHHMMSS_description
-- Up
BEGIN;

ALTER TABLE table_name
ADD COLUMN new_column VARCHAR(255);

CREATE INDEX idx_table_new_column ON table_name(new_column);

COMMIT;

-- Down
BEGIN;

DROP INDEX idx_table_new_column;

ALTER TABLE table_name
DROP COLUMN new_column;

COMMIT;
```

## Validation Checklist

- [ ] Migration is idempotent
- [ ] Rollback migration tested
- [ ] No data loss scenarios
- [ ] Index strategy reviewed
- [ ] Foreign key impacts assessed

Agent Skillsとの連携

カスタムエージェントは、Agent Skillsと連携することで専門知識を拡張できます。skillsフィールドでスキルを指定すると、エージェント起動時に自動的にロードされます。

スキルとエージェントの違い

特徴 Agent Skills カスタムエージェント
主な用途 専門知識・ガイダンスの提供 タスクの委任・独立実行
コンテキスト メイン会話に追加 独立したコンテキストウィンドウ
起動方法 自動(説明マッチ) 自動委任または明示的呼び出し
設定ファイル SKILL.md *.md(agents/配下)

スキルを持つエージェントの例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
---
name: code-reviewer-with-standards
description: Code reviewer that follows our team's coding standards
tools: Read, Grep, Glob, Bash
skills: coding-standards, security-checklist, performance-guidelines
---

You are a code reviewer who follows our team's established standards.

When reviewing code:
1. Apply the coding-standards skill for style checks
2. Use security-checklist for vulnerability detection
3. Reference performance-guidelines for optimization suggestions

Provide feedback that references our documented standards.

この設定により、エージェントは3つのスキルの知識を持った状態で起動します。スキルは.claude/skills/または~/.claude/skills/に配置しておく必要があります。

ビルトインエージェントの制限

ビルトインエージェント(Explore、Plan、汎用)はスキルにアクセスできません。スキルを活用するには、カスタムエージェントを作成し、skillsフィールドで明示的に指定する必要があります。

ツールアクセスの制御

カスタムエージェントでは、アクセスを許可するツールを細かく制御できます。

利用可能な主要ツール

ツール 説明 用途
Read ファイルの読み取り コード分析、レビュー
Edit ファイルの編集 リファクタリング、バグ修正
Write ファイルの書き込み 新規ファイル生成
Bash シェルコマンド実行 テスト実行、Git操作
Grep 正規表現検索 パターン検出
Glob パターンマッチング ファイル一覧取得
WebFetch Webページ取得 ドキュメント参照

ツール制限のベストプラクティス

読み取り専用エージェント:

1
tools: Read, Grep, Glob

コード修正可能なエージェント:

1
tools: Read, Edit, Write, Bash, Grep, Glob

外部リソース参照可能なエージェント:

1
tools: Read, Grep, WebFetch

toolsフィールドを省略すると、メインスレッドのすべてのツール(MCPツールを含む)を継承します。セキュリティを考慮し、必要最小限のツールのみを許可することを推奨します。

チーム共有エージェントの運用

プロジェクトレベルでの共有

チームで共有するエージェントは.claude/agents/ディレクトリに配置し、Gitでバージョン管理します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# ディレクトリ構造
your-project/
├── .claude/
│   ├── agents/
│   │   ├── code-reviewer.md
│   │   ├── security-auditor.md
│   │   └── test-runner.md
│   └── skills/
│       ├── coding-standards/
│       │   └── SKILL.md
│       └── security-checklist/
│           └── SKILL.md
├── src/
└── ...

エージェント運用のガイドライン

1. 命名規則の統一

チーム全体で一貫した命名規則を採用します。

1
2
3
# 推奨パターン
[role]-[specialty].md
例: reviewer-frontend.md, tester-api.md, auditor-security.md

2. READMEでのドキュメント化

.claude/agents/README.mdにエージェント一覧と使用方法を記載します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Custom Agents

## Available Agents

| エージェント | 用途 | 呼び出し例 |
|-------------|------|-----------|
| code-reviewer | コードレビュー | 「code-reviewerで最近の変更をレビューして」 |
| security-auditor | セキュリティ監査 | 「認証モジュールのセキュリティ監査をして」 |
| test-runner | テスト実行・修正 | 「失敗しているテストを修正して」 |

## 新規エージェント追加手順

1. `.claude/agents/``.md`ファイルを作成
2. PRでチームレビューを受ける
3. マージ後、全員が利用可能

3. プルリクエストでのレビュー

エージェント定義の変更はコードと同様にレビューします。

1
2
3
4
5
# PRチェックリスト
- [ ] description が明確で、適切なトリガーキーワードを含む
- [ ] tools が最小限に制限されている
- [ ] システムプロンプトが具体的で曖昧さがない
- [ ] 動作確認済み

エージェントの無効化

特定のエージェントを無効化するには、パーミッション設定を使用します。

settings.jsonでの設定:

1
2
3
4
5
{
  "permissions": {
    "deny": ["Task(legacy-reviewer)", "Task(deprecated-agent)"]
  }
}

CLIでの一時的な無効化:

1
claude --disallowedTools "Task(security-auditor)"

高度な活用テクニック

エージェントのチェーン

複数のエージェントを連鎖させて複雑なワークフローを実現できます。

1
2
3
> まずcode-analyzerでパフォーマンスの問題を特定して、
> 次にoptimizerで修正を適用して、
> 最後にtest-runnerでテストを実行して

再開可能なエージェント(Resume)

長時間のタスクを複数セッションにわたって継続できます。

初回の呼び出し:

1
2
3
> code-analyzerを使って認証モジュールの分析を開始して

[エージェントが分析を実行し、agentId: "abc123" を返す]

エージェントの再開:

1
2
3
> エージェント abc123 を再開して、今度は認可ロジックも分析して

[以前のコンテキストを保持したまま継続]

context: forkを使ったスキル実行

Agent Skillsを独立したコンテキストで実行する場合、スキル側でcontext: forkagentフィールドを使用します。

1
2
3
4
5
6
---
name: code-analysis
description: Analyze code quality and generate detailed reports
context: fork
agent: code-reviewer
---

この設定により、スキルがカスタムエージェント「code-reviewer」のコンテキストで実行されます。

トラブルシューティング

エージェントが認識されない

確認事項:

  1. ファイルが正しいディレクトリにあるか(.claude/agents/または~/.claude/agents/
  2. ファイル名が.md拡張子で終わっているか
  3. YAMLフロントマターが正しい形式か(---で囲まれている)

デバッグ方法:

1
claude --debug

エージェントが自動的に呼び出されない

確認事項:

  1. descriptionフィールドにリクエストとマッチするキーワードが含まれているか
  2. Use PROACTIVELYなどのトリガーフレーズを追加する
  3. 明示的に呼び出して動作確認する
1
> [エージェント名]を使って[タスク]をして

ツールアクセスエラー

確認事項:

  1. toolsフィールドに必要なツールが含まれているか
  2. MCPツールを使用する場合、MCPサーバーが正しく設定されているか
  3. permissionModeが適切に設定されているか

まとめ

Claude Codeのカスタムエージェント機能を活用することで、プロジェクト固有のタスクに特化したAIアシスタントを構築できます。本記事で解説した内容を振り返ります。

  • ファイル構造: YAMLフロントマターとMarkdown本文で構成
  • 設定フィールド: namedescriptiontoolsmodelpermissionModeskills
  • プロンプト設計: 役割定義、作業手順、出力形式、制約事項、具体例を含める
  • Agent Skillsとの連携: skillsフィールドで専門知識を追加
  • チーム運用: .claude/agents/をGit管理し、PRでレビュー

まずは単純なエージェントから始め、徐々に複雑なワークフローに対応するエージェントを構築していきましょう。/agentsコマンドでClaude自身に初期バージョンを生成させてから、チームのニーズに合わせてカスタマイズするのが最も効率的なアプローチです。

参考リンク