Stress-test an unwritten idea or decision by spawning independent subagents in genuinely OPPOSING roles (advocate, skeptic, migration/risk) rather than complementary review lenses — grounded in real repo investigation, not assumption, and concluding in a synthesized verdict rather than a list of opinions. Use for "should we do X", "what are the pros and cons", "I need pushback", "collegial review", "second opinion on this decision" — BEFORE a plan exists. NOT for reviewing an already-written plan file (use plan-review) and NOT for refining a vague question through dialogue with the user (use socratic-method).
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Decide whether to do something — before writing a plan for it — by making independent subagents genuinely disagree, not politely converge. The value isn't in getting three opinions; it's in the friction between them, and in a final verdict that says which argument actually held up.
plan-review instead)context-file skill, to persist the verdict as a findingplan-create skill, as the next step if the verdict is "proceed"plan-reviewsocratic-method firstWrite it as a yes/no or A-vs-B choice, not a vague topic.
UNLESS you already have hard numbers, ALWAYS investigate first: current scale, who consumes the thing in question, what a proposed change would actually touch.
wc -l path/to/thing/in/question
grep -rl "the/consumer/pattern" . | wc -lThis confirms the actual size and blast radius before anyone argues about it — an ungrounded debate produces confident conclusions built on guessed facts.
Every reviewer gets the same decision, the same grounding facts, and any candidate designs already on the table — differences in conclusions must come from role, not information.
PREFER two roles (Advocate, Skeptic) as the minimum for real tension. ALWAYS add a Migration/Risk role when the change touches multiple files or downstream consumers. See references/role-design.md for the full role table and sample instructions.
BY DEFAULT, diverse models catch different blind spots — see plan-review's model
routing guidance for environment-specific pairs. A single model is acceptable for
lower-stakes debates; the role framing alone still produces more tension than one pass.
# single message, N parallel Agent/Task calls — never sequential
# each call gets the identical brief plus its own role instruction# wrong: spawn advocate -> wait -> spawn skeptic -> wait
# right: spawn advocate + skeptic (+ migration_risk) in one messageThis produces both reviews in the time of the slowest single one, not their sum.
Never spawn sequentially — that triples wall-clock time for no benefit, since the reviews are fully independent.
The step most likely to be skipped under time pressure, and the one that matters most:
proceed, do_not_proceed_for_now, or
proceed_with_modification. "It depends" is only acceptable when the brief genuinely
lacked a fact needed to decide; if so, name exactly which fact.do_not_proceed_for_now, ALWAYS name a concrete revisit trigger —
"revisit if X crosses N", never "revisit later".Run the validation script to check the verdict conforms to schema:
./scripts/validate-debate-verdict.sh path/to/verdict.yaml
# expected: OK: 1 file(s) validated against debate-verdict schemaA missing revisit_trigger on a do_not_proceed_for_now verdict produces this instead:
Debate verdict validation errors:
path/to/verdict.yaml: verdict 'do_not_proceed_for_now' must set 'revisit_trigger' ...This confirms the verdict is complete before it ships or gets persisted.
ALWAYS persist the outcome and ALWAYS ask explicitly before doing so — never decide
silently, and never skip recording just because the main question got resolved. A
verdict discussed and then left only in chat is the same failure mode session-reflection
exists to prevent — RECOMMENDED is not the same as done.
Which artifact is a rule of thumb, not a free choice: if it's an issue that won't be fixed, it's a known-issue; otherwise, it's a finding. Record either way.
proceed or proceed_with_modification — something is being acted on.
Use context-file to write a finding capturing the decision, the grounding facts,
and why the losing arguments didn't hold up.do_not_proceed_for_now — this is, by definition, a real issue being
consciously left unfixed. Use context-file's KNOWN_ISSUE type
(severity: CRITICAL|HIGH|MEDIUM|LOW) instead of a finding, with the revisit trigger
from Step 7 as its eventual fix condition.proceed verdict — that
specific gap is its own known-issue, independent of how the main decision gets recorded../scripts/validate-context-frontmatter.sh <path-to-finding>
# confirms that the finding's frontmatter is valid before it's committedIf the verdict reveals a binding architectural decision, use adr-capture too.
If the verdict is proceed, use plan-create next with the debate's grounding facts and
chosen design as input — do not re-derive them from scratch.
NEVER assign all reviewers a "balanced/neutral" framing. WHY: Neutral reviewers converge toward consensus, which reads as validation but is just multiple copies of the same unopposed take. GOOD: Assign explicit, opposing stances (Step 4).
NEVER skip Step 2 and let reviewers debate from assumption. WHY: An ungrounded debate produces confident conclusions built on guessed facts. GOOD: Investigate real numbers/consumers first; put them in the brief.
NEVER present raw reviewer output as the final answer. WHY: Opinions without a synthesized verdict push the actual decision back onto the user — the work this skill exists to do. GOOD: A verdict that names which argument won and what to do next (Step 7).
NEVER let a "not now" verdict omit a revisit trigger. WHY: "Not now" with no trigger silently becomes "never" by default. GOOD: Name a concrete, checkable condition (Step 7).
| Situation | Response |
|---|---|
| All reviewers agree | Not a bug — the facts favor one side. Note this in the synthesis; apply forced disagreement only when the brief genuinely supports more than one reading. |
| A reviewer's argument rests on an unverified claim | Verify it yourself before weighting it — an adversarial role doesn't exempt a reviewer from being wrong. |
| The decision needs facts the brief lacked | Say so in the verdict; name exactly what's missing rather than guessing. |
| User wants to act on "proceed" immediately | Hand off to plan-create, skip re-deriving facts (Step 9). |
| Artifact | Template | Schema | Validation Script |
|---|---|---|---|
| Debate Verdict | assets/templates/debate-verdict.yaml | assets/schemas/debate-verdict.schema.json | scripts/validate-debate-verdict.sh |
| Topic | Reference | When to Use |
|---|---|---|
| Full role table, sample role instructions, why not to reuse plan-review's lenses | Role Design | Assigning roles (Step 4) |
| A real worked debate end to end | Worked Example | Seeing grounding, roles, and synthesis together |
a1083f4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.