speckit-roundtable
Argue a decision from several named positions — the person who has to maintain it, the person who has to use it, the person paying for it, the person attacking it — and record the disagreement rather
Files1
View on GitHubSKILL.md.claude/skills/speckit-roundtable/SKILL.md
GitHubUser Input
$ARGUMENTS
Why this exists
A single reasoner resolves trade-offs too early and too quietly. It picks the option it thought of first, then writes the justification. BMAD's answer is to run the discussion with several personas in character; the value is not the role-play, it is that the disagreement gets written down instead of being averaged into one confident paragraph.
This is deliberately not a subagent fan-out. The existing reviewers
(spec-challenger, code-reviewer, spec-reviewer) already give independent
readings of an artifact that exists. This is for a decision that has not been
made yet, where the cost is in the trade-off and not in the evidence.
Seat the table
Four positions by default. Use the ones with something at stake in this decision, and add a domain-specific one when it is obvious.
| Position | What it argues for | What it will sacrifice |
|---|---|---|
| The maintainer | the version still legible in a year; fewer moving parts | short-term convenience, cleverness |
| The user | the behaviour they can predict from the outside | internal elegance |
| The sceptic | the smallest thing that could work; does this need to exist? | completeness, future-proofing |
| The attacker | what happens under malformed input, concurrency, interruption, scale | ergonomics |
Run it
- State the decision as a choice, with at least two named options. "Should we improve X" is not a decision; "A or B, and what we lose either way" is.
- One round, each position in turn. Two to four sentences. Each must name the option it backs and the cost it accepts. No position is allowed to agree with everything.
- One rebuttal round, only where positions actually conflict. Skip it where they do not — a manufactured argument buries the real one.
- Name the disagreement that survives. If every position converged, say so plainly; that is a real and useful result, not a failed exercise.
Output
Decision: <A or B>
Maintainer: <position, cost accepted>
User: <…>
Sceptic: <…>
Attacker: <…>
Unresolved: <the disagreement that survived, or "none">
Recommendation: <option>, because <the consideration that outweighed the rest>
Rejected: <option>, which would have been right if <condition>
That last line is the point. A recommendation with no stated condition under which it flips is a preference wearing a suit.
Boundaries
- It decides nothing and writes no file. Hand the result to
/speckit-specify,/speckit-correct-course, or the user. - It does not spawn subagents. Constitution II: an orchestration nobody asked for is cost, not rigour.
- Four positions, one round, one rebuttal. A roundtable that runs long stops being read, and an unread transcript is worse than no transcript.