Skip to content
Back to skills

Review Pr

ASecurity

Use to send a GitHub PR's diff to Codex for review via `codex exec`. 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.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 5, 2026
developmentbashgit

Security analysis

A100/100

Scanned October 7, 2026

npx -y skills add Ryan-M-Frank/volley --skill review-pr --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Pr?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Pr
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ryan-m-frank-review-pr/badge)](https://www.skillsdirectory.com/skills/ryan-m-frank-review-pr)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-pr
description: Use to send a GitHub PR's diff to Codex for review via `codex exec`. 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.
---

# /volley:review-pr

Codex reviews a PR. You decide whether to post the review as a comment.

## Steps for Claude

1. **Validate input.** PR number is required. If missing, tell user "Pass a PR number, e.g. /volley:review-pr 123" and stop.

2. **Verify .volley/ is initialized and the lock allows Claude to act.**
   ```bash
   [ -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
   ```

3. **Fetch PR metadata and diff via gh.** Write into `.volley/` (transient, gitignored, no `/tmp/` collision risk):
   ```bash
   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 `gh` is not authenticated or PR doesn't exist, surface the error and stop.

4. **Build the review prompt for Codex.**
   ```
   You are reviewing a GitHub pull request. Be specific. Cite file paths
   and line numbers from the diff.

   PROJECT CONTEXT: before reviewing, read these files in the repo (read-only): <list every context.required file, every context.optional file that exists, and the managedCheckpoint (default .volley/CHECKPOINT.md) if it exists>.

   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.
   ```

5. **Invoke Codex via `scripts/codex-exec.sh`.** First resolve model, effort, local overrides and required context files exactly as in `/volley:review-plan` step 5 (stop if a required file is missing), then follow its step 6 with role `prReview`: write the prompt to `.volley/pr-<num>-review-prompt.md`, then run `bash "${CLAUDE_PLUGIN_ROOT}/scripts/codex-exec.sh" --prompt-file .volley/pr-<num>-review-prompt.md --out .volley/pr-<num>-review-raw.md --cwd "$(volley_repo_root)" --model <resolved> --effort <resolved> [--resume <roles.prReview.threadId>]` (resume per `codex.review.continuity` exactly as in `/volley:review-plan` step 6, with `roles.prReview`, and only when the repo identity matches). Save `SESSION_ID` to `.volley/local.json` under `roles.prReview`; report any `CONTINUITY=fallback:*`. Surface Codex errors verbatim; never substitute a model.

6. **Write to `.volley/PR-REVIEW-<num>.md`.**
   ```markdown
   # Codex PR Review

   **PR:** #<num> — <title>
   **Reviewed:** <ISO timestamp>

   ---

   <Codex's response verbatim, i.e. the contents of .volley/pr-<num>-review-raw.md>
   ```

7. **Surface the review inline.**

8. **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):
   ```bash
   gh pr comment "$PR_NUM" --body-file ".volley/PR-REVIEW-${PR_NUM}.md"
   ```

9. **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."`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.