| name | analyze-changes |
| description | Interactive chunk-by-chunk review of PR or branch changes. Identifies logical groupings, explains each chunk, and critiques for issues. Use when user says "analyze-changes", "review changes", "review this PR", "what changed", or "walk me through these changes". |
| compatibility | Requires git and optionally gh CLI for PR context. |
Analyze Changes
Perform an interactive, chunk-by-chunk review of changes in a PR or branch. Explain what each logical change does, then critique for potential issues.
When to Use
- Reviewing a PR before merge
- Understanding what changed on a feature branch
- Self-review before pushing
- Onboarding to someone else's changes
Process
1. Detect Context
Determine the diff source:
If on a PR branch or user mentions PR:
gh pr view --json number,title,body,baseRefName 2>/dev/null
gh pr diff
If on a feature branch (no PR):
# Detect main branch
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@'
# Or default to main/master
git diff main...HEAD
# or
git diff master...HEAD
If user specifies:
- Follow their instruction (specific commits, files, etc.)
2. Identify Logical Chunks
Analyze the diff and group changes into logical chunks. A chunk is:
- A coherent unit of change (single purpose)
- May span multiple files
- Should be reviewable independently
Good chunking:
- "Add user validation middleware"
- "Refactor database connection pooling"
- "Update API response format"
- "Add tests for auth flow"
Bad chunking:
- By file (misses logical grouping)
- Too granular (every function)
- Too broad ("all the changes")
3. Present Overview
## Change Overview
**Context**: {PR #N: title | Branch: name vs main}
**Overall Goal**: {1-2 sentences: what does this PR/branch aim to achieve}
## Logical Chunks
1. **{Chunk 1 theme}**: {one-line description}
2. **{Chunk 2 theme}**: {one-line description}
3. **{Chunk 3 theme}**: {one-line description}
---
Ready to review Chunk 1: "{theme}"? (y/skip/all)
4. Review Each Chunk
Wait for user confirmation before each chunk.
User responses:
y/yes/continue/proceed→ Review this chunkskip→ Skip to next chunkall→ Review all remaining chunks without pausing
For each chunk, follow CHUNK-REVIEW-GUIDE.md:
### Chunk {N}: {Theme}
**Files touched**:
- `{path/to/file1}` — {brief: added/modified/deleted, what}
- `{path/to/file2}` — {brief}
**What this changes**:
{Explanation of what the code does now, how it differs from before}
**Why** (if discernible):
{Rationale for the change — from PR description, commit messages, or code context}
**Concerns**:
{Any issues, risks, or suggestions — or "None identified" if solid}
---
Ready for Chunk {N+1}: "{theme}"? (y/skip/all)
5. Final Summary
After all chunks reviewed:
## Review Summary
**Chunks reviewed**: {N} of {total}
**Cross-cutting concerns**:
{Issues that span multiple chunks or affect the PR as a whole}
**Overall assessment**:
{Brief: is this PR ready? What needs attention?}
Guidelines
- Explain before critiquing: User should understand the change before hearing concerns
- Be specific in concerns: "This might break X because Y" not "This seems risky"
- Acknowledge good work: If a chunk is well-done, say so briefly
- Don't invent issues: If code is solid, "None identified" is fine
- Respect user's time: Keep explanations concise, expand if asked