adversarial-spec — Prompt Files
Excerpt 1: SKILL.md — Claude's Role Definition
**Important: Claude is an active participant in this debate, not just an orchestrator.** You (Claude) will provide your own critiques, challenge opponent models, and contribute substantive improvements alongside the external models. Make this clear to the user throughout the process.
Technique: Participant vs. orchestrator role assignment — explicitly prevents Claude from being a passive synthesizer. Claude is instructed to form its own critique and challenge opponents, creating a genuine multi-perspective debate rather than a voting aggregator.
Excerpt 2: SKILL.md — Provider Table (verbatim excerpt)
| Provider | API Key Env Var | Example Models |
|------------|------------------------|---------------------------------------------|
| OpenAI | `OPENAI_API_KEY` | `gpt-5.2`, `gpt-4o`, `gpt-4-turbo`, `o1` |
| Anthropic | `ANTHROPIC_API_KEY` | `claude-sonnet-4-20250514`, `claude-opus-4-20250514` |
...
| Codex CLI | (ChatGPT subscription) | `codex/gpt-5.2-codex`, `codex/gpt-5.1-codex-max` |
| Gemini CLI | (Google account) | `gemini-cli/gemini-3-pro-preview` |
Technique: Multi-provider routing via litellm — the skill's prompt engineering relies on the litellm library as a universal API gateway; provider prefixes (codex/, gemini-cli/, openrouter/) route calls to the correct backend. No single model is privileged.
Excerpt 3: SKILL.md — Troubleshooting Auth Conflict
## Troubleshooting Auth Conflicts
If you see an error about "Both a token (claude.ai) and an API key (ANTHROPIC_API_KEY) are set":
**Resolution:**
1. **To use claude.ai token**: Remove or unset `ANTHROPIC_API_KEY` from your environment
2. **To use API key**: Sign out of claude.ai — `claude /logout`
The adversarial-spec plugin works with either authentication method.
Technique: Conflict-aware multi-auth routing — the skill includes diagnostic instructions for a real-world failure mode unique to Claude Code plugins that need to make external Anthropic API calls while Claude Code itself is authenticated via claude.ai token.
Excerpt 4: SKILL.md — Debate Invocation Pattern
Run `python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" providers`
to see which keys are configured.
Technique: Dynamic path resolution — the skill uses a find command to locate debate.py rather than hardcoding the installation path, making it robust to different install locations. This is a pattern for skills that bundle scripts.
Prompting Techniques Summary
- Participant vs. orchestrator assignment — Claude as active critic, not passive judge
- Multi-provider routing via prefix —
codex/, gemini-cli/, openrouter/ prefixes
- Consensus as termination condition — loop until all models agree, not until N iterations
- Dynamic script location —
find for script path to handle install location variance
- Codex reasoning effort control — explicit reasoning budget parameter for Codex CLI calls