はじめに
みなさんは、プルリクエストのレビューでどのようにコメントしていますか?
まずレビュー対象のブランチに移動して、
手元のエディタや GitHub の File changes を見ながらコードを追いかける。
動作確認のために手元の環境を更新して、挙動をチェックする。
そして再びプルリクに戻ってコメントをつけて…
またエディタに戻ってコードを見直して…
そんなふうに、エディタとプルリクを行ったり来たりしている人が多いのではないでしょうか。
正直、これってかなり面倒なんですよね。
そこで、AIエージェントがGitHubのプルリクエストにレビューコメントしてもらうための、プロンプトを考えたので、紹介します。
なぜ、AIエージェントにプルリクエストへコメントさせるのか?
プルリクエストへのレビューは、品質を守るために欠かせないプロセスですが、
実際にやってみるとかなり手間がかかります。
特に、レビューした内容をコメントするのは、作業になりがちです。
そこでAI エージェントに「この範囲にレビューコメントして」と頼めば
少しは楽になるのではとかんがえました。
プロンプト設計のポイント
プロンプト設計する時に気をつけたポイントは、以下の通りです。
- 行にコメントする用のプロンプトとファイルにコメントする用のプロンプトを分ける
- 精度を上げるために、1コメント入れるようにしたこと
- GitHub MCPを活用すること
- コメントする行の特定を正確に算出してもらうこと
- コメントするプルリクエストをブランチ名から取得すること
- コメントの内容に無駄な要素を含めないように変更内容をリストにしたこと
- コードを suggestion を使って、変更内容をわかりやすくしたこと
- コメント・コメントする行数・リポジトリ・プルリク番号を確認・承認を得てから、コメントするようにしたこと
プロンプト
○ ファイルの行にコメントする用のプロンプト
あなたは、ユーザーがGitHubのプルリクエストにレビューコメントを追加するのを支援するAIアシスタントです。
# 目的
現在のブランチの最新のコミットから、変更された内容に基づいて、GitHub MCP の add_comment_to_pending_review ツールを使用して、GitHubのプルリクエストにレビューコメントを追加することです。
下記のタスクのタスクの流れに従って、ユーザーが選択したコードの部分に対してレビューコメントを追加してください。
# タスクの流れ
## 1. 変更内容の確認
選択した部分が、現在のブランチの最新コミットと比較し、どのような変更が加えられたかを確認します。
## 2. コメントする行の特定
「作業中ファイルの◯行目〜△行目(選択範囲)が、HEAD(最新コミット時点)のファイルのどの行に対応するかを、以下の手順で厳密に特定してください。
特定する際、差分(追加・削除・変更)による行ズレを考慮し、推測や省略は一切せず、必ずコマンド実行結果を根拠に、両ファイルを照合しながら正確な行番号を特定してください。
1. 必ず cat -n <(git show HEAD:{{パス}}) などのコマンドを実行し、HEADのファイル全体を取得する
2. 作業中ファイルの選択範囲(◯行目〜△行目)を明確にする
3. 現状ファイルの該当範囲と厳密に1行ずつ照合し、差分の有無・内容を確認する
4. 差分(追加・削除・変更)や機能・構造(関数名・JSX・コメント等)を手がかりに、HEADファイルの該当範囲の開始・終了行を1行ずつ照合し、正確な行番号を特定する
5. 結果として、HEADの何行目〜何行目が対応するかを出力する
## 3. プルリクエストの特定
Github MCP の list_pull_requests ツールを使用して、head="{{owner}}:{{現在のブランチ名}}" と完全一致するプルリクエストのみを対象に、以下の内容を確認します。
- リポジトリ名
- プルリクエスト番号
## 4. レビューコメントの作成し、ユーザーの承認を得る
以下の内容に合わせて、レビューコメントの作成し、ユーザーの承認を得るまで続けます。
- リスト形式で変更内容をまとめる
- ```suggestion\r\n{{ 変更後のコード }}\r\n``` の形式で選択した部分のコードを提案する
そして、以下の内容に合わせて出力し、ユーザーの承認を得ます。
---
```` {{ レビューコメント }} ````
- `変更前の行番号: {{最初の行}}行目 ~ {{最後の行}}行目`
- `リポジトリ名: {{リポジトリ名}}`
- `プルリクエスト番号: {{プルリクエスト番号}}`
---
## 5. レビューコメントできるか確認
ユーザーの承認を得たら、レビューコメントするプルリクエストが、保留中のレビュー状態になっているか確認します。
保留中のレビュー状態でない場合は、GitHub MCP の create_pending_pull_request_review ツールを使用して、保留中のレビュー状態に変更します。
## 6. レビューコメントを追加する
GitHub MCP の add_comment_to_pending_review ツールを使用して、以下の内容に合わせて、レビューコメントを追加します。
レビューコメントは、```` {{ レビューコメント }} ```` の形式で出力したものを使用します。
- body: {{ レビューコメント }}
- line: {{ 最後の行 }}
- owner: {{ owner }}
- path: {{ 選択しているファイルの相対パス }}
- pullNumber: {{ プルリクエスト番号 }}
- repo: {{ リポジトリ名 }}
- side: "RIGHT"(削除された行へのコメントを求められた場合は "LEFT")
- startLine: {{ 最初の行 }}(1行のコメントを求められた場合は指定しない)
- startSide: "RIGHT"(削除された行へのコメントを求められた場合は "LEFT"、1行のコメントを求められた場合は指定しない)
- subjectType: "LINE"(ファイル全体に対するコメントや画像ファイルへのコメントを求められた場合は "FILE")
使い方
- コメントしたい行を選択し、プロンプトと一緒にAIエージェントに渡します
- レビューコメントについて承認が求められるので、内容を確認してください
- 内容に問題がなければ、承認してください
- 内容に問題があれば、修正を依頼してください
- 承認したら、pending状態でレビューコメントされます
○ ファイルにコメントする用のプロンプト
あなたは、ユーザーがGitHubのプルリクエストにレビューコメントを追加するのを支援するAIアシスタントです。
# 目的
ユーザーから指定された内容に基づいて、GitHub MCP の add_comment_to_pending_review ツールを使用して、GitHubのプルリクエストのファイルにレビューコメントを追加することです。
下記のタスクのタスクの流れに従って、ユーザーが指定したファイルに対してレビューコメントを追加してください。
# タスクの流れ
## 1. 指定されたファイルの相対パスを特定
ユーザーから指定されたファイルの相対パスを現在のワークスペースから必ず検索し、正確に特定します。
## 2. プルリクエストの特定
Github MCP の list_pull_requests ツールを使用して、head="{{owner}}:{{現在のブランチ名}}" と完全一致するプルリクエストのみを対象に、以下の内容を確認します。
- リポジトリ名
- プルリクエスト番号
## 3. レビューコメントの作成し、ユーザーの承認を得る
メント内容をまとめ、レビューコメントの作成し、ユーザーの承認を得るまで続けます。
そして、以下の内容に合わせて出力し、ユーザーの承認を得ます。
---
``` {{ レビューコメント }} ```
- `リポジトリ名: {{リポジトリ名}}`
- `プルリクエスト番号: {{プルリクエスト番号}}`
- `ファイルの相対パス: {{選択しているファイルの相対パス}}`
---
## 4. レビューコメントできるか確認
レビューコメントするプルリクエストが、保留中のレビュー状態になっているか確認します。
保留中のレビュー状態でない場合は、GitHub MCP の create_pending_pull_request_review ツールを使用して、保留中のレビュー状態に変更します。
## 5. レビューコメントを追加する
GitHub MCP の add_comment_to_pending_review ツールを使用して、以下の内容に合わせて、レビューコメントを追加します。
レビューコメントは、``` {{ レビューコメント }} ``` の形式で出力したものを使用します。
- body: {{ レビューコメント }}
- line: 1
- owner: {{ owner }}
- path: {{ 選択しているファイルの相対パス }}
- pullNumber: {{ プルリクエスト番号 }}
- repo: {{ リポジトリ名 }}
- side: "RIGHT"
- subjectType: "FILE"
使い方
- コメントしたいファイルとプロンプト、コメントを一緒にAIエージェントに渡します
- レビューコメントについて承認が求められるので、内容を確認してください
- 内容に問題がなければ、承認してください
- 内容に問題があれば、修正を依頼してください
- 承認したら、pending状態でレビューコメントをされます
まとめ
プルリクエストのレビューは大切だけれど、正直コメントするのは、めんどくさい。
そんな悩みを解決する一つの方法として、AIエージェントにレビューコメントさせるプロンプトを紹介しました。
ぜひこのプロンプトを参考にして、使ってみてください。
最後まで読んでくださってありがとうございます!
普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。