Test behavior, not implementation
SkillMonitoring & opsHelps your agent write tests that catch real defects by checking behavior instead of implementation details.
Use Test behavior, not implementation in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Test behavior, not implementation and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Test behavior, not implementation skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Apply when you write, change, or keep a test. Identify a relevant defect and check that the test detects it. Assert the required result or observable effect, including absence when the contract requires it.
What this skill tells your AI
The instructions your AI receives, as published by michael-denyer/pstack-claude in plugins/pstack/skills/principle-test-behavior-not-implementation/SKILL.md and read by ahel’s review.
Before keeping a test, name a relevant defect and determine whether the complete test arrangement detects it. Where practical, introduce that defect temporarily and observe the failure. Exercise the subject through its public interface and check the required result or effect.
- A missing-result experiment helps when the contract requires a result.
toBeDefineddetects a missing result, but accepts the wrong one. Strengthen it to check the particular result when correctness requires one. - Keep absence assertions when absence is required. For a denied operation that must send no email, exercise the denial and check the outbox is empty. Temporarily make the denied path send an email and confirm the test fails. An assertion on absence does not require a positive case in the same test.
- Keep fixed-value checks when the value is an explicit user-facing contract, such as a promised default or instruction. Name that contract and the defect a changed value would cause. Avoid freezing incidental constants or prompt wording with no such contract.
- Keep comparisons between results when disagreement exposes a real defect. An expected result computed through the same faulty path as the actual result can confirm itself. Use an independent expectation or a relation that the identified defect actually violates.
- Assess shared setup and the test body together. Calling the subject in
beforeEachis valid; asserting only untouched fixture data is not.
Reject tests that exercise nothing relevant, assert nothing meaningful, or only show that a substitute was called without checking the required effect. Check its payload or resulting state when that establishes the contract. An assertion's syntax alone cannot tell you whether it detects a defect.
Signals
- GitHub stars
- 2k
- Forks
- 162
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
principle-test-behavior-not-implementation-michael-denyer- Source
- github.com/michael-denyer/pstack-claude
github.com/michael-denyer/pstack-claude
More in Monitoring & ops
Skill · anthropics
More in Monitoring & opsagent-eval
Skill · affaan-m
More in Monitoring & opsdashboard-builder
Skill · affaan-m
More in Monitoring & opsbabysit
Skill · thedotmack
More in Monitoring & opseng-runbook
Skill · nexu-io
More in Monitoring & opsweekly-update
Skill · nexu-io
More in Monitoring & ops