| name | debate |
| description | Spawn Codex sub-agents to debate a topic, idea, proposal, or decision from multiple perspectives. A Proponent argues for it, a Critic argues against, an optional Devil's Advocate challenges both, and a Synthesizer produces a structured verdict. Use when you want rigorous multi-perspective analysis rather than a one-sided answer. Global and project-agnostic. Trigger when the user says "debate this", "debate idea", "argue both sides", "steelman and critique", "agents debate", "debate topic", "get multiple perspectives on", "challenge this idea", "play devil's advocate on", or "what are the arguments for and against". |
Debate - multi-agent perspective skill
Orchestrates a structured debate by spawning Codex sub-agents as named participants.
The main Codex instance moderates, passes curated context between agents each round,
and a Synthesizer produces an actionable verdict.
Modes
| Mode | Spawns | Rounds | Total agent calls |
|---|
--quick | Proponent + Critic | Opening only | 3 (+ Synthesizer) |
--full | Proponent + Critic + Devil's Advocate | Opening + one rebuttal round | 7 |
Procedure
1. Parse invocation
Extract from the user's message:
- Topic - the idea, proposal, decision, or claim to debate. Required.
- Domain context - any pasted code, doc excerpt, or file path the user provides.
If a file path is given, read it now and attach its contents as shared context.
- Mode flag -
--quick or --full if explicitly present in the invocation.
- Constraints - any named constraints the user states (budget, tech stack, deadline,
team size). These are passed to all agents as hard givens, not debatable.
If the topic is missing or genuinely ambiguous, ask one focused question only (e.g.
"Are you debating whether to do X or how to do X?"). Do not ask multiple questions.
2. Mode selection
If --quick or --full was explicitly given, skip this step.
Otherwise, ask the user to choose before proceeding:
Quick - Proponent + Critic, opening statements only, Synthesizer verdict. (~3 agent calls)
Full - Proponent + Critic + Devil's Advocate, opening statements + one rebuttal round, Synthesizer verdict. (~7 agent calls, costs more)
Which mode? (quick / full)
Wait for the user's answer before continuing.
3. Confirm before full
If mode is --full (whether from the invocation or chosen in step 2), state:
- 3 participants, rebuttal round, Synthesizer - ~7 agent calls
- Ask the user to confirm before proceeding (one-line confirmation required).
4. Round 1 - opening statements
Spawn Proponent and Critic in parallel. In --full mode, also spawn Devil's Advocate
in the same parallel batch.
Each agent receives only this curated context (do NOT pass full conversation history):
Role brief: [role-specific paragraph below]
Topic: [exact topic text]
Domain context: [attached text or "none"]
Constraints (treat as fixed): [list or "none"]
Instructions:
- Write an opening statement of 300-400 words.
- Begin by steelmanning the strongest version of the opposing view in 2-3 sentences,
then explain why it ultimately does not hold.
- Use at least one concrete example or analogy.
- Avoid logical fallacies. Be direct.
- Do not hedge excessively or say "it depends" without specifying on what.
Role briefs to inject per agent:
Proponent: "You are arguing IN FAVOR of the topic. Your goal is to make the strongest
honest case for it. Do not mention downsides unless you are rebutting them."
Critic: "You are arguing AGAINST the topic. Your goal is to make the strongest honest
case against it. Do not concede advantages unless you are rebutting them."
Devil's Advocate (full mode only): "You are challenging both the Proponent and the
Critic. Your job is to expose weaknesses in both sides' reasoning, surface hidden
assumptions, and raise the question neither side is asking. You are not neutral -
you are adversarial toward weak arguments regardless of which side they come from."
Collect all opening statements. Present them to the user, labeled by role.
5. User interject point
After displaying opening statements, ask:
"Anything to add (new constraint, clarification, context) before rebuttals? Press
Enter / say 'continue' to proceed."
If the user adds something, incorporate it into the context passed in round 2.
In quick mode, skip directly to step 7 (Synthesizer) after this step.
6. Round 2 - rebuttals (--full only)
Spawn Proponent, Critic, and Devil's Advocate sequentially (each must read the others'
opening statements).
Each agent receives the same curated context as round 1, plus the full round 1 transcript
appended:
Round 1 transcript:
[all opening statements, labeled by role]
[If user added context in step 4, include it here as: "User added: ..."]
Instructions (rebuttal round):
- Write a rebuttal of 200-300 words.
- Address the single strongest argument made against your position.
- You may concede minor points if it strengthens your core argument.
- Do not repeat your opening statement.
Collect all rebuttals. Append them to the transcript under a "Round 2" heading.
7. Synthesize
Spawn a Synthesizer agent with the complete debate transcript. Context passed:
You are synthesizing a structured debate. You were not a participant.
Your job is to produce a fair, actionable verdict - not to pick a winner by fiat.
Debate transcript:
[full transcript, all rounds]
Constraints (treat as fixed): [list or "none"]
Domain context: [same as passed to participants]
Produce a verdict in this exact format:
## Debate verdict
**Strongest argument (Proponent):** [one sentence naming the argument and why it lands]
**Strongest argument (Critic):** [one sentence]
**Strongest argument (Devil's Advocate):** [one sentence - omit if quick mode]
**Key unresolved question:** [the single most important question neither side resolved]
**Recommendation:** [one of: "Strong case for X", "Lean toward X", "Genuinely uncertain"]
**Reasoning:** [2-3 sentences explaining the recommendation, citing specific arguments]
**If genuinely uncertain:** state what information would break the tie.
If the debate reveals strong consensus across all participants (rare), the Synthesizer
may declare "Strong consensus toward X" instead of forcing a recommendation.
8. Present
Show the full debate transcript (labeled by role and round) followed by the Synthesizer's
verdict block. Do not editorialize beyond what the Synthesizer returned.
Guardrails
- Never pass full conversation history to agents. Pass only the curated context
defined in each step. This prevents role contamination and reduces noise.
- Cap quick mode at 3 agent spawns (Proponent + Critic + Synthesizer). Cap full mode
at 7. Do not add more participants without explicit user request.
- Require confirmation before
--full - it costs ~4x more than quick mode.
- Do not force disagreement. If participants genuinely converge, the Synthesizer
should say so rather than inventing conflict.
- Enforce the steelman requirement. If an agent's opening ignores the opposing view
entirely, note this in the transcript and do not silently let it pass.
- Do not debate harmful, illegal, or purely subjective taste topics. For genuinely
subjective preferences (color choices, naming), redirect the user to
$code-review or
just answer directly.
- Domain context is optional but valuable. If the topic is technical and no context
was provided, offer once: "Want me to read a file or snippet before starting?" Do not
ask again if the user declines.
- Constraints passed by the user are not debatable. Agents must treat them as fixed
givens and argue within them, not around them.