Review pr
Use to send a GitHub PR's diff to Codex for review via MCP. Required argument is the PR number. Output written to .volley/PR-REVIEW-<num>.md and shown inline. Asks for explicit user opt-in before posting as a PR comment.From its SKILL.md
npx -y skills add Ryan-M-Frank/volley --skill review-prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.3 KB, as published. Nobody here has run it
/volley:review-pr
Codex reviews a PR. You decide whether to post the review as a comment.
Steps for Claude
-
Validate input. PR number is required. If missing, tell user "Pass a PR number, e.g. /volley:review-pr 123" and stop.
-
Verify .volley/ is initialized and the lock allows Claude to act.
[ -d .volley ] || { echo "ERROR: .volley/ not found. Run /volley:setup first." >&2; exit 1; } [ -f .volley/STATE ] || { echo "ERROR: .volley/STATE not found. Run /volley:setup first." >&2; exit 1; } . "${CLAUDE_PLUGIN_ROOT}/scripts/lib.sh" volley_state_assert_active .volley/STATE claude || exit 1 -
Fetch PR metadata and diff via gh. Write into
.volley/(transient, gitignored, no/tmp/collision risk):PR_NUM=<n> gh pr view "$PR_NUM" --json title,body,baseRefName,headRefName > ".volley/pr-${PR_NUM}-meta.json" gh pr diff "$PR_NUM" > ".volley/pr-${PR_NUM}-diff.patch"If
ghis not authenticated or PR doesn't exist, surface the error and stop. -
Build the review prompt for Codex.
You are reviewing a GitHub pull request. Be specific. Cite file paths and line numbers from the diff. PR TITLE: <title> PR DESCRIPTION: <body> DIFF: <full diff content> Provide your review in this format: ## Verdict APPROVE | REQUEST_CHANGES | COMMENT ## Summary (2-3 sentences on what this PR does) ## Issues - (file:line — issue description) ## Nits - (file:line — minor suggestions) ## Suggestions for follow-up - (out-of-scope improvements not blocking this PR) Keep it under 800 words. -
Invoke Codex via MCP. Same tool and rules as
/volley:review-planstep 6: resolvecodex.review.model/reasoningEffortfrom.volley/config.json(+local.jsonoverrides); passsandbox: "read-only",approval-policy: "never",cwd: <canonical git root>, andmodel/config.model_reasoning_effortwhen notinherit. Persist the returnedthreadIdto.volley/local.jsonunderroles.prReview; usemcp__codex__codex-replyonly for follow-ups within this exchange. Across a restart, rehydrate from files rather than reusing the id over MCP. Surface an unavailable-model/bad-effort error verbatim - never silently substitute. Handle MCP-unreachable errors the same way (restart + re-run/volley:setup). -
Write to
.volley/PR-REVIEW-<num>.md.# Codex PR Review **PR:** #<num> — <title> **Reviewed:** <ISO timestamp> --- <Codex's response verbatim> -
Surface the review inline.
-
Ask user about posting as PR comment. Output:
"Post this review as a comment on PR #<num>? (y/n)"
If
y(and ONLY if y - never auto-post):gh pr comment "$PR_NUM" --body-file ".volley/PR-REVIEW-${PR_NUM}.md" -
Print the next-step block.
- If verdict is APPROVE and user is the PR author:
volley_next_step "merge the PR" "Codex approved; merge when CI is green." - Otherwise:
volley_next_step_done "Review complete. Address any issues in follow-up commits if applicable."
- If verdict is APPROVE and user is the PR author: