Skip to content
Back to skills

Falsify First

ASecurity

Tries to break a claim, invariant or measurement with a concrete counterexample. Use before it enters a plan, a design or a gate, or before a high-risk number, root cause or coverage claim enters a report.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 5, 2026
development

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 5, 2026

npx -y skills add niksavis/handily --skill falsify-first --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Falsify First?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Falsify First
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/niksavis-falsify-first/badge)](https://www.skillsdirectory.com/skills/niksavis-falsify-first)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: falsify-first
description: Tries to break a claim, invariant or measurement with a concrete counterexample. Use before it enters a plan, a design or a gate, or before a high-risk number, root cause or coverage claim enters a report.
---
<!-- Generated by `basicly skills-build` from skill.yaml. Do not edit; edit the source. -->

# Falsify First

Before you argue for a claim, try to make it false. A claim that nobody attacked is not evidence.

## Rules

- **Search for the counterexample before you defend the claim.** A failed candidate shows the shape of the correct one.
- **When the claim breaks, find the precondition that carried the weight.** A patch that makes it pass hides the cause.
- **Split a precondition that does two jobs, and attack each half alone.** A double-duty condition is the most frequent hidden cause.
- **Measure the baseline of a claim about a difference first.** "X is present where it should not be" is false when X is already present by another route.
- **Exclude the instrument from its own population.** A probe that counts its own definition agrees with itself and proves nothing.
- **State what measured a number and where it ran.** A swapped instrument or a wrong tree gives a wrong number with no symptom.
- **Never report a manual search as a proof.** Write "attacked this way, did not break" and name the way.
- **Derive a high-risk number by two paths that share no calculation step.** When they disagree, investigate the instrument first.
- **When two causes predict the same result, change the probe until they differ.** One fact against a cause does not prove another.
- **For a claim of complete coverage, name the list that the code reads.** A general mechanism does not prove which items it covers.
- **Before you retire a source system, account for every original file.** A check of what the import carried cannot see a file that the import never read.

## Runbook

1. **State the claim so it can be false.** Name the observation that refutes it. If you cannot name one, you have a preference. Sharpen it into a claim first.
2. **Pick the cheapest oracle that can say no.** From cheapest to most expensive:
   - run it;
   - a property test over generated inputs;
   - a set of adversarial inputs that you build by hand;
   - a second implementation;
   - a type checker or a contract checker.
3. **Search, do not sample for confirmation.** Bias the inputs toward the boundary, the degenerate case, the empty case and the case the author finds inconvenient.
4. **When it breaks, read the counterexample.** The precondition that carried the weight is usually visible in it.
5. **Stop on a survivor and record the attack.** "Survived N generated cases and these three adversaries" is evidence. "I could not find a counterexample" is not.

## Build the adversary from the failure

When an analysis finds a mechanism by which the claim can fail, make that mechanism the next test case. Write it down while you have it. A generic fixture set is weak.

When no cheap oracle exists, name the input that would falsify the claim and look for it by hand. Say in the deliverable that the search was manual and what it covered.

## Measurements and third-party projects

- Before a number, a difference or a coverage figure enters a decision, read [measurement](references/measurement.md): baselines, excluding the instrument, pinning the tree, and the limits of this method.
- Before a document recommends a third-party project, read [third-party](references/third-party.md).

Files in this skill

  • SKILL.md3.4 KB
  • references/measurement.md2 KB
  • references/third-party.md728 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.