# Debate

> Use this skill when the user wants to work through a design, code, or implementation decision by arguing it out, wants a second opinion pushed back on, or invokes '/debate'. Runs a fast, brief propose/critique/reconcile exchange between the user and Claude until they converge on a better idea.

- Skill: `collinthefarmer/debate` (Agent Skill)
- Install (CLI): `npx skillmds@latest add collinthefarmer/debate`
- Raw SKILL.md: https://api.skillmd.com/api/skills/collinthefarmer/debate/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: collinthefarmer (https://skillmd.com/u/collinthefarmer)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/collinthefarmer/debate

---


# 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.

