agentleFS
imMamdouhaboammarimMamdouhaboammar/get-fable/skills/fable-verify/SKILL.md

fable-verify

Skill6 starsChanged 3 months agoMITView on GitHub

Falsify software implementations and gather fresh, machine-checked acceptance proof across tests, builds, typechecks, and runtime smoke checks before completion. Use when running test suites, checking type correctness, validating acceptance criteria, or verifying post-mutation code integrity — even if the user does not explicitly say \"fable-verify\" (e.g. \"verify my changes\", \"run all tests and typecheck\", \"check if everything passes\", \"prove this works\"). Do NOT use for planning (use fable-plan) or diff code review (use fable-review).

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 12 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do not choose commands from habit alone.

    line 74
  2. Distinctive:

    Remove duplicate checks that prove the same narrow fact.

    line 89
  3. Distinctive:

    Start with the focused changed behavior and affected tests.

    line 92
  4. Very specific:

    Run broader typecheck/build/test/integration/E2E/package gates only where the change can affect them or where repository release policy …

    line 95
  5. Distinctive:

    Do not skip required project-wide gates merely because narrow tests pass.

    line 97
  6. Distinctive:

    Prefer tests/commands that can fail meaningfully over speculative prose.

    line 110
  7. Distinctive:

    If identical commands alternate outcomes, stop counting passes.

    line 113
  8. Distinctive:

    If results do not reflect known source changes, check source-vs-build, cache, branch, env, process, and artifact path before accepting …

    line 115
  9. Distinctive:

    PASS: every required claim has fresh relevant evidence.

    line 127
  10. Distinctive:

    Never convert INCOMPLETE to PASS because the remaining check is inconvenient.

    line 131
  11. Distinctive:

    Test passes but does not execute changed path → irrelevant evidence, not PASS.

    line 135
  12. Distinctive:

    If a command is unavailable in current environment, mark evidence incomplete and name the external gate instead of fabricating a result.

    line 142
  13. Distinctive:

    Every completion claim maps to fresh evidence.

    line 146

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Fable Verify

Try to prove the implementation wrong, then report only the claims that survive fresh evidence.

Mission

Verification is not "run the test suite." It is coverage of changed risk with evidence that is both relevant and fresh.

A green command proves only what it actually exercised. Build success does not prove runtime behavior. Security success does not prove functional correctness. Unit success does not prove a packaging or integration path. Old evidence does not prove a newer mutation.

Activate When

  • implementation or repair is ready for independent proof;
  • a completion claim needs fresh evidence;
  • a review/release gate requires test/build/runtime evidence;
  • stale evidence must be refreshed after mutation;
  • the suspected regression surface spans more than the focused TDD test.

Do Not Activate When

  • writing the implementation (fable-execute/fable-tdd);
  • deciding architecture (fable-plan);
  • reviewing design/maintainability from the diff (fable-review);
  • diagnosing repeated confusing failures (fable-recover).

Risk Classification

Map each changed surface to the evidence capable of falsifying it.

Changed surfaceTypical evidence
pure behaviorfocused unit/property + affected suite
cross-module contractintegration/contract test
public CLI/APIinvocation/smoke + contract tests
build/export/packagebuild + package/clean-install smoke
persistence/migrationintegration + migration/compatibility fixtures
async/concurrencydeterministic ordering/stress supplement
config/feature flagtests under relevant config branches
browser/UIcomponent/integration/E2E as appropriate
security boundarysecurity-specific checks plus functional evidence
performance-sensitive pathtargeted measurement when requirement exists

Verification Protocol

Stage 1 — Read the diff and execution packet

Do not choose commands from habit alone. Identify:

  • behavior changed;
  • files/contracts touched;
  • tests added/changed;
  • generated/package/config surfaces;
  • residual risks from implementation;
  • current mutation generation.

Stage 2 — Build a verification matrix

For each material risk, write:

  • claim;
  • failure mode;
  • evidence/command that would catch it;
  • whether evidence must be narrow, integration, runtime, build, E2E, security, or package-level.

Remove duplicate checks that prove the same narrow fact; add missing checks for untested surfaces.

Stage 3 — Run narrow, causal checks first

Start with the focused changed behavior and affected tests. Fast local evidence helps distinguish implementation failure from unrelated suite noise.

Stage 4 — Expand according to blast radius

