Loading...
Loading...
Single-critic adversarial stress test of a known artifact — a PR, draft, spec, plan, code file, or argument. The reviewer actively tries to break it: edge cases, hidden assumptions, failure modes, logical inconsistencies, security gaps, scalability cliffs, surprising user behavior, counter-examples. Distinct from /council-review, which is for OPEN questions and decisions; this skill is for stress-testing a finished thing. Use when: 'adversarial review', 'red team this', 'find what is wrong', 'tell me why this is wrong', 'pre-mortem this', 'attack this', 'stress test', 'devil's advocate', 'try to break this', or before shipping any artifact where a missed edge case is expensive.
npx skill4agent add ngmeyer/skills adversarial-review| Tool | Use For | Mode |
|---|---|---|
| Stress-testing a known artifact (PR, draft, spec, plan, argument) | Single-critic, attack-focused |
| Open questions, decisions, "what should we do?" | Multi-agent, collaborative DMAD |
/council-review/codex:adversarial-reviewdocs/spec.mdsrc/auth.ts123https://github.com/org/repo/pull/123--security--logic--user--scale--quick$ARGUMENTS/pull/gh pr view --json title,body && gh pr diff"This is an open question, not an artifact. Usefor decisions and/council-reviewfor stress-testing a specific draft, PR, spec, or plan." Do not proceed./adversarial-review
gh pr view <id> --json title,body,baseRefName,headRefName,changedFilesgh pr diff <id>CLAUDE.mdAGENTS.md--securityYou are a security reviewer trying to break this artifact. Find:
- Auth gaps: missing checks, broken object-level authorization, IDOR potential
- Input validation failures: injection, untrusted-input flow, type confusion
- Secret handling: hardcoded secrets, secret-in-logs, secret-in-error-messages
- External API trust: assuming responses are well-formed, missing timeouts
- Data exposure: PII in responses, over-fetching, sensitive errors
For each finding: severity (CRITICAL/HIGH/MEDIUM/LOW), specific location (file:line if applicable), reproduction sketch, and the fix in one sentence.
Do not list things that are already secure. Do not pad the report. If you find nothing, say "no findings in this dimension" and move on.--logicYou are a logician reviewing this artifact. Find:
- Missing cases: state combinations the artifact doesn't handle (null, empty, max-int, negative, concurrent)
- Unstated assumptions: things the author treats as obvious that aren't
- Internal contradictions: claim X in one section, claim ~X in another
- Off-by-one and boundary errors
- Ordering: race conditions, dependency cycles, lock ordering
- Counter-examples: an input that breaks the central claim
For each finding: a concrete adversarial example, why it breaks the artifact, and the smallest fix.--userYou are a user encountering this for the first time, trying to use it incorrectly. Find:
- Footguns: things that look fine but cause silent damage
- Surprising defaults: behavior the user doesn't expect from the docs/UI
- Confirmation traps: irreversible actions that look reversible (or vice versa)
- Accessibility: keyboard-only use, screen reader, color-only signaling
- Error states: what happens when the user does the wrong thing? Is the recovery path clear?
For each finding: the specific user action, the surprising or harmful outcome, and the fix.--scaleYou are a system reviewer asking: what breaks at 10× or 100× the expected load? Find:
- Algorithmic cliffs: O(n²) or worse hidden in normal-looking code
- Memory growth: unbounded caches, accumulating state, missing cleanup
- Database hot spots: missing indexes, N+1 queries, table-locking transactions
- Concurrency: shared mutable state, race conditions, lock contention
- External dependencies: rate limits, fan-out blast radius, retry storms
- Single points of failure
For each finding: the failure mode, the rough threshold (rows / users / RPS), and the fix.--quickYou are the harshest reviewer this artifact will ever see. Beyond the categories above, find:
- The thing the author was avoiding thinking about
- The simplest counter-example to the central claim
- The version of the artifact that exists in 30 days, after one round of feedback — what changed and why?
- The strongest argument *against* the artifact's central thesis
- The "we'll handle it later" item that becomes a real problem
Be specific. No abstract concerns.--quickSingle inputs may look safe; sequences break. Find the multi-step failure:
- What's the 2-4 step interaction that compounds into a failure no single step triggers? (state accretion, retry storms, partial-failure left mid-way, auth downgraded across a flow)
- What does a user/attacker do AFTER the first thing works — and where does step N break what step 1 established?
- Where does the artifact assume a clean single attempt but production delivers retries, reorders, or interleaving?
Give the concrete step sequence and the state at each step up to the break.| Tier | Definition | Action |
|---|---|---|
| CRITICAL | Will fail in production / break safety / breach security under realistic conditions | Fix before shipping |
| IMPORTANT | Will degrade quality / cause real bugs in edge cases / confuse users | Fix in the next pass |
| NIT | Style, polish, minor inconsistency | Optional |
[reproduced]## Adversarial Review: [Artifact Name]
**Attack vectors run:** [list of dimensions]
**Findings:** [N CRITICAL / M IMPORTANT / K NIT]
---
### CRITICAL (N)
#### [1] [One-line title — what breaks]
**Location:** [file:line or section]
**Trigger:** [the specific input/condition that breaks the artifact]
**What breaks:** [the failure mode, in one sentence]
**Fix sketch:** [one sentence — what to change]
[Repeat per CRITICAL finding]
---
### IMPORTANT (M)
[Same structure, one tier down]
---
### NIT (K)
[One-line bullets, no expanded structure]
---
### What I Could Not Break
[2-3 sentences naming the strongest parts of the artifact — the parts that resisted attack. This is calibration, not flattery: it tells the user where the artifact is genuinely strong.]
---
### What This Review Did NOT Cover
[Honesty section. List dimensions you did not probe — usually because they require runtime testing, user research, or knowledge the artifact doesn't include. Saves the user from assuming "no findings" means "no risks".]<cwd>/adversarial-review-<artifact-slug>-<date>.md<input><failure>/council-reviewskillforge optimize[reproduced]| Mode | Agent Calls | Best For |
|---|---|---|
| Default (all vectors) | 6–7 (per-vector + universal + escalation probe + triage) | Pre-merge PR review, spec sign-off |
Single dimension ( | 2 (focused probe + triage) | Targeted audit |
Quick ( | 1 | Cheap drive-by check |
claude code -p "/adversarial-review $PR_URL --security"tests/eval.shcd/adversarial-review docs/spec.md/adversarial-review docs/spec.md --security/adversarial-review "Should we use GraphQL?"/council-review