| name | copilot-review |
| description | Requests code review from GitHub Copilot CLI. Use for getting a second opinion on code changes, reviewing PRs, or analyzing specific files. |
| allowed-tools | Bash(copilot *), Bash(git diff *), Bash(git log *), Bash(gh pr diff *), Bash(gh pr view *), Bash(test *) |
Copilot レビュー
GitHub Copilot CLI (copilot) を使ってコードレビューを依頼するスキル。
allowed-tools の用途説明:
Bash(copilot *): Copilot CLI実行
Bash(git diff *), Bash(git log *): Git差分・履歴取得
Bash(gh pr diff *), Bash(gh pr view *): PR情報取得
Bash(test *): ファイル存在・サイズ確認
前提条件(必須)
このスキルを使用するには、以下の環境が必要です:
| 項目 | 要件 |
|---|
GitHub CLI (gh) | インストール済み・認証済み |
Copilot CLI (copilot) | インストール済み・PATH設定済み |
| GitHub認証 | gh auth login 完了 |
| 対象リポジトリ権限 | 読み取り権限(PRレビュー時) |
| ネットワーク | GitHub API・Copilot APIへのアクセス可能 |
| パーミッション設定 | ~/.claude/settings.json または各プロジェクトの .claude/settings.json の permissions.allow に Bash(copilot *) と Bash(test *) を含めること(確認ダイアログ抑止のため) |
前提条件の確認方法:
copilot --version
gh auth status
レビュー対象の確認(必須)
スキル実行時は、まず以下を明確にすること:
レビュー対象の種類
| 種類 | 説明 | 必要な情報 |
|---|
| 未コミット変更 | ステージ前/後の変更 | なし(現在の状態を使用) |
| 特定ファイル | 指定したファイルの全体 | ファイルパス |
| 特定ディレクトリ | ディレクトリ内のファイル | ディレクトリパス |
| ブランチ差分 | 特定ブランチからの変更 | ベースブランチ名 |
| PR差分 | PRの変更内容 | PR番号、(任意)ベースブランチ名 |
| コミット範囲 | 特定コミット間の差分 | コミット範囲(例:HEAD~3..HEAD) |
ベースブランチの確認(差分レビュー時必須)
重要: ブランチ差分やPRレビュー時は、必ずベースブランチを確認すること。
- デフォルトで
main を使わない - 実際のプロジェクトでは異なるブランチがベースになることが多い
- ユーザーに確認するか、PRの設定から取得する
- リリースブランチ(
release-YYYYMMDD)がベースの場合も多い
レビューの哲学
重要: レビュー指摘は「提案」であり「命令」ではない。
- レビュアー(Copilot)の指摘は、コード改善のための提案である
- 採用するかどうかの最終判断は、レビュイー(開発者)が行う
- 全ての指摘を機械的に適用する必要はない
- 指摘の意図を理解し、コンテキストに応じて判断すること
- Copilot は優秀なAIエージェントだが、常に答えが正しいとは限らない。自分のコンテキスト理解と照らし合わせて判断すること
指摘への対応方針
- 指摘の意図を理解する: 不明点がある場合は、追加で質問して意図を明確にすること。意図を理解しないまま採用・却下の判断をしてはならない
- 理由と背景を確認する: 指摘には必ず理由や背景があるはず。それを踏まえた上で判断する
- 最終判断は自分で下す: Copilotの意見を参考にしつつも、コードベースやプロジェクトの文脈を踏まえた独自の判断を行う
必須設定
コードレビューを依頼する際は、必ず以下の設定を使用すること:
- モデル:
gpt-5.4(他のモデルを使用してはならない)
- オプション:
-s -p(サイレント出力 + 非対話モード)
- タイムアウト: 5分(300000ms)をデフォルトとし、最大10分(600000ms)まで延長可能
GPT5.4 xhigh は応答に時間がかかるため、Bashツール使用時は timeout: 300000(5分)を指定すること。
応答が返らない場合は timeout: 600000(10分)まで延長可能。
copilot --model gpt-5.4 -s -p "レビュープロンプト"
コマンド生成ルール(必須)
Claude Code の安全性チェックによる確認ダイアログを回避するため、以下のルールを厳守すること。
禁止パターン一覧:
| 禁止パターン | トリガーされる安全性チェック | 例 |
|---|
$() コマンド置換 | 「Command contains $() command substitution」 | $(pwd), $(dirname ...), $(cat ...) |
{ } ブレースとクォートの組み合わせ | 「Contains brace with quote character (expansion obfuscation)」 | { echo "..."; exit 1; } |
必須ルール:
- パスは絶対パスを直接記述する(Claude は対象ファイルの絶対パスを知っている)
--add-dir には親ディレクトリの絶対パスを直接記述する
- ファイル内容の埋め込み(
$(cat ...))は使用しない → --add-dir 方式を使用すること
test と copilot は必ず別の Bash ツールコールとして実行する — 1つのコマンドに && や || で結合してはならない。{ } ブレース構文も使用しない
- 変数代入と
copilot コマンドを結合しない — FILE=... && copilot ... のようなパターンは禁止
スキル実行フロー
1. レビュー対象の判定
- ユーザーの指示からレビュー対象を判定
- 判定できない場合は
AskUserQuestion で確認
2. ベースブランチの確認(ブランチ差分・PRの場合のみ)
| 状況 | アクション |
|---|
| ユーザーがベースブランチを明示的に指定 | そのまま実行 |
| PR番号が指定されている | gh pr view でベースブランチを自動取得 |
| ベースブランチ未指定 | AskUserQuestion で確認を促す |
PR情報の自動取得例:
gh pr view 123 --json baseRefName --jq '.baseRefName'
gh pr diff 123 | copilot --model gpt-5.4 -s -p "PR #123 (ベース: release-20260101) の変更をレビューしてください。"
AskUserQuestion での確認例(ベースブランチ未指定時):
- 選択肢:
main / develop / release-YYYYMMDD / その他(カスタム入力)
3. レビュー実行
レビュー対象別の使用例
タイムアウト設定: 以下の例を実行する際は、Bashツールの timeout パラメータに 300000(5分)を指定すること。応答が返らない場合は 600000(10分)まで延長可能。
1. Git diff(未コミット変更)のレビュー
git diff | copilot --model gpt-5.4 -s -p "以下の変更をレビューしてください。問題点や改善提案があれば、理由や背景も含めて教えてください。"
git diff --cached | copilot --model gpt-5.4 -s -p "以下のステージされた変更をレビューしてください。問題点や改善提案があれば、理由や背景も含めて教えてください。"
git diff HEAD~3..HEAD | copilot --model gpt-5.4 -s -p "直近3コミットの変更をレビューしてください。問題点や改善提案があれば、理由や背景も含めて教えてください。"
2. 特定ファイルのレビュー
重要: パイプ入力(cat file | copilot)は動作が不安定なため非推奨。--add-dir を使用すること。
test -s /absolute/path/to/src/main.py
copilot --model gpt-5.4 --add-dir /absolute/path/to/src -s -p "/absolute/path/to/src/main.py をレビューしてください。
【重要な制約】
- レビュー対象は上記で指定されたファイルのみとすること
- 入力が見えない/空の場合は、推測で別のファイルをレビューせず『入力が確認できません』と回答すること
- コンテキスト理解のために他のファイルを参照することは許可
- まず対象ファイル名を復唱してからレビューを開始すること"
3. Pull Request / ブランチ差分のレビュー
注意: ベースブランチは必ず確認すること。main とは限らない。
git diff release-20260101...HEAD | copilot --model gpt-5.4 -s -p "release-20260101 からの変更をレビューしてください。"
gh pr view 123 --json baseRefName
gh pr diff 123 | copilot --model gpt-5.4 -s -p "PR #123 (ベース: release-20260101) の変更をレビューしてください。"
git diff develop...HEAD | copilot --model gpt-5.4 -s -p "develop ブランチからの変更をレビューしてください。"
4. 計画・設計ドキュメントのレビュー
重要: パイプ入力(cat file | copilot)は動作が不安定なため非推奨。--add-dir を使用すること。
test -s /absolute/path/to/implementation_plan.md
copilot --model gpt-5.4 --add-dir /absolute/path/to -s -p "/absolute/path/to/implementation_plan.md をレビューしてください。抜け漏れや改善点があれば指摘してください。
【重要な制約】
- レビュー対象は上記で指定されたファイルのみとすること
- 入力が見えない/空の場合は、推測で別のファイルをレビューせず『入力が確認できません』と回答すること
- コンテキスト理解のために他のファイルを参照することは許可
- まず対象ファイル名を復唱してからレビューを開始すること"
推奨プロンプトテンプレート
レビュー依頼時は、以下の要素をプロンプトに含めることを推奨:
- 理由・背景の要求: 「理由や背景も含めて」を明記
- 観点の明示: 何を重点的にレビューしてほしいか
基本テンプレート:
git diff | copilot --model gpt-5.4 -s -p "以下の変更をレビューしてください。問題点や改善提案があれば、理由や背景も含めて教えてください。"
レビュー観点のカスタマイズ
特定の観点に焦点を当てたレビューを依頼できます:
セキュリティ観点
git diff | copilot --model gpt-5.4 -s -p "以下の変更をセキュリティ観点でレビューしてください。脆弱性、インジェクション、認証・認可の問題がないか確認してください。"
パフォーマンス観点
git diff | copilot --model gpt-5.4 -s -p "以下の変更をパフォーマンス観点でレビューしてください。N+1クエリ、不要なループ、メモリリークの可能性がないか確認してください。"
設計・アーキテクチャ観点
git diff | copilot --model gpt-5.4 -s -p "以下の変更をアーキテクチャ観点でレビューしてください。SOLID原則、関心の分離、テスタビリティの観点から改善点を指摘してください。"
テストカバレッジ観点
git diff | copilot --model gpt-5.4 -s -p "以下の変更に対するテストが十分か確認してください。不足しているテストケースやエッジケースがあれば教えてください。"
大きな差分への対処
差分が大きい場合は、範囲を限定してレビューを依頼してください:
git diff --stat
git diff -- src/important-file.java | copilot --model gpt-5.4 -s -p "この変更をレビューしてください。"
git diff -- src/service/ | copilot --model gpt-5.4 -s -p "serviceディレクトリの変更をレビューしてください。"
セキュリティに関する注意
重要: レビュー対象に機密情報が含まれないよう注意してください。
.env ファイル、認証情報、APIキーを含むファイルはレビュー対象から除外
- 個人情報(PII)を含むデータは送信前にマスク
- 必要に応じて
git diff -- ':!*.env' ':!*secret*' などでファイルを除外
Copilot CLI 主要オプション
| オプション | 説明 |
|---|
--model MODEL | 使用するモデルを指定(レビュー時は gpt-5.4 必須) |
-p "prompt" | 非対話モードでプロンプトを実行(完了後に終了) |
-s | サイレント出力(統計情報なし、スクリプト向け) |
--add-dir DIR | ファイルアクセスを許可するディレクトリを追加 |
--allow-all-paths | 全てのパスへのアクセスを許可 |
パイプ入力に関する重要な注意
警告: cat file | copilot ... 形式のパイプ入力は、Copilot CLIで正しく認識されない場合があります。
推奨される方法:
| 推奨度 | 方法 | 使用例 | 備考 |
|---|
| 推奨 | --add-dir + 最小スコープ | copilot --add-dir /abs/path/to/src -p "/abs/path/to/src/file.py をレビュー" | 最も確実。$() 不使用で確認ダイアログも出ない |
| 禁止 | プロンプト内埋め込み | copilot -p "..." に $(cat ...) で埋め込み | コマンド生成ルールにより禁止。$() で毎回確認ダイアログが出る |
| 非推奨 | パイプ入力 | cat file | copilot -p "..." | 動作不安定 |
防御的プロンプト(推奨):
入力が見えない場合にCopilotが推測で別のファイルをレビューしないよう、以下をセットでプロンプトに含めること:
- 「レビュー対象は指定されたファイルのみとすること」
- 「入力が見えない/空の場合は、推測で別のファイルをレビューせず『入力が確認できません』と回答すること」
- 「コンテキスト理解のために他のファイルを参照することは許可」
- 「まず対象ファイル名を復唱してからレビューを開始すること」
CLI側でのガード(推奨):
モデルに委ねる前に、シェルでファイル存在・サイズを検証:
test -s path/to/file.md
トラブルシューティング
copilot コマンドが見つからない
copilot --version
インストール: 利用している copilot CLI の公式ドキュメントに従ってインストールしてください。パッケージ名は配布元によって異なります。
認証エラー
gh auth status
gh auth login
ファイルアクセスエラー
copilot --model gpt-5.4 --add-dir /absolute/path/to/src -s -p "/absolute/path/to/src/file.py をレビューしてください。"
copilot --model gpt-5.4 --allow-all-paths -s -p "/absolute/path/to/src/file.py をレビューしてください。"
パイプ入力が認識されない問題
症状: cat file | copilot ... でファイル内容を渡したが、Copilotが「本文が見えていない」と言ってリポジトリ内を検索し、別のファイルをレビューしてしまう。
原因:
- Copilot CLIがstdinを仕様上読まない、または専用フラグが必要な可能性
- 仕様上読む場合でも、パイプからの入力が欠落することがある
再現条件の確認手順:
copilot --version
copilot --help | grep -i stdin
ls -la path/to/file.md
wc -l path/to/file.md
echo "OS: $(uname -a)"
echo "TTY: $(tty)"
対処法:
-
推奨: --add-dir を最小スコープで使用($() コマンド置換は使用しないこと)
test -s /absolute/path/to/file.md
copilot --model gpt-5.4 --add-dir /absolute/path/to -s -p "/absolute/path/to/file.md をレビューしてください。レビュー対象は指定されたファイルのみ。入力が見えない場合は『入力が確認できません』と回答してください。まず対象ファイル名を復唱してから開始してください。"
-
防御的プロンプト: 以下をセットで含めることを推奨
- 「レビュー対象は指定されたファイルのみとすること」
- 「入力が見えない/空の場合は、推測で別のファイルをレビューせず『入力が確認できません』と回答すること」
- 「コンテキスト理解のために他のファイルを参照することは許可」
- 「まず対象ファイル名を復唱してから開始すること」
Notes
- Copilot は
-p オプションで非対話モードで実行される
- デフォルトでは出力は標準出力に送られ、ファイルは変更されない
-s オプションでスクリプトに適した出力形式になる
- レビュー依頼時は必ず
--model gpt-5.4 -s -p を指定すること
- ベースブランチは必ず確認すること -
main をデフォルトで使用しない。ブランチ差分やPRレビュー時は、実際のベースブランチを確認すること
- PRの場合:
gh pr view <PR番号> --json baseRefName で取得可能
- 不明な場合:
AskUserQuestion でユーザーに確認する