【AI開発】GitHub Copilot Custom Agentsの作り方


GitHub Copilotを「自分用の開発エージェント」として使うなら、custom agentsはかなり重要な機能です。毎回プロンプトで細かい前提を説明するのではなく、役割、制約、利用できるツール、判断基準をMarkdownファイルとして定義しておくことで、Copilotをタスク特化のチームメイトとして扱いやすくなります。

Custom Agentsとは何か

GitHub Docsでは、custom agentsはワークフロー、コーディング規約、ユースケースに合わせて調整できるCopilot agentの特殊版として説明されています。About custom agents つまり、Copilot本体に「このタスクではセキュリティレビュアとして振る舞う」「このタスクではREADME作成者として振る舞う」といった専門性を持たせる仕組みです。

custom agentは、agent profileと呼ばれるMarkdownファイルで定義します。About custom agents このagent profileには、YAML frontmatterで名前、説明、利用ツール、MCPサーバなどを書き、本文にエージェントの振る舞いを自然言語で記述します。Custom agents configuration

通常のcustom instructionsが「リポジトリ全体の常時ルール」だとすると、custom agentsは「特定の役割を持つ担当者」です。たとえば、docs-writertest-specialistsecurity-auditorci-debugger のように分けておくと、1つの万能エージェントにすべてを背負わせずに済みます。

どこに配置するか

リポジトリ単位で使うcustom agentは、.github/agents/ に配置します。Creating custom agents ファイル拡張子は .agent.md で、たとえば .github/agents/security-auditor.agent.md のように作ります。Creating custom agents for Copilot CLI

個人用に複数リポジトリで使いたい場合は、Copilot CLIでは ~/.copilot/agents/ に配置できます。Creating custom agents for Copilot CLI 同じ名前のエージェントがプロジェクト側とユーザー側にある場合、CLIではホームディレクトリ側のcustom agentが優先されます。Creating custom agents for Copilot CLI

OrganizationやEnterpriseで共通利用したい場合は、.github-private リポジトリの /agents/ に配置できます。About custom agents 個人の作業ルールならユーザー側、プロジェクト固有の規約ならリポジトリ側、組織標準ならOrganization側、という切り分けがよさそうです。

最小のagent profile

最小構成は、description と本文のプロンプトです。description は必須フィールドで、custom agentの目的と能力を説明します。Custom agents configuration

---
name: docs-writer
description: README、ADR、リリースノート、開発者向けドキュメントを作成・改善するドキュメント専門エージェント
tools: ["read", "edit", "search"]
---

あなたはドキュメント作成の専門家です。

あなたの責務:
- README、ADR、リリースノート、開発者向けドキュメントを改善する
- 簡潔で読みやすいMarkdownを書く
- 既存の用語、文体、プロジェクトの慣習を尊重する
- 明示的に依頼されない限り、本番コードは変更しない

編集前に行うこと:
- 既存ドキュメントの文体と構成を確認する
- 読者が誰かを明確にする
- 依頼が曖昧な場合は、先にアウトラインを提案する

編集後に行うこと:
- 何を変更したかを要約する
- 前提にしたことや不足している情報を列挙する

tools を省略すると、利用可能なすべてのツールが有効になります。Custom agents configuration 安全に始めるなら、readsearchedit のように必要なツールだけを明示するのがおすすめです。Custom agents configuration

toolsで権限を絞る

custom agentの実用性は、プロンプトだけでなくtoolsの制御で決まります。GitHub Docsでは、toolsreadeditsearchexecuteagent などのエイリアスを指定できると説明されています。Custom agents configuration

たとえば、レビュー専用エージェントなら編集権限を持たせないほうが安全です。

---
name: read-only-reviewer
description: ファイルを編集せず、コードやドキュメントを読み取り専用でレビューするエージェント
tools: ["read", "search"]
---

あなたは読み取り専用のレビュー担当です。

あなたの責務:
- 依頼されたファイルをレビューする
- リスク、不整合、テスト不足、説明不足を見つける
- 具体的な修正案を提示する
- ファイルは編集しない

出力形式:
- 概要
- 指摘事項
- 修正案
- 確信度

