Testing Discipline

SkillDev tools

UI testing mode, accessibility identifiers, and testing workflows. Use when writing tests, adding testable UI elements, or understanding test structure and philosophy.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Testing Discipline skill

What this skill tells your AI

The instructions your AI receives, as published by ad-repo/nullplayer in skills/testing/SKILL.md and read by ahel’s review.

Trigger phrases: "write a test", "run the tests", "coverage", "are the tests green", "unit test", "integration test", "tests pass locally", "flaky test", "test is flaky"

Goal: behavior correctness — test real behavior without breaking product code just to make a test pass.

Principles

  • Pyramid: many unit, fewer integration, few end-to-end (e2e). Limit e2e to critical flows.
  • AAA: Arrange-Act-Assert; one test = one behavior.
  • Isolation & determinism: external dependencies are mocked/faked; time and randomness are fixed; test order is independent.
  • Risk-coverage: risk, not metrics. Critical path + boundary + negative + authorization (IDOR/404) scenarios.
  • Naming: what_it_tests_under_which_condition_what_it_expects — on failure it is clear what broke.
  • Red-green: first a failing test, then the implementation.

Watch out

  • Flaky = bug: an occasionally failing test is not tolerated; it is fixed at the root.
  • In snapshot/golden-file tests, avoid needless brittleness (assert only the meaningful output).

Tests that cannot fail

Green is evidence only if the test could have gone red. Shapes that check nothing:

  • Assertion restates the code: it recomputes the implementation's own expression, so it moves with every change.
  • Setup guarantees the result: arrange plants the value the assert reads back; it holds even if the act never ran.
  • Expected value derived the way the code derives it: same formula, query or parser — the same wrong assumption on both sides still matches.
  • A double asserted against its own stub: the fake is told to return X and the test asserts X; only the fake runs.
  • No assertion: it passes because nothing threw. If not throwing is the behavior under test, assert that.

Prove it can fail: break what the test covers — invert a condition, return a wrong constant — confirm it goes red, then restore. Still green means the test is documentation, not a gate: fix it or delete it, never count it as coverage.

Flaky triage

An intermittent failure gets exactly one outcome, decided the day it is seen: fix it, quarantine it (out of the gating lane, never out of the suite, with an owner and a date), or escalate it as the product defect it signals. Infrastructure flakes may get a bounded, logged retry; product flakes never do. Classifying them, the retry rule, and what a quarantine entry must carry: references/flaky-triage.md.

DoD (this skill's contribution)

  • The project's own test command is green — read it off the manifest/CI (dotnet test · npm test · pytest · go test ./...), don't assume one; critical paths are covered; no empty/meaningless tests.

Signals

GitHub stars
120
Forks
9
Last commit
Sep 2026
Hacker News mentions
20

Others that do the same job

Advanced
Catalog kind
skill
Gateway key
testing
Source
github.com/ad-repo/nullplayer