Red Team — Adversarial Debate Engine
Stress-test any decision by having AI agents with conflicting worldviews debate it.
Prerequisites
One of these coding agent CLIs (uses your existing subscription — no API key needed):
- Claude Code (default):
claude — npm i -g @anthropic-ai/claude-code
- Codex:
codex — npm i -g @openai/codex
- Gemini:
gemini — npm i -g @google/gemini-cli
No Python dependencies beyond the standard library.
Quick Start
# Basic 3-persona debate (uses Max subscription via claude CLI)
python3 ~/.openclaw/skills/red-team/scripts/red-team.py \
--question "Should we do X?" \
--personas "bull,bear,operator"
# Full debate with context and output file
python3 ~/.openclaw/skills/red-team/scripts/red-team.py \
-q "Should we invest $50k in this deal?" \
-p "bull,bear,cash-flow,local-realist" \
-r 3 \
-c /path/to/deal-data.md \
-o /tmp/red-team-result.md
# Use a different model
python3 ~/.openclaw/skills/red-team/scripts/red-team.py \
-q "Should we launch this product?" \
-p "bull,customer,operator" \
-m opus
# List all available personas
python3 ~/.openclaw/skills/red-team/scripts/red-team.py --list-personas
How to Use (as OpenClaw Agent)
When the user asks you to "red team" something, "stress test" an idea, play "devil's advocate", or asks "what could go wrong":
- Identify the question/decision from the user's message
- Choose appropriate personas (default: bull,bear,operator — adjust based on domain)
- Run the script and save output
- Summarize the key findings to the user, share the full report if requested
Persona selection guide:
- Investment/financial decisions → bull, bear, cash-flow, economist
- Product/startup ideas → bull, customer, operator, technologist
- Legal/compliance questions → regulator, bear, operator
- Strategy/direction → contrarian, economist, historian, bull
- General "should we do X?" → bull, bear, operator (good default)
Available Personas
| Key |
Name |
Worldview |
| bull |
The Bull |
Optimistic, opportunity-focused |
| bear |
The Bear |
Risk-averse, capital preservation |
| contrarian |
The Contrarian |
Oppositional, consensus-challenging |
| operator |
The Operator |
Execution-focused pragmatist |
| economist |
The Economist |
Macro trends, opportunity cost |
| local-realist |
The Local Realist |
Ground truth, local specifics |
| cash-flow |
The Cash Flow Analyst |
Income, carrying costs, IRR |
| regulator |
The Regulator |
Compliance, legal risk |
| technologist |
The Technologist |
Automation, scalability |
| customer |
The Customer |
End-user demand, willingness to pay |
| ethicist |
The Ethicist |
Moral implications, stakeholder impact |
| historian |
The Historian |
Historical patterns, precedent |
Custom Personas
Create a JSON file:
{
"my-persona": {
"name": "The Skeptic",
"description": "Questions everything, trusts nothing",
"system": "You are The Skeptic — you question every assumption..."
}
}
Use with --custom-personas /path/to/file.json. Custom personas merge with built-ins.
CLI Options
| Flag |
Default |
Description |
--question, -q |
required |
The question to debate |
--personas, -p |
bull,bear,operator |
Comma-separated persona keys |
--rounds, -r |
2 |
Number of critique rounds |
--output, -o |
stdout |
Output file path |
--context-file, -c |
none |
Additional context file |
--custom-personas |
none |
Custom personas JSON |
--model, -m |
sonnet |
Model alias (sonnet, opus, haiku, gpt-4o, etc.) |
--backend, -b |
claude |
CLI backend: claude, codex, or gemini |
--list-personas |
— |
List personas and exit |
Output Structure
The output is a markdown document with:
- Initial Proposals — Each agent's independent take
- Critique Rounds — Agents critique each other
- Refinement — Agents update positions based on critiques
- Conviction Scores — Each agent scores all positions (0-100)
- Synthesis & Decision Brief — Neutral agent produces:
- Executive summary
- Consensus points
- Key disagreements
- Risk matrix
- Conviction score summary
- Synthesized recommendation
- Next steps
When to Use
✅ Good for: Important decisions, investment analysis, product strategy, "go/no-go" calls, pre-mortems, challenging groupthink
❌ Not for: Simple factual questions, time-sensitive emergencies, decisions already made, emotional/personal choices
Integration Tips
- Save output to memory files for future reference
- Create BEADS tasks from the "Next Steps" section
- Feed context files from Obsidian or project docs
- Re-run with different personas for different perspectives
- Use
--rounds 1 for quick takes, --rounds 3 for deep analysis
1---2name: red-team3description: Adversarial multi-agent debate engine for stress-testing decisions, ideas, and strategies. Orchestrates multiple AI agents with conflicting worldviews (bull, bear, operator, contrarian, etc.) to debate a question through structured rounds, then synthesizes results into a decision brief. Use for: red team analysis, adversarial debate, stress testing ideas, devil's advocate, "what could go wrong" analysis, decision validation, pre-mortem exercises.4---56# Red Team — Adversarial Debate Engine78Stress-test any decision by having AI agents with conflicting worldviews debate it.910## Prerequisites1112One of these coding agent CLIs (uses your existing subscription — no API key needed):13- **Claude Code** (default): `claude` — `npm i -g @anthropic-ai/claude-code`14- **Codex**: `codex` — `npm i -g @openai/codex`15- **Gemini**: `gemini` — `npm i -g @google/gemini-cli`1617No Python dependencies beyond the standard library.1819## Quick Start2021```bash22# Basic 3-persona debate (uses Max subscription via claude CLI)23python3 ~/.openclaw/skills/red-team/scripts/red-team.py \24 --question "Should we do X?" \25 --personas "bull,bear,operator"2627# Full debate with context and output file28python3 ~/.openclaw/skills/red-team/scripts/red-team.py \29 -q "Should we invest $50k in this deal?" \30 -p "bull,bear,cash-flow,local-realist" \31 -r 3 \32 -c /path/to/deal-data.md \33 -o /tmp/red-team-result.md3435# Use a different model36python3 ~/.openclaw/skills/red-team/scripts/red-team.py \37 -q "Should we launch this product?" \38 -p "bull,customer,operator" \39 -m opus4041# List all available personas42python3 ~/.openclaw/skills/red-team/scripts/red-team.py --list-personas43```4445## How to Use (as OpenClaw Agent)4647When the user asks you to "red team" something, "stress test" an idea, play "devil's advocate", or asks "what could go wrong":48491. Identify the question/decision from the user's message502. Choose appropriate personas (default: bull,bear,operator — adjust based on domain)513. Run the script and save output524. Summarize the key findings to the user, share the full report if requested5354**Persona selection guide:**55- Investment/financial decisions → bull, bear, cash-flow, economist56- Product/startup ideas → bull, customer, operator, technologist57- Legal/compliance questions → regulator, bear, operator58- Strategy/direction → contrarian, economist, historian, bull59- General "should we do X?" → bull, bear, operator (good default)6061## Available Personas6263| Key | Name | Worldview |64|-----|------|-----------|65| bull | The Bull | Optimistic, opportunity-focused |66| bear | The Bear | Risk-averse, capital preservation |67| contrarian | The Contrarian | Oppositional, consensus-challenging |68| operator | The Operator | Execution-focused pragmatist |69| economist | The Economist | Macro trends, opportunity cost |70| local-realist | The Local Realist | Ground truth, local specifics |71| cash-flow | The Cash Flow Analyst | Income, carrying costs, IRR |72| regulator | The Regulator | Compliance, legal risk |73| technologist | The Technologist | Automation, scalability |74| customer | The Customer | End-user demand, willingness to pay |75| ethicist | The Ethicist | Moral implications, stakeholder impact |76| historian | The Historian | Historical patterns, precedent |7778## Custom Personas7980Create a JSON file:8182```json83{84 "my-persona": {85 "name": "The Skeptic",86 "description": "Questions everything, trusts nothing",87 "system": "You are The Skeptic — you question every assumption..."88 }89}90```9192Use with `--custom-personas /path/to/file.json`. Custom personas merge with built-ins.9394## CLI Options9596| Flag | Default | Description |97|------|---------|-------------|98| `--question`, `-q` | required | The question to debate |99| `--personas`, `-p` | bull,bear,operator | Comma-separated persona keys |100| `--rounds`, `-r` | 2 | Number of critique rounds |101| `--output`, `-o` | stdout | Output file path |102| `--context-file`, `-c` | none | Additional context file |103| `--custom-personas` | none | Custom personas JSON |104| `--model`, `-m` | sonnet | Model alias (sonnet, opus, haiku, gpt-4o, etc.) |105| `--backend`, `-b` | claude | CLI backend: claude, codex, or gemini |106| `--list-personas` | — | List personas and exit |107108## Output Structure109110The output is a markdown document with:1111. **Initial Proposals** — Each agent's independent take1122. **Critique Rounds** — Agents critique each other1133. **Refinement** — Agents update positions based on critiques1144. **Conviction Scores** — Each agent scores all positions (0-100)1155. **Synthesis & Decision Brief** — Neutral agent produces:116 - Executive summary117 - Consensus points118 - Key disagreements119 - Risk matrix120 - Conviction score summary121 - Synthesized recommendation122 - Next steps123124## When to Use125126✅ **Good for:** Important decisions, investment analysis, product strategy, "go/no-go" calls, pre-mortems, challenging groupthink127128❌ **Not for:** Simple factual questions, time-sensitive emergencies, decisions already made, emotional/personal choices129130## Integration Tips131132- Save output to memory files for future reference133- Create BEADS tasks from the "Next Steps" section134- Feed context files from Obsidian or project docs135- Re-run with different personas for different perspectives136- Use `--rounds 1` for quick takes, `--rounds 3` for deep analysis