このように tools: ["read", "search"] にしておけば、レビュー担当が勝手にファイル編集するリスクを下げられます。逆に、CI修正担当なら execute を含めることでテストやlintを実行できるようにします。

MCPをagent専用にする

custom agentには mcp-servers を設定できます。Custom agents configuration ただし、mcp-servers プロパティはGitHub.com上のCopilot cloud agent向けで、VS CodeなどのIDE custom agentsでは使われないとされています。Custom agents configuration

MCPツールは、server-name/tool-name のようにサーバ名付きで指定できます。Custom agents configuration たとえばPlaywright系の検証エージェントなら、Playwrightのツールだけを許可する設計が考えられます。

---
name: ui-regression-tester
description: Playwrightを使って画面挙動やUI回帰を検証するテスト専門エージェント
tools: ["read", "search", "edit", "execute", "playwright/*"]
---

あなたはUI回帰テストの専門家です。

あなたの責務:
- 既存のUIテストパターンを確認する
- 変更された挙動に対して、焦点を絞ったPlaywrightテストを追加する
- 利用可能な場合は、関連するテストコマンドを実行する
- 失敗した場合は、再現手順と原因候補を整理する

制約:
- 関係のないUIコードはリファクタリングしない
- 小さく、目的が明確なテストを優先する
- テスト環境が利用できない場合は、不足しているセットアップを明確に説明する

ツールを絞ると、エージェントの役割と権限境界が明確になります。これは前回整理した「安全性ガード」レイヤを、Copilot custom agentの設定として実装するイメージです。

targetとmodelを使い分ける

target を使うと、custom agentの対象環境を vscode または github-copilot に限定できます。Custom agents configuration 省略した場合は両方の環境が対象になります。Custom agents configuration

model を指定すると、そのcustom agentが実行されるときのモデルを指定できます。Custom agents configuration ただし、モデル指定は環境や利用可能なモデルに依存するので、最初は省略してデフォルトモデルを使い、必要になってから調整するほうが運用しやすいです。

---
name: implementation-planner
description: コードを変更する前に、実装計画と技術仕様を作成する計画専門エージェント
target: github-copilot
tools: ["read", "search", "edit"]
---

あなたは実装計画の専門家です。

あなたの仕事は、実装前に計画を作ることです。

必ず含める内容:
- ゴール
- 対象範囲
- 対象外とすること
- 影響を受けるファイルまたはモジュール
- ステップごとの実装計画
- テスト計画
- リスクとロールバック方針

ユーザーが明示的に実装を依頼しない限り、コードは変更しないでください。

計画専用エージェントは、実装前のレビューやIssue整理と相性がよいです。ユーザーが明示的に実装を依頼しない限り、コードは変更しないでください のように明示しておくと、ResearchやPlanの段階で勝手に変更が進むのを防ぎやすくなります。

自動選択させるか、手動選択にするか

Copilot CLIでは、/agent でcustom agentを選択できます。Creating custom agents for Copilot CLI また、プロンプト内で特定のagent名を指定したり、copilot --agent security-auditor --prompt "..." のようにコマンドライン引数で指定したりできます。Creating custom agents for Copilot CLI

自動で使わせたくない場合は、disable-model-invocation: true を設定すると、Copilot cloud agentがタスク文脈から自動利用することを無効にできます。Custom agents configuration 逆に、ユーザーが手動選択できないagentにしたい場合は、user-invocable: false を使えます。Custom agents configuration

---
name: dangerous-change-reviewer
description: 本番環境やインフラに影響する危険な変更を、読み取り専用で確認するレビュー専門エージェント
tools: ["read", "search"]
disable-model-invocation: true
---

あなたは本番影響のある変更を確認するレビュー担当です。

このエージェントは、明示的に選択された場合だけ使用してください。

確認すること:
- 本番環境への影響
- ロールバック方針
- シークレットの露出
- 権限変更
- データ削除またはデータ移行のリスク
- 人間の承認が必要な箇所

ファイルは絶対に編集しないでください。

本番、権限、削除、課金に関係する領域では、自動起動よりも手動選択のほうが安全です。

CLIで作る流れ

