Honest-tests – detect fake tests and prove them with mutation testing Mintwork released honest-tests, an agent skill and CLI distributed as @mintwork/honest-tests, that audits test files for assertions which cannot fail and runs built-in mutation testing to prove which tests are fake. In the tool's demo, an audit of a 10-test pricing file flagged 7 errors and 2 warnings, and mutation testing of src/pricing.ts reported a 15.4% mutation score with 22 of 26 mutants surviving; after the tests were rewritten, the same commands reported no fake tests and a 100% mutation score with 26 of 26 mutants killed. The tool targets agents including Claude Code, Codex and Cursor, and is installed via npx or as a plugin from the mintwork/honest-tests marketplace. honest-tests is an agent skill + CLI that stops Claude Code, Codex, Cursor and friends from writing fake tests — and proves which of your existing tests are fake by mutating your code and watching them stay green. npx @mintwork/honest-tests audit . find tests that can't fail npx @mintwork/honest-tests mutate src/pricing.ts prove it: break the code, see who notices Ask an agent to "add tests" and you get a wall of green checkmarks. Look closer: js it 'handles multiple items', = { const result = subtotal items ; expect result .toBe result ; // compares a value to itself } ; it 'applies a percentage discount', = { applyDiscount 100, 10 ; // no assertion at all } ; it 'computes the discounted price', = { try { expect applyDiscount 100, 20 .toBe 70 ; // WRONG it's 80 — and still passes } catch {} } ; it 'gives members free shipping', = { const qualifies = vi.fn .mockReturnValue true ; expect qualifies 10, true .toBe true ; // tests the mock it just configured } ; Every one of these passes. Coverage goes up. Nothing is verified. bash $ npx @mintwork/honest-tests audit test/pricing.test.ts test/pricing.test.ts 16:5 error Compares result to itself — this can never fail. tautological-assertion │ expect result .toBe result ; 25:1 error Test "applies a percentage discount" has no assertions — it can only fail by crashing. no-assertions │ it 'applies a percentage discount', = { 39:7 error Assertion is inside a try/catch that swallows errors — when it fails, the catch eats the AssertionError and the test passes. swallowed-assertion │ expect applyDiscount 100, 20 .toBe 70 ; // wrong but the catch hides it 53:5 error Asserts on what mock qualifies returns configured on line 52 — this verifies the mock, not your code. asserts-on-mock │ expect qualifies 10, true .toBe true ; ... 5 more 7 of 10 tests can't fail or don't test what they claim . 1 file, 10 tests: 7 errors, 2 warnings. Run with --verbose for fixes. Then the killer demo — mutation testing, built in . honest-tests flips operators, booleans, constants and return values in your source on a temp copy , runs your tests, and shows every change nobody noticed: bash $ npx @mintwork/honest-tests mutate src/pricing.ts 22 mutants survived — your tests don't actually check these lines: src/pricing.ts:15 if percent < 0 || percent 100 { ✗ < → <= ✗ || → && ✗ → = ✗ 100 → 101 src/pricing.ts:22 return isMember || total = 50; ✗ = → ✗ 50 → 51 ... Mutation score: 15.4% 4 killed, 0 timed out, 22 survived of 26; baseline 0.5s js it 'takes the percentage off the amount', = { expect applyDiscount 200, 25 .toBe 150 ; } ; it 'accepts the 0% and 100% boundaries', = { expect applyDiscount 200, 0 .toBe 200 ; expect applyDiscount 200, 100 .toBe 0 ; } ; it 'rejects percentages outside 0..100', = { expect = applyDiscount 200, -1 .toThrow RangeError ; expect = applyDiscount 200, 101 .toThrow RangeError ; } ; it 'starts free shipping exactly at 50 for non-members', = { expect qualifiesForFreeShipping 49.99, false .toBe false ; expect qualifiesForFreeShipping 50, false .toBe true ; } ; bash $ npx @mintwork/honest-tests audit test && npx @mintwork/honest-tests mutate src/pricing.ts ✓ 12 tests in 2 files: no fake tests found. Mutation score: 100% 26 killed, 0 timed out, 0 survived of 26; baseline 0.5s ✓ Every mutation was caught. These tests actually test something. Both projects live in fixtures/ https://github.com/mintwork/honest-tests/blob/main/fixtures — run npm run demo:bad / npm run demo:good yourself npm run demo:gif re-renders the GIF above from the real CLI output . /plugin marketplace add mintwork/honest-tests /plugin install honest-tests@honest-tests Or drop just the skill into a repo: npx @mintwork/honest-tests init claude writes .claude/skills/honest-tests/ . Then ask: "write tests for src/cart.ts" or "audit my tests" — or use the slash commands /honest-tests:audit path and /honest-tests:mutate