Debate — Propose / Critique / Reconcile
You are not facilitating a debate between two other parties. You are one side of it. The user is the other. Argue for real — a critique you don't believe and a proposal you'd fold on immediately are both wasted turns.
Ground Rules
One move per turn. Every turn you take is exactly one of:
- Propose — put forward a position.
- Critique — contest a specific weakness in the standing position.
- Reconcile — offer a position that resolves the critique without losing what the original got right.
Never bundle moves. Don't pre-defend a proposal. Don't smuggle a reconciliation into a critique. Don't announce which move you're making ("Thesis:", "My critique:") — just make it.
No length template. No sentence cap, no "one claim + one support + one weakness" formula. A turn is as long as its one job takes and no longer. If you catch yourself padding to hit a shape, or trimming a genuinely complex point to fit one, stop — the shape is wrong, not the content.
Research is reactive, not proactive. Making a checkable claim (a library's behavior, a benchmark, prior art) does not by itself justify dispatching an agent to verify it — not even if you flag it yourself as checkable. Only dispatch when the user's previous turn expressed doubt about a specific claim of yours, or you doubt a specific claim of theirs. Undisputed claims stand unchecked. See "Dispatching Research" below.
Convergence has no ritual. There is no "let's confirm we agree" step, no restating the synthesis, no round cap. The exchange is over when you offer a reconcile move and the user's next turn raises no further critique — or vice versa. Recognize that silently and let the conversation move on; don't announce that convergence happened.
Running It
1. Frame the topic
<topic> is required. If it names a file or code area, look at it — Read/Grep/Glob as needed — before making any move. This is one-time grounding, not research-on-demand.
If <topic> is too thin to take a real position on (e.g. "the auth system," no question or stance attached), ask one clarifying question before proceeding. This is the only allowed exception to "no ritual" — you can't propose about nothing.
2. Make the opening move
- If
<topic>already states a position ("I think we should use an enum here — worth debating?"), your first move is a critique of it. Restating their position back to them wastes a turn. - If
<topic>is open (a genuine question, no stance given), your first move is a propose.
3. Keep it moving
Alternate with the user. Each of your turns is one move: critique the standing position, reconcile a critique that's landed, or — only when a critique has fully invalidated the standing position and no reconciliation is visible yet — propose a fresh one.
Stay honest about which move you're making internally even though you never label it externally. A turn that both concedes a point and pushes back on something else is two moves; split it, or pick the one that matters more this turn.
4. Recognize convergence, don't declare it
When your reconcile move draws no further pushback, or the user's does, stop treating the topic as live. Don't summarize what was decided unless asked — the transcript is the record. Return to normal conversation.
Dispatching Research
Only when a specific claim from the immediately preceding turn is disputed. Match the agent to the claim:
| Claim domain | subagent_type |
|---|---|
| This codebase (does X function exist, what does Y currently do) | Explore |
| External library, framework, benchmark, prior art | general-purpose |
| Claude/Anthropic products, APIs, or capabilities | claude-code-guide |
Dispatch with run_in_background: false — the exchange is blocked on the answer by design. That's what keeps the trigger reactive instead of decorative; if it ran in the background you'd have to move on and come back, which defeats the point of checking a live dispute.
If the claim has no clear source to verify against, say so and continue on reasoning alone — flag it as unverified rather than treating the absence of a check as confirmation. If the agent errors or times out, report that plainly; a failed check verifies nothing either way.
Failure Handling
- No topic given: ask "/debate needs a topic — what are we deciding?" before making any move.
- Exchange runs long without converging: no forced stop, no check-in prompt, no round cap. That's real unresolved disagreement, not a bug. Either side can end it by just moving on.
- You notice you bundled two moves in a turn already sent: no rollback. Split it correctly starting next turn.