/titans — Code Review Triad
Three reviewers, three lenses. Dispatch in parallel, synthesize findings.
When to Use
- •After substantial work — Before /close, when a feature/fix/refactor is "done"
- •Before shipping — Final quality gate
- •Periodic hygiene — "What's rotting that I haven't noticed?"
When NOT to Use
- •Quick fixes under 50 lines
- •Exploratory spikes
- •Throwaway scripts (unless they stopped being throwaway)
- •When you need speed over thoroughness
Beyond Code Review
The three-lens pattern works for more than code. The underlying structure (hindsight/craft/foresight) applies to any artifact worth reviewing thoroughly:
| Domain | Epimetheus asks | Metis asks | Prometheus asks |
|---|---|---|---|
| Documentation | What's stale or misleading? | Is it clear and well-structured? | Does it serve future readers? |
| Architecture | What's fragile or debt-laden? | Does it follow good patterns? | Does it enable what we're building toward? |
| Process | What's broken or painful? | Is it efficient and clear? | Will it scale with the team? |
| CLAUDE.md | What's wrong or outdated? | Is it well-organized? | What should future Claude know? |
Discovered Jan 2026: Used titans pattern to review trousse itself for CLAUDE.md updates. The three lenses surfaced different categories of findings — infrastructure bugs (Epimetheus), stale references (Metis), undocumented contracts (Prometheus) — that a single-pass review would have missed.
When adapting: Adjust the reviewer briefs for the domain. The output structure (findings, assumptions, could-not-assess, questions) remains useful regardless of what you're reviewing.
The Triad
| Titan | Lens | Question | Focus |
|---|---|---|---|
| Epimetheus | Hindsight | "What has already gone wrong, or will bite us?" | Bugs, debt, fragility, security |
| Metis | Craft | "Is this well-made, right now, for what it is?" | Clarity, idiom, structure, tests |
| Prometheus | Foresight | "Does this serve what we're building toward?" | Vision, extensibility, knowledge capture |
Why these three? Hindsight catches what's broken. Craft ensures current quality. Foresight protects future-you. Small overlaps are fine — they're perspectives, not partitions.
Orchestration
1. Scope the review
Before dispatching, establish:
- •What to review — specific files, directory, or "everything touched this session"
- •Context available — CLAUDE.md, README, architecture docs
- •Goals if known — roadmap items, intended consumers, lifespan
If scope is unclear, ask. Don't review the entire codebase by accident.
2. Dispatch reviewers
Launch three parallel Task calls. Use Explore subagent with model: "opus" — deep review needs Opus-level reasoning, not Haiku speed.
Each reviewer receives:
- •The Reviewer Brief for their lens (from references/REVIEWERS.md)
- •The scoped files/context
- •Awareness of the other two reviewers (to minimize redundancy)
- •The output structure template
Task( subagent_type: "Explore", model: "opus", description: "EPIMETHEUS review of [scope]", prompt: "[Reviewer brief from REVIEWERS.md] + [scoped files] + [output template]" )
Dispatch all three in a single message (parallel execution).
3. Collect outputs
Each reviewer returns structured findings. See Output Structure below.
Partial failures: If a reviewer times out, errors, or returns malformed output:
- •Proceed with available outputs (two reviews > none)
- •Note the gap in synthesis ("Epimetheus did not complete — hindsight lens missing")
- •Consider re-running the failed reviewer with tighter scope
4. Synthesize
Merge outputs into actionable summary:
- •High-priority findings (multiple reviewers agree)
- •Conflicts reveal trade-offs (disagreements worth surfacing)
- •"Could not assess" → documentation debt
- •Critical path before shipping
See references/SYNTHESIS.md for synthesis patterns.
Output Structure (All Reviewers)
Each reviewer uses this template:
## [TITAN] Review ### Findings Numbered list of issues, each with: - What: the problem - Where: file/line/function - Severity: critical | warning | note - Fix complexity: trivial | moderate | significant ### Assessed Under Assumptions State the assumption, then the conditional finding: - "Assuming this is a long-lived component: [concern]" - "If throwaway prototype, this concern evaporates" ### Could Not Assess What's missing that blocks review: - "No visibility into intended consumers" - "Can't evaluate against patterns — no access to rest of codebase" - "Token refresh flow undocumented" ### Questions That Would Sharpen This Review Specific, answerable questions: - "Is this called by other agents or only orchestration?" - "What's the expected lifespan?" - "Who are the intended consumers?"
"Could not assess" is itself diagnostic. A codebase that leaves Prometheus constantly asking "what are we building toward?" has a documentation problem worth surfacing.
Synthesis Output
After collecting all three reviews, produce:
## Review Triad Synthesis ### High-Priority Findings (Multiple Reviewers) | Finding | E | M | P | Action | |---------|---|---|---|--------| | [issue] | ✓ | ✓ | — | [fix] | ### Conflicts Reveal Trade-offs | Trade-off | Metis says | Prometheus says | Resolution | |-----------|------------|-----------------|------------| | [tension] | [position]| [position] | [decision] | ### "Could Not Assess" → Documentation Debt Repeated across reviewers: - [gap] — [what's needed] ### Critical Path Before Shipping | # | Issue | Risk | Fix Complexity | |---|-------|------|----------------| ### Lower Priority (Track as Tech Debt) - [items to track but not block on] ### Questions to Resolve 1. [question surfaced by review]
Reference Files
| Reference | When to Read |
|---|---|
| REVIEWERS.md | Detailed briefs for each Titan |
| SYNTHESIS.md | Patterns for merging outputs, handling conflicts |
Observed Token Consumption
From test runs, reviewers tend to use tokens in this order:
- •Epimetheus uses the most — deepest spelunking through code paths
- •Metis uses moderate — structural analysis, less exploration
- •Prometheus uses the least — architectural assessment from less code
This varies by codebase size and scope clarity. If a reviewer seems to be looping, it usually indicates unclear scope — consider interrupting and re-scoping rather than waiting it out.
Anti-Patterns
| Pattern | Problem | Fix |
|---|---|---|
| Vague scope | Reviewers loop, miss focus | Explicit file list or "changes since X" |
| Skip synthesis | Three reports, no action | Always synthesize findings |
| Ignore partial failures | Miss perspectives | Report which reviewer failed, proceed with others |
| Review before work is "done" | Premature review | Complete the feature first |
Integration with /open and /close
/open ↓ [substantial work] ↓ /titans ← you are here ↓ [address critical findings] ↓ /close
/titans findings can feed into /close:
- •Critical issues → "Now" bucket (fix before closing)
- •Lower priority → "Next" bucket (create tracker items)
- •Documentation debt → handoff Gotchas section