create-custom-agent について
create-custom-agentは、開発タスクに特化したVS Codeカスタムエージェントファイルの作成を支援します。frontmatter、ツール権限、指示、エージェント間のハンドオフを扱います。
主な機能
- 01.agent.mdファイルの作成
- 02エージェントfrontmatterの設定
- 03利用可能なツールの選択
- 04エージェント間ハンドオフの設定
- 05役割に応じた指示の作成
- 06エージェント設定の検証
活用シーン
- 01プランナーやレビュアーの作成
- 02特定の役割向けにツールを制限
- 03複数ステップのワークフローでエージェントを連携
- 04ワークスペース共有またはユーザープロファイル用エージェントの準備
MCP 対応
GitHub Copilot向けの `mcp-servers` frontmatterフィールドを説明し、エージェントのツールからMCPサーバーのツールを参照する方法を示します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dotnet/ skills --skill create-custom-agentインストール後、Claude Code で/create-custom-agentを入力して読み込まれたか確認します。
詳細
カスタムエージェントの作成
このスキルは、開発タスク向けの専門的な AI ペルソナを定義する VS Code カスタムエージェントファイルの作成を支援します。カスタムエージェントでは、利用可能なツールを設定し、専門的な指示を指定できます。また、ハンドオフを使って連携させることもできます。
使用する場面
- 新しいカスタムエージェントを一から作成する
- 適切なフロントマターを含む
.agent.mdファイルをひな形から作成する - 複数ステップのワークフロー向けにエージェント間のハンドオフを設定する
- 専門的な役割(プランナー、レビュアーなど)向けにツールの使用を制限する
- ワークスペース共有エージェントやユーザープロファイルエージェントを作成する
使用しない場面
- 指示ファイルを作成する場合(代わりに
.instructions.mdを使用してください) - 再利用可能なプロンプトを作成する場合(代わりに
.prompt.mdを使用してください) - 既存のエージェントを変更する場合(ファイルを直接編集してください)
入力
| 入力 | 必須 | 説明 |
|---|---|---|
| エージェント名 | はい | エージェントを表す名前(例:planner、code-reviewer) |
| 説明 | はい | チャットでプレースホルダーテキストとして表示される簡潔な説明 |
| 目的/ペルソナ | はい | エージェントの役割と、どのように動作するべきか |
| ツール | 推奨 | エージェントが使用できるツールまたはツールセットの一覧 |
| ハンドオフ | 任意 | 作業完了後に引き継ぐ次のステップのエージェント |
ワークフロー
ステップ 1:エージェントファイルを作成する
agents/ ディレクトリに .agent.md 拡張子のファイルを作成します。
agents/<agent-name>.agent.md
ステップ 2:YAML フロントマターを追加する
必須フィールドと任意フィールドを含むヘッダーを追加します。
---
name: <agent-name>
description: <brief description for chat placeholder>
tools:
- <tool-name>
- <tool-set-name>
---
利用可能なフロントマターフィールド:
| フィールド | 必須 | 説明 |
|---|---|---|
name | いいえ | 表示名(既定値はファイル名) |
description | はい | チャット入力欄に表示されるプレースホルダーテキスト |
argument-hint | いいえ | ユーザーの入力を促すヒントテキスト |
tools | いいえ | 利用可能なツール/ツールセットの一覧 |
agents | いいえ | 許可するサブエージェントの一覧(すべての場合は *、なしの場合は []) |
model | いいえ | AI モデル名、または優先順位付きモデル配列 |
handoffs | いいえ | 次のステップとなるエージェントへの引き継ぎ一覧 |
user-invokable | いいえ | エージェントのドロップダウンに表示するかどうか(既定値:true) |
disable-model-invocation | いいえ | サブエージェントの呼び出しを防ぐかどうか(既定値:false) |
target | いいえ | 対象環境:vscode または github-copilot |
mcp-servers | いいえ | GitHub Copilot 対象向けの MCP サーバー設定 |
ステップ 3:ツールを設定する
エージェントが使用できるツールを指定します。
tools:
- search # Built-in tool
- fetch # Built-in tool
- codebase # Tool set
- myServer/* # All tools from MCP server
一般的なツールのパターン:
- 読み取り専用エージェント:
['search', 'fetch', 'codebase'] - 編集機能をすべて備えたエージェント:
['*']または特定の編集ツール - 専門エージェント:必要なツールを個別に選択
ステップ 4:ハンドオフを追加する(任意)
他のエージェントへの引き継ぎを設定します。
handoffs:
- label: Start Implementation
agent: implementation
prompt: Implement the plan outlined above.
send: false
model: GPT-5.2 (copilot)
ハンドオフのフィールド:
label:ユーザーに表示するボタンのテキストagent:引き継ぎ先のエージェント識別子prompt:引き継ぎ先のエージェント用に事前入力するプロンプトsend:プロンプトを自動送信するかどうか(既定値:false)model:ハンドオフ時にモデルを上書きする場合の任意フィールド
ステップ 5:エージェントへの指示を記述する(本文)
エージェントの動作に関する指示を Markdown で追加します。
You are a security-focused code reviewer. Your job is to:
1. Analyze code for security vulnerabilities
2. Check for common security anti-patterns
3. Suggest secure alternatives
## Guidelines
- Focus on OWASP Top 10 vulnerabilities
- Flag hardcoded secrets immediately
- Review authentication and authorization logic
## Reference other files
See [security guidelines](../security.md) for standards.
指示のヒント:
- 他のファイルを参照するには Markdown リンクを使用します
#tool:<tool-name>構文でツールを参照します- エージェントの動作と制約を具体的に記述します
ステップ 6:エージェントを検証する
エージェントが正しく読み込まれることを確認します。
- コマンドパレットを開きます(Ctrl+Shift+P)
- 「Chat: New Custom Agent」を実行するか、エージェントのドロップダウンを確認します
- 「Diagnostics」ビューを使用してエラーを確認します(チャットビュー内で右クリック)
テンプレート
---
name: <agent-name>
description: <brief description for chat placeholder>
argument-hint: <optional hint for user input>
tools:
- <tool-1>
- <tool-2>
handoffs:
- label: <button-text>
agent: <target-agent>
prompt: <pre-filled-prompt>
send: false
---
# <Agent Title>
<One paragraph describing the agent's persona and purpose.>
## Role
<Describe the agent's specialized role and expertise.>
## Guidelines
- <Guideline 1>
- <Guideline 2>
- <Guideline 3>
## Workflow
1. <Step 1>
2. <Step 2>
3. <Step 3>
## Constraints
- <Constraint 1>
- <Constraint 2>
エージェントの例
プランニングエージェント
---
name: planner
description: Generate an implementation plan
tools:
- search
- fetch
- codebase
handoffs:
- label: Start Implementation
agent: implementation
prompt: Implement the plan above.
---
# Planning Agent
You are a solution architect. Generate detailed implementation plans.
## Guidelines
- Analyze requirements thoroughly before planning
- Break work into discrete, testable steps
- Identify dependencies and risks
- Do NOT make code changes
コードレビューエージェント
---
name: code-reviewer
description: Review code for quality and security issues
tools:
- search
- codebase
---
# Code Review Agent
You are a senior engineer performing code review.
## Focus Areas
- Security vulnerabilities
- Performance concerns
- Code maintainability
- Test coverage gaps
## Output Format
Provide findings as:
1. **Critical**: Must fix before merge
2. **Warning**: Should address
3. **Suggestion**: Nice to have
検証チェックリスト
- ファイルの拡張子が
.agent.mdである - ファイルが
agents/ディレクトリにある - YAML フロントマターが有効である(適切なインデントで、構文エラーがない)
- 説明が空ではなく、内容が明確である
- ツール一覧に利用可能なツールのみが含まれている
- ハンドオフ先のエージェント名が既存のエージェントと一致している
- 指示が明確で、実行可能である
- エージェントがエージェントのドロップダウンに表示される
よくある問題
| 問題 | 解決策 |
|---|---|
| エージェントがドロップダウンに表示されない | ファイルが agents/ ディレクトリにあり、拡張子が .agent.md であることを確認します |
| YAML 構文エラー | フロントマターのインデントと引用符を確認します |
| ツールが動作しない | ツール名が存在することを確認します。利用できないツールは無視されます |
| ハンドオフが表示されない | 対象のエージェントが存在する必要があります。エージェント識別子を確認します |
| 指示が曖昧すぎる | 役割、制約、ワークフローを具体的に指定します |
| エージェントが予期せずサブエージェントとして呼び出される | disable-model-invocation: true を設定します |
| エージェントをサブエージェントとしてのみ使いたい | user-invokable: false を設定します |
参考資料
コメント
Markdown 対応