The independent auditor that closes the per-feature loop. Runs after feature-implementation declares a feature developer-done, and answers without the implementer's investment: does this feature actually satisfy its requirements? Audits the acceptance tests against the criteria (coverage per criterion, assertions that assert what the criterion says — rejecting and correcting weak tests), re-runs all suites fresh from the repo state, verifies requirements directly beyond the tests (FR behavior...
Installs into .claude/skills of the current project.
Are you the author of Acceptance Verification?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/zeeshanhanif-acceptance-verification)
---
name: acceptance-verification
description: >-
The independent auditor that closes the per-feature loop. Runs after
feature-implementation declares a feature developer-done, and answers
without the implementer's investment: does this feature actually satisfy
its requirements? Audits the acceptance tests against the criteria
(coverage per criterion, assertions that assert what the criterion says —
rejecting and correcting weak tests), re-runs all suites fresh from the
repo state, verifies requirements directly beyond the tests (FR behavior
observed, binding NFRs measured), and reviews the feature's test diff for
weakened or skipped tests. Delivers a verdict — accepted, rework, or design
defect (each routed to its owner) — writes the feature's acceptance report,
and on acceptance appends the RTM's Test ref, completing each requirement's
lifecycle. Never fixes production code; corrects only test artifacts.
Trigger on "verify the feature", "acceptance verification", "audit FEAT-N",
"is the feature really done", or "run acceptance".
---
# Acceptance Verification
The independent check that turns *developer-done* into **verified** — the
per-feature loop's real definition of done. Feature-implementation built and
self-gated the feature; this skill audits it without the builder's
investment. Auditor and mechanic stay separate: findings **route** (back to
implementation as rework, or to the design's amendment path as defects) —
this skill never fixes production code. The one thing it may correct is the
**measurement**: test artifacts that fail its audit.
**The fresh-eyes rule.** Independence is this skill's entire value, and it is
enforced through *derivation*, not session hygiene alone: every check is
re-derived from the authoritative documents — technical-design §6's criteria,
the FR/UC statements, the manifest — **never from tasks.md's checkboxes, the
implementation's delivery summary, or any session's claims of green.** Those
are the artifacts under audit, not evidence. Running in a fresh session is
strongly recommended (and is how an orchestrator should invoke it), but the
skill is not refused in-session — the derivation rule does the real work.
## Inputs
Defaults; user paths win; source-gated citation throughout.
- **The feature folder** — technical-design.md (**§6 acceptance criteria: the
audit standard**, §3 contracts, §8 escalations), ui-design.md, tasks.md
(read only to confirm developer-done state — never as evidence of
correctness).
- **The sources behind the criteria** — the SRS (verbatim FR statements and
binding NFRs for this feature's trace) and use-cases.md (the flows,
including alternates/exceptions). The criteria are audited *against these*
too: a criterion that misencodes its FR is a finding, not an authority.
- **The design manifest** — the feature's screens: states coverage and
conformance claims to spot-check.
- **The live repo** — the code, the test suites, the harness and its
commands (scaffold-notes / agent-instructions), the git history
(`FEAT-NNN T*` commits and the feature's test-file diff).
- **The RTM** — `docs/rtm.md` (if present): Test ref is this skill's owned
column, written on acceptance.
## Workflow
### Phase 1 — Locate the feature
The user names one (the only off-sequence path), or **compute the default:
walk the plan's build sequence; the first feature that is developer-done
(tasks.md fully checked) but has no accepted acceptance report is it.**
Announce the resolution; never a menu. Not developer-done → say so and stop
(implementation finishes first); already accepted → ask what's wanted
(re-verification after changes is legitimate — say so).
### Phase 2 — Re-derive the standard
Build the audit standard fresh from documents: the feature's FR IDs with
their verbatim SRS statements and priorities, its UC flows
(main/alternate/exception), binding NFR constraints, and technical-design
§6's criteria. Cross-check the criteria against their sources — every FR
covered by at least one criterion, every consequential UC path represented,
criteria faithful to the statements they encode. A gap or misencoding here
is already a finding (design defect class).
### Phase 3 — Audit the tests
Read `references/audit-guide.md`. Criterion by criterion: does a test cover
it; does the test **assert what the criterion says** — not a weakened proxy,
not a reinterpretation that fits the code; are the exception/alternate paths
actually exercised? Then the independent anti-fake-green review: the
feature's test-file diff inspected for loosened assertions, skips, deleted
cases, mocked-away behavior — the implementer self-checked this; the
self-check of an anti-self-deception rule is what deserves second eyes.
**Rejected tests are corrected by this skill** — rewritten to assert the
criterion, committed as `FEAT-NNN acceptance: correct test for AC-k` — the
one artifact class it may change.
### Phase 4 — Execute independently
Run everything fresh from the actual repo state, with the harness's own
commands: the feature suite, the whole-repo suite, the E2E suite including
the path this feature owed, migrations against a fresh local store. No
reported green is trusted; only observed green counts — including the tests
Phase 3 corrected.
### Phase 5 — Verify requirements directly
Beyond the tests: each FR's behavior observed where a test alone doesn't
suffice (an audit-log FR's entries inspected; a data-retention FR's effect
checked), and **binding NFRs measured where cheaply measurable** (a
response-time bound timed against the local stack — recorded as indicative,
environment-caveated; a hard perf NFR needing real infrastructure is
recorded as *pending environment*, never silently skipped). Screens
spot-checked against their manifest states and conformance claims.
### Phase 6 — Verdict, report, and routing
Read `references/verdict-and-report.md`. One of three verdicts, with the
report written to the feature folder as `acceptance-report.md`:
- **Accepted** — criteria hold, suites green, requirements verified. **Append
the RTM Test ref** for every implemented FR (append-only, Test ref column
only — completing Plan ref → Design ref → Test ref). The feature is
*verified* — the loop's true done.
- **Rework** — specific failures, each cited by AC/FR with the observed
evidence, routed back to feature-implementation as new work. No RTM write.
- **Design defect** — the criteria/design themselves are wrong or
unsatisfiable; routed to detailed-design's amendment path (which may
escalate further per its own rules). No RTM write.
Mixed findings take the most severe verdict; partial acceptance is not a
verdict — a feature is verified whole or not yet.
## Scope boundaries
Does **not**: fix production code (rework routes back); change designs or
criteria (defects route to their owners); write any RTM column but Test ref;
re-run feature-implementation's fix-loops (a red here is a finding, not a
debugging session); verify features that aren't developer-done.
## What good looks like
- Every criterion traced source → criterion → test → observed result — the
audit chain is complete and cited.
- Zero trust in claims: every green in the report was produced in this run.
- Corrected tests assert criteria verbatim-faithfully; the correction commits
say why.
- The verdict is unambiguous, and rework/defect findings are specific enough
to act on without re-deriving context.
- On acceptance, the RTM rows tell the whole story: planned, designed,
tested — the requirement lifecycle closed.