GitHub Copilot PRレビュー指示が効かない?正式設定法

はじめに

ども!久しぶりにがっつりGitHub Copilotを触っている龍ちゃんです。機能が増えている!ってブログ記事を二件ほど執筆しました。

今回は、GitHub Copilot PRレビューに関してしっかりとしたアップデートが入っていたので、過去記事からの参照を含めてまとめていきます。

過去に書いたPRレビューを自動化しよう!GitHub Copilot × システムプロンプトの基本では、PRテンプレートに指示を埋め込む方法を紹介しました。当時は copilot-instructions.md がCode Reviewに反映されなかったため、PRテンプレートを使う一時的な方法でした。

2025年6月以降、状況が変わりました。 現在は正式な設定ファイルでCode Reviewへの指示が可能です。


結論: 設定ファイル一覧

Code Reviewに指示を与える方法は3種類あります。

方法ファイル特徴
全体共通.github/copilot-instructions.mdすべてのリクエストに適用
ファイル別.github/instructions/*.instructions.mdapplyToで対象を限定
Review専用上記 + excludeAgent: "coding-agent"Code Reviewのみに適用

ポイント: excludeAgent: "coding-agent" を指定すると、Copilot ChatやCoding Agentには適用されず、Code Reviewだけに適用されます。

Code Reviewが参照するデータソース

公式ドキュメント「Responsible use of GitHub Copilot code review」で確認できる参照対象は以下の通りです。

参照する公式記載備考
Code changes (diff)あり
.github/copilot-instructions.mdあり
.github/instructions/*.instructions.mdあり
Repository context(ソースファイル、ディレクトリ構造)あり
PR titleありResponsible useページで明記
PR body (description)ありResponsible useページで明記
コミットメッセージ記載なし参照されない可能性が高い

公式ドキュメントには以下の記載があります:

“The code changes are combined with other relevant, contextual information (for example, the pull request’s title and body on GitHub), and any custom instructions that have been defined, to form a prompt”

PR title/bodyはレビューのコンテキストとして参照されます。一方、コミットメッセージについては言及がなく、参照されない可能性が高いです。

レビュー観点を確実に伝えたい場合は、以下を併用するのがおすすめです:

  • PR description: 変更の背景や意図を記述(Copilotが参照)
  • *.instructions.md: 恒久的なレビュールールを定義

変更の歴史

Code Reviewのカスタム指示機能は段階的に拡張されてきました。

日付変更内容
2025年6月13日copilot-instructions.md がCode Reviewに適用開始
2025年9月3日applyTo によるパス別指示をサポート
2025年11月12日excludeAgent でエージェント別の適用制御を追加

2025年5月時点の過去記事で紹介したPRテンプレート方式は、正式機能が整備される前の暫定的な方法でした。


設定ファイルの実例

配置場所

Code Review用の指示ファイルは以下のディレクトリに配置します。

リポジトリルート/
└── .github/
    └── instructions/
        └── review.instructions.md   ← ここに作成

.github/instructions/ ディレクトリが存在しない場合は作成してください。ファイル名は *.instructions.md の形式であれば任意です。

実際のファイル内容

ファイル: .github/instructions/review.instructions.md

---
applyTo: "**/*.py"
excludeAgent: "coding-agent"
description: "Python PR Review専用ガイドライン - Code Reviewのみに適用"
---

# Python Code Review Guidelines

## 出力形式

- **日本語で出力してください**
- 問題の重要度を明記してください
  - Critical: 必ず修正が必要(セキュリティ、データ損失リスク)
  - High: 修正を強く推奨(バグ、パフォーマンス問題)
  - Medium: 修正を推奨(コード品質、保守性)
  - Low: 改善提案(スタイル、軽微な改善)

## 必須チェック項目

### Critical
- ハードコードされた秘密情報(APIキー、パスワード)
- SQLインジェクション、コマンドインジェクションの可能性

### High
- 型ヒントの欠如
- bare except(`except:`)の使用
- ミュータブルなデフォルト引数

### Medium
- docstringの欠如
- 深すぎるネスト(3レベル以上)

## レビュー対象外

