| name | review-agent |
| description | `.agent/agents/reviewer.md` を入口に、PR差分やローカル差分を日本語でレビューするスキル。ユーザーが「レビュー」「PR確認」「差分確認」「コードレビュー」「reviewer」「レビュー指摘に対応」などを依頼したときに使う。GitHubレビュー指摘の対応(分類・方針提示・Worker委譲・resolved化)も扱う。 |
Review Agent
.agent/agents/reviewer.md を主担当として、バグ・回帰・セキュリティ・キャッシュ整合性・SSOT 違反を優先してレビューする。
PR 作成や説明文の確認では .github/codex-pr-rules.md も参照する。
参照順
AGENTS.md
.agent/agents/reviewer.md
.github/codex-pr-rules.md
- 関連する ExecPlan
- 関連する
assets/docs/
- 変更ファイルと
git diff
実行ルール
- レビューは日本語で行う。
- 指摘を先に書き、重大度順に並べる。
- 各指摘にはファイルと行番号を添える(特定できない場合は省略し、ルール10に従って検証不能として報告する)。
- 問題がない場合は、問題なしと明確に述べ、残るテストギャップを短く添える。
- 好みのリファクタではなく、バグ・回帰・セキュリティ・運用リスクを優先する。
- DocumentParser 変更時は、影響フェーズの明示があるか確認する。
- DB 更新処理では、
db() ヘルパーと実行直前エスケープを確認する。
- スーパーグローバル、直接
$modx 参照、生SQL、compact() の混入を確認する。
- キャッシュに関係する変更では、無効化条件と再生成条件を確認する。
- 指摘対象のファイル・行・シンボルが差分またはワークスペースに存在しない場合、推測で指摘を作らず「検証不能」として事実のみ報告する。
- GitHub への返信・コメントと review thread の resolved 化は、修正と push の完了後に「GitHub上へ返信・コメントし、review thread を resolved 化しますか? はい・いいえ」で確認し、
はい の場合のみ実行する。
/resolve-review を経由せず直接修正・push した場合も、push 完了後に必ずスレッドの resolved 化をユーザーに確認してから実行する(スキップ禁止)。
コマンド
/review-diff
git diff と変更ファイルを確認する。
- 変更領域に応じて関連 docs を読む。
.agent/agents/reviewer.md の観点でレビューする。
- 指摘を重大度順にまとめる。
- テスト不足と残リスクをまとめる。
/review-pr
- PR の目的、差分、関連 Issue、CI 結果を確認する。
.github/codex-pr-rules.md に照らしてタイトル、説明、ラベル方針を確認する。
.agent/agents/reviewer.md の観点でレビューする。
- 指摘を重大度順にまとめる。
/resolve-review <PR番号>
GitHub PR のレビューコメントを取得し、各指摘を評価・対応・解決する。
実装・コミット・push を伴う場合は Worker エージェントに委譲し、review-agent 自身は方針整理、確認、GitHub 上の返信・resolved 化のみ担当する。
ステップ 1: 指摘の収集と評価
まず GraphQL で未解決スレッド一覧を取得する(REST /comments には isResolved がないため、resolved 済みスレッドを分類対象から除外するために必要):
gh api graphql -f query='
{
repository(owner: "<owner>", name: "<repo>") {
pullRequest(number: <PR番号>) {
reviewThreads(first: 100) {
pageInfo { hasNextPage endCursor }
nodes {
id
isResolved
comments(first: 1) {
nodes { databaseId body }
}
}
}
}
}
}'
次に、インラインレビューコメントとレビュー本文を取得する:
gh api --paginate "/repos/<owner>/<repo>/pulls/<PR番号>/comments"
gh api --paginate "/repos/<owner>/<repo>/pulls/<PR番号>/reviews"
取得した /reviews の結果は、state が DISMISSED のものを除外する。APPROVED は state のみで除外せず、本文がある場合は評価対象に含める(本文が空の APPROVED は除外してよい)。CHANGES_REQUESTED・COMMENTED は従来どおり対象とし、同一レビュアーが複数回投稿している場合は全件を評価対象とする。
/resolve-review を再実行する場合は、PR の既存コメント一覧(gh pr view <PR番号> --comments)を確認し、同じ review_id で既に返答済みの review body はこの段階で評価対象から外す(ステップ2の方針一覧に重複項目を残さないため)。
インラインコメントの各スレッドおよび /reviews の各レビュー本文をそれぞれ1単位として以下の基準で分類する(スレッド内の複数コメントは一括で判断する):
| 判定 | 基準 |
|---|
| 対応する | バグ・セキュリティ・動作不正・明確な設計誤り |
| 対応を検討 | 可読性・保守性に影響するが実装シンプルなもの |
| 対応しない | 好みのスタイル・過剰なエッジケース対応・シンプルさを損なう変更 |
「対応しない」と判断する典型例:
- 命名の好みや文体の指摘(機能・意味に影響しない)
- 実運用で発生しない理論上のエッジケース対応要求
- コードを複雑にしてまで型を厳密化する要求
- 既存パターンと統一するだけのリファクタ要求(設計改善でない場合)
- テストカバレッジのためだけに実装を変える要求
ステップ 2: 対応方針の提示(実施前に確認)
ユーザーに対応方針の一覧を提示し、確認を取ってから実装を進める。出力形式は ## 出力形式 を参照。
ステップ 3: 修正の実装
対応するスレッドの修正を実装する(Worker エージェントに委譲)。
Worker への委譲時は「修正内容、検証手順、検証結果の記録」を成果物として求める。
- 変更はシンプルさを最優先とする
- 対応しないスレッドは理由を明確に持つ
ステップ 4: 検証
コミット前に変更内容を確認する。
- 修正が指摘の意図を満たしているか確認
- 関連する動作や既存ロジックへの影響がないか確認
ステップ 5: Worker によるコミットと push
コミットと push は Worker に委譲し、次の手順で実行させる。
git add -p
git commit -m "<type>: レビュー指摘に対応"
git push
Worker による修正結果を確認した後、コミットと push が必要な場合は、まずユーザーに次の1問だけ確認する。
コミットして push しますか? はい・いいえ
はい の場合のみ、Worker にコミットと push を行わせる。いいえ の場合はローカル修正と検証結果だけを報告し、GitHub への書き込みは行わない。
ステップ 6: GitHub上でのコメント解決
ステップ5の完了後、まずユーザーに次の1問だけ確認する。
GitHub上へ返信・コメントし、review thread を resolved 化しますか? はい・いいえ
はい の場合のみ、このステップを実行する。いいえ の場合は GitHub への書き込みを行わず、ローカル修正と push の完了だけを報告して終了する。
対応したスレッドを resolved にする(コードへの書き込みではなく GitHub 上のスレッド状態変更のため review-agent が直接実行する)。ステップ1で取得した thread の id を使う:
gh api graphql -f query='
mutation {
resolveReviewThread(input: {threadId: "<thread_id>"}) {
thread { isResolved }
}
}
'
対応しないスレッドは、スレッドへの返信として理由を残した上で resolved にする(再実行時の重複を防ぐため):
gh api /repos/<owner>/<repo>/pulls/<PR番号>/comments/<comment_id>/replies \
-f body="見送り理由の説明"
/reviews 取得のレビュー本文に対する対応完了・見送り理由は PR コメントとして残す。本文には対象 review の id(GitHub が発行する一意な数値 ID)を含め、再実行時にステップ1で除外できるようにする:
gh pr comment <PR番号> --body "@レビュアー名(review_id: 123456789): 対応内容または見送り理由"
ステップ 7: 完了報告
対応済み・見送りの一覧をユーザーに報告する。
出力形式
差分レビュー(/review-diff / /review-pr):
セクション見出し(Findings / Open Questions / Tests)はツール間で共通の固定ラベルとして英語のまま使用する。指摘内容・確認事項・テスト説明は日本語で記載する。
指摘がある場合:
**Findings**
- [High] path/to/file.php:123: 指摘内容。影響と修正方針。
- [Medium] path/to/file.php:45: 指摘内容。影響と修正方針。
**Open Questions**
- 確認事項
**Tests**
- 実行済み、または未実行の理由
指摘がない場合:
重大な問題は見つかりませんでした。
**Tests**
- 実行済み、または未実行の理由
/resolve-review の出力:
方針確認フェーズ(ステップ2):
レビュー対応方針:
- 対応する
- スレッド xxxx(先頭コメント概要)→ [修正方針]
- /reviews本文 @レビュアー名(review_id: XXXX)→ [修正方針]
- 対応を検討(ユーザー判断を仰ぐ)
- スレッド xxxx(先頭コメント概要)→ [対応した場合の影響と見送りのリスク]
- /reviews本文 @レビュアー名(review_id: XXXX)→ [対応した場合の影響と見送りのリスク]
- 対応しない(理由付き)
- スレッド xxxx(先頭コメント概要)→ 見送り理由
- /reviews本文 @レビュアー名(review_id: XXXX)→ 見送り理由
完了報告(ステップ7):
対応完了:
- スレッド xxxx(先頭コメント概要)→ 対応内容
- /reviews本文 @レビュアー名(review_id: XXXX)→ 対応内容
見送り:
- スレッド xxxx(先頭コメント概要)→ 見送り理由
- /reviews本文 @レビュアー名(review_id: XXXX)→ 見送り理由