PR Review Analysis
GitHub PR のレビューコメントを取得・分析し、各指摘の妥当性を検証してレポートを出力する。
Workflow
Step 1: レビューコメントの取得
- ユーザーから PR の URL またはリポジトリ情報と PR 番号を受け取る
gh apiを使ってレビューコメントを取得する:gh api repos/{owner}/{repo}/pulls/{number}/reviews gh api repos/{owner}/{repo}/pulls/{number}/comments- コメントの一覧をパースし、指摘内容・対象ファイル・行番号を整理する
Step 2: 各指摘の検証
各レビューコメントについて:
- 該当コードの確認: 指摘が参照するファイルと行を Read ツールで読む
- 指摘内容の分析: レビューアの主張が技術的に正しいか検証する
- 妥当性の判定:
- ✅ 正当 (Valid): 指摘が正しく、修正が必要
- ❌ 不当 (Invalid): 指摘が誤っている、または該当しない
- ⚠️ 部分的に正当 (Partial): 指摘の一部は正しいが、完全には当てはまらない
Step 3: 影響範囲の確認
指摘が参照するパターン(バグ、アンチパターン等)が他のファイルにも存在するか Grep ツールで確認する。 同一パターンが複数箇所にある場合、それらも報告に含める。
Step 4: レポート出力
以下の形式でまとめを出力する:
## PR Review Analysis: #{PR番号}
### Summary
- Total comments: {件数}
- Valid: {件数} | Partial: {件数} | Invalid: {件数}
### Details
| # | File | Severity | Validity | Summary | Action |
|---|------|----------|----------|---------|--------|
| 1 | path/to/file.ts:L42 | Major | ✅ Valid | 説明 | 修正必要 |
| 2 | path/to/file.ts:L100 | Minor | ⚠️ Partial | 説明 | 検討 |
### Detailed Analysis
#### Comment 1: [タイトル]
- **File**: `path/to/file.ts:L42`
- **Reviewer's point**: 指摘内容の要約
- **Verification**: 検証結果の説明
- **Verdict**: ✅ Valid
- **Recommended action**: 具体的な修正方針
- **Same pattern found in**: (該当する場合) 他のファイルパス
...
Step 5: レビューコメントへの返信
レポート出力後、修正対応が完了している場合はレビューコメントへの返信を提案する。
- ユーザー確認: 「コメントに返信しますか?」と確認する。ユーザーが承認した場合のみ返信を実行する
- 返信内容の生成: 各コメントの Verdict に応じた返信を生成する:
- ✅ Valid: 修正コミットハッシュを含めて「Fixed in {hash}」形式で返信
- ⚠️ Partial: 対応した部分と対応しない理由を簡潔に説明
- ❌ Invalid: 該当しない理由を技術的に説明(例: 自動生成ファイルのため直接編集不可)
- 返信の実行:
gh apiで各コメントに返信する:gh api repos/{owner}/{repo}/pulls/{number}/comments \ -f body='{返信内容}' \ -F in_reply_to={comment_id} - Outside-diff コメントの対応: インラインコメントとして返信できない指摘(outside-diff)は、関連するインラインコメントのスレッドにまとめて返信する
Notes
- Bot によるレビュー(CodeRabbit, GitHub Actions 等)と人間のレビューの両方に対応する
- レビューコメントに対する返信スレッドも考慮する
- 指摘の severity(重大度)はレビューコメントのラベルまたは内容から推定する
- 日本語で出力する(コード・パス等の技術用語は原文のまま)