Before running reviewers on a diff, gather context the diff alone can't show. Run these three subagents in parallel:
-
codebase-locator- find callers/consumers of changed symbols (integration surface not in the diff). Catches "this edit breaks a caller nobody looked at." -
codebase-pattern-finder- find existing patterns for what the diff introduces. Catches "Claude reinvented a helper that already exists." -
codebase-analyzer- deep-dive on the most-changed file(s) for behavioral context. Catches "the reviewer didn't understand what this file actually does."
Pure diff review is blind to:
- Callers outside the hunks (integration breakage)
- Duplicated utilities (DRY violations the diff can't see)
- File-level behavior the diff assumes but never states
The three agents run concurrently, then their findings are prepended as a ## Context block to every reviewer prompt (simplify / code review / roast) in Phase 2. Reviewers ground critique in real callers and patterns, not diff-in-isolation.
Skip Phase 1 when:
- Diff < 50 lines (overhead not worth it)
- Non-code changes (config, docs)
- Single-file self-contained edits
Reviewers catch the Claude-typical failure mode where a diff looks clean locally but duplicates an existing utility, breaks an unseen caller, or ignores an established pattern.