agentsclimarketplace

Review plan

Skill Ryan-M-Frank/volley/skills/review-plan

Use to send a plan document to Codex for review via MCP. Defaults to the most recently modified PLAN.md under .planning/, or accept an explicit path argument. Codex's review is written to .volley/PLAN-REVIEW.md and surfaced inline. Fast - completes in seconds.From its SKILL.md

Install
npx -y skills add Ryan-M-Frank/volley --skill review-plan

Assembled 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

4.7 KB, as published. Nobody here has run it

/volley:review-plan

Hand a plan to Codex. Get back a review. Write it to disk, show it inline.

Steps for Claude

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

    If the assert fails, the helper already printed a refusal message. Stop.

  2. Resolve the plan path.

    • If user passed a path argument, use it.
    • Otherwise: ls -t .planning/**/PLAN.md 2>/dev/null | head -1 (or use Glob tool with pattern .planning/**/PLAN.md and take the most recent by mtime).
    • If no plan found, tell user "No PLAN.md found under .planning/. Pass an explicit path, or check that you've run /gsd:plan-phase to create one." and stop.
  3. Read the plan and HANDOFF.

    • Read the plan file's full content.
    • Read .volley/HANDOFF.md for acceptance criteria.
  4. Build the review prompt for Codex.

    The prompt to send via mcp__codex__codex (the only Codex session-start tool the MCP server exposes; older docs may say mcp__codex__review or mcp__codex__exec - those names are wrong):

    You are reviewing an implementation plan. Be specific and concrete.
    
    ACCEPTANCE CRITERIA (from HANDOFF.md):
    <paste HANDOFF.md content>
    
    PLAN TO REVIEW:
    <paste plan content>
    
    Provide your review in this format:
    
    ## Verdict
    APPROVE | CONCERNS | REJECT
    
    ## Strengths
    - (specific things the plan gets right)
    
    ## Concerns
    - (specific issues, with file/line refs from the plan if applicable)
    
    ## Suggested changes
    - (concrete edits, not vague advice)
    
    Keep it under 500 words. Skip filler.
    
  5. Resolve the review role's model/effort/context from config. Read .volley/config.json (parse it yourself; absent = defaults). Take codex.review.model, codex.review.reasoningEffort, and apply any .volley/local.json modelOverrides.review. Check context.required files all exist - if any is missing, stop with a clear error naming the file (fail early). Note which context.optional files exist; missing optional files are reported and skipped.

  6. Invoke Codex via MCP. Call mcp__codex__codex with the review prompt and:

    • sandbox: "read-only" (reviews are non-mutating) and approval-policy: "never" (no interactive prompts) - preserve these exactly.
    • cwd: <canonical git root> (from git rev-parse --show-toplevel) so Codex reads this project, not the MCP server's incidental cwd.
    • model: "<resolved>" only if not inherit; and config: { "model_reasoning_effort": "<effort>" } if an effort is set.
    • Continuity: capture the returned threadId and save it to .volley/local.json under roles.planReview (with updatedAtUtc). Within this exchange, follow-ups use mcp__codex__codex-reply with that threadId (verified to retain context). Across a Claude restart do not try to reuse it over MCP - the session-start tool has no resume input; instead start a fresh session, rehydrate from the context files + .volley/CHECKPOINT.md, and tell the user continuity fell back to file-based context (with the reason).
    • If an error indicates the MCP server isn't reachable, tell the user to restart Claude Code and re-run /volley:setup. If Codex reports an unavailable model or bad reasoning level, surface it verbatim and stop - never silently substitute.
  7. Write the review to .volley/PLAN-REVIEW.md. Prepend a small header with the plan path and timestamp, then Codex's response:

    # Codex Plan Review
    
    **Plan:** <plan path>
    **Reviewed:** <ISO timestamp>
    
    ---
    
    <Codex's response verbatim>
    
  8. Surface the review inline. Print the file content (or a clean summary if it's long) so the user reads it without opening another editor.

  9. Print the next-step block. Decide based on Codex's verdict:

    • If APPROVE: volley_next_step "/volley:implement" "Plan approved by Codex. Open Codex in a new terminal tab to build."
    • If CONCERNS: volley_next_step_options "Option A|/volley:implement|Accept review and proceed anyway" "Option B|edit PLAN.md|Address concerns then re-run /volley:review-plan"
    • If REJECT: volley_next_step "edit PLAN.md" "Address Codex's concerns and re-run /volley:review-plan."

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.