← ClaudeAtlas

prove-a-procedure-on-a-fixturelisted

Use before claiming that a documented procedure's commands work: a skill, a runbook, a README whose steps a reader pastes into a terminal. Fires on "this handles renames and deletions", "the block is paste-and-run", "the step is fixed", and on answering any review finding about embedded shell. Do NOT fire for prose that ships no commands, for a check or a test (that is `prove-the-check-can-fail`), or where CI already runs the procedure against the same awkward cases on every push.
damson/hard-won-skills · ★ 1 · Testing & QA · score 67
Install: claude install-skill damson/hard-won-skills
# Prove a procedure on a fixture Documentation that ships commands is untested code with a readership. Nothing compiles it, no suite runs it, and its failures are silent in the worst direction: a step that errors is discovered immediately, while a step that answers *confidently and wrongly* is followed. Reading it is not verification. The reader is not going to read it; they are going to run it. A fixture is cheap, and it is the only thing that separates a procedure that works from one that reads as though it does. ## Procedure 1. **List the cases the text claims to handle, in its own words.** Quote the claim. "Classifies every dirty path" is a list: modified, deleted, renamed, untracked, already-landed. A claim you cannot turn into cases is too vague to verify, and that is itself the finding. 2. **Add the awkward cases the prose implies but never names.** These are where confident wrongness lives, and each one is a real defect found this way: | Shape | What it breaks | |---|---| | a path containing a space | quoting, and any `read` that splits on it | | a path beginning with `-` | every command that parses it as an option | | a symlink | tools that follow it and compare the wrong thing | | a binary file | line-based logic that reports zero differences | | a mode-only change | byte comparisons that call it unchanged | | an empty result | loops that treat "nothing" as "done" | 3. **Build one throwaway fixture holding all of them**, ou