Run broader typecheck/build/test/integration/E2E/package gates only where the change can affect them or where repository release policy requires them.

Do not skip required project-wide gates merely because narrow tests pass.

Stage 5 — Adversarial falsification

Actively probe the most plausible regression surfaces:

  • boundary/empty/invalid inputs;
  • error propagation;
  • retries/idempotency;
  • compatibility old/new formats;
  • async ordering/concurrency;
  • cleanup/resource lifecycle;
  • package/export/runtime entry point;
  • configuration branch.

Prefer tests/commands that can fail meaningfully over speculative prose.

Stage 6 — Detect nondeterminism and stale execution

If identical commands alternate outcomes, stop counting passes. Capture the variability and route to recovery.

If results do not reflect known source changes, check source-vs-build, cache, branch, env, process, and artifact path before accepting output.

Stage 7 — Record typed, fresh evidence

Evidence should include:

  • kind (test, build, runtime, review, security where applicable);
  • exact command/probe;
  • exit/result and relevant counts;
  • mutation generation/artifact SHA when available;
  • scope/claim the evidence proves.

Stage 8 — State the verdict narrowly

Use:

  • PASS: every required claim has fresh relevant evidence;
  • FAIL: at least one required claim is falsified;
  • INCOMPLETE: required evidence cannot be obtained or does not cover the risk.

Never convert INCOMPLETE to PASS because the remaining check is inconvenient.

Decision Rules

  • Evidence generation older than current relevant mutation → stale, rerun.
  • Test passes but does not execute changed path → irrelevant evidence, not PASS.
  • Security-only evidence for functional bug → require functional proof.
  • Build/typecheck-only evidence for runtime behavior → require runtime/test proof.
  • Focused test green but integration contract changed → run integration/contract evidence.
  • Package/export change → inspect/package/smoke the distributed artifact, not only source tests.
  • Flaky alternating outcomes → route to fable-recover; do not cherry-pick a green run.
  • New verification failure caused by a bounded obvious implementation defect → return one repair card; repeated/ambiguous failure → recover.
  • If a command is unavailable in current environment, mark evidence incomplete and name the external gate instead of fabricating a result.

Invariants

  • Verification is read-only with respect to product behavior; any repair starts a new mutation/evidence cycle.
  • Every completion claim maps to fresh evidence.
  • Evidence kinds are not interchangeable.
  • The final verdict covers the current mutation generation/artifact.
  • Required failures/warnings are not hidden by truncating output or rerunning until green.

Failure Taxonomy

Relevant test failure

Changed behavior is falsified. Return bounded repair or recover depending on clarity/repetition.

Unrelated suite failure

Prove it is unrelated before excluding it; do not dismiss merely because it predates the change.

Stale evidence/artifact

Output corresponds to older mutation/build. Refresh build/path/env before evaluating implementation.

Nondeterministic verification

Same state produces inconsistent result. Diagnose shared state/timing/environment before verdict.

Coverage gap

Available checks do not exercise material changed risk. Add/locate suitable evidence or mark incomplete.

Environment limitation

Required external service/browser/platform/release environment unavailable. Report exact missing evidence; do not emulate a pass.

Anti-Patterns

  • tests passed as the entire verification report;
  • running only tests the implementer just wrote;
  • rerunning flaky tests until green;
  • trusting old screenshots/logs after code changed;
  • treating typecheck/build/security as functional proof;
  • ignoring packaging/export paths;
  • broad full-suite runs with no affected-risk reasoning;
  • claiming pass when an external required gate was never run.

Verification Packet

Current mutation/artifact:
Changed risks:
Verification matrix:
- claim → evidence → result
Adversarial probes:
Stale/nondeterministic evidence detected:
Required external evidence not run:
Verdict: PASS | FAIL | INCOMPLETE
Repair/recovery recommendation:

Completion Criteria

Verification completes when:

  • changed risks have relevant checks;
  • required project gates are executed or explicitly marked unavailable;
  • evidence is fresh for current mutation/artifact;
  • likely edge/failure surfaces were actively probed;
  • nondeterminism/stale output is not hidden;
  • verdict is no broader than the evidence supports.

Progressive Resources

  • Deep matrix guide: references/verification-matrix-and-evidence-strength.md
  • Existing falsification heuristics: references/falsification-heuristics.md
  • Evidence recording: references/evidence-recording.md
  • Example: examples/falsification-session.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.