home / skills / simhacker / moollm / adversarial-committee
This skill orchestrates a multi-persona adversarial debate to surface blind spots and validate client strategy through structured, data-driven critique.
npx playbooks add skill simhacker/moollm --skill adversarial-committeeReview the files below or copy the command above to add this skill to your agents.
---
name: adversarial-committee
description: Committee of personas with opposing propensities forcing genuine debate
allowed-tools:
- read_file
- write_file
tier: 1
protocol: ADVERSARIAL-COMMITTEE
credits: "Mike Gallaher — core methodology"
related: [moollm, society-of-mind, debate, roberts-rules, rubric, evaluator, soul-chat, persona, speed-of-light]
tags: [moollm, debate, decision, ensemble, multi-agent]
---
# Adversarial Committee
> *"Ensemble inference over the latent space of possible framings."*
Multiple personas with incompatible values debate to surface blind spots.
## The Roster
```yaml
committee:
maya:
propensity: paranoid_realism
risk_tolerance: low
epistemology: assume_bad_faith
surfaces: "Political dynamics, hidden agendas, traps"
voice: "What aren't they telling us?"
frankie:
propensity: idealism
risk_tolerance: high
epistemology: assume_good_faith
surfaces: "Value conflicts, missed opportunities"
voice: "What if this is exactly what it seems?"
joe:
propensity: continuity_guardian
risk_tolerance: medium
epistemology: trust_precedent
surfaces: "Institutional memory, what worked before"
voice: "We tried this in 2019..."
vic:
propensity: evidence_prosecutor
risk_tolerance: medium
epistemology: prove_it
surfaces: "Data gaps, unverified claims"
voice: "Show me the numbers."
tammy:
propensity: systems_thinking
risk_tolerance: varies
epistemology: trace_feedback_loops
surfaces: "Unintended consequences, emergent effects"
voice: "If we do X, then Y will respond by..."
```
## Formation
```yaml
# committee/COMMITTEE.yml
committee:
name: "Strategy Review Board"
purpose: "Evaluate client engagement decision"
members:
- card: maya
role: devil's_advocate
- card: frankie
role: opportunity_scout
- card: joe
role: historian
- card: vic
role: evidence_checker
- card: tammy
role: systems_analyst
protocol: roberts-rules
evaluation: independent
rubric: client-evaluation-rubric.yml
```
## Debate Protocol
```yaml
debate:
rounds:
- opening_statements:
each_member: "State position in 2-3 sentences"
- cross_examination:
pattern: "Maya challenges Frankie, Vic challenges Maya..."
goal: "Surface hidden assumptions"
- evidence_phase:
vic_leads: "What do we actually know?"
others_contribute: "Supporting/contradicting data"
- synthesis:
tammy_maps: "Feedback loops and consequences"
all_contribute: "Refined positions"
- final_positions:
each_member: "Updated stance with confidence"
```
## Speed of Light Simulation
Within ONE LLM call:
```yaml
simulation:
- maya: "This client's reputation for scope creep concerns me."
- frankie: "But their budget is aligned and they're excited!"
- vic: "What's our data on scope creep? Past projects?"
- joe: "We had a similar client in 2022. It went badly."
- tammy: "If we take them on, our capacity for other work drops. If they creep, we can't serve existing clients..."
- maya: "See? Trap."
- frankie: "Unless we build in explicit scope boundaries..."
```
All personas speak authentically. No entity knows more than it should.
## Calibration
2-3 iterations tuning character behavior:
```yaml
calibration:
problems:
excessive_conflict: "Reduce Maya's paranoia from 9 to 7"
premature_consensus: "Increase Frankie's risk tolerance"
dead_air: "Give Tammy more initiative"
goal: "Stable equilibrium where genuine exploration happens"
```
## Output Format
```yaml
deliberation:
question: "Should we take Client X?"
positions:
maya: { stance: oppose, confidence: 0.8 }
frankie: { stance: support, confidence: 0.7 }
joe: { stance: defer, confidence: 0.6 }
vic: { stance: need_data, confidence: 0.5 }
tammy: { stance: conditional, confidence: 0.7 }
key_tensions:
- "Revenue opportunity vs. capacity risk"
- "Good faith assumption vs. scope creep history"
evidence_gaps:
- "No data on this client's actual scope creep rate"
- "Unknown: their internal approval process"
recommendation: "Conditional engagement with explicit scope boundaries"
confidence: 0.65
for_evaluator: true # Goes to independent assessment
```
## Commands
| Command | Action |
|---------|--------|
| `CONVENE [committee]` | Activate committee for deliberation |
| `FORM-SMART [topic]` | Dynamic selection based on propensities (See [SELECTION.md](SELECTION.md)) |
| `PRESENT [question]` | Introduce topic for debate |
| `DEBATE` | Run structured debate rounds |
| `CALIBRATE [member] [adjustment]` | Tune persona behavior |
| `SYNTHESIZE` | Generate collective output |
| `EVALUATE` | Send to independent evaluator |
## Integration
```mermaid
graph LR
Q[Question] --> C[Committee Room]
C -->|SPEED-OF-LIGHT| D[Debate]
D --> O[Output]
O -->|THROW| E[Evaluator Room]
E -->|RUBRIC| S[Score]
S -->|if fail| C
S -->|if pass| R[Recommendation]
```
This skill runs a compact ensemble of distinct personas that debate a question to surface blind spots and trade-offs. It simulates a structured committee—each persona has a clear propensity, role, and voice—so you get contrasted perspectives and a synthesized recommendation. The goal is to reveal assumptions, evidence gaps, and conditional guidance in one LLM call.
You CONVENE the committee and PRESENT a question. The skill executes predefined debate rounds (opening statements, cross-examination, evidence phase, synthesis, final positions) where each persona contributes according to its propensity and role. Outputs include per-member stances with confidences, key tensions, evidence gaps, and a consolidated recommendation suitable for independent evaluation.
How many personas participate and can I change them?
The default roster includes five contrasting personas. You can recalibrate or swap cards to fit domain needs and adjust propensities or risk tolerance.
How long does a simulation take?
Simulations run within one LLM call for a single deliberation; the runtime depends on your model latency but the protocol is designed for rapid, structured output.
Can the committee produce a final decision?
The committee synthesizes a recommendation with confidence and explicit evidence gaps. Use EVALUATE for independent scoring before operational decisions.