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---5
6# Red Team — Adversarial Debate Engine
7
8Stress-test any decision by having AI agents with conflicting worldviews debate it.
9
10## Prerequisites
11
12One 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`
16
17No Python dependencies beyond the standard library.
18
19## Quick Start
20
21```bash
22# 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"
26
27# Full debate with context and output file
28python3 ~/.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.md
34
35# Use a different model
36python3 ~/.openclaw/skills/red-team/scripts/red-team.py \
37 -q "Should we launch this product?" \
38 -p "bull,customer,operator" \
39 -m opus
40
41# List all available personas
42python3 ~/.openclaw/skills/red-team/scripts/red-team.py --list-personas
43```
44
45## How to Use (as OpenClaw Agent)
46
47When the user asks you to "red team" something, "stress test" an idea, play "devil's advocate", or asks "what could go wrong":
48
491. Identify the question/decision from the user's message
502. Choose appropriate personas (default: bull,bear,operator — adjust based on domain)
513. Run the script and save output
524. Summarize the key findings to the user, share the full report if requested
53
54**Persona selection guide:**
55- Investment/financial decisions → bull, bear, cash-flow, economist
56- Product/startup ideas → bull, customer, operator, technologist
57- Legal/compliance questions → regulator, bear, operator
58- Strategy/direction → contrarian, economist, historian, bull
59- General "should we do X?" → bull, bear, operator (good default)
60
61## Available Personas
62
63| 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 |
77
78## Custom Personas
79
80Create a JSON file:
81
82```json
83{
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```
91
92Use with `--custom-personas /path/to/file.json`. Custom personas merge with built-ins.
93
94## CLI Options
95
96| 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 |
107
108## Output Structure
109
110The output is a markdown document with:
1111. **Initial Proposals** — Each agent's independent take
1122. **Critique Rounds** — Agents critique each other
1133. **Refinement** — Agents update positions based on critiques
1144. **Conviction Scores** — Each agent scores all positions (0-100)
1155. **Synthesis & Decision Brief** — Neutral agent produces:
116 - Executive summary
117 - Consensus points
118 - Key disagreements
119 - Risk matrix
120 - Conviction score summary
121 - Synthesized recommendation
122 - Next steps
123
124## When to Use
125
126✅ **Good for:** Important decisions, investment analysis, product strategy, "go/no-go" calls, pre-mortems, challenging groupthink
127
128❌ **Not for:** Simple factual questions, time-sensitive emergencies, decisions already made, emotional/personal choices
129
130## Integration Tips
131
132- Save output to memory files for future reference
133- Create BEADS tasks from the "Next Steps" section
134- Feed context files from Obsidian or project docs
135- Re-run with different personas for different perspectives
136- Use `--rounds 1` for quick takes, `--rounds 3` for deep analysis