Visual Studio Code でカスタム GitHub Copilot エージェントを作成する
カスタム エージェントは、Visual Studio Code で特定のロールまたはワークフロー用に構成する特殊な AI アシスタントです。 各エージェントは、特定の種類の専門家として機能するように GitHub Copilot の動作を誘導する一連の命令とツールのアクセス許可をカプセル化します。 GitHub Copilot Chat でカスタム エージェントを選択すると、AI はそのエージェントのペルソナを採用し、そのガイドラインに従い、割り当てたツールのみを使用します。
カスタム GitHub Copilot エージェントとは
カスタム エージェントは、GitHub Copilot Chat をロール固有のアシスタントに変換するカスタマイズされた構成です。 カスタム エージェントは、汎用の動作に依存するのではなく、定義した指示と制約に従って動作します。 たとえば、コードの脆弱性を分析する "セキュリティ レビュー担当者" エージェント、単体テストの生成に重点を置く "テスト ライター" エージェント、またはファイルを変更せずに実装計画を生成する "Planner" エージェントを作成できます。
カスタム エージェントは、Visual Studio Code の高度な機能として導入されました (Visual Studio Code リリース 1.106 (以前は "カスタム チャット モード" と呼ばれる) から入手できます)。 開発者は、さまざまな開発コンテキストで AI がどのように動作するかをきめ細かく制御できます。 各エージェントが GitHub Copilot Chat エージェントのドロップダウンに表示され、それを選択していつでも AI のモードを切り替えることができます。
カスタム エージェントは、次の 2 つの場所に格納できます。
ワークスペース エージェント: リポジトリの
.github/agents/フォルダーに格納されます。 これらのエージェントは、バージョン管理を通じてチームと共有され、プロジェクトのすべてのユーザーが同じ特殊なアシスタントにアクセスできるようになります。ユーザー プロファイル エージェント: Visual Studio Code ユーザー プロファイルのプロンプト フォルダーに格納されます。 これらのエージェントは個人用であり、すべてのワークスペースで使用でき、個々のワークフロー設定を反映するエージェントに役立ちます。
カスタム エージェントのしくみを確認する
カスタム エージェントは、 .agent.md 拡張子を持つ Markdown ファイルです。 Visual Studio Code は、ワークスペースの.agent.md フォルダー (またはユーザー プロファイル) 内の.github/agents/ ファイルを自動的に検出し、GitHub Copilot Chat インターフェイスで使用可能なエージェントとして読み込みます。
各エージェント ファイルは、次の 2 つの部分で構成されます。
YAML frontmatter ヘッダー: このセクションでは、エージェントの名前、チャット インターフェイスに表示される説明、使用できるツール、オプションのモデル設定、他のエージェントに接続するためのハンドオフ構成などのメタデータを指定します。
Markdown 本文: このセクションには、エージェントの指示とコンテキストが含まれています。 エージェントがアクティブになると、コンテンツはすべてのユーザー プロンプトの前に追加され、GitHub Copilot が要求を解釈して応答する方法を示します。 これらの命令は、カスタム命令ファイルに使用されるのと同じ自然言語スタイルで記述します。
エージェントのフロントマッターフィールド
YAML frontmatter では、エージェントの動作を構成するための次のフィールドがサポートされています。
| Field | Description |
|---|---|
description |
エージェントが選択されたときにチャット入力にプレースホルダー テキストとして表示される簡単な説明。 |
name |
設定可能なオプションの表示名。 省略すると、ファイル名 ( .agent.mdなし) が使用されます。 |
tools |
エージェントが使用できるツールの配列 ( ['read', 'edit', 'search']など)。 このフィールドを省略すると、使用可能なすべてのツールにアクセスできます。 |
model |
推奨される AI モデル。 1 つのモデル ID 文字列またはフォールバック用のモデル ID の配列 (たとえば、 ['o4-mini', 'gpt-4.1']) を指定できます。 |
agents |
このエージェントによってサブエージェントとして呼び出すことができるエージェント名の配列。 |
handoffs |
他のエージェントへの移行を定義するハンドオフ構成の配列 (次のユニットで説明します)。 |
argument-hint |
ユーザーがエージェントへの入力として入力する必要がある内容を説明する、チャット入力に表示されるヒント テキスト。 |
user-invokable |
エージェントのドロップダウンにエージェントが表示されるかどうかを制御するブール値。 他のエージェントによってサブエージェントとしてのみ呼び出すことができるエージェントを作成するには、 false に設定します。 既定値は true です。 |
disable-model-invocation |
trueに設定すると、エージェントは言語モデルにプロンプトを送信しません。 ツールのみを使用してアクションを実行するエージェントに便利です。 |
target |
エージェントの実行環境を指定します。 client (Visual Studio Code で既定で実行されます) または cloud (クラウドで実行されます)。 |
mcp-servers |
エージェントがアクセスできる MCP (モデル コンテキスト プロトコル) サーバーを定義するオブジェクト。 MCP サーバーは、外部ツールとデータ ソースに接続することでエージェント機能を拡張します。 |
次の例は、これらのフィールドのいくつかを使用したカスタム エージェント ファイルの構造を示しています。
---
description: Reviews code for security vulnerabilities and suggests improvements
tools: ['search', 'read']
---
# Security Reviewer
You are a senior security engineer. When the user provides code or asks you to review files, analyze the code for common security vulnerabilities including:
- SQL injection
- Cross-site scripting (XSS)
- Authentication and authorization flaws
- Insecure data handling
- Hardcoded credentials or secrets
Provide your findings as a structured list with severity levels (Critical, High, Medium, Low). For each finding, explain the vulnerability, show the affected code, and suggest a secure alternative.
Do not modify any files. Your role is advisory only.
開発者が GitHub Copilot Chat でこのエージェントを選択すると、すべての操作で次の手順が使用されます。 エージェントは、セキュリティ分析に重点を置く必要があることを "認識している" ため、ファイルの編集は試行されません。これは、その命令とツール セットによって読み取り専用操作に制限されるためです。
ツールを使用してエージェント機能を定義する
YAML frontmatter の tools フィールドは、エージェントが実行できるアクションを制御します。 ツールは、エージェントがファイルの読み取り、コードの編集、コードベースの検索、ターミナル コマンドの実行、またはその他の機能へのアクセスを実行できるかどうかを決定します。 ツール 一覧を調整することで、各エージェントがその役割に関連するアクションのみを実行するようにします。
一般的なツールは次のとおりです。
| Tool | Description |
|---|---|
read |
ワークスペースからファイルの内容を読み取る |
edit |
ワークスペース内のファイルを変更する |
search |
ワークスペース ファイル間で検索する |
fetch |
URL からコンテンツを取得する |
terminal |
ターミナルでコマンドを実行する |
agent |
他のエージェントをサブエージェントとして呼び出す |
toolsフィールドを完全に省略すると、エージェントは既定ですべての標準ツールにアクセスできるようになります。 ただし、明示的に一覧表示するツールは、エージェントの動作に明確な境界を作成するため、ベスト プラクティスです。 コードを変更すべきではない Planning エージェントでは、 ['search', 'read', 'fetch']のみを指定する必要があります。一方、コードを記述する必要がある実装エージェントには ['search', 'read', 'edit', 'terminal']が含まれます。
注
エージェントの構成に一覧表示されているツールが現在の環境で使用できない場合、警告なしに無視されます。 つまり、特定のセットアップでのみ使用できる可能性があるツールを使用して、エラーを発生させずにエージェントを定義できます。
サブエージェント
YAML frontmatter の agents フィールドを使用すると、エージェントは他のエージェントをサブエージェントとして呼び出すことができます。 サブエージェントは、別のエージェントがサブタスクを処理するために呼び出し、その結果を独自の応答に組み込むエージェントです。 この動作は、制御をユーザーに転送するハンドオフとは異なります。サブエージェント呼び出しはエージェントの処理中に行われ、その結果が呼び出し元エージェントに自動的に返されます。
たとえば、"潜在顧客開発者" エージェントは、"セキュリティ レビュー担当者" サブエージェントを呼び出してコード スニペットを確認し、その結果を受け取り、その結果を最終的な応答に組み込むことができます。これらはすべて 1 つの対話内に含まれます。
サブエージェントを構成するには、 agents フィールドにサブエージェント名を一覧表示します。
---
description: Lead developer agent that coordinates with specialists
tools: ['search', 'read', 'edit']
agents: ['security-reviewer', 'test-writer']
---
サブエージェントとしてのみ使用することを目的としたエージェントは、 user-invokable: false 設定できるため、エージェントのドロップダウンに表示されないため、インターフェイスはクリーンな状態を保ちます。
注
サブエージェントを使用するには、呼び出し元エージェントのagentリストに tools ツールを含めます (または、tools フィールドを完全に省略してすべてのツールを有効にします)。
agent ツールを使用すると、1 つのエージェントが応答中に別のエージェントをプログラムで呼び出します。
組織レベルのエージェント
複数のリポジトリ間で共有エージェントを維持するチームの場合、GitHub では組織レベルのエージェントがサポートされます。 これらのエージェントは GitHub 組織レベルで構成され、組織へのアクセス権を持つ GitHub アカウントにサインインすると、Visual Studio Code のワークスペースおよびユーザー プロファイル エージェントと共に自動的に表示されます。
組織レベルのエージェントは、チーム間の一貫性を確保します。 たとえば、セキュリティ チームは、組織内のすべてのリポジトリで使用できる共有の "セキュリティレビュー担当者" エージェントを発行できます。各リポジトリで独自のエージェントを定義しなくても、同じセキュリティ レビュー条件があらゆる場所に適用されることを保証できます。
エージェント形式の互換性
Visual Studio Code では、 .agent.md 形式のエージェント ファイルがプライマリ構成として認識されます。 さらに、Visual Studio Code では、Claude Code エージェント形式に従う Claude スタイルのエージェント ファイルがサポートされます。 Claude Code のエージェント構成が既にある場合は、Visual Studio Code の GitHub Copilot Chat で変更なしで動作します。 この相互互換性により、複数の AI ツールを使用するチームの移行が簡略化されます。
組み込みエージェントとカスタム エージェント
Visual Studio Code には、チャット用の汎用構成を提供するいくつかの組み込みエージェントが含まれています。 これらのエージェントには、既定の "GitHub Copilot" エージェントと、一般的なタスク用の特殊なエージェントが含まれます。 カスタム エージェントは、プロジェクト固有の手順とツール構成を使用して独自のロールを定義できるようにすることで、このシステムを拡張します。
カスタム エージェントは、組み込みのエージェントと共に GitHub Copilot Chat エージェントのドロップダウンに表示されます。 任意のエージェントをいつでも切り替えて、AI の動作方法を変更できます。 この柔軟性により、GitHub Copilot Chat インターフェイスを離れることなく、さまざまな作業モード (計画、コーディング、レビュー、テスト) 間を移動できます。
組み込みエージェントよりもカスタム エージェントの主な利点は、特定性です。 組み込みのコード レビュー エージェントは一般的なベスト プラクティスを適用しますが、カスタムの "コード レビュー担当者" エージェントは、チームの特定のレビュー チェックリストを適用し、プロジェクトのアーキテクチャ上の決定を参照し、コードベースで最も重要なパターンとアンチパターンに焦点を当てることができます。
カスタム エージェントを作成する手順
Visual Studio Code でカスタム エージェントを作成するには、次の手順に従います。
[エージェント] メニューを開きます。GitHub Copilot チャット ウィンドウで、エージェントのドロップダウンを開きます (通常は現在のエージェント名が表示されます)。 [ カスタム エージェントの構成] を選択し、[ 新しいカスタム エージェントの作成] を選択します。 または、コマンド パレットから
Chat: New Custom Agentコマンドを実行します (Ctrl + Shift + P)。スコープを選択します。エージェント ファイルを格納する場所を選択します。 [ ワークスペース] を選択して
.github/agents/でファイルを作成するか (バージョン管理を通じてチームが使用できるようにする)、または [ユーザー プロファイル ] を選択して個人用にし、すべてのワークスペースで使用できるようにします。エージェントに名前を付けます。エージェントのわかりやすいファイル名を入力します。 この名前は、エージェントのドロップダウンに既定の名前として表示されます。
planner、code-reviewer、test-writerなど、エージェントのロールを明確に示す名前を使用します。エージェント メタデータを定義する: 新しく作成された
.agent.mdファイルの YAML frontmatter で、エージェントのプロパティを構成します。descriptionを設定し (このテキストは、エージェントが選択されたときにチャット入力にプレースホルダー テキストとして表示されます)、エージェントがアクセスできるtoolsを指定し、必要に応じて優先modelを設定するか、他のエージェントにhandoffsを構成します。エージェントの指示を記述します。YAML frontmatter の下のファイルの本文で、エージェントのカスタム手順を指定します。 これらの手順では、エージェントのペルソナ、専門知識、および行動ガイドラインを定義します。 タスクのアプローチ方法、焦点を絞る方法、従う制約を AI に指示する明確な特定の言語を使用して、Markdown で記述します。
保存してアクティブ化する: ファイルを保存します。 カスタム エージェントは、GitHub Copilot Chat エージェントのドロップダウンにすぐに表示されます (
user-invokableが既定のtrueである場合)。 エージェントを選択して使用を開始します。
ヒント
組み込み、ワークスペース、ユーザー プロファイル、組織レベルのエージェントなど、使用可能なすべてのエージェントを表示および切り替えるクイック ショートカットとして、GitHub Copilot Chat に /agents を入力できます。
エージェントのスキル
エージェント スキルは、カスタム エージェントとは関連するが個別の概念です。 エージェントは命令とツールを使用してペルソナを定義しますが、 エージェントのスキル ( SKILL.md ファイルで定義) は、エージェントが引き付けることができる特定の機能または専門知識の領域を記述します。 スキルは、エージェントが認識し、できることに関する構造化されたメタデータを提供します。 Visual Studio Code では、より広範なカスタマイズ システムの一部としてスキルがサポートされています。 スキルは通常、ワークスペースで定義され、GitHub Copilot によって自動的に検出され、専門的な知識を持つエージェントの応答を強化します。
カスタム エージェントの例
次の例は、一般的な開発ロールのエージェントを定義する方法を示しています。
プランナーエージェント
Planner エージェントは、コードを変更することなく、要件の分析と実装計画の生成に重点を置いています。 読み取り専用ツールのみを使用し、プランを実行する準備ができたときに実装エージェントへのハンドオフが含まれます。
---
description: Generates high-level implementation plans without writing code
tools: ['search', 'read', 'fetch']
handoffs:
- label: Start Implementation
agent: implementer
prompt: Now implement the plan outlined above.
send: false
---
# Planner
You are a senior software architect. When the user describes a feature or change, analyze the request and generate a detailed implementation plan.
Your plan should include:
1. A summary of the feature requirements.
2. A list of files that need to be created or modified.
3. Step-by-step implementation tasks in logical order.
4. Any potential risks or considerations.
Do not write or modify any code. Focus on planning only. Ask clarifying questions if the requirements are ambiguous.
"コード レビュー担当者" エージェント
コード レビュー担当者エージェントは、品質の問題、セキュリティの脆弱性、ベスト プラクティスへの準拠についてコードを調べます。 読み取りツールと検索ツールを使用しますが、ファイルを直接編集することはありません。
---
description: Reviews code for bugs, security issues, and style compliance
tools: ['search', 'read']
---
# Code Reviewer
You are an experienced code reviewer. When the user asks you to review code, examine it for:
- Bugs and logical errors
- Security vulnerabilities (SQL injection, XSS, authentication flaws)
- Performance issues
- Naming convention violations
- Missing error handling
- Code duplication
Present your findings as a structured review with severity levels. For each issue, explain the problem, show the affected code, and suggest an improvement. End with an overall assessment of code quality.
これらの例は、チームの特定のニーズに合わせて調整できます。 重要な原則は、エージェントを特定のタスクに集中させる明確な指示を定義し、エージェントの責任に合わせてツール リストを構成することです。
概要
Visual Studio Code のカスタム エージェントを使用すると、カスタマイズされた指示とツールのアクセス許可を持つ特殊な AI ペルソナを定義できます。 ワークスペースまたはユーザー プロファイルに .agent.md ファイルを作成することで、特定の開発ロール (計画、実装、レビュー、テストなど) のエージェントを作成できます。 各エージェントは定義した境界内で動作し、許可するツールのみを使用し、指定した手順に従います。 サブエージェント、組織レベルのエージェント、MCP サーバー統合などの高度な機能により、エージェントが実行できる機能が拡張されます。 これらの機能を使用すると、開発ワークフローのさまざまな段階で GitHub Copilot がどのように動作するかを正確に制御できます。