GitHub Copilot
Pathrule CLIが、instructions、フック、MCP、スキルを使って、VS Codeのエージェントモード、Copilot CLI、コーディングエージェントのそれぞれでGitHub Copilotを接続する仕組みを説明します。
GitHub Copilotは、Pathrule CLIまたはVS Code拡張機能を通じてPathruleワークスペースに接続します。セッションとツールのフック、instructionsファイル、ローカルのMCPサーバーを通じて、スコープが絞り込まれたワークスペースのナレッジを受け取ります。Copilotにはプロンプト送信時のフックがないため、コンテキストはプロンプトごとではなく、セッション開始時とツール呼び出しの前後に届きます。CopilotでのRemote MCPのセットアップは、ドキュメント化されていません。Copilotが特殊なのは、リポジトリレベルのひとつのファイルセットが、VS Codeのエージェントモード、Copilot CLI、コーディングエージェントという3つのサーフェスに同時に効く点です。
このページでは、PathruleがCopilot向けに書き込むファイル、サーフェスごとの違い、フックイベントの対応関係、連携の確認方法を説明します。
Pathruleが書き込むファイル
Copilotを有効にすると、Pathruleは独自のパスを新たに作るのではなく、Copilotがもともと使うパスに書き込みます。すべてのファイルは、Copilotが最初から参照する.github/の下に置かれます。
| ファイル | 役割 |
|---|---|
.github/copilot-instructions.md | エージェントモードとCLIで自動適用されます。フックがインストールされている場合は、Pathruleの短い注記と、pathrule_get_contextを呼び出すためのCopilot向けガードレールが入ります。フックがない場合は、Pathruleのプロトコル本文がすべて入ります。 |
.github/instructions/pathrule.instructions.md | applyToでスコープを指定したポインターです。instructionsのマッチングがglobベースで行われる場合でも、プロトコルが確実に含まれるようにします。 |
.github/hooks/pathrule.json | フックの設定です。3つのCopilotサーフェスすべてが読み込む、唯一のフックの置き場所です。 |
.github/skills/<slug>/SKILL.md | ワークスペースに紐づくスキルです。Copilotは名前を指定してこれらを呼び出せます。 |
Copilotのフックがインストールされている場合、プロトコルはinstructionsファイルではなくsessionStartフックで渡され、パスに紐づくナレッジもフック経由で届くため、ナレッジ用のファイルはリポジトリには書き込まれません。フックがない場合は、ナレッジが紐づいているディレクトリごとに、applyToでスコープを指定した.github/instructions/pathrule-k-*.instructions.mdファイルも書き込まれます。
スキルには注意点がひとつあります。Copilotは.claude/skillsも読み込みます。同じワークスペースでClaude CodeとCopilotの両方を有効にしている場合、Copilotがすべてのスキルを二重に読み込まないよう、Pathruleは.github/skillsへの書き込みを省略します。両方のクライアントを有効にしても、Copilotのコンテキストでスキルやプロトコルが重複することはありません。
書き込まれた内容は次のように確認できます。
cat .github/copilot-instructions.md
cat .github/hooks/pathrule.json
3つのサーフェスと共通のファイルセット
同じ.github/のファイルが各Copilotサーフェスで有効になりますが、フックとMCPがどう届くかはサーフェスによって異なります。
| サーフェス | フック | MCP設定の場所 |
|---|---|---|
| VS Codeのエージェントモード | .github/hooksを読み込みます。.claude/settings.jsonがあればそれも読み込みます | ユーザーレベルのmcp.json、またはPathruleのVS Code拡張機能によるエディタ内での登録 |
| Copilot CLI | .github/hooksを読み込みます | ~/.copilot/mcp-config.json |
| コーディングエージェント(github.com上) | コミット済みのリポジトリから.github/hooksを読み込みます | github.com上のリポジトリ設定(ユーザー自身が設定し、ファイルでは管理されません) |
VS CodeのMCP設定のルートキーはserversであり、mcpServersではありません。PathruleのVS Code拡張機能を使えば、Copilotのエージェントモードはエディタ内で自動的に登録されるため、MCPファイルを手で編集する必要はありません。
コーディングエージェントは、Pathruleがディスク上のファイルから接続できない唯一のサーフェスです。コーディングエージェントはリポジトリにコミットされた内容をもとに動作し、MCPサーバーはPathruleが管理するファイルの外、つまりgithub.com上のリポジトリ設定で指定されます。そのため、PathruleはコーディングエージェントのMCPを設定しません。instructionsとスキルを渡すには、.github/のファイルをコミットしてください。ワークスペースに.gitignoreがある場合、生成されたスキルはそのPathruleセクションに記載されているので、コミットするにはその行を削除します。フックの設定は、それを書き込んだマシンにインストールされているPathruleのフックを実行します。そのため、フック実行時のコンテキスト提供とブロックが効くのは、Pathruleがインストールされている環境、つまりVS CodeのエージェントモードとCopilot CLIです。
フックイベントの対応範囲
Copilotのフックイベントは、PathruleがCursorやClaude Codeで使っているのと同じ注入ポイントに対応しています。
sessionStart。 セッション開始時に発火します。Pathruleはワークスペースのメタデータ、プロトコル、チームのコンテキストを返します。Claude Codeがセッション開始時に受け取る初期コンテキストと同じものです。postToolUse。 ツールの実行後に発火します。Pathruleは、エージェントが直前に触れた対象に応じてパス単位のコンテキストを渡し、アクティビティを記録します。preToolUse。 ツールの実行前に発火します。承認済みのブロックパターンを持つルールは、ここで一致する編集を変更が反映される前に拒否し、理由としてそのルールと承認済みの対処方法を示します。VS Codeのエージェントモードでは、このイベントでパス単位のコンテキストを渡すこともできます。Copilot CLIがコンテキストを受け取るのは、sessionStartとpostToolUseのみです。agentStop、subagentStop、sessionEnd。 ターンとセッションを締めくくります。
プロンプトごとのイベントは、意図的に接続していません。Copilotのこのイベントの出力には追加のコンテキストを含められないため、接続してもプロンプトのたびにプロセスを起動するだけで、何も注入できないからです。SessionStartとPostToolUseで同じ範囲をカバーできます。結果として、Cursorの注入プロファイルと同等になります。
共有のフックスクリプトひとつが、すべてのクライアントを処理します。このスクリプトはCopilotのペイロード形式を判別して共通の正規形に変換し、他のすべてのクライアントと同じルールとメモリの選択処理を実行したうえで、Copilotのスキーマで結果を返します。サーフェスごとに何かを設定する必要はありません。スクリプトは設計上フェイルオープンで動作し、認識できないペイロードや不正なペイロードを受け取った場合は何も返さず、Copilotのセッションを壊しません。
インストール
Pathrule CLIを使う場合:
pathrule setup
プロジェクトのフォルダで実行し、使用しているAIツールを聞かれたらGitHub Copilotを選択します。セットアップは、必要に応じてPathrule Cloudへのサインインを行い、フォルダをワークスペースに紐づけ、MCPのエントリをインストールし、このフォルダでの選択内容を保存したうえで、.github/のファイルを書き込みます。アカウントなしでPathruleを使う場合は、代わりにpathrule setup --localを実行します。
すでにワークスペースに紐づいているフォルダで、各要素を手動で接続するには次のようにします。
pathrule install copilot
pathrule sync
pathrule doctor
pathrule install copilotは、Copilot CLI用の~/.copilot/mcp-config.jsonとVS Codeのユーザーレベルのmcp.jsonという2つのMCP設定にPathruleのサーバーを書き込み、それらのファイル内の他のサーバーには手を加えません。pathrule syncは、このフォルダで選択したAIツール向けのプロジェクトファイルを書き込みます。選択していない場合は、フォルダ内で検出したAIツール向けに書き込みます。
PathruleのVS Code拡張機能を使う場合は、Connect AI ClientsでGitHub Copilotを選択します。拡張機能がエディタ内でCopilotのエージェントモードを登録し、instructionsファイルとフック設定を書き込みます。
動作確認
Pathruleに紐づけたワークスペースを開き、使用しているサーフェスでCopilotのセッションを開始します。
- VS Codeのエージェントモード、またはCopilot CLI。 新しいチャットを開始します。最初のツール呼び出しの前に、パス単位のコンテキストが届くはずです。ナレッジが紐づいたパスの下にあるファイルを編集し、関連するルールやメモリが表示されることを確認してください。
- コーディングエージェント。
.github/のファイルをコミットすると、コーディングエージェントはリポジトリからinstructionsとスキルを読み込みます。ツールを呼び出させたい場合は、github.com上のリポジトリ設定でMCPサーバーを追加してください。
連携が反応しない場合は、次を実行します。
pathrule doctor
doctorは読み取り専用です。サインイン状態、ワークスペース、このフォルダが紐づいているかどうかを報告します。Copilotは、Copilot CLIの設定用とVS Codeのmcp.json用に1回ずつ、計2回表示されるため、片方だけインストールされた状態も見つけられます。さらに、フォルダ内にあるPathrule管理下のファイルと、それぞれを書き込んだツールも表示します。--jsonを付けると完全なレポートが出力され、各設定ファイルのパスが示されるほか、すでに存在しないランタイムを指しているMCPエントリも検出されます。これを修正するには、次を実行します。
pathrule repair
repairは、古くなったPathruleのMCPエントリを書き換え(他のサーバーには手を加えません)、プロジェクトファイルを再同期し、もう一度doctorを実行します。pathrule uninstall copilotは両方のMCP設定からPathruleのエントリを削除し、フォルダでCopilotを無効にすると、PathruleがCopilot向けに管理しているファイルがすべて削除されます。
変わらない点
Pathruleに書いた内容はすべて、Claude CodeやCursorに届くのと同じ形でCopilotにも届きます。
- CLI、VS Code拡張機能、MCPのいずれで書いたメモリも、Copilotに表示されます。
- 承認済みのブロックパターンを持つルールは、Copilotでも一致する編集をブロックします。
- スキルは、Copilotでも名前を指定して呼び出せます。
- MCPツール(
pathrule_get_context、pathrule_write_memoryなど)は、まったく同じように動作します。
ナレッジを一度書けば、対応しているすべてのエージェントがそれを読み込みます。
次に読むもの
- Cursor:同じくフックを使う連携について。
- ローカルMCPとRemote MCP:同じツール群がすべてのクライアントに届く理由について。
- フックの仕組み:基盤となる配信モデルについて。
- Pathrule for VS Code:エディタ内でのCopilotエージェントモードの登録について。