TL;DR: Abstract roles find abstract problems. Named engineers with documented, sourced philosophies find problems you would actually fix — as long as you cite the real principle and never invent the quote.
Triggers: "review this PR with real engineers" | "named persona review" | "philosophy-grounded review"
CRITICAL [Torvalds]: Special-case error handling at auth.ts:47 duplicates the
happy path. Torvalds' documented "good taste" principle: restructure so the
special case disappears rather than adding a branch. (confidence: high — TED 2016)
WARNING [Thompson]: parseConfig() does three unrelated things; the Unix
"do one thing well" principle argues to split it. (confidence: high)
NOTE [Jobs]: Error "EACCES:13" leaks an errno at the user surface; "start
from the customer experience" argues for a human message. (confidence: high — WWDC 1997)
Verdict: CONCERNS — fix CRITICAL before merge.
Abstract adversarial review ("act as a saboteur") produces generic findings — the model imagines what a reviewer might say. This skill grounds each lens in a real, sourced engineering philosophy documented in references/persona_principles.md: what Ken Thompson actually argued about trust, what Linus actually demonstrated about good taste — not what an AI imagines.
How it differs from adversarial-reviewer: abstract roles → surface-level findings; named, sourced personas → findings anchored to a documented principle you can cite and defend.
Cost: 1 round ≈ 8-12 min. Comparable to waiting for CI.
This skill puts named, real people's principles to work. That power is also its failure mode: language models hallucinate quotes. To stay honest:
high (documented, in references/persona_principles.md with a source), moderate (widely attributed, source not pinned), low/unknown (you're inferring). Mirrors productivity/andreessen's citation discipline.references/persona_principles.md (or a verifiable search) first. Ungrounded = invalid.Each persona's documented principles + sources + confidence live in references/persona_principles.md.
Product (pick 1 per round — mandatory):
| Persona | Documented principle | Best for |
|---|---|---|
| Steve Jobs | Start from the customer experience, work back to the tech | UX, onboarding |
| Marty Cagan | Fall in love with the problem, not the solution | PRDs, feature specs, scope creep |
| Des Traynor (Intercom) | The first 30 seconds decide adoption | Docs, READMEs, quick starts |
Engineers (pick 2 per round):
| Persona | Documented principle | Best for | Blind spot |
|---|---|---|---|
| Ken Thompson | Trust boundaries; do one thing well | Architecture, supply chain, API | UX, docs |
| Linus Torvalds | Eliminate the special case ("good taste"); never break userspace | Logic, data structures, compat | User empathy, DX |
| John Carmack | Measure before you optimize; performance as craft | Algorithms, hot paths | Minimalism |
| Kent Beck | Simple design; make it work → right → fast | Process, testability | Performance, security |
| Fred Brooks | Essential vs. accidental complexity | System design, estimation | Low-level perf |
Routing (which personas when):
| Level | Definition | Action |
|---|---|---|
| BLOCKER | 2+ personas concur on a CRITICAL, or security / data-loss risk | Fix before any further work |
| CRITICAL | Wrong result, data loss, security hole, or violated core invariant | Fix before merge |
| WARNING | Fragile, misleading, or likely to cause future bugs | Fix, or explain if deferred |
| NOTE | Improvement that doesn't affect correctness | Optional; record for follow-up |
Promotion: NOTE → WARNING → CRITICAL → BLOCKER. Two personas independently finding the same issue promotes it one level (concurrence is signal). BLOCKER is the ceiling.
For each persona, pull their documented principles from references/persona_principles.md (or search "[Name] engineering philosophy principles" and extract only sourced positions) before looking at the code, so you apply the principle rather than retrofitting one to an opinion you already formed.
Each persona gets: Mindset (one sentence from their principles), Priorities (3-5 criteria), Findings (each mapped to a documented principle + confidence level), or the zero-finding burden (3+ principles the code satisfies, with how).
Merge duplicates; count concurrences; promote per the rule; flag single-lens findings (often the most interesting). Post the report as a PR comment (default) or save to .claude/review-[timestamp].md.
"The first principle is that you must not fool yourself — and you are the easiest person to fool." — Richard Feynman, Cargo Cult Science (Caltech commencement, 1974)
After each round, ask:
adversarial-reviewer findings feel generic and you want sourced specificity.adversarial-reviewer.references/persona_principles.md → you can't ground it; don't fabricate.Inherits all from adversarial-reviewer. Plus:
| Anti-Pattern | Why wrong |
|---|---|
| Inventing a verbatim quote to sound authoritative | Fabricated attribution to a real person. Cite the sourced principle + confidence, or drop it. |
| "As a senior engineer" without grounding | Not a named, sourced lens. Ground first. |
| Same 3 personas every time | Rotate per problem type — see Routing. |
| Product person skipped | Product catches what engineers miss. |
| Fabricating a finding to hit "≥1 issue" | The bar is honesty, not quota. Use the zero-finding burden instead. |
| Skipping the integrity check | Verification without verification = rubber-stamp. |
| 3 rounds for a trivial change | Low-impact PRs: 1 round is enough. |
engineering-team/adversarial-reviewer — abstract-role adversarial review (simpler, faster, no grounding needed)engineering-team/code-reviewer, engineering-team/senior-security
productivity/andreessen — the confidence-level / never-fabricate-a-citation pattern this skill adoptsreferences/persona_principles.md
Attribution: Concept contributed by @YuhaoLin2005 (PR #866). Hardened for this repo: consolidated to one location, anti-fabrication/confidence discipline added, principles sourced in references/.