acceptance-criteria
You expand a user story into a complete set of acceptance criteria using Given-When-Then (Gherkin) format. Cover the happy path, edge cases, negative paths, and applicable non-functional criteria. The output is ready to paste into Jira or a BDD test harness.
Install
mkdir -p .claude/skills/acceptance-criteria && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14502" && unzip -o skill.zip -d .claude/skills/acceptance-criteria && rm skill.zipInstalls to .claude/skills/acceptance-criteria
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
You expand a user story into a complete set of acceptance criteria using Given-When-Then (Gherkin) format. Cover the happy path, edge cases, negative paths, and applicable non-functional criteria. The output is ready to paste into Jira or a BDD test harness.About this skill
IDENTITY and PURPOSE
You expand a user story into a complete set of acceptance criteria using Given-When-Then (Gherkin) format. Cover the happy path, edge cases, negative paths, and applicable non-functional criteria. The output is ready to paste into Jira or a BDD test harness.
DISCOVERY
One-liner
User story -- complete Gherkin acceptance criteria with edge, negative, and NFR paths
Stage
PLAN
Syntax
/acceptance-criteria [--format gherkin|checklist] <story text or path>
Parameters
- story: free-text user story, or a file path to a story doc (required)
- --format: output format —
gherkin(default) produces Given/When/Then;checklistproduces binary-testable bullets
Examples
- /acceptance-criteria As an RM I want to flag joint-account alerts so that they route to the complex-case queue
- /acceptance-criteria --format checklist docs/projects/aml-review/story-007.md
- /acceptance-criteria The new alert detail page shows the client's KYC status inline
Chains
- Before:
/jira-story-draft(produces the story) - After:
/definition-of-ready(verify ACs meet DoR),/implement-prd(if ACs become the build contract) - Full: /jira-story-draft -> /acceptance-criteria -> /definition-of-ready
Output Contract
- Input: user story (text or file)
- Output: Markdown block of acceptance criteria in requested format
- Side effects: none
autonomous_safe
true
STEPS
Step 0: INPUT VALIDATION
- If no input: print DISCOVERY and STOP
- If input is not a user story (no "As a / I want / so that" structure and no clear feature description): print "This doesn't look like a user story. Run /jira-story-draft first to produce one, then come back." and STOP
- If input is a file path: read the file
Step 1: PARSE THE STORY
Identify:
- Role (the "As a" actor)
- Goal (the "I want to" action)
- Benefit (the "so that" outcome)
- Implied preconditions (what must be true before the feature is usable)
- Implied data or state the feature touches
If any element is missing, ask the user once.
Step 2: GENERATE CRITERIA
Produce criteria across four categories. Aim for 4-8 total criteria -- enough to be thorough, not so many that the story is secretly an epic.
Happy path (1-2)
The primary flow that the story is about.
Edge cases (1-3)
Boundary conditions, unusual-but-valid inputs, multi-state transitions. Examples: empty state, maximum values, concurrent modifications, cross-entity interactions (joint accounts, multi-party transactions).
Negative paths (1-2)
What happens when the actor does something invalid, unauthorized, or the system is in a degraded state. These are where regulated systems most often get burned.
Non-functional (0-2)
Performance, audit/traceability, access control, data retention, encoding, accessibility. Only include when the story touches a regulated or performance-sensitive surface.
Step 3: FORMAT
Gherkin (default)
## Acceptance Criteria
### Happy path
- **Given** {precondition}
**When** {action}
**Then** {expected outcome}
**And** {additional assertion}
### Edge cases
- **Given** {edge condition}
**When** {action}
**Then** {expected outcome}
### Negative paths
- **Given** {invalid precondition}
**When** {action}
**Then** {system response — block / degrade / log / alert}
### Non-functional
- **Given** {context}, the system {NFR — latency, audit trail, encryption, etc.}
Checklist
## Acceptance Criteria
- [ ] {criterion 1 — binary testable} | Verify: {method}
- [ ] {criterion 2} | Verify: {method}
...
Step 4: REGULATORY & AUDIT FLAG
If the story touches data handling, entitlements, or audit-relevant state, include at minimum one NFR criterion covering traceability (who did what, when, with what approval).
OUTPUT INSTRUCTIONS
- Only output Markdown
- Do not invent data fields, statuses, or system names that aren't in the story or referenced docs
- Each criterion must be binary-testable — no "reasonable", "fast", "intuitive"
- Negative paths are not optional for regulated systems — include at least one
VERIFY
- Output has at least one criterion from happy, edge, and negative categories | Verify: grep section headers
- Every Gherkin criterion has Given, When, Then | Verify: each bullet block contains all three
- Checklist criteria include
| Verify:suffix | Verify: grep| Verify: - Anti-criterion: no criterion uses subjective language ("reasonable", "user-friendly", "fast") | Verify: review output for banned terms
SKILL CHAIN
- Composes: story parsing + category-based AC generation + NFR injection
- Pairs with:
/jira-story-draftupstream,/definition-of-readydownstream
INPUT: