name: hypothesis-tester description: "Run a structured multi-position debate over an analytical question, spawning sub-agents to argue each option and counter confirmation bias. Use when comparing options or tradeoffs — 'which is better', 'should we', 'what's the risk', 'evaluate', 'compare options'." category: research maturity: stable tags: [debate, tradeoff-analysis, subagents, synthesis, decision-support]
Hypothesis Tester Skill
Use when: the user asks an analytical question with multiple valid answers, tradeoffs between options, or when you want to avoid confirmation bias in your analysis.
Trigger phrases: "which is better", "compare options", "what's the risk", "tradeoffs", "should we", "evaluate", "debate"
Workflow
1. Create debate session
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/new-debate.cjs \
--question "Full question here" \
--positions "option-a,option-b,option-c" \
[--context "Relevant context: metrics, constraints, goals"]
2. Spawn sub-agents (using sessions_spawn / subagents tool)
Read the output from step 1. For each position:
- Read the prompt file content:
cat ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/sessions/<id>/prompt-<position>.md - Use the subagent spawning mechanism with that content as the task
- Sub-agent will write its analysis to the output file automatically
subagents.spawn(
task="[content of prompt file]",
model="anthropic/claude-sonnet-4-6",
label="debate-<session>-<position>"
)
Note: Kite must do this step in-session (scripts cannot spawn sub-agents).
3. After all sub-agents complete, synthesize
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/synthesize.cjs --session <id> --send
Commands
| Command | Purpose |
|---|---|
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/new-debate.cjs --question "..." --positions "a,b,c" |
Start a new debate |
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/list-debates.cjs |
List all sessions |
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/synthesize.cjs --session <id> |
Synthesize results |
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/synthesize.cjs --session <id> --send |
Synthesize + send to Telegram |
node ${HYPOTHESIS_TESTER_HOME:-$HOME/projects/hypothesis-tester}/add-position.cjs --session <id> --position <slug> --file <path> |
Manually add a position |
Reports saved to
~/workspace/reports/debate-<id>.md
Model recommendation
- Balanced (sonnet): Most debates, general tradeoff analysis
- Powerful (opus): High-stakes decisions, complex technical choices
Position naming
Use kebab-case: freemium, flat-subscription, build-in-house, use-existing-api
Tips
- 2 positions minimum, 3–5 is ideal. More than 6 gets hard to synthesize.
- Include
--contextwith real numbers/constraints — sub-agents use this to make specific arguments. - The synthesizer works with partial results — if a sub-agent fails, synthesize what you have.
- Self-ratings in position files drive the TL;DR verdict. Sub-agents should include
## Self-Rating: X/10 — [reason]at the end.