acceptance-criteria
Skill1 starsChanged 2 months agoMITView on GitHub
Draft acceptance.md in the Spec sitting — the Given/When/Then scenarios and definition of done for one feature, an id per behaviour across the happy, error/edge and security-observable classes. The look is the design reference's; grading a built slice against them, `quality-verification`'s.
16 other projects use a version of this.
Adopted by
Most recently taken up by
- MiguelSavignano/claude-code-systemtheir own version, first seen Nov 1, 2026
- Happy-Technologies-LLC/happy-platform-skillstheir own version, first seen Nov 1, 2026
- Tngc93/product-management-skillstheir own version, first seen Oct 20, 2026
- Sunnyshinnny776/pm-agentic-cookbooktheir own version, first seen Oct 20, 2026
- prabhakar349/claude-ddd-redesigntheir own version, first seen Oct 9, 2026
- garthcodes/claude-skillstheir own version, first seen Oct 8, 2026
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- Happy-Technologies-LLC/happy-platform-skills★ 41same name
- jdm4pku/RE-Skills★ 26same name
- MiguelSavignano/claude-code-system★ 6same name
- HamzaSheikh768/Agents-Skills-Lap★ 3same name
- designedbythanh/ai-skills-library-product-design★ 2same name
- garthcodes/claude-skills★ 2same name
- smarzban/agent-sdlc★ 2same name
- Sunnyshinnny776/pm-agentic-cookbook★ 2same name
- dhslegen/digital-delivery-team★ 1same name
- KonstantinVCH/QA-agent-skills★ 1same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository41 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- aim-higherSkill
- api-designSkill
- architecture-designSkill
- browser-testing-with-devtoolsSkill
- ci-cdSkill
- codebase-designSkill
- codebase-researchSkill
- code-reviewSkill
- code-simplificationSkill
- comprehension-quizSkill
- debugging-and-error-recoverySkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- doubt-driven-developmentSkill
- environment-manifestSkill
- gauntlet-loopSkill
- git-workflowSkill
- handoffSkill
- idea-refineSkill
- incremental-implementationSkill
- interview-meSkill
- literate-explainerSkill
- observability-and-instrumentationSkill
- orchestratorSkill
- performance-optimizationSkill
- plan-breakdownSkill
- preflight-readinessSkill
- project-setupSkill
- pull-requestSkill
- quality-verificationSkill
- security-and-hardeningSkill
- shipping-and-launchSkill
- source-driven-developmentSkill
- spec-grillingSkill
- spec-reviewSkill
- test-driven-developmentSkill
- to-prdSkill
- using-agent-skillsSkill
- worktreeSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 79
Every story id gets a scenario, the feature at least one error/edge, and any feature with a boundary at least one security-observable — a …
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Acceptance criteria
Purpose
Stage: Spec. Principles 1, 5, 6, 10.
Writes one feature's acceptance.md: what works means for it, as Given/When/Then prose, one id per
behaviour. The plan cuts slices against those ids, a test is written red off them, Verify grades the
running app by them. A behaviour absent from this file is a behaviour nothing checks, so completeness
is the job and wording is not.
When to use / when to skip
- A feature has a
prd.md— or an intent standing in for one — and nothing says what done means: inside the sitting, afterto-prd, beforearchitecture-designtraces the ids. - Someone reaches for "acceptance criteria", "definition of done", "test scenarios" or Given/When/Then.
- A behaviour that has to hold — an expiry, a refusal, an empty state, a failed save — has nothing anywhere that would catch its absence.
- Skip a pure refactor with no product-observable change; the scenarios already written cover it.
- A scenario becomes a failing test in
test-driven-development, and grades a built slice inquality-verification. - The look belongs to the design reference
prd.mdpoints at, whose named states Verify grades.
Inputs
docs/features/<slug>/prd.md— helps: its user stories are the ids scenarios back-reference; Problem and Solution frame the happy paths, Out of Scope draws the boundary · without it: read the behaviours offintent.mdor the prompt, number them in place of stories, and mark the setderiveddocs/features/<slug>/intent.md— helps: Success and the Not-Doing list mark which behaviours are load-bearing · without it: take them fromprd.md's Problem, markedderivedCONTEXT.mdanddocs/adr/— helps: the domain's own words, and no re-argued decision · without it: use the words the codebase uses- the design reference
prd.mdpoints at — helps: its named states (empty · loading · error · a failed save) carry behaviour a PRD omits · without it: write those states from the stories and note that none exists
With a person there, ask at most three questions, where the answer changes which scenarios exist.
Process
- Read
prd.mdend to end and list every story id first. Problem and Solution frame the happy paths; Out of Scope is the boundary, and none of its items becomes a scenario — one that still needs a guarantee belongs here as an observable refusal. - Enumerate the behaviours story by story across the three classes below — what the user observes when it works, what they see when input or state is wrong, what the system has to refuse.
- Write each as Given/When/Then prose asserting an outcome someone can observe, inside the boundary below.
- Id every scenario — PRD namespace,
A, a number — then leave that id alone.qa.md's ledger and the PR's human-ack line cite ids, so a renumber re-points them at other behaviours; append under a new id. - Write
status: draftand hand the file on inside the sitting.architecture-designtraces each id while both are drafts,spec-reviewfixes the bundle code-cold, and the person signs all of it in one act — an agent writingsignedforges the run's only human-anchored oracle. - Measure and report —
wc -wagainst the 1,200-word cap. Over cap, cut wording and never a scenario, then report the overrun: a thinned list reads exactly like a full one. - Change a scenario when the plan has moved, and disclose it where the person reviews. Nothing is
frozen: the before and the after go in the PR body and one
docs/session-log.mdentry (state-schema.md), whichcode-reviewreads code-cold.
The three required scenario classes
| Class | What it pins down |
happy | the story's goal reached, as the user observes it |
error/edge | invalid input, wrong state, a boundary, expiry, concurrency, an empty or limit case — what the user sees and what survives it |
security-observable | a boundary holding where someone can watch it: an expired token refused, an unauthorized actor turned away, a secret absent from a response |
Every story id gets a scenario, the feature at least one error/edge, and any feature with a boundary
at least one security-observable — a one-story feature included.
Behavioral-only boundary
- No implementation — a file path, a signature, a schema, a table or column name, a library internal — so a scenario survives a rewrite of the code beneath it.
- No look — colour, type, spacing, layout, motion, focus ring, pixel, breakpoint: the design reference holds those, and two oracles able to contradict each other are worse than one.
- No engine — prose only, no
.featurefile and no step definitions.test-driven-developmentrealizes a scenario as a test by judgment.
Rationalizations
- "The errors are obvious." → An unattended run ships its silent defects exactly where the failure looked too obvious to write down.
- "Naming the endpoint makes it precise." → A path or a signature in a scenario is an implementation mirror, stale the first time the code moves.
- "This one needs the pill's colour." → The design reference names that state, and Verify grades it there.
- "
.featurefiles make it executable." → Executability comes from a test written red off the prose. - "It reads right, so
signed." → A signature is the person's act; the agent's own is a forged oracle. - "Three of these stories are alike, so three scenarios covers it." → A story id no scenario names is a gate reading nothing.
Red flags
- A scenario naming a file path, a signature, a table or a column.
- A scenario describing colour, spacing, motion or a focus ring.
- A
.featurefile or a step-definition file in the tree. - A story id that no
realizes:names. - A feature with no
error/edgescenario, or one with a boundary and nosecurity-observable. status: signedon a file no person signed.
Verification
docs/features/<slug>/acceptance.mdexists atstatus: draft, signed by no agent.- Every story id — or every behaviour marked
derivedin its place — is named by arealizes:. - Each scenario carries a unique namespaced id, a
realizes:and aclass:, and no earlier id moved. - At least one
error/edgescenario is present, and asecurity-observableone wherever the feature has a boundary. - A grep finds no path, signature, schema, table or column name, library internal or design token,
and no
.featurefile or step definition exists. - The measured
wc -wis reported against the 1,200-word cap.
Outputs & handoff
docs/features/<slug>/acceptance.md — cap 1,200 words, measured with wc -w and reported; an
over-cap draft is handed on as over-cap, never as one that fit.
---
status: draft
---
### PWR-A2 — reset link rejected after expiry realizes: story 3 class: error/edge
Given a password-reset link issued more than an hour ago
When the user opens it and submits a new password
Then the reset is refused and the user is told the link has expired
And the existing password still worksOne ### per scenario, ided with the feature's PRD namespace, then A, then a number — the namespace
the board gives that feature's slices. class: is one of happy · error/edge ·
security-observable; realizes: names the story id the scenario backs, or the behaviour standing in
for one, marked derived there. Change the id form, the class: vocabulary or the status field
and every reader that cites them changes in the same commit — architecture-design, plan-breakdown,
test-driven-development, quality-verification, spec-review, orchestrator, pull-request.
docs/session-log.md — one appended entry, cap 60 words, when a scenario changes after the bundle was
signed. No STATE.md row: a board block and its slices are born from a sliced plan
(state-schema.md).
Returns the path, the scenario count by class, the measured words against the cap, and every behaviour
marked derived. No verdict — it drafts the oracle the later gates grade against.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

