receiving-pr-reviews
Receiving PR Reviews
-
Fetch every unresolved thread, every unresponded review, and Codex's approval state. Prefer
--summary— it already carries every id step 4/5 needs; drop it only when you needreviews_with_body's full list or a thread's complete comment history:uv run ./.agents/skills/receiving-pr-reviews/scripts/pr_review_threads.py fetch --pr <N> --summaryRead
reviews_count,threads_count,unresolved_count,unresponded_count, andblockerstogether — never treat an emptyunresolvedarray on its own as "nothing to do". Athreads_countof 0 means no inline thread landed, not that no review landed. A non-emptyblockersmeans the empty result set is expected and the fix is on the PR itself — undraft it, resolve the conflicts — not in the review queue. (Dropping--summarygets the same fields underreviewability.blockersinstead of top-levelblockers, plus the fullreviews_with_bodyand each thread's completecommentslist — a thread'scomments_truncated: truethere means it has passed 100 comments; page itscommentsconnection directly before concluding anything about it.unresponded_countitself only exists on--summaryoutput — the full form has no matching field, uselen(unresponded_reviews)there instead.)unresolved/unresponded_reviewsentries are this run's actionable input; treat every one as something to address. Forcodex_approved, see step 7. Checking several PRs at once:--pr 41,42,44prints one line (or, with--summary, one JSON block) per PR instead of one call each. -
For each unresolved thread or unresponded review: read it, validate the claim locally, assess against the change goal and repository instructions.
-
Implement, commit, and push a fix only when it improves the product — push before replying, so the SHA named in the reply is inspectable and resolving the thread never outruns what is actually on the remote.
-
Reply on that thread with the disposition — conclusion, evidence, commit SHA, or why no change was warranted: