with one click
pr-review
// Create a GitHub PR review with inline comments, preview before posting
// Create a GitHub PR review with inline comments, preview before posting
| name | pr-review |
| description | Create a GitHub PR review with inline comments, preview before posting |
| argument-hint | <PR number> |
| allowed-tools | Read, Write, Grep, Glob, Bash, mcp__github__get_pull_request, mcp__github__get_pull_request_files, mcp__github__create_pull_request_review |
Create a GitHub PR review with summary and inline diff comments. Writes to a file for preview — never posts automatically.
/pr-review <PR number> [--output path]
<PR number> — required, the PR to review (e.g., 74, #74)--output path or -o path — optional, where to write the review fileParse Arguments
$ARGUMENTS (strip # prefix if present)--output / -o flagGather PR Information
gh pr view <number> --json title,author,baseRefName,headRefName,headRefOid,number
gh pr diff <number>gh pr view <number> --json commits --jq '.commits[] | "\(.oid[:7]) \(.messageHeadline)"'
Look for Existing Code Review
Check if a /code-review has already been written for this PR:
feature/69-... → 69).ai/issue-<number>-*/review-pr<number>-*.md.ai/pr-<number>/review-*.mdIf found, read it and use it as the basis for the GitHub review — distill the findings into the concise posting format. You still need the diff to map inline comments to correct line numbers.
If not found, perform a fresh review:
Determine Review Event
Based on findings:
APPROVE — no issues, or nits onlyCOMMENT — only "should fix" or informational itemsREQUEST_CHANGES — any "must fix" itemsMap Inline Comments to Diff Lines
For each finding that warrants an inline comment:
Keep inline comments concise — one finding per comment. The summary provides the overview; inline comments provide the specifics.
Determine Output Location
HEAD_SHA=$(gh pr view <number> --json headRefOid --jq '.headRefOid' | cut -c1-7)
FILENAME="pr-review-${HEAD_SHA}.md"
If --output / -o was provided:
.ai/, use it directly as the folder.ai/<folder>/<filename>If no --output:
.ai/issue-<number>-* folder.ai/pr-<number>/<folder>/<filename>Write Review File
Use this exact format:
---
pr: <number>
event: <APPROVE|COMMENT|REQUEST_CHANGES>
---
<Opening paragraph: 1-3 sentences. Overall verdict — what's good,
what the PR does well. Professional, concise tone.>
**Must Fix**
- <finding> — `file:line` — <brief explanation>
**Should Fix**
- <finding> — `file:line` — <brief explanation>
**Nit**
- <finding> — `file:line` — <brief explanation>
## Inline Comments
### `<file>:<line>`
<Comment body — concise, actionable. Can use markdown.>
### `<file>:<line>`
<Comment body>
Format rules:
**Must Fix**), not headings### \file:line`` for parseabilityReport to User
When the user asks to post the review (e.g., "post it", "submit the review"):
pr number and event type## Inline Comments)## Inline Comments section:
### \file:line`` header defines a comment### or end) is the comment textmcp__github__create_pull_request_review with:
pull_number from frontmatterevent from frontmatterbody = the review summary textcomments = array of {path, line, body} from parsed inline commentsCheck a PR for review comments, evaluate them, and address valid ones
Post a written review file to GitHub as a proper PR review
Review changes or PRs against project guidelines
Execute an implementation plan, making changes and committing properly
Create an implementation plan from PR review feedback
Resolve a GitHub issue end-to-end using sequential subagents