titans
/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
More from spm1001/claude-suite
picture
Generate images using Google Imagen. Use when user needs 'hero image', 'presentation visual', 'conceptual illustration', or 'generate an image'. Composes with itv-styling for brand-constrained outputs. (user)
46server-checkup
Systematic Linux server management. Use BEFORE making changes to capture baseline, then AFTER for verification. Triggers on 'check this server', 'audit', 'set up this machine', 'security audit', 'harden this Pi', 'fresh Pi setup', 'provision this server'. (user)
33diagram
Orchestrates diagram creation with iterative render-and-check workflow. Invoke FIRST when asked to 'create a diagram', 'Venn diagram', 'flow chart', 'architecture diagram', 'visualize this' — ensures CRAP-principled self-critique before showing user, preventing amateur layouts and low-contrast text. Composes with brand skills for styling. (user)
32screenshot
>
24filing
Orchestrates file cleanup with mandatory processing — reads content and extracts actions BEFORE moving files. Prevents lost waiting-fors and buried actions. MANDATORY during weekly review filing phase. Triggers on 'where should this go', 'help me tidy', 'clean up downloads', 'triage inbox'. (user)
20setup
>
16