コンテンツにスキップ

GitHub CopilotのapplyTo:ファイル別インストラクションを正しく適用する

GitHub Copilot 完全ガイド

対象 / ポイント

対象: 複数言語・複数フレームワークのリポジトリでCopilotを使う開発者

ポイント: - .github/instructionsは既定の探索場所である - applyToで対象パスをglob指定する - References・Diagnostics・/instructionsで適用を確認する

Reactの規約をPythonへ適用したくないなら、ルールを1つの巨大なファイルへ置かない。*.instructions.mdへ分け、applyToで対象パスを指定する。これがGitHub Copilotのパス別インストラクションだ。1

この記事の問いは、どのルールを常時適用し、どのルールをファイル別に分けるかである。

最小構成は2ファイルで動く

リポジトリ全体の規則は.github/copilot-instructions.mdへ置く。言語やディレクトリに依存する規則は.github/instructions/*.instructions.mdへ分ける。

.github/
├── copilot-instructions.md
└── instructions/
    ├── frontend.instructions.md
    └── python.instructions.md

.github/instructionsはVS CodeとGitHub Copilot CLIの既定探索場所だ。ここだけを使うなら、古い記事にあるchat.instructionsFilesLocationsの追加設定は不要である。2

applyToを書く

フロントエンド用ファイルは次のように作る。

---
description: ReactとTypeScriptの実装規則
applyTo: "**/*.ts,**/*.tsx"
---

## Frontend rules
- TypeScriptのstrict設定を維持する
- React Hooksを条件分岐内で呼ばない
- 変更した振る舞いに対応するテストを更新する

applyToはリポジトリルートから見たglobで、複数パターンはカンマで区切る。.tsxは現在のディレクトリだけ、**/.tsxはサブディレクトリも含む。

VS CodeではapplyToを省略したファイルも手動添付できるが、自動適用はされない。GitHub Copilot CLIやクラウド側でも使う共有ルールには、対象を明示したapplyToを付ける方が予測しやすい。

常時ルールと競合させない

複数のインストラクションが該当すると、Copilotはそれらを同じリクエストへ追加する。一般的な優先順位で競合を解決できるとは限らないため、責任を分ける。3

ファイル置く内容置かない内容
copilot-instructions.mdビルド、テスト、全体アーキテクチャReactだけの命名規則
frontend.instructions.mdTSX、CSS、アクセシビリティPythonの例外処理
python.instructions.md型ヒント、pytest、フォーマットフロントエンドの状態管理
AGENTS.md複数エージェントで共有するリポジトリ運用CopilotだけのUI設定

「全体ルールから詳細ファイルへのリンクを置けば必ず自動適用される」とは限らない。パス別の自動適用はapplyToで明示する。

追加の探索場所が必要な場合だけ設定する

標準外のディレクトリやユーザープロファイルを探索させる場合は、VS Codeの設定を使う。

{
  "chat.instructionsFilesLocations": {
    ".github/instructions": true,
    "docs/copilot-rules": true
  }
}

この設定は「applyToを有効化するスイッチ」ではない。探索場所を追加・無効化する設定だ。自動適用自体はchat.includeApplyingInstructionsで制御され、現在の既定値は有効である。2

Copilotの実行面ごとの差を押さえる

インストラクション対応は、VS Code、Copilot CLI、クラウドエージェント、コードレビューで完全には同じではない。

  • VS Codeはパス一致に加え、descriptionとタスクの意味的な関連も判断できる
  • Copilot CLIは/instructionsで検出済みファイルを確認できる
  • excludeAgent: "code-review"でコードレビューから除外できる
  • excludeAgent: "cloud-agent"でクラウドエージェントから除外できる

古い値のcoding-agentではなく、現在のGitHub Docsにあるcloud-agentを使う。インライン補完にはカスタムインストラクションが適用されない点にも注意する。1

効かないときの確認順

  1. ファイル名がNAME.instructions.mdになっているか
  2. 既定または設定済みの探索場所に入っているか
  3. applyToが実際のパスと一致するか
  4. VS CodeのReferencesまたはCustomization Diagnosticsへ表示されるか
  5. Copilot CLIなら新しいセッションで/instructionsを確認したか

設定を保存した直後でも、既存のCopilot CLIセッションは変更を再読込しない場合がある。新しいセッションで再確認する。

運用判断

ルールは細かく分けるほど良いわけではない。1ファイルを「1つの技術スタックまたは1つの品質責任」に対応させると、globの重複と指示競合を追いやすい。

数値化できない「精度が上がる」「トークンが何%減る」という効果は断定しない。

まとめ

適用されたファイル、生成結果、テスト結果を記録し、ルールごとに有効性を判断する。

関連記事