Write clear, testable acceptance criteria for user stories and feature delivery; use when defining done conditions, creating measurable requirements, applying INVEST checks, documenting negative scenarios, and aligning product, engineering, and QA on expected outcomes.
Does it follow best practices?
Evaluation — 91%
↑ 1.17xAgent success when using this tile
Validation for skill structure
Navigation hub for writing measurable, test-ready acceptance criteria.
Starting Point (Vague Requirement):
"Users should be able to reset their password easily."
Step 1: Capture Intent
Step 2: Select Format Choose Given/When/Then (Gherkin) for clarity.
Step 3: Draft Must-Pass Criteria
Given a user is on the login page
When they click "Forgot Password"
Then a password reset form appears within 1 second
Given a user enters a valid email in the reset form
When they click "Send Reset Link"
Then an email is sent within 30 seconds
And the email contains a clickable reset link valid for 24 hours
Given a user clicks the reset link from the email
When they enter a new password (min 8 chars, 1 uppercase, 1 number)
And click "Update Password"
Then the password is updated
And they are redirected to login within 2 secondsStep 4: Add Negative & Boundary Scenarios
Given a user enters an unregistered email
When they click "Send Reset Link"
Then they see "Email not found" message (no account enumeration)
Given a user's reset link has expired (>24 hours old)
When they click the link
Then they see "Link expired, request a new one"
Given a user enters a weak password (e.g., "pass")
When they click "Update Password"
Then validation error appears: "Password must be 8+ chars with uppercase and number"Step 5: Validation Checklist
# Find vague language
grep -nE "\b(should be|user-friendly|fast|easy|good)\b" <file>.md# Count checklist criteria lines
grep -nE "^- \[ \]" <file>.md | wc -l# Detect missing negative/error words
grep -niE "invalid|error|timeout|denied|failed" <file>.mdUser Story:
As a [role], I want [action], so that [benefit].
Acceptance Criteria (Must Have):
- [ ] ...
- [ ] ...
Negative/Edge Scenarios:
- [ ] ...
Out of Scope:
- ...WHY: vague language cannot be tested objectively. BAD: "The system should be fast." GOOD: "Search returns in <= 2s for 95% of requests."
WHY: criteria define outcomes, not implementation details. BAD: "Use JavaScript validation on submit button click." GOOD: "Invalid form input shows error message within 1 second."
WHY: real users hit error and edge conditions. BAD: only valid-login scenario listed. GOOD: include invalid credentials, timeout, and expired session behavior.
WHY: broad criteria hide failure source and reduce test clarity. BAD: "Checkout and email and invoice should work." GOOD: split into separate measurable criteria.
WHY: misalignment causes rework at QA/review time. BAD: criteria written without stakeholder validation. GOOD: confirm criteria with product and QA before implementation.
| Topic | Reference |
|---|---|
| INVEST criteria | references/invest-criteria.md |
| Gherkin examples | references/gherkin-examples.md |
| Pattern selection | references/patterns-by-type.md |
| Scenario examples | references/examples.md |
| Reusable templates | references/templates.md |