Adversarial Spec

Refine a PRD or tech spec by debating it across multiple LLMs until they agree

Works with setup

Test report

Verdict
Works with setup
Score
7.6/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 9e5fe12

Located SKILL.md at skills/adversarial-spec/SKILL.md via the GitHub API. Frontmatter parses with name+description; spot-checked debate.py, models.py, providers.py, prompts.py all return HTTP 200. Cloned into a temp HOME ($(mktemp -d)) and installed into ~/.claude/skills; ran `debate.py providers` and `debate.py focus-areas` with no litellm installed and both printed correct help output cleanly. Could NOT execute the core Step 3 (`debate.py critique`) because it needs litellm plus an external provider API key (OpenAI/Gemini/xAI/etc.) or the codex/gemini CLI, none of which I have — so no skill-vs-baseline artifact could be produced (outputMeasured=false). Security scan clean: subprocess calls in models.py are argument-list invocations of the codex/gemini CLIs (no shell=True/injection), Telegram is opt-in via urllib to api.telegram.org; no curl|sh, base64 blobs, or exfiltration. Minor doc nit: SKILL.md mislabels claude-sonnet-4/opus-4 model IDs as "Claude 3.5 Sonnet v2"/"Claude 3 Opus".

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 5/10
  • Docs & honesty 4/5

What Adversarial Spec does

Drives an iterative "adversarial" review of a product or technical spec: Claude drafts the document, then a Python CLI (debate.py) sends it in parallel to external LLM providers (GPT, Gemini, Grok, Mistral, etc.) for critique, and the spec is revised round by round until every model plus Claude agrees. Triggers when the user wants to write or refine a PRD or technical specification through multi-model debate. Requires litellm and at least one provider API key (or the codex/gemini CLI) to run the actual critique step.

How to install Adversarial Spec

git clone --depth 1 https://github.com/zscole/adversarial-spec.git /tmp/adversarial-spec-src
mkdir -p ~/.claude/skills
cp -R /tmp/adversarial-spec-src/skills/adversarial-spec ~/.claude/skills/adversarial-spec
# Core debate step needs litellm plus at least one provider API key:
#   pip install litellm==1.80.13
#   export OPENAI_API_KEY=...   (or GEMINI_API_KEY / XAI_API_KEY / ANTHROPIC_API_KEY / etc.)
# Alternatively install a CLI provider: npm i -g @openai/codex && codex login
#   or: npm i -g @google/gemini-cli && gemini auth
# Verify which keys are seen:
#   python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' | head -1)" providers
# Plugin-marketplace alternative: repo ships .claude-plugin/marketplace.json + plugin.json

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Adversarial Spec

  • /adversarial-spec Refine a PRD or tech spec by debating it across multiple LLMs until they agree

It also activates on plain-language prompts like these:

  • Refine this spec by debating it across GPT and Gemini
  • Have multiple models critique this specification
  • Iterate this spec until all models agree

Frequently asked questions

Is the Adversarial Spec skill free?
Yes. The skill itself is free from zscole/adversarial-spec. SkillProof publishes the install command and an independent test verdict at no cost.
Does Adversarial Spec work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Works with setup. Located SKILL.md at skills/adversarial-spec/SKILL.md via the GitHub API. Frontmatter parses with name+description; spot-checked debate.py, models.py, providers.py, prompts.py all return HTTP 200. Cloned into a temp HOME ($(mktemp -d)) and installed into ~/.claude/skills; ran `debate.py providers` and `debate.py focus-areas` with no litellm installed and both printed correct help output cleanly. Could NOT execute the core Step 3 (`debate.py critique`) because it needs litellm plus an external provider API key (OpenAI/Gemini/xAI/etc.) or the codex/gemini CLI, none of which I have — so no skill-vs-baseline artifact could be produced (outputMeasured=false). Security scan clean: subprocess calls in models.py are argument-list invocations of the codex/gemini CLIs (no shell=True/injection), Telegram is opt-in via urllib to api.telegram.org; no curl|sh, base64 blobs, or exfiltration. Minor doc nit: SKILL.md mislabels claude-sonnet-4/opus-4 model IDs as "Claude 3.5 Sonnet v2"/"Claude 3 Opus".
What is the Adversarial Spec SkillProof Score?
7.6/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 5/10, docs & honesty 4/5.
How do I install Adversarial Spec?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Adversarial Spec with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.