GitHub のシニアデベロッパーアドボケイトが 2025 年 7 月 31 日に GitHub ブログで公開した記事で、GitHub Copilot コーディングエージェント に向けてリポジトリを準備する方法を解説している。記事の軸となるたとえは、セットアップの多くが新しい開発者のオンボーディング(優れたドキュメントと効率化されたセットアップ手順)に似ている一方で、Copilot が AI であることに特有の事柄もいくつかある、というものである。

記事はまず、Copilot の 2 つのエージェント機能を区別する。1 つは coding agent で、記事はこれを、イシューを受け取り、Actions のコンテナを立ち上げ、バックグラウンドで反復作業を行い、プルリクエストを返す自律的なツールと説明している。もう 1 つは agent mode で、エディタや github.com 上で開発者とリアルタイムにより小さな複数ステップのタスクを実行する対話型の相棒である。続いて記事は coding agent のワークフローを 1 ステップずつたどり、それぞれのステップで、より良いプルリクエストを作れるようにチームが何をできるかを述べている。

要点

  • イシューが割り当てられると、coding agent は決まったパターンに従う。ブランチを作成し、作業を追跡するためのプルリクエストを作成し、GitHub Actions 内で動作する隔離された環境を作成し、イシューまたはプロンプトを読み、プロジェクトを探索し、解決に向けて反復的に作業し、最後にプルリクエストを更新してレビューの準備ができたことをチームに通知する。
  • エージェントの環境は .github/workflows/copilot-setup-steps.yml にあるワークフローファイルで設定する。このファイルには copilot-setup-steps という名前でなければならないジョブが含まれ、環境に必要なものをインストールするステップを列挙する。記事の例では Python の依存関係と SQLite をセットアップしている。著者は、すでに開発環境を作成している既存のワークフローを再利用することを提案している。
  • 著者は、必要なサービスのインストールを Copilot 任せにするのではなく、どのように行うべきかを Copilot に伝えるよう助言している。任せてしまうと、想定外のバージョンが入ったり、その他の誤りが生じたりする可能性があるためである。
  • イシューが明確に定義されているほど、プルリクエストは良いものになる。記事は、明確な問題記述またはユーザーストーリー、バグの場合は完全なエラー出力と再現手順、関連する経緯、そしてイシューへの取り組み方についての提案を含めることを推奨しており、テストを unittest から pytest へ移行するイシューのサンプルを示している。
  • 標準的なドキュメントとプロジェクト構成の慣行は、開発者を助けるのと同じようにエージェントも助ける。エージェントはイシューを受け取ると、まずコードベースを探索し、README ファイルを読み、関連するコードを検索する。そのため、最新の README、コードコメント、適切な命名、論理的なフォルダ構成があれば、エージェントにとってより予測しやすい環境になる。
  • カスタム指示には 2 種類ある。すべてのリクエストに適用されるリポジトリ全体の .github/copilot-instructions.md と、.github/instructions/ 以下に置かれ、applyTo の glob で特定のファイルを対象にする <file-name>.instructions.md ファイルである。記事は、リポジトリ全体のファイルでは、何を構築しているのか、ユーザーストーリー、フレームワークとライブラリ、プロジェクト構成、全体的なコーディングガイドラインを扱うよう提案しており、エージェントが繰り返す特定の種類の誤りを正すには対象を絞った instructions ファイルを使うよう推奨している。
  • エージェントは Model Context Protocol サーバーを使用できる。GitHub と Playwright の MCP サーバーはデフォルトで利用可能であり、プロジェクトに既存の .vscode/mcp.json があればそれを使って MCP サーバーを指定できる。そうでない場合は、リポジトリの Copilot coding agent の設定でサーバーを構成する。記事の例では、Bicep スキーマのサポートに限定した Azure MCP サーバーを有効にしている。
  • エージェントにはデフォルトのファイアウォールがあり、インターネットへのアクセスを npm や pip のパッケージホストのような中核的なサービスに制限している。記事はこれを、悪意ある指示がエージェントに届いた場合のデータ流出リスクを管理する手段として示している。リモートの MCP サーバーやその他のインターネットアクセスを追加する場合は、ファイアウォールの許可リストを更新する必要がある。
  • プルリクエストの「View session」ボタンを押すと、エージェントが行ったことがすべて表示される。著者はこれを、エージェントの作業を検証するためにも、タスクの割り当て方や環境の設定を改善するためにも活用するよう推奨している。

背景

これは GitHub のデベロッパーアドボケイトによる GitHub 自社製品についてのガイダンスであり、測定された結果ではなく著者の経験に基づいている。著者は、instructions ファイルへの投資は、タスクを coding agent に割り当てる場合だけでなく、IDE で Copilot を使う場合にも役立つと述べている。