test-behavior-not-implementation
Skill2 starsChanged 17 days agoMITView on GitHub
Apply when you write, change, or keep a test. Call the code as its users do and assert the exact result they see. Rewrite or delete a test that would pass if every imported function returned undefined.
In this repository22 other files it gives its agents.
- AGENTS.mdAGENTS.md
- act-within-scopeSkill
- build-filesSkill
- codingSkill
- context-managementSkill
- create-verification-skillSkill
- domain-modelingSkill
- encode-lessonsSkill
- experience-firstSkill
- eyes-onSkill
- fluxSkill
- frontend-designSkill
- gitSkill
- grill-with-docsSkill
- in-your-own-wordsSkill
- lint-rulesSkill
- maintain-verification-skillSkill
- scripted-verificationSkill
- security-auditSkill
- skill-evaluationSkill
- test-auditSkill
- writingSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Call or absence only: toHaveBeenCalled, not.toHaveBeenCalled, toBeUndefined, toEqual([]).
- Very specific: line 24
Keep relation checks across table rows (a key in two tables, a parent that exists) and *.test-d.ts type checks.
≈ “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.
Files
Test Behavior, Not Implementation
This skill covers how a test asserts. Whether a test should exist at all, and
tautology tests that copy the code under test, belong to the test-audit skill
and the coding skill's Tests principle.
Apply those; this skill does not restate them.
A test calls the code as its users do and asserts the exact result they see. Rewrite or delete any test that would still pass if every imported function returned undefined or a wrong value.
These shapes fail that check:
- Loose or no assertion:
toBeDefined,toBeTruthy,not.toThrow,toBeGreaterThan(0). - Call or absence only:
toHaveBeenCalled,not.toHaveBeenCalled,toBeUndefined,toEqual([]). - Restated constant, config default, table row, or prompt string.
- Assertions on data the test built, with no call to the subject.
Fix: call the subject in the test body with one concrete input and assert the literal output or effect. For a mock, assert the payload it received. For an absence, also assert the presence on another input. For a constant, test the mechanism that reads it with one input instead of restating the value.
Keep relation checks across table rows (a key in two tables, a parent that exists) and *.test-d.ts type checks.
Source
Adapted rewrite of Pstack's
principle-test-behavior-not-implementation skill
(cursor/plugins commit 1e5c90a), by poteto. The upstream licence is
unconfirmed. Anthony approved adopting this adaptation on 2026-10-14.
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
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.

