Test against spec
Establish whether the delivered behavior matches the explicit specification.
Report by default. With the exact fix qualifier, fix observed in-scope gaps
and retest them. This skill does not replace source review or the repository's
full project gate.
Boundaries
- Derive expected behavior only from the user request, issue, confirmed
mini-spec, product documentation, ADR, or another explicit decision. Never
infer it from the implementation. Stop for a material conflict or ambiguity.
- Test externally observable outcomes. Use the rendered product for user-facing
behavior and the real API, CLI, library entry point, job, package, migration,
or deployed service for other behavior.
- Do not use implementation source, test source, unit tests, mocks, snapshots,
or a patch as evidence that behavior works. Requirements with no executable
behavior are outside this skill's scope and belong to code review or the
project gate.
- Prefer a preview deployment when it is available and tied to the exact
revision under test. Otherwise use the local environment. Use existing
black-box automation when it exercises the real delivered interface and its
result is current.
- Do not commit, push, deploy, publish, or change external data unless the user
separately authorized that action. Use disposable test data where possible
and ask before a test would create a material external side effect.
Workflow
- Record the specification sources and the exact worktree revision, commit, or
preview revision under test. Separate each externally observable requirement
from requirements outside this skill's scope.
- Select the best available environment for each behavior. Prefer a current
preview deployment, then use the local environment when no suitable preview
exists or when local execution is needed to cover the current working change.
- Exercise every testable requirement. Cover the intended path and the most
consequential failure or boundary path. For user-facing changes, interact
with the rendered product and cover affected states, accessibility, and
relevant viewports.
- Record the environment, setup, action or command, input, expected result, and
observed result. A requirement passes only when the expected outcome is
observed against the exact content under test.
- Without
fix, make no edits. Report every passed, failed, unverified, and
out-of-scope requirement.
- With
fix, reproduce a failure through the external interface before
inspecting implementation source. Apply the smallest in-scope fix, run only
the focused developer checks needed for that fix, refresh the available test
environment, and rerun the same black-box behavior. Each edit invalidates
affected results. Repeat while available access and environments allow safe
progress.
- Stop fixing for a material product, architecture, security, compatibility,
or scope decision. When neither a current preview nor the local environment
can reproduce required behavior, report what was attempted and mark the
behavior unverified.
- When a fix can be exercised only through a preview and no preview contains
the changed revision, report the fix as applied but unverified. The caller
owns any authorized push or deployment and must invoke this skill again on
the resulting exact-revision preview.
Return a structured summary in the active workflow, not a committed or ignored
artifact. Include the tested revision, environments, specification sources,
each requirement and its evidence or limitation, fixes and changed files when
applicable, and whether any behavior remains failed or unverified.
1---2name: test-against-spec3description: Tests delivered behavior against explicit requirements through real product interfaces, preferring an exact-revision preview deployment when available. Use when the user runs /test-against-spec or a workflow needs black-box evidence; add the exact `fix` qualifier to authorize in-scope fixes.4license: Unlicense OR MIT5---67# Test against spec89Establish whether the delivered behavior matches the explicit specification.10Report by default. With the exact `fix` qualifier, fix observed in-scope gaps11and retest them. This skill does not replace source review or the repository's12full project gate.1314## Boundaries1516- Derive expected behavior only from the user request, issue, confirmed17 mini-spec, product documentation, ADR, or another explicit decision. Never18 infer it from the implementation. Stop for a material conflict or ambiguity.19- Test externally observable outcomes. Use the rendered product for user-facing20 behavior and the real API, CLI, library entry point, job, package, migration,21 or deployed service for other behavior.22- Do not use implementation source, test source, unit tests, mocks, snapshots,23 or a patch as evidence that behavior works. Requirements with no executable24 behavior are outside this skill's scope and belong to code review or the25 project gate.26- Prefer a preview deployment when it is available and tied to the exact27 revision under test. Otherwise use the local environment. Use existing28 black-box automation when it exercises the real delivered interface and its29 result is current.30- Do not commit, push, deploy, publish, or change external data unless the user31 separately authorized that action. Use disposable test data where possible32 and ask before a test would create a material external side effect.3334## Workflow35361. Record the specification sources and the exact worktree revision, commit, or37 preview revision under test. Separate each externally observable requirement38 from requirements outside this skill's scope.392. Select the best available environment for each behavior. Prefer a current40 preview deployment, then use the local environment when no suitable preview41 exists or when local execution is needed to cover the current working change.423. Exercise every testable requirement. Cover the intended path and the most43 consequential failure or boundary path. For user-facing changes, interact44 with the rendered product and cover affected states, accessibility, and45 relevant viewports.464. Record the environment, setup, action or command, input, expected result, and47 observed result. A requirement passes only when the expected outcome is48 observed against the exact content under test.495. Without `fix`, make no edits. Report every passed, failed, unverified, and50 out-of-scope requirement.516. With `fix`, reproduce a failure through the external interface before52 inspecting implementation source. Apply the smallest in-scope fix, run only53 the focused developer checks needed for that fix, refresh the available test54 environment, and rerun the same black-box behavior. Each edit invalidates55 affected results. Repeat while available access and environments allow safe56 progress.577. Stop fixing for a material product, architecture, security, compatibility,58 or scope decision. When neither a current preview nor the local environment59 can reproduce required behavior, report what was attempted and mark the60 behavior unverified.618. When a fix can be exercised only through a preview and no preview contains62 the changed revision, report the fix as applied but unverified. The caller63 owns any authorized push or deployment and must invoke this skill again on64 the resulting exact-revision preview.6566Return a structured summary in the active workflow, not a committed or ignored67artifact. Include the tested revision, environments, specification sources,68each requirement and its evidence or limitation, fixes and changed files when69applicable, and whether any behavior remains failed or unverified.