Acceptance Criteria Generator

Turn a feature idea into testable Given/When/Then criteria.

  • $25 Free
  • 45 sec
  • No signup
1

Describe the feature in one line

2

Add the happy path and edge cases

3

Copy the Gherkin criteria

You get: Given/When/Then acceptance criteria + a definition of done.

Feature

Output format
Scenarios (2)
#1
#2

Criteria output

# Acceptance criteria

**User story:** As a returning user, I want to reset my password by email so that I can regain access when I forget it.

## Scenario: Happy path
- **Given** a registered user is on the login page
- **When** they request a reset and open the emailed link
- **Then** they can set a new password and log in with it

## Scenario: Expired link
- **Given** a reset link was issued over 60 minutes ago
- **When** the user opens it
- **Then** they see an 'expired, request a new one' message and no password change is allowed

## Definition of done
- [ ] Reset link expires after 60 minutes
- [ ] Old password stops working immediately after reset
- [ ] Rate limited to 5 requests per hour per account

100% in-browser. Nothing is uploaded. Hand this straight to Claude Code as the spec to build and test against.

Acceptance criteria are the contract, not the code

Acceptance criteria define what 'done' means for a piece of work before anyone writes a line of code. They answer one question with no ambiguity: how will we know this feature actually works? Good criteria are testable - each one can be checked as pass or fail with no judgment call. Vague goals like 'the login should be fast' are not criteria; 'the login page responds within 500ms at the 95th percentile' is. The whole point is to remove the gap between what was asked for and what was built.

This generator produces criteria in two proven formats. Given/When/Then is Gherkin, the structure behind behavior-driven development and tools like Cucumber - it forces you to state a precondition, an action, and an expected outcome for every scenario. The checklist format is lighter weight for smaller tickets. Both emit clean Markdown with a definition-of-done block, and both are designed to be pasted directly into Claude Code as the specification to build against.

The Given / When / Then structure

  • Given - the starting state or precondition. 'Given a registered user is on the login page.' This sets up the world before anything happens.
  • When - the single action the user or system takes. 'When they submit a valid email and password.' Keep it to one action; multiple whens are a sign the scenario should be split.
  • Then - the observable, checkable outcome. 'Then they are redirected to the dashboard.' If you cannot observe it, it is not a valid Then.
  • And / But - optional extra conditions or outcomes, but use them sparingly. A scenario that needs four Ands is usually two scenarios.

One scenario, one behavior

Each scenario should test exactly one behavior. The happy path is one scenario; the expired-link case is another; the rate-limit case is a third. Cramming them together produces criteria nobody can verify cleanly.

Cover the edges, not just the happy path

The happy path is the easy 20% of the specification. The value of acceptance criteria lives in the edges: what happens with invalid input, with an expired token, when the network drops mid-request, when two users act at once, when a limit is hit. Most production bugs are edge cases that nobody wrote a criterion for, so nobody built for them and nobody tested them. Before you consider criteria complete, walk the list and ask for each scenario: what is the failure mode, and is there a Then that describes it?

The definition of done catches the invisible work

Acceptance criteria describe behavior; the definition of done describes the non-negotiables that apply to every ticket regardless of behavior - tests written, docs updated, no new linter errors, security-sensitive paths reviewed, accessibility checked. Keeping these in a separate block means they never get forgotten in the rush to ship the visible feature. A feature that works but ships with no tests and a broken screen reader is not done; the definition-of-done block is where you encode that standard once and reuse it everywhere.

Handing acceptance criteria to Claude Code

Acceptance criteria are close to the ideal input for Claude Code, because they are an unambiguous specification. Paste the criteria in and ask it to implement against them, then paste them again and ask it to write the tests that prove each scenario. Because each Given/When/Then maps almost one-to-one onto a test case, the model can generate a test suite that mirrors your criteria exactly - which means your tests and your spec stay in sync by construction.

  1. Write the criteria first, using this tool, before asking for any implementation.
  2. Paste them into Claude Code with 'Implement exactly these acceptance criteria, and stop if any is ambiguous.'
  3. Then ask 'Write one test per scenario above, named after the scenario, and show me which criteria are not yet covered.'
  4. Use the definition-of-done block as a final gate: 'Confirm each item in the definition of done is satisfied before you call this complete.'

Signs your criteria need more work

  • A criterion uses a subjective word - fast, easy, intuitive, clean - with no measurable threshold behind it.
  • There is only a happy path and no failure or edge scenarios at all.
  • A single scenario has three Whens, which means it is really three scenarios wearing one hat.
  • The Then describes an internal implementation detail rather than an observable outcome the user or a test can see.
  • No definition of done, so 'done' silently means 'the code compiles' rather than 'it is tested, documented, and safe'.

Frequently asked questions

  • Is my data sent to a server?

    No. Everything runs client-side in your browser. There is no network request, no storage, and no account. Close the tab and the data is gone.

  • What is the difference between the two formats?

    Given/When/Then is Gherkin, the structured format used in behavior-driven development, and maps cleanly onto automated tests. The checklist format collapses each scenario into a single verifiable line and is lighter weight for small tickets.

  • How many scenarios should a feature have?

    There is no fixed number, but a good rule is one happy path plus one scenario per meaningful failure or edge case. Most real features land between three and seven. If you have twenty, the feature is probably too big and should be split.

  • What makes a criterion testable?

    It can be checked as an unambiguous pass or fail with no opinion involved. 'Responds within 500ms' is testable; 'feels responsive' is not. If two people could disagree on whether it passed, it needs a measurable threshold.

  • Why keep the definition of done separate?

    Acceptance criteria describe what the feature does; the definition of done describes standards that apply to every ticket - tests, docs, accessibility, security. Separating them means the cross-cutting standards never get dropped when a feature is rushed.

  • Can Claude Code write the tests from these?

    Yes, and this is one of the strongest workflows. Each Given/When/Then maps almost directly onto a test case, so pasting the criteria in and asking for one test per scenario produces a suite that mirrors your spec exactly.

Liked this tool? The club is the next step.

Join Claude Code Club for $9/month. 650+ lessons, weekly updates, and the workflows behind every tool on this site.

  • No experience needed
  • Cancel anytime
  • Updated weekly