← ClaudeAtlas

acceptance-tests-observable-outcomeslisted

Use when you need to prove a feature actually delivers its intended outcome to a user or caller, not just that its code paths run — write executable acceptance tests against real, observable outcomes, derived from the spec before or independent of the implementation.
pedro-angel/agent-methodology · ★ 0 · AI & Automation · score 70
Install: claude install-skill pedro-angel/agent-methodology
# Acceptance Tests Assert What the User Sees Unit and integration tests answer "did we build it right" — they assert code paths ran. Acceptance tests answer "did we build the right thing" — they assert what a user or caller actually observes on the real system. Only the second catches a feature that was fully specified, fully coded, and never actually wired to anything a user can reach. ## When to use Whenever a spec's success criteria describe an observable outcome — a value on screen, a header in a response, a file left on disk, a specific error message — and before claiming that feature, or any piece of automation, is done. Reach for it any time you're tempted to answer "does it work" by re-reading the code that's supposed to make it work, instead of watching it work. Red-flag thoughts that mean STOP and apply this skill: - "The unit tests are green, so the feature works." (Green units prove the pieces; they don't prove the pieces are wired together for the user.) - "I traced the code path by eye, it clearly returns the right value." (A trace is not an execution.) - "The mock returns what production would return." (Then you've tested the mock, not the outcome.) - "It passed once, that's enough — this isn't safety-critical." (One green run on a non-deterministic path is luck, not proof.) - "Cleanup only matters if the test passes." (A failing run that skips teardown leaves debris the next run inherits.) ## The rule 1. **Derive each acceptance test from an observable