hypothesis-comparison
Compare rival explanations for an observation with analysis of competing hypotheses (ACH) — list the hypotheses and the evidence, build a consistency matrix (consistent / inconsistent / neutral), rank hypotheses by how little evidence contradicts them rather than how much supports them, name the diagnostic evidence and the linchpins, and say which next observation would tell the leaders apart. Use when the user asks "why did X happen", "which explanation fits the evidence", "what's really causing this", wants to stop arguing over a favourite theory, or says "compare these hypotheses", "competing explanations", "ACH".
Other ways to install
With the sibling skills it hands off to:
The whole pack it belongs to:
By hand, from a clone of the repo:
In Claude Code, with the research plugin installed, invoke it as:
Try it
A realistic prompt from the skill's acceptance evals:
Acme's monthly churn on the Starter plan went from 2.1% in July to 3.4% in August. Theories: the price rise from $19 to $24 on 1 Aug, a new competitor (Northwind Lite) launching in late July, or the onboarding email sequence that broke on 20 Jul. Evidence: churn rose on monthly and annual-renewal customers alike; cancellation survey 'too expensive' share went from 30% to 32%; customers who signed up after 20 Jul churn at 5.8%, older cohorts at 2.4%; win-back calls mention Northwind Lite twice out of 40. Which explanation fits best and what should we check next?
What a good result looks like
Example output
why did Northwind's mobile checkout conversion drop? · the skill's own worked example, source
Our checkout conversion dropped about 18% starting Tuesday 8 Sep and everyone has a theory. Engineering says it's seasonal, marketing thinks Contoso's 20%-off promo (launched 1 Sep) is pulling people away, and I suspect the checkout release we shipped Monday 7 Sep at 22:00. What we know:
- last September we never saw a dip bigger than 3%
- sessions and add-to-cart are flat week on week
- it's only mobile Safari; desktop and Android look normal
- the payment provider's dashboard shows settled orders down 17% for the same days
- support tickets about "card declined" or "button not working" doubled since the 8th
- the tag manager container was also republished on the 7th
- our synthetic checkout test on iOS Safari has passed on every run since the release
Which explanation actually fits?
Output
Competing hypotheses: Northwind mobile checkout conversion drop
Prepared 2026-09-15 · Evidence as of 14 Sep · Method: analysis of competing hypotheses
Observation
Checkout conversion fell about 18% from Tue 8 Sep, on mobile Safari only.
Assumptions to confirm first
- [assumption] "Conversion" means orders ÷ sessions in the web analytics tool, the same definition used last September.
- [assumption] The payment dashboard counts orders by settlement date, so its 17% fall covers the same days as the conversion drop.
- [assumption] The Safari-only split comes from the order records, not only from the analytics tag. If it comes from the tag, E4 says nothing about H4.
Hypotheses
| Id | Hypothesis | Could be true alongside |
|---|---|---|
| H1 | The 7 Sep checkout release broke payment for some iOS Safari users | H3 |
| H2 | It's a normal seasonal dip | H3 |
| H3 | Contoso's promotion is taking buyers who would have checked out with us | H1, H2 |
| H4 | Nothing changed for customers; the 7 Sep tag manager change broke conversion tracking | none |
H4 is the measurement hypothesis. Nobody had raised it, but the tag manager change on the same day makes it a real rival.
Evidence and matrix
Rated row by row. Weights: E4 is 2 because a pattern this specific (one browser on one platform) is hard to produce by chance; E6 is 0.5 because a promotion's existence says little about who it affects.
| Id | Evidence | Weight | H1 | H2 | H3 | H4 | Diagnostic? |
|---|---|---|---|---|---|---|---|
| E1 | Fall starts Tue 8 Sep; release went out Mon 7 Sep 22:00 | 1 | C | N | N | C | no |
| E2 | Last September never dipped more than 3% | 1 | N | II | N | N | yes |
| E3 | Sessions and add-to-cart flat week on week | 1 | C | I | I | C | yes |
| E4 | Drop on mobile Safari only | 2 | C | I | I | N | yes |
| E5 | Payment provider: settled orders down 17% | 1 | C | C | C | II | yes |
| E6 | Contoso promo launched 1 Sep | 0.5 | N | N | C | N | no |
| E7 | "Card declined" / "button not working" tickets doubled | 1 | C | N | I | I | yes |
| E8 | Tag manager container republished 7 Sep | 1 | N | N | N | C | no |
| E9 | Synthetic iOS Safari checkout test passes every run | 1 | I | N | N | N | yes |
Ranking
Script output (python3 scripts/ach_matrix.py conversion-drop.csv), ranking section:
| Rank | Hypothesis | Inconsistency score | I | II | C or CC |
|---|---|---|---|---|---|
| 1 | H1 checkout release | 1 | 1 | 0 | 5 |
| 2 | H4 tracking change | 3 | 1 | 1 | 3 |
| 3 | H3 competitor promo | 4 | 3 | 0 | 2 |
| 4 | H2 seasonal dip | 5 | 2 | 1 | 1 |
**Least contradicted:** H1 checkout release (score 1), 2 ahead of H4 tracking change.
What the ranking rests on
- Diagnostic evidence: E4 (Safari only) and E3 (flat traffic) count against the seasonal and promotion hypotheses, because both would hit every device and cut sessions. E2 rules out "seasonal" almost alone. E5 (real orders down) is the one row against the tracking hypothesis.
- Non-diagnostic, set aside: E1, E6 and E8. The timing (E1) is the reason the release feels guilty, but it fits the tracking change just as well. The script flags all three:
**Non-diagnostic:** E1, E6, E8. These count the same against every hypothesis, so they cannot help you choose. Keep them for completeness; don't cite them as support.
- Linchpin: E5. The script's sensitivity check:
- **E5** (Payment-provider dashboard shows settled orders down 17% for the same days): without it, first place is H1 checkout release and H4 tracking change (tie)
Everything that separates "customers are failing to pay" from "we stopped counting properly" rests on the payment dashboard. Confirm it matches the order database for 7–14 Sep before acting on this ranking.
Conclusion
H1, the checkout release, is the least contradicted explanation. Confidence: moderate, because the lead over H4 rests on one row (E5) that hasn't been cross-checked, and E9 counts against H1.
H2 and H3 can be dropped as main causes: each conflicts with the Safari-only pattern and the flat traffic. H3 can still be acting in the background at a small scale.
What would rule out each survivor:
- H1: iOS Safari payment errors flat across the release, in the payment SDK logs.
- H4: the order database agreeing with the payment dashboard that real orders fell 17%.
E9 is worth a look on its own: the synthetic test may not cover the path real users take (saved cards, Apple Pay), which would make it a weaker row than its weight of 1 suggests.
Next observation
| Check | H1 predicts | H4 predicts | Who | How long |
|---|---|---|---|---|
| iOS Safari payment SDK errors, 6–10 Sep, by hour | A step up after 22:00 on 7 Sep | No change | Payments engineering | Under an hour |
| Order database count vs payment dashboard, 7–14 Sep | Both down about 17% | Database flat, which means the payment dashboard is wrong too | Data team | Half a day |
Run the first check today. If it shows the step, roll back or hotfix the release and watch iOS Safari conversion for 48 hours.
How it's checked
Measured against plain Claude Code (2026-10-23): it met 69% of its checks, against 45% without it, and a blind judge preferred it. How skills are checked
21 assertions across 3 acceptance evals, and 8 trigger queries. Every skill's checks
What the output must do
When it should and shouldn't activate
Should activate:
- Our signup rate fell 25% last week and we have four theories. Which one does the evidence actually support?
- Run an analysis of competing hypotheses on why our API latency doubled after the migration
- Build a consistency matrix for these rival explanations of the churn spike and tell me which one survives
- The team keeps arguing about what caused the drop in NPS. Help me weigh the competing explanations against the evidence.
Should leave to another skill:
- Compare Snowflake, BigQuery and Databricks for our analytics platform and recommend one
- Do a SWOT on entering the Canadian market
- Summarise these five papers on remote work and productivity, with citations
- Critique this root-cause write-up before I send it to the VP
Hands off to
- research-plan — when the matrix has too little diagnostic evidence to separate the leading hypotheses. Plan how to collect the observation that discriminates between them.
Related skills
doc-critique, postmortem-generator, source-synthesis, strategy-analysis
Source
SKILL.md · the whole folder on GitHub.