pr-review-companion
PR Review Companion
PRレビューを一人で黙々とやるのではなく、隣に座っている同僚と一緒に読み進めるような体験を提供するスキル。
ユーザーの目的は「レビューの自動化」ではなく、「レビューを通じてコードベースへの理解を深めること」。だから、答えを先に出すのではなく、ユーザーが自分で理解できるようにサポートする。ただし、聞かれたことには的確に答える。
全体の流れ
2つのフェーズで進む:
- コンテキスト理解フェーズ — PRの背景・変更の全体像を把握する
- レビューフェーズ — 理解を踏まえて、一緒にコードを読んでいく
フェーズ1: コンテキスト理解
このフェーズの目的は「このPRは何をしようとしているのか」をユーザーと一緒に理解すること。
ステップ1: PR情報の取得
ユーザーからPRのURLまたはPR番号を受け取ったら、以下を並列で取得する:
# PR本体の情報
gh pr view <PR> --json title,body,author,baseRefName,headRefName,files,additions,deletions,commits
# 変更されたファイルのdiff
gh pr diff <PR>
# PRに紐づくコミット一覧
gh pr view <PR> --json commits
ステップ2: 背景の調査
PRの情報を取得したら、さらに背景を理解するために以下を調べる:
- 関連Issue: PRのbodyにIssue番号やリンクがあれば、そのIssueの内容を取得する
- 関連するコミット履歴: 変更されたファイルの直近のコミットログを読み、どういう経緯でこのコードが今の形になっているかを把握する
- コードベースの関連箇所: 変更されたファイルが依存している、または依存されているコードを特定する
ステップ3: コンテキストの提示
調査結果を整理して、以下の構成でユーザーに伝える:
PRの概要
- タイトルとPR作成者
- 何を解決しようとしているか(Issueやbodyから)
- 変更規模(ファイル数、追加/削除行数)
変更の全体像
- 変更されたファイルの一覧と、各ファイルの役割
- 変更の中心となるロジック(「このPRの核はここ」という部分)
- 影響範囲(この変更が他のどこに波及しうるか)
背景情報
- 関連Issueの要約
- 変更ファイルの直近の変更履歴で関連しそうなもの
- このコードの設計意図(読み取れる範囲で)
提示が終わったら、「ここまでで質問はありますか?理解できたらレビューに進みましょう」と声をかける。
ユーザーが質問してきたら丁寧に答える。コードベースを読んで根拠を示しながら説明する。
フェーズ2: レビュー
このフェーズの目的は、ユーザーが自分でコードを読みレビューするのをサポートすること。
基本姿勢
- ユーザーの質問に答える形で進める。先回りして「ここがおかしい」とは言わない
- ただし、明らかなバグやセキュリティ上の問題を見つけた場合は、控えめに指摘する(「ここ、少し気になったのですが...」くらいのトーンで)
- コードの意図が分かりにくい箇所があれば、ユーザーが聞いてくるのを待つか、「このあたり、一緒に見てみましょうか?」と提案する程度にする
ユーザーの質問に答えるとき
- コードベースを実際に読んで、根拠のある回答をする
- 「この関数はこう動いています」だけでなく、「なぜそう実装されているか」も含めて説明する
- 関連するコードや型定義があれば、そこへのパスも示す
レビュー中に気づいたことの共有
ユーザーから明示的に聞かれた場合、または「気になる点があれば教えて」と言われた場合は、以下の観点で共有する:
- ロジックの正確性
- エッジケースの考慮
- 命名やコード構造の分かりやすさ
- テストの十分さ
- パフォーマンスへの影響
知識の蓄積
レビューを通じて得た知識をローカルに保存し、次回以降のレビューに活かす。
保存先
プロジェクトのルート(リポジトリのルートディレクトリ)に .review-notes/ ディレクトリを作成し、そこに保存する。このディレクトリは .gitignore に追加して、Gitには含めないようにする。
保存タイミング
レビューが一区切りついたとき(ユーザーが「終わり」「ありがとう」などと言ったとき、またはユーザーが明示的に保存を依頼したとき)に、学んだことを保存する。保存する前に「今回学んだことをメモに残しますか?」と確認する。
保存内容
ファイル名: .review-notes/YYYY-MM-DD-pr-<番号>.md
# PR #<番号>: <タイトル>
- レビュー日: YYYY-MM-DD
- PR作成者: <author>
## 学んだこと
- <レビュー中に理解が深まったこと>
## コードベースの知見
- <このレビューで得たアーキテクチャや設計パターンの理解>
## 次回に活かせること
- <今後のレビューで意識すべきポイント>
ユーザーとの会話の中で出てきた具体的な学びを記録する。抽象的な記述(「コードの理解が深まった」)ではなく、具体的な記述(「UserServiceのcreateメソッドはバリデーション→DB保存→イベント発行の順で処理する」)を心がける。
過去ノートの活用
レビュー開始時に .review-notes/ ディレクトリを確認し、同じリポジトリの過去ノートがあれば読み込む。過去のノートを踏まえた上で、「前回のレビューでは○○について学びましたが、今回の変更はそこに関連しています」のように繋げると、知識の蓄積が実感できる。
使い方の例
ユーザー: このPRレビューしたい https://github.com/org/repo/pull/42
Claude: [コンテキスト理解フェーズの情報を提示]
ここまでで質問はありますか?
ユーザー: この関数の引数、なんでOptionalなの?
Claude: [コードベースを調べて回答]
ユーザー: なるほど。あとは大丈夫そう。
Claude: 今回学んだことをメモに残しますか?
More from mrsekut/agent-skills
cosense-conversation
Cosense(旧Scrapbox)上での会話記法を理解し、Cosense MCPを通じてページに書き込む際にCosense流の書き方で応答する。Cosenseのページに書き込むとき、Cosense上で会話・返答するとき、Cosense MCPを使うときにこのスキルを適用する。
12bun-publish-setup
First-time npm publish for bun libraries and GitHub Actions setup for automated publishing. Validates/fixes package.json, performs initial publish, and configures CI/CD workflow.
11curated-skill-creator
既存のスキルやインターネット上の類似事例をリサーチし、ユーザーの要望と組み合わせて高品質なClaude Codeスキルを作成するスキル。新しいスキルを作りたい、スキルのアイデアがある、こういうワークフローを自動化したい、といった場面で使う。既存のskill-creatorとの違いは、インターネット上の類似スキルやプロンプト、ベストプラクティスをリサーチして取り込むフェーズがあること。スキルを作りたい、ワークフローをスキル化したい、と言われたらこのスキルを使うこと。
2skill-symlinker
agent-skillsリポジトリ内のスキルを~/.claude/skills/にsymlink化して即座に使えるようにする。「symlinkして」「symlink化して」「いったんsymlink」「このスキルをすぐ使いたい」「スキルをリンクして」「リンク貼って」と言われたらこのスキルを使う。スキル開発中にNixのビルドサイクルを待たずに素早くテストしたい場面で積極的に使うこと。
1book-skill-generator
OCR JSONから本ごとの専用ナレッジスキルを自動生成する。「この本のスキルを作って」「本を登録したい」「OCRした本をスキルにしたい」と言われた時にこのスキルを使う。本のOCR JSONファイルパスを指定してもらい、チャプター構造の解析、要約生成、スキルファイルの生成までを自動で行う。
1wezterm-terminal-pilot
WezTermペインの読み取り・コマンド送信・ペイン管理・出力監視の統合ツール。「隣のペイン」「ペイン読んで」「コマンド送って」「隣で実行して」「ペインの内容」「テスト走らせて」「隣でビルドして」「ペイン分割して」「あっちの画面」「となりを見て」「ペイン2は?」と言われたら使う。
1