AI-powered comprehensive PR review
AI-powered comprehensive PR review that analyzes code quality, bugs, testing, and more. Use it to get intelligent feedback on pull requests before merging, with customizable focus areas like security or performance.
/plugin marketplace add olioapps/claude-code-plugins/plugin install git-actions@olio-plugins<pr-number-or-url> [additional context]Arguments: /git-actions:pr-review [PR_NUMBER] [CUSTOM_INSTRUCTIONS]
Examples:
/git-actions:pr-review - Review current branch PR/git-actions:pr-review 123 - Review PR #123/git-actions:pr-review 123 focus on security - Security-focused review/git-actions:pr-review quick review critical only - Fast, critical issues onlyCurrent: !git branch --show-current
Check prerequisites:
command -v gh &>/dev/null || echo "GH_NOT_FOUND"
gh auth status &>/dev/null || echo "GH_NOT_AUTH"
Abort if:
Determine PR number:
pr_id="$1"
if [[ "$pr_id" =~ github.com/.*/pull/([0-9]+) ]]; then
# Extract from URL
pr_number="${BASH_REMATCH[1]}"
elif [ -n "$pr_id" ]; then
# Direct number
pr_number="$pr_id"
elif gh pr view &>/dev/null; then
# Current branch PR
pr_number=$(gh pr view --json number -q .number)
else
echo "ERROR: No PR found"
fi
Verify PR exists:
gh pr view "$pr_number" &>/dev/null || echo "PR_NOT_FOUND"
Abort if:
Check PR state (warn only):
pr_state=$(gh pr view "$pr_number" --json state,isDraft,merged -q)
merged=$(echo "$pr_state" | jq -r .merged)
closed=$(echo "$pr_state" | jq -r '.state=="CLOSED"')
is_draft=$(echo "$pr_state" | jq -r .isDraft)
Fetch PR metadata:
pr_data=$(gh pr view "$pr_number" --json \
number,title,body,author,baseRefName,headRefName,\
additions,deletions,changedFiles,commits,reviews,labels)
title=$(echo "$pr_data" | jq -r .title)
body=$(echo "$pr_data" | jq -r .body)
author=$(echo "$pr_data" | jq -r .author.login)
base=$(echo "$pr_data" | jq -r .baseRefName)
head=$(echo "$pr_data" | jq -r .headRefName)
files_changed=$(echo "$pr_data" | jq -r .changedFiles)
lines_added=$(echo "$pr_data" | jq -r .additions)
lines_deleted=$(echo "$pr_data" | jq -r .deletions)
Fetch diff:
diff=$(gh pr diff "$pr_number" | head -n 5000) # Truncate very large diffs
Fetch existing reviews and comments:
reviews=$(echo "$pr_data" | jq -r '.reviews')
comments=$(gh api "/repos/{owner}/{repo}/pulls/$pr_number/comments")
Fetch project guidelines (if exist):
guidelines=""
[ -f "CLAUDE.md" ] && guidelines=$(cat CLAUDE.md)
[ -f ".claude/CLAUDE.md" ] && [ -z "$guidelines" ] && guidelines=$(cat .claude/CLAUDE.md)
[ -f "CONTRIBUTING.md" ] && [ -z "$guidelines" ] && guidelines=$(cat CONTRIBUTING.md)
Summary:
Use pr-reviewer agent.
PR Context:
- number: #$pr_number
- title: "$title"
- author: $author
- branches: $base ← $head
- changes: $files_changed files (+$lines_added -$lines_deleted)
- state: [open/draft/merged/closed]
Description:
$body
Diff:
$diff
Existing Reviews:
$reviews
Existing Comments:
$comments
Project Guidelines:
$guidelines
[IF USER PROVIDED CUSTOM INSTRUCTIONS:]
USER INSTRUCTIONS (HIGHEST PRIORITY):
"""
[custom instructions verbatim]
"""
Agent tasks:
1. Multi-dimensional analysis:
- Code quality (40%)
- Bugs/correctness (30%)
- Testing (15%)
- Documentation (10%)
- Performance (5%)
- ADJUST WEIGHTS if user specifies focus areas
2. Apply confidence scoring (0-100)
3. Report issues with confidence ≥70 (or as specified)
4. DO NOT duplicate existing comments
5. Build on existing feedback
6. Format output:
- Critical (90-100)
- Important (70-89)
- Observations (50-69)
- Positive highlights
- Testing/docs assessment
- Recommendation (approve/changes/comment)
Agent returns structured output:
---REVIEW---
[markdown review with sections]
---RECOMMENDATION---
[APPROVE|REQUEST_CHANGES|COMMENT]
---CRITICAL_COUNT---
[number]
---IMPORTANT_COUNT---
[number]
---END---
Parse response. Validate:
If validation fails → Report parse error, retry (max 2 attempts)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 AI Code Review: PR #$pr_number
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
$review_output
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
**Recommendation:** $recommendation
**Critical Issues:** $critical_count
**Important Issues:** $important_count
Use AskUserQuestion: "How would you like to post this review?"
Options:
If "Post as official review":
# Determine review action from recommendation
case "$recommendation" in
"APPROVE")
action="--approve"
;;
"REQUEST_CHANGES")
action="--request-changes"
;;
"COMMENT")
action="--comment"
;;
esac
# Post review using HEREDOC for body
gh pr review "$pr_number" $action --body "$(cat <<'EOF'
$review_output
EOF
)"
pr_url=$(gh pr view "$pr_number" --json url -q .url)
If review post succeeds:
✅ Review posted successfully!
🔗 $pr_url
📊 Recommendation: $recommendation
If review post fails:
If "Post as comment only":
gh pr comment "$pr_number" --body "$(cat <<'EOF'
$review_output
EOF
)"
If "Save to file":
review_file="PR_${pr_number}_REVIEW_$(date +%Y%m%d_%H%M%S).md"
cat > "$review_file" <<EOF
# AI Code Review: PR #$pr_number
$review_output
---
Recommendation: $recommendation
Critical Issues: $critical_count
Important Issues: $important_count
EOF
echo "✅ Saved: $review_file"
If "Cancel": ❌ "Review discarded."
YOU (handler): check prerequisites, determine PR number, fetch PR data/diff/reviews/guidelines, invoke agent, present review, get user choice, execute gh pr review or comment or save, handle errors
Agent: multi-dimensional analysis, confidence scoring, generate structured review with findings, return review + recommendation + counts
Agent does NOT orchestrate or execute. You do NOT format reviews.
/git-actions:pr-review # Review current branch PR
/git-actions:pr-review 123 # Review PR #123
/git-actions:pr-review https://github.com/user/repo/pull/123 # Review from URL
/git-actions:pr-review 123 focus on security
# Agent prioritizes security analysis (adjusts weights)
/git-actions:pr-review quick review critical only
# Agent uses higher confidence threshold, reports critical issues only
/git-actions:pr-review 123 focus on performance and bugs
# Agent emphasizes performance (5%→20%) and bugs (30%→40%)
/git-actions:pr-review emphasize testing coverage
# Agent gives higher weight to testing analysis
# Review your own PR before requesting reviewers
/git-actions:pr-review # Review current PR
# Option: "Save to file" → address issues locally
# Fix issues, commit, push
/git-actions:pr-review # Re-review
# Option: "Post as comment" → document self-review
# Review someone else's PR
/git-actions:pr-review 123 # Comprehensive review
# Option: "Post as official review"
# Recommendation: REQUEST_CHANGES if critical issues
# Focus review on specific aspect
/git-actions:pr-review 123 security only
# Agent focuses analysis on security implications
Agent analyzes across:
Confidence levels:
# For very large PRs (>50 files, >1000 lines)
/git-actions:pr-review 123
# ⚠️ Large PR warning
# Diff may be truncated, review may be partial
# Consider reviewing specific areas
# (Future: focus on specific files/paths)