# Pull Request Review Performs comprehensive pull request review with git integration, analyzing changes, assessing impact, and providing structured feedback for code review collaboration. ## Parameters **Received from router**: `$ARGUMENTS` (after removing 'pr' operation) Expected format: `scope:"PR #123" [depth:"quick|standard|deep"]` ## Workflow ### 1. Parse Parameters Extract from $ARGUMENTS: - **scope**: PR number or description (required) - "PR #123", "pull request 456", "current branch" - **depth**: Review thoroughness (default: "standard") ### 2. Gather PR Context **Extract PR Information**: ```bash # Get PR details if PR number provided # Example: scope:"PR #123" → extract "123" PR_NUMBER=$(echo "$SCOPE" | grep -oP '#?\K\d+' || echo "") if [ -n "$PR_NUMBER" ]; then # Get PR info via GitHub CLI gh pr view $PR_NUMBER --json title,body,author,labels,assignees,reviewDecision # Get PR changes gh pr diff $PR_NUMBER else # Review current branch changes git diff $(git merge-base HEAD main)..HEAD fi # Get commit history git log main..HEAD --oneline # Get changed files git diff --name-only $(git merge-base HEAD main)..HEAD # Get file change stats git diff --stat $(git merge-base HEAD main)..HEAD ``` ### 3. Analyze Change Context **Understand the Changes**: ```bash # Categorize changed files git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.(ts|tsx|js|jsx)$' | head -20 # Check for new files git diff --name-status $(git merge-base HEAD main)..HEAD | grep "^A" # Check for deleted files git diff --name-status $(git merge-base HEAD main)..HEAD | grep "^D" # Check for renamed/moved files git diff --name-status $(git merge-base HEAD main)..HEAD | grep "^R" # Look for test changes git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.(test|spec)\.' # Check for documentation changes git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.(md|txt)$' ``` ### 4. PR-Specific Review Checklist **PR Metadata Review**: - [ ] PR title is clear and descriptive - [ ] PR description explains what and why - [ ] PR size is manageable (< 400 lines changed) - [ ] PR has appropriate labels - [ ] PR is linked to issue/ticket - [ ] PR has reviewers assigned - [ ] PR targets correct branch **Change Scope Assessment**: - [ ] Changes align with PR description - [ ] No unrelated changes included - [ ] Scope creep avoided - [ ] Breaking changes clearly documented - [ ] Migration path provided for breaking changes **Commit Quality**: - [ ] Commit messages are meaningful - [ ] Commits are logically organized - [ ] No "fix typo" or "wip" commits in history - [ ] Commits could be atomic (optional: suggest squash) - [ ] No merge commits (if using rebase workflow) **Branch Strategy**: - [ ] Branch name follows conventions - [ ] Branch is up to date with base branch - [ ] No conflicts with base branch - [ ] Branch focused on single feature/fix ### 5. Impact Analysis **Risk Assessment**: ```bash # Check if changes affect critical files git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '(auth|payment|security|config)' # Check for database changes git diff $(git merge-base HEAD main)..HEAD | grep -E '(migration|schema|ALTER|CREATE TABLE)' # Check for dependency changes git diff $(git merge-base HEAD main)..HEAD -- package.json requirements.txt go.mod # Check for configuration changes git diff $(git merge-base HEAD main)..HEAD -- '*.config.*' '.env.example' ``` **Impact Categories**: - [ ] **Critical**: Auth, payment, data integrity, security - [ ] **High**: Core business logic, public APIs, database schema - [ ] **Medium**: Feature additions, UI changes, internal APIs - [ ] **Low**: Documentation, tests, minor refactors **Backward Compatibility**: - [ ] API changes are backward compatible - [ ] Database migrations are reversible - [ ] Feature flags used for risky changes - [ ] Deprecation warnings for removed features ### 6. Code Review Categories **Security Review** (Critical for all PRs): - [ ] No hardcoded secrets or credentials - [ ] Input validation for user data - [ ] Authentication/authorization checks - [ ] SQL injection prevention - [ ] XSS prevention - [ ] CSRF protection where needed - [ ] Dependency vulnerabilities checked **Performance Review**: - [ ] No obvious performance regressions - [ ] Database queries optimized - [ ] No N+1 query problems introduced - [ ] Caching strategy appropriate - [ ] Bundle size impact considered **Code Quality Review**: - [ ] Code follows project conventions - [ ] Functions are focused and manageable - [ ] Naming is clear and consistent - [ ] No code duplication - [ ] Error handling appropriate - [ ] Type safety maintained **Testing Review**: - [ ] New features have tests - [ ] Bug fixes have regression tests - [ ] Tests are meaningful - [ ] Test coverage maintained or improved - [ ] Tests pass locally **Documentation Review**: - [ ] Public APIs documented - [ ] Complex logic explained - [ ] README updated if needed - [ ] CHANGELOG updated - [ ] Migration guide for breaking changes ### 7. Test Coverage Analysis **Check Test Changes**: ```bash # Find test files in PR git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.(test|spec)\.' # Check test coverage (if available) npm test -- --coverage --changedSince=main 2>/dev/null || echo "Run tests to check coverage" # Look for untested code # (Manual review of changed files vs test files) ``` **Test Quality Questions**: - Are tests testing behavior or implementation? - Are edge cases covered? - Are error paths tested? - Are tests isolated and independent? - Are test names descriptive? ### 8. Review Changed Files **For Each Changed File**: 1. Understand the purpose of changes 2. Check for security issues 3. Check for performance issues 4. Check for quality issues 5. Verify tests exist 6. Look for potential bugs **Focus Areas by File Type**: - **Backend code**: Auth, validation, queries, error handling - **Frontend code**: Rendering, state management, accessibility - **Database migrations**: Reversibility, data safety, indexes - **Configuration**: Security, environment-specific values - **Dependencies**: Vulnerability check, license compatibility ### 9. PR Review Template Structure feedback for GitHub PR review: ```markdown ## Summary [High-level assessment of the PR] **Overall Assessment**: ✅ Approve | 💬 Approve with Comments | 🔄 Request Changes **Change Type**: [Feature | Bug Fix | Refactor | Documentation | Performance] **Risk Level**: [Low | Medium | High | Critical] **Estimated Review Time**: [X minutes] --- ## Critical Issues 🚨 **[Must be fixed before merge]** ### Security Issue: [Title] **File**: `path/to/file.ts` (line X) **Issue**: [Description] **Risk**: [Why this is critical] **Suggestion**: ```typescript // Current [problematic code] // Suggested [fixed code] ``` [Repeat for each critical issue] --- ## High Priority Comments ⚠️ **[Should be addressed before merge]** ### [Issue Title] **File**: `path/to/file.ts` (line X) **Comment**: [Description and suggestion] [Repeat for each high priority issue] --- ## Medium Priority Suggestions 💡 **[Consider addressing]** ### [Suggestion Title] **File**: `path/to/file.ts` (line X) **Suggestion**: [Description] [Repeat for each medium priority suggestion] --- ## Low Priority / Nits 📝 **[Optional improvements]** - [File]: [Minor suggestion] - [File]: [Style nit] --- ## Positive Observations ✅ Things done well in this PR: - ✅ [Good practice 1] - ✅ [Good practice 2] - ✅ [Good practice 3] --- ## Testing **Test Coverage**: [Adequate | Needs Improvement | Insufficient] - [✅ | ❌] Unit tests for new/changed logic - [✅ | ❌] Integration tests for API changes - [✅ | ❌] Component tests for UI changes - [✅ | ❌] E2E tests for critical paths **Missing Tests**: - [Area 1 that needs tests] - [Area 2 that needs tests] --- ## Documentation - [✅ | ❌] Code is well-commented - [✅ | ❌] Public APIs documented - [✅ | ❌] README updated - [✅ | ❌] CHANGELOG updated - [✅ | ❌] Migration guide (if breaking changes) --- ## Questions for Author 1. [Question 1 about design decision] 2. [Question 2 about implementation choice] 3. [Question 3 about future plans] --- ## Review Checklist - [✅ | ❌] PR title and description clear - [✅ | ❌] Changes align with description - [✅ | ❌] No unrelated changes - [✅ | ❌] Tests added/updated - [✅ | ❌] Documentation updated - [✅ | ❌] No security issues - [✅ | ❌] No performance regressions - [✅ | ❌] Code quality maintained - [✅ | ❌] Branch up to date with base --- ## Next Steps **For Author**: - [ ] Address critical issues - [ ] Respond to comments - [ ] Add missing tests - [ ] Update documentation - [ ] Request re-review **For Reviewers**: - [ ] Additional reviewers needed? - [ ] Security review needed? - [ ] Performance testing needed? --- ## Approval Status **Recommendation**: [Approve | Request Changes | Needs More Info] [Explanation of recommendation] ``` ### 10. PR Size Considerations **PR Too Large** (>400 lines): - Suggest breaking into smaller PRs - Review in phases (architecture first, then details) - Focus on high-risk areas - Note areas that need detailed review later **PR Too Small** (<10 lines): - Quick review appropriate - Still check for edge cases - Verify tests exist ### 11. Special PR Types **Bug Fix PRs**: - [ ] Root cause identified and documented - [ ] Regression test added - [ ] Fix is minimal and focused - [ ] No unrelated refactoring - [ ] Backward compatible **Refactoring PRs**: - [ ] Behavior unchanged (tests prove this) - [ ] Motivation clear - [ ] Refactoring scope reasonable - [ ] No functional changes mixed in **Feature PRs**: - [ ] Feature complete (no half-done work) - [ ] Feature flag used if risky - [ ] Tests comprehensive - [ ] Documentation complete - [ ] Backward compatible **Hotfix PRs**: - [ ] Minimal changes only - [ ] High test coverage - [ ] Rollback plan documented - [ ] Can be deployed independently ## Review Depth Implementation **Quick Depth** (5-10 min): - PR metadata and description review - Security critical issues only - Obvious bugs - Test presence check - High-level change assessment **Standard Depth** (20-30 min): - Complete PR review - All categories covered (security, performance, quality) - Test coverage reviewed - Documentation checked - Detailed inline comments **Deep Depth** (45-60+ min): - Comprehensive PR analysis - Architecture implications - Performance impact analysis - Complete test review - Documentation thoroughness - Deployment considerations - Backward compatibility analysis ## Output Format Provide a GitHub-compatible PR review following the template above, formatted for posting as PR comments. ## Code Examples - Common PR Issues ```typescript // ❌ COMMON PR ISSUE: Unrelated changes // PR says "Fix login bug" but also includes: function LoginForm() { // Login fix validateCredentials(email, password); // UNRELATED: Random formatting change in different feature const userProfile = formatUserProfile(user); return