| name | review-address |
| description | PRのレビューコメント(コード行へのコメント)および PR全体コメント(issue comments)に対応する。 コメントを取得し、対応方針をユーザーに確認した上で、修正/コミット/push/返信を行う。 「レビューコメントに対応して」「review comments」「address review」などで起動。 使用法: /review-address [pr]
|
| allowed-tools | Bash(git:*) Bash(gh:*) |
Review Address
PRのレビューコメント(コード行へのコメント)および PR全体コメント(issue comments)を取得し、各コメントへの対応方針をユーザーに確認した上で、修正/コミット/push/返信を行う。
[pr] には PR番号またはURLを指定。省略時は現在のブランチのPRを使用。
省略時のPR特定:
gh pr view --json number,url を使用して現在ブランチのPRを特定する。
フロー
1. コメントの取得
以下を取得し、結果をマージ:
1.1 レビューコメント(コード行へのコメント)
gh api --paginate /repos/{owner}/{repo}/pulls/{pull_number}/comments
スレッド単位でグループ化(親コメントを起点に thread_id を決定):
- 親(
in_reply_to_id が null): thread_id = id
- 子:
thread_id = in_reply_to_id
1.2 PR全体コメント(issue comments)
gh api --paginate /repos/{owner}/{repo}/issues/{issue_number}/comments
--jq によるフィルタリングを行わず生 JSON を取得する。Bot コメントのフィルタリングは分析ステップ(step 2)で行う。
gh api --jq での否定フィルタ (!=) はシェルのヒストリ展開と衝突しやすいため使わない。
2. 調査・分析(エージェントが実施)
各コメントについて以下を行い、対応案を作成する:
- コメント投稿者/内容を確認し、対応対象か判定
- Bot コメントは原則スキップ
- ただし Claude Code Review 等、提案型のレビュー Bot(lint/quality/security 等)は対応対象として扱う
- 指摘されたコード箇所を読み込む
- 指摘内容を理解し、妥当性を評価
- 修正が必要な場合、修正方法を検討
- 対応案を作成:
- 指摘の要約
- 推奨アクション(修正する/返信のみ/スキップ)
- 修正する場合の具体的な変更内容(概要)
3. 対応方針の確認(全コメントまとめて提示)
全コメントの対応案を一覧で提示し、ユーザーにまとめて確認する。
この確認で以下を確定する:
- どのコメントを「修正する / 返信のみ / スキップ」にするか
- 「修正する」もののコミット単位(グルーピング)
- 「返信のみ」の返信内容(必要な場合)
4. 修正の実施
「修正する」を選択したコメントを関連性でグループ化し、グループごとに実施する。
グループ化の方針(例):
- 同じ Capability / セクションへの修正は1つのコミットにまとめる
- 論理的に関連する修正(例: 判定ロジックの明確化)は1つのコミットにまとめる
- ドキュメント改善(例の追加、説明追加)は1つのコミットにまとめる
- テスト追加・修正は1つのコミットにまとめる
- 型定義の修正(interface/type の変更)は1つのコミットにまとめる
- エラーハンドリング改善(例外処理、エラーメッセージ)は1つのコミットにまとめる
- リファクタリング(命名、構造整理)は1つのコミットにまとめる
各グループで実施:
- グループ内の修正を実施
- git add でステージ
- リポジトリのコミット方針に従ってコミット
- 件名はグループの修正内容を簡潔に要約し、レビュー対応であることを明示
- 例: refactor(backend): clarify validation logic per review
- 例: docs(mobile): add usage examples per review
- 必要に応じて本文で判断理由を補足
- コミットハッシュを記録(返信時に使用)
5. git push
すべての修正コミット作成後、git push を実行する。
6. コメントへの返信
git push 後、レビューコメントと PR全体コメントで異なる方法で返信する。
6.1 レビューコメント(コード行へのコメント)への返信
各スレッドに個別返信(常に親コメントに返信してスレッドを1本に保つ):
gh api -X POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies -f body="..."
- comment_id: 親コメント(in_reply_to_id が null)の ID を使用
- 各スレッドごとに1回の API コールを実行
6.2 PR全体コメント(issue comments)への返信
複数の対応内容への返信を1つの新規コメントにまとめる:
gh api -X POST /repos/{owner}/{repo}/issues/{issue_number}/comments \
--raw-field body="$(cat <<'EOF'
## 対応完了
1. 対応内容A: 修正しました (commit hash)
2. 対応内容B: 返信のみ: ...
EOF
)"
- PR の issue_number = PR番号
- 対応内容を箇条書きで列挙
返信内容
- 修正した場合: コミットハッシュを含める(例: 修正しました: abc1234)
- 返信のみの場合: step 3 で確定した内容を使用
- スキップの場合: 返信しない(必要なら理由を簡潔に添える)
返信のトーン
- 簡潔かつ丁寧に
- 過度な感謝や謝罪(「ご指摘ありがとうございます」「申し訳ありません」等)は不要
- 要点を押さえ、対応内容を明確に伝える