--- name: pr-review-analysis description: Analyze PR review comments from a GitHub PR URL. Fetch review comments, verify each finding against the actual codebase, assess validity (correct/incorrect/partial), present a structured summary with recommended actions, and optionally reply to each comment on GitHub. Use when given a PR review URL or when asked to check/analyze PR feedback. --- # PR Review Analysis GitHub PR のレビューコメントを取得・分析し、各指摘の妥当性を検証してレポートを出力する。 ## Workflow ### Step 1: レビューコメントの取得 1. ユーザーから PR の URL またはリポジトリ情報と PR 番号を受け取る 2. `gh api` を使ってレビューコメントを取得する: ```bash gh api repos/{owner}/{repo}/pulls/{number}/reviews gh api repos/{owner}/{repo}/pulls/{number}/comments ``` 3. コメントの一覧をパースし、指摘内容・対象ファイル・行番号を整理する ### Step 2: 各指摘の検証 各レビューコメントについて: 1. **該当コードの確認**: 指摘が参照するファイルと行を Read ツールで読む 2. **指摘内容の分析**: レビューアの主張が技術的に正しいか検証する 3. **妥当性の判定**: - ✅ **正当** (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: レビューコメントへの返信 レポート出力後、修正対応が完了している場合はレビューコメントへの返信を提案する。 1. **ユーザー確認**: 「コメントに返信しますか?」と確認する。ユーザーが承認した場合のみ返信を実行する 2. **返信内容の生成**: 各コメントの Verdict に応じた返信を生成する: - ✅ Valid: 修正コミットハッシュを含めて「Fixed in {hash}」形式で返信 - ⚠️ Partial: 対応した部分と対応しない理由を簡潔に説明 - ❌ Invalid: 該当しない理由を技術的に説明(例: 自動生成ファイルのため直接編集不可) 3. **返信の実行**: `gh api` で各コメントに返信する: ```bash gh api repos/{owner}/{repo}/pulls/{number}/comments \ -f body='{返信内容}' \ -F in_reply_to={comment_id} ``` 4. **Outside-diff コメントの対応**: インラインコメントとして返信できない指摘(outside-diff)は、関連するインラインコメントのスレッドにまとめて返信する ## Notes - Bot によるレビュー(CodeRabbit, GitHub Actions 等)と人間のレビューの両方に対応する - レビューコメントに対する返信スレッドも考慮する - 指摘の severity(重大度)はレビューコメントのラベルまたは内容から推定する - 日本語で出力する(コード・パス等の技術用語は原文のまま)