Copilot CLIでは、interactive modeで /agent を入力し、Create new agent を選ぶことでcustom agentを作成できます。Creating custom agents for Copilot CLI 作成場所はProjectの .github/agents/ か、Userの ~/.copilot/agents/ から選べます。Creating custom agents for Copilot CLI

CLIでは、Copilotにagent profileの初期案を生成させる方法と、自分で手動作成する方法があります。Creating custom agents for Copilot CLI 手動作成では、名前、説明、振る舞い、制約、利用ツールを順番に定義します。Creating custom agents for Copilot CLI

作成後はCLIの再起動が必要です。Creating custom agents for Copilot CLI 使うときは /agent で選択するか、プロンプトで security-auditorエージェントを使って、この差分をレビューして のように明示します。Creating custom agents for Copilot CLI

おすすめの設計パターン

最初に作るなら、次の3種類がおすすめです。

docs-writer

README、ADR、ブログ記事、リリースノートを担当するagentです。編集対象をドキュメントに限定し、既存の文体、見出し構造、リンク形式を守るように指示します。

test-specialist

テスト追加とテスト品質レビューを担当するagentです。GitHub Docsの設定例でも、test specialistは既存テストの分析、カバレッジギャップの特定、テスト追加に集中するagentとして紹介されています。Custom agents configuration

---
name: test-specialist
description: テストカバレッジ、テスト品質、テスト設計を改善するテスト専門エージェント
tools: ["read", "search", "edit", "execute"]
---

あなたはテスト品質を改善する専門家です。

あなたの責務:
- 既存テストを読み、テスト方針を把握する
- カバレッジ不足や重要な未検証ケースを見つける
- ユニットテスト、統合テスト、E2Eテストを必要に応じて追加する
- テストは独立していて、再現性があり、読みやすい状態にする
- 明示的に依頼されない限り、本番コードの変更は最小限にする

作業後は、追加したテスト、実行したコマンド、失敗した場合の理由をまとめてください。

ci-debugger

GitHub Actionsやローカルlintの失敗を調べるagentです。readsearchexecute を許可し、まずログを読み、原因候補を出し、最小差分で修正し、再実行結果をまとめるようにします。

---
name: ci-debugger
description: CI、lint、testの失敗原因を調査し、最小差分で修正するCIデバッグ専門エージェント
tools: ["read", "search", "edit", "execute"]
---

あなたはCIデバッグの専門家です。

作業手順:
1. 失敗しているジョブ、コマンド、エラーメッセージを確認する
2. 関連する設定ファイル、スクリプト、依存関係を調べる
3. 原因候補を優先度つきで整理する
4. 最小差分で修正する
5. 可能であれば、失敗したコマンドを再実行する

制約:
- 関係のないリファクタリングはしない
- lockfileや依存関係を変更する場合は理由を説明する
- テストを無効化して通す対応は避ける
- 再現できない場合は、確認した事実と次に見るべき箇所をまとめる

作るときの注意点

custom agentは、万能化しすぎないほうがよいです。GitHub Docsでも、custom agentsは特定のワークフロー、規約、ユースケースに合わせるものとして説明されています。About custom agents 役割が広すぎると、通常のCopilot Chatと差がなくなります。

また、description はかなり重要です。custom agentの目的と能力を説明する必須項目であり、Copilotがいつそのagentを使うべきか判断する手がかりになります。Custom agents configuration

最後に、toolsは最小権限で始めるのがおすすめです。tools を省略するとすべての利用可能ツールが有効になるため、レビュー専用、計画専用、ドキュメント専用のagentでは、必要なツールだけに絞ったほうが安全です。Custom agents configuration

まとめ

Copilot custom agentsは、特別なAI基盤を作る機能ではなく、Copilotに「役割」「判断基準」「使えるツール」「禁止事項」を渡すためのファイルベースの仕組みです。まずは .github/agents/docs-writer.agent.md のような小さなagentから始め、効果が見えたら test-specialistci-debuggersecurity-auditor のように分割していくのが現実的です。

重要なのは、エージェントを増やすことではなく、責務と権限境界を明確にすることです。custom agentsをうまく使うと、Copilotは単なる補完ツールではなく、リポジトリの文脈とチームの作法を理解した専門家チームに近づきます。

関連記事