- PR Reviewer Skill
- Conduct comprehensive, professional code reviews for GitHub Pull Requests using industry-standard criteria and automated tooling.
- Table of Contents
- Purpose
- When to Use
- Review Process Workflow
- Reference Documentation
- Scripts Reference
- Best Practices
- Quick Reference Commands
- Tips for Effective Reviews
- Resources
- Purpose
- This skill performs code reviews by:
- Automating data collection
- - Fetching all PR-related information (metadata, diff, comments, commits, issues)
- Organizing review workspace
- - Creating structured directory with all artifacts
- Applying systematic criteria
- - Reviewing against comprehensive quality checklist
- Facilitating inline feedback
- - Optionally adding comments directly to PR code
- Ensuring completeness
- - Checking functionality, security, testing, maintainability
- When to Use
- Activate this skill when:
- A GitHub PR URL is provided with a review request
- Receiving "review this PR" or "code review" requests
- Checking PR quality before merging
- Providing systematic feedback on proposed changes
- GitHub PR review is mentioned in any context
- Review Process Workflow
- IMPORTANT
- This skill uses a
two-stage approval process
. Nothing is posted to GitHub until explicit approval with
/send
or
/send-decline
.
Overview
Fetch PR data
- Collect all information
Generate review files
- Create detailed, human, and inline comment files
Review and edit
- Examine files, make changes as needed (use
/show
)
Approve and post
- Use
/send
(approve) or
/send-decline
(request changes)
Step 1: Fetch PR Data
Use
fetch_pr_data.py
to automatically collect all PR information:
python scripts/fetch_pr_data.py
<
pr_url
[ --output-dir < dir
] [ --no-clone ] Actions performed: Parse PR URL to extract owner, repo, and PR number Create directory structure:
/PRs/ / / Fetch PR metadata (title, author, state, branches, labels) Download PR diff and commit history Retrieve all PR comments and reviews Extract ticket references (JIRA, GitHub issues) Optionally clone source branch and generate git diff Example: python scripts/fetch_pr_data.py https://github.com/facebook/react/pull/28476
Custom output directory
python scripts/fetch_pr_data.py https://github.com/owner/repo/pull/123 --output-dir /tmp/reviews
Skip cloning (faster, no git diff)
- python scripts/fetch_pr_data.py https://github.com/owner/repo/pull/123 --no-clone
- Output structure:
- /tmp/PRs/
/ / - ├── metadata.json # PR metadata (title, author, branches)
- ├── diff.patch # PR diff from gh CLI
- ├── git_diff.patch # Git diff (if cloned)
- ├── comments.json # Review comments on code
- ├── commits.json # Commit history
- ├── related_issues.json # Linked GitHub issues
- ├── ticket_numbers.json # Extracted ticket references
- ├── SUMMARY.txt # Human-readable summary
- └── source/ # Cloned repository (if not --no-clone)
- Step 2: Analyze PR Data
- After fetching, analyze collected data against review criteria:
- Read
- SUMMARY.txt
- - High-level overview
- Review
- metadata.json
- - PR context, labels, assignees
- Examine
- diff.patch
- - Code changes
- Check
- comments.json
- - Existing feedback
- Review
- commits.json
- - Commit quality and messages
- Check
- related_issues.json
- - Linked tickets/issues
- Apply review criteria - Evaluate against comprehensive checklist
- Use the Read tool to examine files:
- Read /tmp/PRs/
/ /SUMMARY.txt - Read /tmp/PRs/
/ /metadata.json - Read /tmp/PRs/
/ /diff.patch - Step 3: Generate Review Files
- CRITICAL
- After analysis, use
generate_review_files.py
to create structured review documents:
python scripts/generate_review_files.py
<
pr_review_dir
--findings < findings_json
[ --metadata < metadata_json
] Creates three files in pr_review_dir/pr/ : pr/review.md - Detailed internal review with emojis and line numbers pr/human.md - Clean review for posting (no emojis, em-dashes, line numbers) pr/inline.md - Proposed inline comments with code snippets Also creates slash commands in .claude/commands/ : /send - Post human.md and approve PR /send-decline - Post human.md and request changes /show - Open review directory in VS Code Findings JSON structure : { "summary" : "Overall assessment of the PR..." , "metadata" : { "repository" : "owner/repo" , "number" : 123 , "title" : "PR title" , "author" : "username" , "head_branch" : "feature" , "base_branch" : "main" } , "blockers" : [ { "category" : "Security" , "issue" : "SQL injection vulnerability" , "file" : "src/db/queries.py" , "line" : 45 , "details" : "Using string concatenation for SQL query" , "fix" : "Use parameterized queries" , "code_snippet" : "result = db.execute('SELECT * FROM users WHERE id = ' + user_id)" } ] , "important" : [ ... ] , "nits" : [ ... ] , "suggestions" : [ "Consider adding..." , "Future enhancement..." ] , "questions" : [ "Is this intended to..." , "Should we..." ] , "praise" : [ "Excellent test coverage" , "Clear documentation" ] , "inline_comments" : [ { "file" : "src/app.py" , "line" : 42 , "comment" : "Consider edge case handling for empty input" , "code_snippet" : "def process(data):\n return data.strip()" , "start_line" : 41 , "end_line" : 43 , "owner" : "owner" , "repo" : "repo" , "pr_number" : 123 } ] } Step 4: Review and Edit Files Use /show to open the review directory in VS Code. Actions available: Read pr/review.md - Detailed analysis Edit pr/human.md - Modify before posting Review pr/inline.md - Check proposed comments Adjust any content as needed NOTHING is posted until explicit approval in Step 5. Step 5: Approve and Post Post the review when ready: Option A: Approve the PR /send Posts pr/human.md as comment Approves the PR Confirms action Option B: Request Changes /send-decline Posts pr/human.md as comment Requests changes on the PR Confirms action Posting inline comments (optional, after /send or /send-decline): Review pr/inline.md and run the provided commands for specific code comments. Step 6: Apply Review Criteria Reference references/review_criteria.md for comprehensive checklist. Review against these categories: Category Key Questions Functionality Does code solve the problem? Bugs? Edge cases? Readability Clear code? Meaningful names? DRY? Style Follows linter rules? Consistent with codebase? Performance Efficient algorithms? Scalable? Security Vulnerabilities addressed? Secrets protected? Testing Tests exist? Cover happy paths and edge cases? PR Quality Focused scope? Clean commits? Clear description? Priority markers for findings: Blocker: Must be fixed before merge Important: Should be addressed Nit: Nice to have, optional Suggestion: Consider for future Question: Clarification needed Praise: Good work For detailed criteria: Read references/review_criteria.md Reference Documentation This skill includes comprehensive reference guides: Reference Purpose references/review_criteria.md Complete checklist covering functionality, security, testing, and more references/gh_cli_guide.md Quick reference for GitHub CLI commands references/scenarios.md Detailed workflows for common review scenarios references/troubleshooting.md Common issues and solutions Scripts Reference scripts/fetch_pr_data.py Automated PR data fetching and organization. python scripts/fetch_pr_data.py < pr_url
[ options ] Options: --output-dir DIR Base output directory ( default: /tmp ) --no-clone Skip cloning repository scripts/generate_review_files.py Generate structured review files from analysis findings. python scripts/generate_review_files.py < pr_review_dir
--findings < findings_json
[ --metadata < metadata_json
] Creates: pr/review.md - Detailed internal review pr/human.md - Clean review for posting pr/inline.md - Proposed inline comments with commands .claude/commands/send.md - Slash command to approve and post .claude/commands/send-decline.md - Slash command to request changes .claude/commands/show.md - Slash command to open in VS Code REVIEW_READY.txt - Summary of next steps scripts/add_inline_comment.py Add inline code review comments to specific lines in PR. python scripts/add_inline_comment.py < owner
< repo
< pr_number
< commit_id
< file_path
< line
"
" [ options ] Options: --side RIGHT | LEFT Side of diff ( default: RIGHT ) --start-line N Starting line for multi-line comment --start-side RIGHT | LEFT Starting side for multi-line comment Best Practices Communication Frame feedback as suggestions, not criticism Explain why an issue matters, not just what is wrong Acknowledge excellent practices Prioritize blockers first, style issues last Review Efficiency Use scripts to automate data fetching and comment posting Reference review_criteria.md as checklist Focus: Critical issues > Important > Nice-to-have Review promptly (within 24 hours if possible) Inline Comments Reference exact lines and files Provide better alternatives Test inline comments on test PRs first Use sparingly to avoid overwhelming PR Size Handling Large PRs (>400 lines): Suggest splitting Review in logical chunks Focus on architecture for large changes For detailed scenarios: Read references/scenarios.md Quick Reference Commands
Fetch PR data
python scripts/fetch_pr_data.py https://github.com/owner/repo/pull/123
Add inline comment
python scripts/add_inline_comment.py owner repo 123 latest "src/app.py" 42 "Comment"
View PR in browser
gh pr view 123 --repo owner/repo --web
Check PR status
gh pr checks 123 --repo owner/repo
View existing comments
gh api /repos/owner/repo/pulls/123/comments --jq '.[] | {path, line, body}' Tips for Effective Reviews Start with context: Read PR description, linked issues, commit messages Understand intent: Identify the problem being solved Check tests first: Verify tests demonstrate the fix/feature Look for patterns: Repeated issues suggest architecture problems Consider alternatives: Evaluate simpler approaches Think about maintenance: Assess future modification ease Remember humans: Maintain kindness, respect, and constructive tone For troubleshooting: Read references/troubleshooting.md Resources Review Criteria : references/review_criteria.md gh CLI Guide : references/gh_cli_guide.md Scenarios : references/scenarios.md Troubleshooting : references/troubleshooting.md GitHub PR Review Docs : https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests Google Engineering Practices : https://google.github.io/eng-practices/review/ OWASP Top 10 : https://owasp.org/www-project-top-ten/