PR review from multiple perspectives (PM, Dev, QA, Security)
Performs comprehensive multi-perspective PR review from PM, Developer, QA, Security, and Quality viewpoints, applies labels, and generates fix manifest.
/plugin marketplace add cameronsjo/claude-marketplace/plugin install essentials@cameronsjopr_link_or_numberCheck if labels exist before proceeding:
gh label list | grep -E "(claude-pm-|claude-dev-|claude-qa-|claude-sec-|claude-quality-)" | wc -l
If count < 10, inform user and exit:
⚠️ PR review labels not found. Run: /setup-labels
If $ARGUMENTS empty: Auto-detect from current branch:
gh pr view --json number,title,url
If no PR found, inform user and exit.
/pr-fix integrationComment Markers (check if exists, update if yes, create if no):
<!-- PR-REVIEW:PM --> - Product Manager<!-- PR-REVIEW:DEV --> - Developer<!-- PR-REVIEW:QA --> - Quality Engineer<!-- PR-REVIEW:SEC --> - Security Engineer<!-- PR-REVIEW:QUALITY --> - Code Quality Gate- **[SEVERITY]** `file:line` — Problem
- Why: Impact in one sentence
- Fix: Solution in one sentence
Severities: BLOCKER | MAJOR | MINOR | NIT
Marker: <!-- PR-REVIEW:PM -->
Evaluate:
<!-- PR-REVIEW:PM -->
## 📊 Product Manager Review
**Status**: ✅ Approved | ⚠️ Changes Requested
### ⚠️ Concerns
| File | Impact | Issue |
|------|--------|-------|
| `file.ts:123` | High | Issue description |
### 💡 Recommendations
- **P1**: Critical recommendation
- **P2**: Important recommendation
Marker: <!-- PR-REVIEW:DEV -->
Evaluate:
<!-- PR-REVIEW:DEV -->
## 👨💻 Developer Review
**Status**: ✅ Approved | ⚠️ Changes Requested
### ⚠️ Issues
| File:Line | Severity | Issue |
|-----------|----------|-------|
| `auth.ts:45` | High | N+1 query - use batch loading |
### 📋 Standards Violations
- `api.ts:67` - CLAUDE.md: Use structured logging
Marker: <!-- PR-REVIEW:QA -->
Evaluate:
<!-- PR-REVIEW:QA -->
## 🧪 Quality Engineer Review
**Status**: ✅ Approved | ⚠️ Changes Requested
### ⚠️ Missing Tests
| Function/Feature | File | Risk |
|------------------|------|------|
| `authenticateUser()` | `auth.ts:45` | High - critical auth flow |
### 🐛 Edge Cases Not Handled
- `api.ts:67` - Missing null check
Marker: <!-- PR-REVIEW:SEC -->
Evaluate:
<!-- PR-REVIEW:SEC -->
## 🔒 Security Engineer Review
**Status**: ✅ Approved | ❌ Blocked
### 🚨 Critical Vulnerabilities
| File:Line | Vulnerability | Severity |
|-----------|--------------|----------|
| `api.ts:45` | SQL injection | Critical |
### 📦 Dependency Issues
- `package.json` - `lodash@4.17.15` CVE-2020-8203
Marker: <!-- PR-REVIEW:QUALITY -->
Scan for and BLOCK on:
TODO, FIXME, HACK without (#issue-number)console.log, print(), debuggerany, missing type hints# Scan examples
gh pr diff | grep -E "(TODO|FIXME|HACK)" | grep -v "(#"
gh pr diff | grep -E "(console\.(log|debug)|print\(|debugger)"
<!-- PR-REVIEW:QUALITY -->
## ⚠️ Code Quality Gate
**Status**: ❌ BLOCKED
### 🚫 Orphaned TODOs (X found)
| File:Line | Marker |
|-----------|--------|
| `auth.ts:45` | TODO |
### Required Actions
1. Create GitHub issues for orphaned TODOs
2. Remove debug statements
3. Delete commented code
Remove old labels, then apply based on outcomes:
| Perspective | Approved | Changes/Blocked |
|---|---|---|
| PM | claude-pm-approved | claude-pm-changes |
| Developer | claude-dev-approved | claude-dev-changes |
| QA | claude-qa-approved | claude-qa-changes |
| Security | claude-sec-approved | claude-sec-blocked |
| Quality | claude-quality-passed | claude-quality-blocked |
gh pr edit --remove-label "claude-pm-approved,claude-pm-changes,..." 2>/dev/null || true
gh pr edit --add-label "claude-pm-approved,claude-dev-changes,..."
Save findings to .claude/reviews/pr-{number}.yaml for /pr-fix:
pr: 123
url: https://github.com/owner/repo/pull/123
branch: feature-branch
base: main
reviewed_at: 2025-01-15T10:30:00Z
verdict: REQUESTING_CHANGES
findings:
- id: 1
perspective: DEV
severity: BLOCKER
file: src/api/handler.ts
line: 42
problem: Missing null check
why: Request body could be undefined
fix: Add early return if req.body?.id is undefined
confidence: high
status: open
comment_id: 12345678
Ensure .claude/reviews/ is in .gitignore.
═══════════════════════════════════════════════════
PR REVIEW COMPLETE
═══════════════════════════════════════════════════
PR #<number>: <title>
📊 Product Manager: [✅ Approved | ⚠️ Changes]
👨💻 Developer: [✅ Approved | ⚠️ Changes]
🧪 Quality Engineer: [✅ Approved | ⚠️ Changes]
🔒 Security Engineer: [✅ Approved | ❌ Blocked]
⚠️ Code Quality Gate: [✅ Passed | ❌ Blocked]
Overall: [✅ APPROVED | ⚠️ CHANGES REQUESTED | ❌ BLOCKED]
Labels Applied: claude-pm-approved, claude-dev-changes, ...
═══════════════════════════════════════════════════
Do NOT post a 6th summary comment - all feedback is in the 5 perspective comments.