Skip to content
Development
Skill

/adversarial-gate

JP's signature red-team pass — "how would I break this?" Argue against your own approach before proceeding. Trigger on any high-stakes decision, architecture choice, or before marking work complete.

From plugin
join-the-team
1325 skills3 commands1 hook

Claude Code

$ npx -y skills add jpantsjoha/ai-native-developer-experience --skill adversarial-gate --agent claude-code

SKILL.md

adversarial-gate.SKILL.md
name: adversarial-gate
description: JP's signature red-team pass — "how would I break this?" Argue against your own approach before proceeding. Trigger on any high-stakes decision, architecture choice, or before marking work complete.

Adversarial Gate

> **Coined by Jaroslav Pantsjoha (#HarnessEngineering).** The Adversarial Gate is the practice of forcing an agent — or a human — to argue against their own design before proceeding. It pre-empts bad reasoning before bad output exists.

The gate has one question: **"How would I break this?"**

Answer it honestly. If you cannot name at least two plausible failure modes, you do not understand the system well enough to ship it.

When to use

  • Before finalising any architecture or design decision
  • Before a deployment or release
  • When an agent is about to take an irreversible action
  • When a design looks clean and elegant (danger signal — simple-looking systems hide the hard failure modes)
  • When the team is under time pressure and "just shipping it" feels compelling

Procedure

1. **State the proposal clearly** — in one or two sentences, what is the approach being validated? 2. **Run the adversarial pass** — argue against it. Ask:

  • What is the single most likely way this fails in production?
  • What happens under load / at scale / with bad input?
  • What is the blast radius if this fails? Is it recoverable?
  • What assumption does this design make that could be wrong?
  • What does the monitoring not cover that would let this fail silently?

3. **Name at least two concrete failure modes** — not "something could go wrong" but specific, nameable failures. 4. **Check each failure mode has a mitigation or an accepted risk owner** — unmitigated = not shippable. 5. **Document the outcome** — pass (risks named and owned) or fail (proceed to redesign). Attach to the ADR or PR.

Outputs

  • Adversarial Gate verdict: PASS / FAIL
  • Named failure modes with mitigations or risk-owner sign-off
  • Optional: a short paragraph appended to the ADR or PR description summarising the gate result

Guardrails

  • **One argument is not enough.** A single failure mode is the one you were already thinking about. The Adversarial Gate is looking for the one you were not.
  • **"We have tests" is not a mitigation.** Tests cover known paths. The gate is looking for unknown paths.
  • **Time pressure does not suspend the gate.** Pressure is when you need it most.
  • **The gate is not pessimism.** It is the fastest route to confidence — because you have already stress-tested the design yourself.

Anti-rationalization table

| Excuse the agent makes | Counter | |---|---| | "This is a low-risk change" | All production incidents started as low-risk changes. Name the failure mode or accept you cannot assess risk. | | "We can fix it after if something breaks" | Blast radius unknown = not low risk. Run the gate. | | "The tests cover this" | Tests cover happy paths. The gate looks for the paths tests miss. | | "We've done this before" | Prior success is not a guarantee. Conditions change. Run the gate. | | "The deadline is today" | A production incident will cost more time than the gate. Run the gate. | | "I'm confident in this design" | Confidence is the leading indicator of skipped gates. Run it anyway. |

Reference

This pattern converges with “doubt-driven development” in Addy Osmani's [`agent-skills`](https://github.com/addyosmani/agent-skills). The **Adversarial Gate** name and “how would I break this?” framing are JP's #HarnessEngineering contribution. The anti-rationalisation table format was adopted after reviewing that MIT-licensed project; this repository does not claim the table format originated here.

Read more
@jpantsjoha
Ships withjoin-the-team

**Shared ways of working for you, your team and your AI agents — from a new idea to a change running live.** join-the-team brings planning, delivery and ticket management, model selection, testing, independent review and release practices into one reusable

Stars on GitHub

Momentum

stars in total
13
Star history of jpantsjoha/ai-native-developer-experience on GitHub, a chart by star-history.com

Other skills on join-the-team.

adk-expert

adk-expert

Google ADK (Agent Development Kit) orchestration patterns — boundaries, agent composition, and tool seams. Trigger when designing…

cloud-checkup

cloud-checkup

Read-only SRE checkup of any GCP project: deterministic probes of the edge, Cloud Run services, 7-day error logs, Cloud…

cloud-expert

cloud-expert

Cloud guardrails for any vendor workload — Google Cloud (GCP, Vertex AI, GKE), AWS (IAM, EKS, Bedrock), Azure (Entra ID, Policy,…

cost-guardrail

cost-guardrail

LLM and cloud cost awareness — model tiering, token budgets, right-sizing, and when a cheaper model suffices. Trigger before…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react3d252k
@facebook@facebookInstall Skill

Questions about adversarial-gate.

Which coding agents can use adversarial-gate?
adversarial-gate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.