Acceptance Criteria Skill Guidance
Use When
- formalising deterministic Given-When-Then acceptance criteria for existing user stories; use user-story-generation when the backlog or personas have not yet been defined.
- Use this procedure when the required source artefacts are available and
Acceptance-criteria catalogue is the next lifecycle deliverable.
Do Not Use When
- Use
user-story-generation when that neighbouring route owns the decision or deliverable.
- Do not invent missing project evidence, standards clauses, thresholds, or stakeholder decisions.
Required Inputs
| Artefact |
Source or provider |
Required? |
Behaviour when missing |
| Approved user stories, business rules, quality thresholds, and error cases |
Product owner, requirements baseline, and domain references |
Yes |
Stop the affected step, name the missing source, and return only a qualified gap record. |
Workflow
- Inspect the required inputs and log the exact sources, versions, and unresolved assumptions.
- Apply this skill's existing domain workflow and decision rules to produce
Acceptance-criteria catalogue.
- Stop when a required source, accountable decision owner, or deterministic test oracle is absent.
- Recover by preserving valid work, marking the blocked scope, and returning the narrowest qualified artefact plus the next evidence needed.
Outputs
| Artefact |
Consumer |
Acceptance condition |
| Acceptance-criteria catalogue |
Developers, testers, product owner, and traceability owners |
Required sections are populated, source links resolve, and every material requirement or decision has an observable review or test oracle. |
Evidence Produced
| Evidence |
Reviewer |
Acceptance condition |
Source, decision, trace, and validation record for Acceptance-criteria catalogue |
Requirements quality reviewer |
Inputs used, decisions made, checks run, failures, and unassessed items are explicit. |
Capability and permission boundaries
Read and search are required. Editing is allowed only when the request authorises creation or repair of the named requirements artefact. Publishing, production mutation, destructive action, spending, and certification require explicit authority.
Degraded mode
Fallback: if a required file, reviewer, standard source, network check, renderer, or execution capability is unavailable, return the narrowest useful qualified result and mark the affected check not assessed; never convert an unassessed check into a pass.
Decision Rules
| Choice or condition |
Action |
Failure or risk avoided |
| A criterion uses subjective language or lacks an observable result |
Rewrite it with explicit precondition, stimulus, result, and boundary. |
Disputes caused by non-deterministic acceptance. |
| Required inputs and test oracles are complete |
Continue through the existing workflow and record evidence. |
A deliverable whose acceptance cannot be reproduced. |
| A mandatory source or owner is missing |
Stop the affected branch and issue a qualified gap record. |
Fabricated context or unauthorised decisions. |
Quality Standards
- Preserve stable identifiers and bidirectional traceability from project evidence to
Acceptance-criteria catalogue and its acceptance checks.
- Apply ISO/IEEE measures only with a named metric, method, threshold, evidence source, and responsible reviewer; run the anti-slop gate before release.
Anti-Patterns
- Producing
Acceptance-criteria catalogue from assumed context. Fix: cite the project source or mark the scope blocked.
- Accepting a material requirement without a deterministic oracle. Fix: add a measurable result, boundary, and verification method.
- Crossing into
user-story-generation without routing the decision. Fix: hand off the named input and preserve trace links.
- Treating an unavailable check as passed. Fix: mark it
not assessed and state the release consequence.
- Claiming standards, statutory, or stakeholder approval without evidence. Fix: cite the source and reviewer or qualify the claim.
References
Overview
Run this skill after user stories are generated. It transforms each user story produced by 01-user-story-generation into formal acceptance criteria using the Gherkin (Given-When-Then) format. Every criterion shall be deterministic and independently verifiable, ensuring that test engineers can derive binary pass/fail outcomes without ambiguity. The skill enforces IEEE 29148-2018 Section 6.4.5 traceability between stakeholder intent and testable conditions.
When to Use
Execute this skill after 01-user-story-generation has produced projects/<ProjectName>/<phase>/<document>/user_stories.md. Each user story in that file shall already follow the "As a / I want / So that" format. This skill shall not run until the upstream file exists and contains at least one valid story identifier (US-XXX).
Quick Reference
- Inputs:
projects/<ProjectName>/<phase>/<document>/user_stories.md (required), projects/<ProjectName>/_context/quality_standards.md (optional, for NFR criteria)
- Output:
projects/<ProjectName>/<phase>/<document>/acceptance_criteria.md
- Tone: Precise, testable, deterministic -- no subjective adjectives
Input Files
| File |
Source |
Purpose |
Required? |
user_stories.md |
projects/<ProjectName>/<phase>/<document>/ |
User stories with "As a / I want / So that" triads |
Yes |
quality_standards.md |
projects/<ProjectName>/_context/ |
NFR targets for performance, security, and reliability thresholds |
No |
Output Files
| File |
Destination |
Contents |
acceptance_criteria.md |
projects/<ProjectName>/<phase>/<document>/ |
Gherkin-format acceptance criteria cross-referenced to story IDs |
Core Instructions
- Read upstream output. Open
projects/<ProjectName>/<phase>/<document>/user_stories.md and log the file path to confirm the read succeeded.
- Extract story triads. For each user story identified by US-XXX, parse the "As a [role]", "I want to [action]", and "So that [value]" triad. Record the story ID, title, and epic association.
- Generate Gherkin criteria. Produce 3--5 acceptance criteria per story using the format:
Given [precondition], When [action], Then [expected result]. Criteria shall cover:
- The happy-path scenario (normal successful flow)
- At least one error or edge-case scenario
- At least one boundary-condition scenario
- Append NFR criteria. If
projects/<ProjectName>/_context/quality_standards.md exists, read it and append non-functional acceptance criteria with measurable thresholds (response time, throughput, encryption standard, etc.) to each relevant story.
- Flag untestable stories. If a story cannot yield deterministic, binary pass/fail criteria, tag it with
[AC-FAIL] and append a remediation note identifying the missing or ambiguous element.
- Write output. Write
projects/<ProjectName>/<phase>/<document>/acceptance_criteria.md with each story's criteria grouped under its US-XXX identifier, including cross-references back to the originating story and epic.
Output Format Specification
The generated acceptance_criteria.md shall follow this structure:
# Acceptance Criteria: [Project Name]
**Generated:** [Date]
**Source:** user_stories.md
**Standard:** IEEE 29148-2018 Sec 6.4.5, Gherkin/BDD Format
---
## US-001: [Story Title]
**Epic:** [Epic Name]
**Story:** As a [role], I want to [action], So that [value]
### Functional Criteria
- [ ] **AC-001.1:** Given [precondition], When [action], Then [expected result]
- [ ] **AC-001.2:** Given [error condition], When [action], Then [error handling result]
- [ ] **AC-001.3:** Given [boundary condition], When [action], Then [boundary result]
### NFR Criteria (if applicable)
- [ ] **AC-001.NFR-1:** Given [load condition], When [action], Then [measurable threshold]
---
## US-002: [Story Title]
[... repeat per story ...]
---
## Summary
| Metric | Value |
|--------|-------|
| Stories Processed | N |
| Total Criteria Generated | N |
| NFR Criteria | N |
| Failures Flagged ([AC-FAIL]) | N |
Common Pitfalls
- Vague criteria: Avoid language such as "the system handles it correctly." Each criterion shall state a concrete, observable outcome.
- Missing negative cases: Every story shall include at least one error-path criterion. Omitting negative cases leaves validation gaps.
- Subjective language: Words like "fast," "intuitive," or "user-friendly" violate IEEE 29148 verifiability. Replace with measurable thresholds.
- Orphaned criteria: Every criterion shall trace back to exactly one US-XXX identifier. Criteria without story references shall be flagged.
Verification Checklist
Before finalizing the output:
Integration
- Upstream:
01-user-story-generation -- provides user_stories.md
- Downstream:
05-testing-documentation/ -- acceptance criteria become test cases; 03-story-mapping -- maps criteria coverage across the backlog
Standards Compliance
This skill implements:
- IEEE Std 29148-2018 Section 6.4.5: Requirements specification and verifiability
- Gherkin/BDD Format: Given-When-Then structure for behavioral specifications
- IEEE Std 610.12-1990: Terminology alignment via project glossary
Resources
logic.prompt -- Direct AI execution instructions for this skill
README.md -- Objective summary and quick-start guide
Last Updated: 2026-02-28
Skill Version: 1.0.0
1---2name: 02-acceptance-criteria3description: Use when formalising deterministic Given-When-Then acceptance criteria for existing user stories; use user-story-generation when the backlog or personas have not yet been defined.4---56# Acceptance Criteria Skill Guidance78<!-- local-contract-start -->9<!-- dual-compat-start -->10## Use When1112- formalising deterministic Given-When-Then acceptance criteria for existing user stories; use user-story-generation when the backlog or personas have not yet been defined.13- Use this procedure when the required source artefacts are available and `Acceptance-criteria catalogue` is the next lifecycle deliverable.1415## Do Not Use When1617- Use `user-story-generation` when that neighbouring route owns the decision or deliverable.18- Do not invent missing project evidence, standards clauses, thresholds, or stakeholder decisions.1920## Required Inputs2122| Artefact | Source or provider | Required? | Behaviour when missing |23| --- | --- | --- | --- |24| Approved user stories, business rules, quality thresholds, and error cases | Product owner, requirements baseline, and domain references | Yes | Stop the affected step, name the missing source, and return only a qualified gap record. |2526## Workflow27281. Inspect the required inputs and log the exact sources, versions, and unresolved assumptions.292. Apply this skill's existing domain workflow and decision rules to produce `Acceptance-criteria catalogue`.303. Stop when a required source, accountable decision owner, or deterministic test oracle is absent.314. Recover by preserving valid work, marking the blocked scope, and returning the narrowest qualified artefact plus the next evidence needed.3233## Outputs3435| Artefact | Consumer | Acceptance condition |36| --- | --- | --- |37| Acceptance-criteria catalogue | Developers, testers, product owner, and traceability owners | Required sections are populated, source links resolve, and every material requirement or decision has an observable review or test oracle. |3839## Evidence Produced4041| Evidence | Reviewer | Acceptance condition |42| --- | --- | --- |43| Source, decision, trace, and validation record for `Acceptance-criteria catalogue` | Requirements quality reviewer | Inputs used, decisions made, checks run, failures, and unassessed items are explicit. |4445## Capability and permission boundaries4647Read and search are required. Editing is allowed only when the request authorises creation or repair of the named requirements artefact. Publishing, production mutation, destructive action, spending, and certification require explicit authority.4849## Degraded mode5051Fallback: if a required file, reviewer, standard source, network check, renderer, or execution capability is unavailable, return the narrowest useful qualified result and mark the affected check `not assessed`; never convert an unassessed check into a pass.5253## Decision Rules5455| Choice or condition | Action | Failure or risk avoided |56| --- | --- | --- |57| A criterion uses subjective language or lacks an observable result | Rewrite it with explicit precondition, stimulus, result, and boundary. | Disputes caused by non-deterministic acceptance. |58| Required inputs and test oracles are complete | Continue through the existing workflow and record evidence. | A deliverable whose acceptance cannot be reproduced. |59| A mandatory source or owner is missing | Stop the affected branch and issue a qualified gap record. | Fabricated context or unauthorised decisions. |6061## Quality Standards6263- Preserve stable identifiers and bidirectional traceability from project evidence to `Acceptance-criteria catalogue` and its acceptance checks.64- Apply ISO/IEEE measures only with a named metric, method, threshold, evidence source, and responsible reviewer; run the anti-slop gate before release.6566## Anti-Patterns6768- Producing `Acceptance-criteria catalogue` from assumed context. Fix: cite the project source or mark the scope blocked.69- Accepting a material requirement without a deterministic oracle. Fix: add a measurable result, boundary, and verification method.70- Crossing into `user-story-generation` without routing the decision. Fix: hand off the named input and preserve trace links.71- Treating an unavailable check as passed. Fix: mark it `not assessed` and state the release consequence.72- Claiming standards, statutory, or stakeholder approval without evidence. Fix: cite the source and reviewer or qualify the claim.7374## References7576- [Skill authoring and release standard](../../../docs/skill-authoring-standard.md)77- [Skill guidance](README.md)78- [Executable generation logic](logic.prompt)79<!-- dual-compat-end -->80<!-- local-contract-end -->8182## Overview8384Run this skill after user stories are generated. It transforms each user story produced by `01-user-story-generation` into formal acceptance criteria using the Gherkin (Given-When-Then) format. Every criterion shall be deterministic and independently verifiable, ensuring that test engineers can derive binary pass/fail outcomes without ambiguity. The skill enforces IEEE 29148-2018 Section 6.4.5 traceability between stakeholder intent and testable conditions.8586## When to Use8788Execute this skill after `01-user-story-generation` has produced `projects/<ProjectName>/<phase>/<document>/user_stories.md`. Each user story in that file shall already follow the "As a / I want / So that" format. This skill shall not run until the upstream file exists and contains at least one valid story identifier (US-XXX).8990## Quick Reference9192- **Inputs:** `projects/<ProjectName>/<phase>/<document>/user_stories.md` (required), `projects/<ProjectName>/_context/quality_standards.md` (optional, for NFR criteria)93- **Output:** `projects/<ProjectName>/<phase>/<document>/acceptance_criteria.md`94- **Tone:** Precise, testable, deterministic -- no subjective adjectives9596## Input Files9798| File | Source | Purpose | Required? |99|------|--------|---------|-----------|100| `user_stories.md` | `projects/<ProjectName>/<phase>/<document>/` | User stories with "As a / I want / So that" triads | Yes |101| `quality_standards.md` | `projects/<ProjectName>/_context/` | NFR targets for performance, security, and reliability thresholds | No |102103## Output Files104105| File | Destination | Contents |106|------|-------------|----------|107| `acceptance_criteria.md` | `projects/<ProjectName>/<phase>/<document>/` | Gherkin-format acceptance criteria cross-referenced to story IDs |108109## Core Instructions1101111. **Read upstream output.** Open `projects/<ProjectName>/<phase>/<document>/user_stories.md` and log the file path to confirm the read succeeded.1122. **Extract story triads.** For each user story identified by US-XXX, parse the "As a [role]", "I want to [action]", and "So that [value]" triad. Record the story ID, title, and epic association.1133. **Generate Gherkin criteria.** Produce 3--5 acceptance criteria per story using the format: `Given [precondition], When [action], Then [expected result]`. Criteria shall cover:114 - The happy-path scenario (normal successful flow)115 - At least one error or edge-case scenario116 - At least one boundary-condition scenario1174. **Append NFR criteria.** If `projects/<ProjectName>/_context/quality_standards.md` exists, read it and append non-functional acceptance criteria with measurable thresholds (response time, throughput, encryption standard, etc.) to each relevant story.1185. **Flag untestable stories.** If a story cannot yield deterministic, binary pass/fail criteria, tag it with `[AC-FAIL]` and append a remediation note identifying the missing or ambiguous element.1196. **Write output.** Write `projects/<ProjectName>/<phase>/<document>/acceptance_criteria.md` with each story's criteria grouped under its US-XXX identifier, including cross-references back to the originating story and epic.120121## Output Format Specification122123The generated `acceptance_criteria.md` shall follow this structure:124125```markdown126# Acceptance Criteria: [Project Name]127128**Generated:** [Date]129**Source:** user_stories.md130**Standard:** IEEE 29148-2018 Sec 6.4.5, Gherkin/BDD Format131132---133134## US-001: [Story Title]135136**Epic:** [Epic Name]137**Story:** As a [role], I want to [action], So that [value]138139### Functional Criteria140141- [ ] **AC-001.1:** Given [precondition], When [action], Then [expected result]142- [ ] **AC-001.2:** Given [error condition], When [action], Then [error handling result]143- [ ] **AC-001.3:** Given [boundary condition], When [action], Then [boundary result]144145### NFR Criteria (if applicable)146147- [ ] **AC-001.NFR-1:** Given [load condition], When [action], Then [measurable threshold]148149---150151## US-002: [Story Title]152153[... repeat per story ...]154155---156157## Summary158159| Metric | Value |160|--------|-------|161| Stories Processed | N |162| Total Criteria Generated | N |163| NFR Criteria | N |164| Failures Flagged ([AC-FAIL]) | N |165```166167## Common Pitfalls168169- **Vague criteria:** Avoid language such as "the system handles it correctly." Each criterion shall state a concrete, observable outcome.170- **Missing negative cases:** Every story shall include at least one error-path criterion. Omitting negative cases leaves validation gaps.171- **Subjective language:** Words like "fast," "intuitive," or "user-friendly" violate IEEE 29148 verifiability. Replace with measurable thresholds.172- **Orphaned criteria:** Every criterion shall trace back to exactly one US-XXX identifier. Criteria without story references shall be flagged.173174## Verification Checklist175176Before finalizing the output:177178- [ ] Every user story in `user_stories.md` has a corresponding criteria section in `acceptance_criteria.md`179- [ ] Each story has 3--5 acceptance criteria in Gherkin format180- [ ] At least one error/edge-case criterion exists per story181- [ ] At least one boundary-condition criterion exists per story182- [ ] All NFR criteria include measurable, numeric thresholds183- [ ] Stories that lack testable criteria are tagged with `[AC-FAIL]` and include remediation notes184185## Integration186187- **Upstream:** `01-user-story-generation` -- provides `user_stories.md`188- **Downstream:** `05-testing-documentation/` -- acceptance criteria become test cases; `03-story-mapping` -- maps criteria coverage across the backlog189190## Standards Compliance191192This skill implements:193194- **IEEE Std 29148-2018** Section 6.4.5: Requirements specification and verifiability195- **Gherkin/BDD Format:** Given-When-Then structure for behavioral specifications196- **IEEE Std 610.12-1990:** Terminology alignment via project glossary197198## Resources199200- `logic.prompt` -- Direct AI execution instructions for this skill201- `README.md` -- Objective summary and quick-start guide202203---204205**Last Updated:** 2026-02-28206**Skill Version:** 1.0.0