When a symptom has several plausible causes, rank falsifiable hypotheses and run the cheapest discriminating observation first; prefer least-assumptive survivors only after evidence fit.
SkillScore95Maintained
On-demandOn-demand: invoked explicitly — never occupies your agent's context until called.
◆Coding pack
Last verified 8/14/2026
What it changes
Passed 21 of 22 test cases with the skill, and 17 of 22 without it.
Without skill77%
With skill95%
Checks it passed that the model alone missed
Rejects H1 and H2 due to lack of specific component or code mechanism detail
Directly resolves the missing dependency without generating extra hypotheses
Exits the hypothesis differential and directly fixes the missing billing address key bug
and 1 more in the full report
4 fixed17 passed either way1 still failing0 broke
Pass-rate lift
+18 pp
Tokens
+22%
Agent turns
0%
Response time
-28%
Model gemini-3.6-flashMeasured 8/14/2026v921 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 4
Prompt
We suspect `config/database.yml` max_connections setting is too low for the worker pool size in `sidekiq.yml`. Before querying pg_stat_activity, what explicit condition must be defined regarding the query result?
What was checked, without and with the skill
Checked
Without skill
With skill
Defines the explicit threshold or query result in pg_stat_activity that rules out the connection limit hypothesis prior to execution
Missed
Passed
case-07 · gemini-3.6-flash · 8/14/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md50 linessingle file
Scientific Method (Hypothesis Differential)
When a symptom could come from several places, enumerate competing falsifiable hypotheses and spend the cheapest observation on the one that best discriminates among them. After each observation, keep only hypotheses that still fit, then prefer the survivor with the fewest unsupported assumptions as the working explanation.
When to Use
A bug, incident, or anomaly has more than one plausible cause.
You can observe code, logs, diffs, traces, tests, configs, or data now.
You must localize the faulty file, function, branch, config, or invariant before fixing.
Competing explanations fit the same surface facts and you need a discriminating check.
When NOT to Use
Cause is already obvious from a single stack, failing test, or recent diff — fix directly.
Only one plausible hypothesis exists — test it; do not invent rivals for ritual.
No observation is possible yet — obtain access first; do not speculate a localization.
Multi-week experiments, product A/B tests, or policy trials — this skill is for agent-now checks.
Fault is already localized and you need systemic root/prevention depth — use five-whys-plus.
Selective "only these objects/times" defects better suited to IS/IS-NOT comparison — use Kepner-Tregoe.
Representation (doc/dashboard) may be stale versus reality — verify territory with map-territory first, then resume hypotheses.
Procedure
State the symptom precisely. Capture failing behavior, scope, timing, environment, and constraints. Separate observation from interpretation.
Enumerate 2–5 competing hypotheses. Name specific files, functions, configs, input conditions, or invariants. Reject vague buckets ("backend issue"). If no serious alternative remains after a deliberate check, exit this differential and test or fix the sole evidenced cause directly; never fabricate a rival to continue the procedure. Before ranking hypotheses, map each plausible file to its runtime responsibility; favor the implementation owner whose module role owns the failed behavior over a facade, caller, wrapper, test, or compatibility layer unless direct evidence points elsewhere.
Name falsifiers and cheap observations before looking. For each hypothesis: what result drops it, and what read/grep/diff/log/test check can you run now. Prefer observations available immediately over deploys, canaries, or long waits.
Rank observations by discrimination × cheapness. Run the cheapest check that best separates the top contenders. Do not deep-dive the favorite first if a cheap cross-check would kill alternatives.
Update after each observation. Drop falsified hypotheses. Among survivors that still fit all evidence, prefer the one with the fewest independent unsupported assumptions (extra components, rare timing, external dependencies). Parsimony ranks survivors after fit; it never rescues a leaner hypothesis that evidence already contradicts. Escalate complexity only when simpler survivors are ruled out.
Localize and stop. When one hypothesis has direct supporting evidence and key alternatives are ruled out, name the file/function/config to change and the evidence that localizes it. Stop analyzing once localization is direct.
When behavior is emergent across components—fixes elsewhere break, loops/delays dominate—map boundary, stocks/flows, feedback, archetypes, then rank leverage.