← ClaudeAtlas

mutation-testlisted

Proves a test actually checks something, by breaking the behaviour it claims to cover and confirming it goes red. Use when a test, fixture, assertion or guard has been reported as working and you want evidence rather than a green run, or to check a claim that some code is dead, unused or unreachable. Triggers on "mutation test", "mutation testing", "prove it fails", "are these tests real", "does this test actually assert anything", "is that assertion live", "did you verify it's not vacuous", "how do you know it's checking anything", or any claim that a test passes being offered as evidence the behaviour is correct. Also use it proactively before reporting harness or fixture work as done.
LunarCommand/claude-skills · ★ 1 · Testing & QA · score 67
Install: claude install-skill LunarCommand/claude-skills
# Mutation testing A green test run is the **null result**, not evidence. A dead assertion and a live one produce identical output, so "it passed" discriminates nothing. This skill establishes the one thing that does discriminate: **break the behaviour and watch it go red.** Work is not done when it passes. It is done when it has been seen to fail for the right reason. ## Scope, and what this version does not do This version runs **one claim at a time, by hand**. There is no batch runner, no coverage map, and no scripted scope resolution — see [Not in this version](#not-in-this-version). If you were handed a PR or a diff and asked whether it is pinned by its suite, say so plainly and pick the claims worth checking individually rather than implying a sweep happened. ## Rules - **Break the source, never the test.** Mutating the test proves only that the test tests itself. - **Never mutate test files.** - **Copy the file before you touch it, and restore from that copy.** Not from git. The files this skill is pointed at are usually the ones just written, so they hold uncommitted work — `git checkout`, `git restore` and `git stash` destroy it rather than restoring it. `cp <file> <file>.mtbak`, mutate, then `mv` it back. - **Mutate the file where the tests actually load it from — in place.** The tempting shortcut is to mutate a copy instead, so the real tree stays clean: a `git worktree`, a scratch checkout, a second clone. By default that does not work, and it