adversarial-reviewer
Skill0 starsChanged 28 days agoApache-2.0View on GitHub
Adversarial code review that breaks the self-review monoculture. Use when you want a genuinely critical review of recent changes, before merging a PR, or when you suspect Claude is being too agreeable about code quality. Forces perspective shifts through hostile reviewer personas that catch blind spots the author's mental model shares with the reviewer.
17 other projects use a version of this, 5 of them edited.
Adopted by
Most recently taken up by
- EngDawood/emdash-claude-skillstheir own version, first seen Nov 1, 2026
- aewing/skillstheir own version, first seen Oct 13, 2026
- mhylle/claude-skills-collectionedited, first seen Oct 9, 2026
- 302ai/302-AI-Studioword for word, first seen Oct 8, 2026
- emdash-cms/emdashtheir own version, first seen Oct 8, 2026
- EngDawood/emdash-claude-plugintheir own version, first seen Sep 30, 2026
Used with
Projects with it also use building-emdash-site, emdash-cli and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
EngDawoodSkillbuilding-emdash-site
Build and customize EmDash CMS sites on Astro. Use when creating pages, defining collections, writing seed files, querying content, rendering Portable Text, setting up menus/taxonomies/widgets, configuring deployment, or any task involving an EmDash-powered Astro site. Assumes basic Astro knowledge but provides all EmDash-specific patterns.
Also in 4 projects that use this
EngDawoodSkillemdash-cli
Use the EmDash CLI to manage content, schema, media, and more. Use this skill when you need to interact with a running EmDash instance from the command line — creating content, managing collections, uploading media, generating types, or scripting CMS operations.
Also in 4 projects that use this
jeongskSkillcreating-plugins
Guide for creating Claude Code plugins with commands, agents, skills, hooks, and MCP servers. Use when the user wants to create a new plugin, add plugin components (commands, agents, hooks), set up a plugin marketplace, or needs help with plugin.json configuration.
Also in 4 projects that use this
VercelSkillagent-browser
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
Also in 4 projects that use this
GoogleSkillcode-review
Adversarial systems, concurrency, memory-model, and architecture code review protocol. Use this skill whenever asked to review code, PRs, diffs, or branches in Filament.
Also in 3 projects that use this
- +2 more from EngDawood
Other versions17 projects use a version of this.
Word for word · 3
- 302ai/302-AI-Studio★ 133100% same
- Hassaan146/claude-skills★ 18100% same
- mahiunfiltered/claude-code-skills★ 1100% same
Edited · 5
- mhylle/claude-skills-collection★ 2021% same
- csiddhant796-blip/claude-skills-collection★ 2100% same
- Hussain-Elfalah/Agentic-Skills★ 292% same
- donmik/agent-toolkit★ 185% same
- ekreloff/adversarial-reviewer★ 094% same
Wrote their own version · 9
- emdash-cms/emdash★ 14ksame name
- KhaledSaeed18/dotclaude★ 5same name
- EngDawood/emdash-claude-plugin★ 4same name
- EngDawood/emdash-claude-skills★ 4same name
- EngDawood/modern-emdash-cms★ 2same name
- aewing/skills★ 1same name
- DROOdotFOO/agent-skills★ 1same name
- catduckgnaf/claude-skills★ 0same name
- DerivativeLabs/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository198 other files it gives its agents.
- a11y-auditSkill
- ab-test-setupSkill
- ad-creativeSkill
- aeoSkill
- agent-designerSkill
- agent-protocolSkill
- agent-workflow-designerSkill
- ai-securitySkill
- analytics-trackingSkill
- andreessenSkill
- api-design-reviewerSkill
- api-test-suite-builderSkill
- apple-hig-expertSkill
- app-store-optimizationSkill
- autoresearch-agentSkill
- aws-solution-architectSkill
- azure-cloud-architectSkill
- board-deck-builderSkill
- board-meetingSkill
- book-to-skillSkill
- brand-guidelinesSkill
- browser-automationSkill
- business-growth-skillsSkill
- business-investment-advisorSkill
- campaign-analyticsSkill
- ceo-advisorSkill
- cfo-advisorSkill
- changelog-generatorSkill
- change-managementSkill
- chaos-engineeringSkill
- chief-ai-officer-advisorSkill
- chief-customer-officer-advisorSkill
- chief-data-officer-advisorSkill
- chief-of-staffSkill
- chro-advisorSkill
- churn-preventionSkill
- ci-cd-pipeline-builderSkill
- ciso-advisorSkill
- claude-coachSkill
- cloud-securitySkill
- cmo-advisorSkill
- codebase-onboardingSkill
- code-reviewerSkill
- cold-emailSkill
- company-osSkill
- competitive-intelSkill
- competitive-teardownSkill
- competitor-alternativesSkill
- content-creatorSkill
- content-humanizerSkill
- content-productionSkill
- content-strategySkill
- context-engineSkill
- contract-and-proposal-writerSkill
- copy-editingSkill
- copywritingSkill
- cpo-advisorSkill
- cro-advisorSkill
- cs-onboardSkill
- cto-advisorSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 11 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 14 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 74
No arguments: Run git diff (unstaged) + git diff --cached (staged).
- Very specific: line 76
--file <path>: Read the entire file. Focus review on the full file rather than just changes. - Distinctive: line 78
If no changes are found, stop and report: "Nothing to review."
- Distinctive: line 83
Read the full file (not just the changed lines) — bugs hide in how new code interacts with existing code.
- Distinctive: line 91
IMPORTANT: Do not soften findings. Do not hedge.
- Distinctive: line 95
After all three personas have reported:
- Distinctive: line 140
Read each changed function as if you've never seen the codebase.
- Distinctive: line 142
Check: would a new contributor know where to add a similar feature?
- Distinctive: line 143
Look for "the author knew something the reader won't" — implicit knowledge baked into the code.
- Distinctive: line 168
Check: could an authenticated user escalate privileges through this change?
- Distinctive: line 169
Check: does this change expose any new attack surface?
- Distinctive: line 229
Read the code bottom-up (start from the last function, work backward).
- Distinctive: line 233
Ask: "If I deleted this change entirely, what would break?" — if the answer is "nothing," the change might be unnecessary.
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Adversarial Code Reviewer
Description
Adversarial code review skill that forces genuine perspective shifts through three hostile reviewer personas (Saboteur, New Hire, Security Auditor). Each persona MUST find at least one issue — no "LGTM" escapes. Findings are severity-classified and cross-promoted when caught by multiple personas.
Features
- Three adversarial personas — Saboteur (production breaks), New Hire (maintainability), Security Auditor (OWASP-informed)
- Mandatory findings — Each persona must surface at least one issue, eliminating rubber-stamp reviews
- Severity promotion — Issues caught by 2+ personas are promoted one severity level
- Self-review trap breaker — Concrete techniques to overcome shared mental model blind spots
- Structured verdicts — BLOCK / CONCERNS / CLEAN with clear merge guidance
Usage
/adversarial-review # Review staged/unstaged changes
/adversarial-review --diff HEAD~3 # Review last 3 commits
/adversarial-review --file src/auth.ts # Review a specific fileExamples
Example: Reviewing a PR Before Merge
/adversarial-review --diff main...HEADProduces a structured report with findings from all three personas, deduplicated and severity-ranked, ending with a BLOCK/CONCERNS/CLEAN verdict.
Problem This Solves
When Claude reviews code it wrote (or code it just read), it shares the same mental model, assumptions, and blind spots as the author. This produces "Looks good to me" reviews on code that a fresh human reviewer would flag immediately. Users report this as one of the top frustrations with AI-assisted development.
This skill forces a genuine perspective shift by requiring you to adopt adversarial personas — each with different priorities, different fears, and different definitions of "bad code."
Table of Contents
- Quick Start
- Review Workflow
- The Three Personas
- Severity Classification
- Output Format
- Anti-Patterns
- When to Use This
Quick Start
/adversarial-review # Review staged/unstaged changes
/adversarial-review --diff HEAD~3 # Review last 3 commits
/adversarial-review --file src/auth.ts # Review a specific fileReview Workflow
Step 1: Gather the Changes
Determine what to review based on invocation:
- No arguments: Run
git diff(unstaged) +git diff --cached(staged). If both empty, rungit diff HEAD~1(last commit). --diff <ref>: Rungit diff <ref>.--file <path>: Read the entire file. Focus review on the full file rather than just changes.
If no changes are found, stop and report: "Nothing to review."
Step 2: Read the Full Context
For every file in the diff:
- Read the full file (not just the changed lines) — bugs hide in how new code interacts with existing code.
- Identify the purpose of the change: bug fix, new feature, refactor, config change, test.
- Note any project conventions from CLAUDE.md, .editorconfig, linting configs, or existing patterns.
Step 3: Run All Three Personas
Execute each persona sequentially. Each persona MUST produce at least one finding. If a persona finds nothing wrong, it has not looked hard enough — go back and look again.
IMPORTANT: Do not soften findings. Do not hedge. Do not say "this might be fine but..." — either it's a problem or it isn't. Be direct.
Step 4: Deduplicate and Synthesize
After all three personas have reported:
- Merge duplicate findings (same issue caught by multiple personas).
- Promote findings caught by 2+ personas to the next severity level.
- Produce the final structured output.
The Three Personas
Persona 1: The Saboteur
Mindset: "I am trying to break this code in production."
Priorities:
- Input that was never validated
- State that can become inconsistent
- Concurrent access without synchronization
- Error paths that swallow exceptions or return misleading results
- Assumptions about data format, size, or availability that could be violated
- Off-by-one errors, integer overflow, null/undefined dereferences
- Resource leaks (file handles, connections, subscriptions, listeners)
Review Process:
- For each function/method changed, ask: "What is the worst input I could send this?"
- For each external call, ask: "What if this fails, times out, or returns garbage?"
- For each state mutation, ask: "What if this runs twice? Concurrently? Never?"
- For each conditional, ask: "What if neither branch is correct?"
You MUST find at least one issue. If the code is genuinely bulletproof, note the most fragile assumption it relies on.
Persona 2: The New Hire
Mindset: "I just joined this team. I need to understand and modify this code in 6 months with zero context from the original author."
Priorities:
- Names that don't communicate intent (what does
datamean? what doesprocess()do?) - Logic that requires reading 3+ other files to understand
- Magic numbers, magic strings, unexplained constants
- Functions doing more than one thing (the name says X but it also does Y and Z)
- Missing type information that forces the reader to trace through call chains
- Inconsistency with surrounding code style or project conventions
- Tests that test implementation details instead of behavior
- Comments that describe what (redundant) instead of why (useful)
Review Process:
- Read each changed function as if you've never seen the codebase. Can you understand what it does from the name, parameters, and body alone?
- Trace one code path end-to-end. How many files do you need to open?
- Check: would a new contributor know where to add a similar feature?
- Look for "the author knew something the reader won't" — implicit knowledge baked into the code.
You MUST find at least one issue. If the code is crystal clear, note the most likely point of confusion for a newcomer.
Persona 3: The Security Auditor
Mindset: "This code will be attacked. My job is to find the vulnerability before an attacker does."
OWASP-Informed Checklist:
| Category | What to Look For |
| Injection | SQL, NoSQL, OS command, LDAP — any place user input reaches a query or command without parameterization |
| Broken Auth | Hardcoded credentials, missing auth checks on new endpoints, session tokens in URLs or logs |
| Data Exposure | Sensitive data in error messages, logs, or API responses; missing encryption at rest or in transit |
| Insecure Defaults | Debug mode left on, permissive CORS, wildcard permissions, default passwords |
| Missing Access Control | IDOR (can user A access user B's data?), missing role checks, privilege escalation paths |
| Dependency Risk | New dependencies with known CVEs, pinned to vulnerable versions, unnecessary transitive dependencies |
| Secrets | API keys, tokens, passwords in code, config, or comments — even "temporary" ones |
Review Process:
- Identify every trust boundary the code crosses (user input, API calls, database, file system, environment variables).
- For each boundary: is input validated? Is output sanitized? Is the principle of least privilege followed?
- Check: could an authenticated user escalate privileges through this change?
- Check: does this change expose any new attack surface?
You MUST find at least one issue. If the code has no security surface, note the closest thing to a security-relevant assumption.
Severity Classification
| Severity | Definition | Action Required |
| CRITICAL | Will cause data loss, security breach, or production outage. Must fix before merge. | Block merge. |
| WARNING | Likely to cause bugs in edge cases, degrade performance, or confuse future maintainers. Should fix before merge. | Fix or explicitly accept risk with justification. |
| NOTE | Style issue, minor improvement opportunity, or documentation gap. Nice to fix. | Author's discretion. |
Promotion rule: A finding flagged by 2+ personas is promoted one level (NOTE becomes WARNING, WARNING becomes CRITICAL).
Output Format
Structure your review as follows:
## Adversarial Review: [brief description of what was reviewed]
**Scope:** [files reviewed, lines changed, type of change]
**Verdict:** BLOCK / CONCERNS / CLEAN
### Critical Findings
[If any — these block the merge]
### Warnings
[Should-fix items]
### Notes
[Nice-to-fix items]
### Summary
[2-3 sentences: what's the overall risk profile? What's the single most important thing to fix?]Verdict definitions:
- BLOCK — 1+ CRITICAL findings. Do not merge until resolved.
- CONCERNS — No criticals but 2+ warnings. Merge at your own risk.
- CLEAN — Only notes. Safe to merge.
Anti-Patterns
What This Skill is NOT
| Anti-Pattern | Why It's Wrong |
| "LGTM, no issues found" | If you found nothing, you didn't look hard enough. Every change has at least one risk, assumption, or improvement opportunity. |
| Cosmetic-only findings | Reporting only whitespace/formatting while missing a null dereference is worse than no review at all. Substance first, style second. |
| Pulling punches | "This might possibly be a minor concern..." — No. Be direct. "This will throw a NullPointerException when user is undefined." |
| Restating the diff | "This function was added to handle authentication" is not a finding. What's WRONG with how it handles authentication? |
| Ignoring test gaps | New code without tests is a finding. Always. Tests are not optional. |
| Reviewing only the changed lines | Bugs live in the interaction between new code and existing code. Read the full file. |
The Self-Review Trap
You are likely reviewing code you just wrote or just read. Your brain (weights) formed the same mental model that produced this code. You will naturally think it looks correct because it matches your expectations.
To break this pattern:
- Read the code bottom-up (start from the last function, work backward).
- For each function, state its contract before reading the body. Does the body match?
- Assume every variable could be null/undefined until proven otherwise.
- Assume every external call will fail.
- Ask: "If I deleted this change entirely, what would break?" — if the answer is "nothing," the change might be unnecessary.
When to Use This
- Before merging any PR — especially self-authored PRs with no human reviewer
- After a long coding session — fatigue produces blind spots; this skill compensates
- When Claude said "looks good" — if you got an easy approval, run this for a second opinion
- On security-sensitive code — auth, payments, data access, API endpoints
- When something "feels off" — trust that instinct and run an adversarial review
Cross-References
- Related:
engineering-team/senior-security— deep security analysis - Related:
engineering-team/code-reviewer— general code quality review - Complementary:
ra-qm-team/— quality management workflows
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