- `print()`文のデバッグ用使用(開発中)
- `# TODO:` コメント

フロントマターの解説:

  • applyTo: "**/*.py" → Pythonファイルにのみ適用
  • excludeAgent: "coding-agent" → Code Reviewにのみ適用(Copilot Chatには適用されない)

検証結果

実際にこの設定でCode Reviewを実行した結果を紹介します。

検証用コード

意図的に問題を含むPythonファイルを作成しました。

# 問題1: ハードコードされたAPIキー
API_KEY = "sk-1234567890abcdef"

# 問題2: bare except
def fetch_content(url):
    try:
        import urllib.request
        return urllib.request.urlopen(url).read()
    except:
        return None

# 問題3: ミュータブルなデフォルト引数
def add_item(item, items=[]):
    items.append(item)
    return items

# 問題4: docstringなし、型ヒントなし
def calculate_total(prices, tax_rate):
    return sum(prices) * (1 + tax_rate)

Copilotのレビューコメント(抜粋)

重要度検出内容
Criticalハードコードされた秘密情報 – APIキーがソースコードに直接記述L37
Highbare exceptの使用 – 具体的な例外型を指定してくださいL26
Highミュータブルなデフォルト引数 – Noneをデフォルト値にL41
Mediumdocstringと型ヒントの欠如L31

結果: 指示通り日本語で出力され、重要度も正しく表記されました。


推奨ファイル構成

.github/
├── copilot-instructions.md              # 共通ルール(全リクエストに適用)
└── instructions/
    ├── python.instructions.md           # Python編集時に自動適用
    └── review.instructions.md           # Code Review専用(excludeAgent使用)

copilot-instructions.md には共通ルール(言語、フォーマット等)を、review.instructions.md にはCode Review固有の観点を記述することで、役割を分離できます。


複数instructionsファイルの挙動

複数の *.instructions.md が同一ファイルにマッチする場合、すべてが結合されてCopilotに提供されます。

優先順位

優先度種類
1(最高)Personal instructions(ユーザー個人設定)
2Repository instructions(リポジトリ配下)
3(最低)Organization instructions(組織設定)

注意点:

  • 優先度が高い指示が「上書き」するのではなく、すべてが結合される
  • 競合する指示は避けるべき(結果が非決定的になる)
  • 同じ内容を複数ファイルに書かない(結合されて冗長になる)

PR固有の指示を追加したい場合

「このPRだけセキュリティ重視でレビューしたい」といった場合の対応方法です。

推奨される方法: 一時的なinstructionsファイル

<!-- .github/instructions/security-focus.instructions.md -->
---
applyTo: "**/*"
excludeAgent: "coding-agent"
---

# このPR限定: セキュリティ重視レビュー

以下の観点を最優先でチェックしてください:
- 認証・認可の欠陥
- 入力検証の不備
- 機密情報の露出

レビュー後にこのファイルを削除またはrevertすれば、一時的な観点追加が可能です。

過去の方法(現在は補助的に使用可能)

PRテンプレートやPR説明文への指示埋め込みは、公式ドキュメント「Responsible use of GitHub Copilot code review」でPR title/bodyが参照されることが確認されています。

ただし、以下の理由から *.instructions.md との併用を推奨します:

  • 恒久的なルール: *.instructions.md に記述(毎回のPRで自動適用)
  • PR固有の観点: PR descriptionに記述(そのPRだけに適用)

PR descriptionはレビュアー(人間)にも読まれるため、Copilot専用の指示は *.instructions.md に分離する方が運用しやすいです。


まとめ

  1. 2025年6月以降、Code Reviewは copilot-instructions.md*.instructions.md を参照するようになった
  2. excludeAgent: "coding-agent" でCode Review専用の指示が設定可能
  3. 複数のinstructionsファイルはすべて結合される(上書きではない)

過去記事で紹介したPRテンプレート方式から、正式な設定ファイル方式に移行することをおすすめします。


参考リンク

公式ドキュメント

関連記事


ここまで読んでいただき、ありがとうございました!

ご覧いただきありがとうございます!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。
エンジニア募集中!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です