TemplateGuideintermediate12 min read

User Story & Acceptance Criteria Guide

Write clear user stories that developers love and stakeholders understand

The best user stories disappear. Developers read them, understand instantly what to build, and never think about them again. Bad user stories create meetings. Endless clarification. Scope creep. Missed deadlines.

This guide shows you how to prompt AI to write user stories that pass the “no questions asked” test. Stories with acceptance criteria so clear that your QA engineer could write tests without talking to you.

Before
Write a user story for user login.
After
Write a user story for email/password login with the following context:

PRODUCT: B2B SaaS project management tool
USER: Team member who needs to access their workspace
BUSINESS CONTEXT: We have 30% of users on mobile, need to support SSO later

REQUIREMENTS:
- Email + password authentication
- Remember me option (30 days)
- Forgot password flow
- Rate limiting after 5 failed attempts

OUTPUT FORMAT:
1. User story in "As a... I want... So that..." format
2. Acceptance criteria in Given/When/Then format
3. Edge cases to consider
4. Out of scope items

CONSTRAINTS:
- Must work offline-first (queue login when back online)
- Accessibility: WCAG 2.1 AA compliance

The User Story Format

The classic format works because it forces you to think about WHO, WHAT, and WHY:

As a [type of user],

I want [some goal],

So that [some reason/benefit].

The “So that” clause is the most important and most often skipped. It tells developers WHY this matters, which helps them make good tradeoff decisions during implementation.

Insight

If you cannot articulate the “So that” clause, the feature might not be worth building. This is your sniff test for feature creep.

The INVEST Framework

Use INVEST as a checklist to validate your stories. If a story fails any criterion, it needs work.

1

Independent

Stories should be self-contained. No dependencies on other stories to deliver value.
2

Negotiable

Stories are not contracts. They are conversation starters that can be adjusted during development.
3

Valuable

Every story must deliver value to the user or business. No technical tasks disguised as stories.
4

Estimable

The team should be able to estimate the effort. If not, the story needs more clarity or splitting.
5

Small

Stories should fit within a sprint. If it takes more than a few days, split it.
6

Testable

Clear criteria for done. If you cannot test it, you cannot ship it.

Pro Tip

Include INVEST criteria in your AI prompts. Ask it to validate stories against INVEST and flag any violations.

Acceptance Criteria Formats

Acceptance criteria define “done.” Without them, stories are wishes. With them, they are contracts.

Given/When/Then (Gherkin Syntax)

Best for behavior-driven development (BDD). These criteria can be directly converted to automated tests.

Given I am on the login page
When I enter valid credentials and click Login
Then I should be redirected to my dashboard
And I should see a welcome message with my name

Gherkin works well when:

  • Your team practices BDD or TDD
  • You need automated acceptance tests
  • The behavior has clear state transitions

Checklist Style

Simpler format for stories where state transitions are less important than feature completeness.

Acceptance Criteria:

  • [ ] User can enter email and password
  • [ ] System validates email format before submission
  • [ ] “Remember me” checkbox persists session for 30 days
  • [ ] Failed login shows specific error message
  • [ ] Account locks after 5 failed attempts
  • [ ] Forgot password link sends reset email within 30 seconds

Pro Tip

Use checklist style when you want QA to literally check boxes. Use Gherkin when you want automation engineers to write tests.

Prompt Templates

Copy these templates and customize for your product and team conventions.

User Stories from Requirements

Turn vague requirements or feature requests into structured user stories.

Requirements to User Stories
Convert this feature request into user stories.

FEATURE REQUEST:
[Paste the raw requirement, email, or stakeholder request here]

CONTEXT:
- Product: [Your product name and type]
- Target users: [Who will use this feature]
- Current state: [What exists today, if anything]
- Sprint capacity: [How many story points/days available]

OUTPUT REQUIREMENTS:
1. Break into multiple stories if the feature is too large
2. Each story must follow "As a... I want... So that..." format
3. Include acceptance criteria in Given/When/Then format
4. Validate each story against INVEST criteria
5. Flag any assumptions that need stakeholder clarification

CONSTRAINTS:
- Stories should be completable in 1-3 days
- Prioritize by user value, not technical dependency
- Mark any technical enablers separately (not as user stories)

Acceptance Criteria Generation

Already have a user story? Generate comprehensive acceptance criteria.

Acceptance Criteria Generator
Generate acceptance criteria for this user story.

USER STORY:
[Paste your user story here]

CONTEXT:
- Platform: [web, mobile, API, etc.]
- User type: [permissions, role, experience level]
- Integration points: [other systems this touches]

GENERATE:
1. Happy path scenarios (Given/When/Then)
2. Error handling scenarios
3. Edge cases and boundary conditions
4. Performance criteria (if applicable)
5. Accessibility requirements
6. Security considerations

FORMAT:
Use Gherkin syntax (Given/When/Then) for each scenario.
Group scenarios by: Happy Path, Error Handling, Edge Cases.

ALSO INCLUDE:
- Out of scope items (what this story does NOT include)
- Dependencies on other stories or systems
- Test data requirements

Edge Case Discovery

The bugs that ship are the edge cases nobody thought about. Use AI to think of them.

Edge Case Discovery
Identify edge cases for this user story.

USER STORY:
[Paste your user story here]

CONTEXT:
- User types: [different roles, permissions, experience levels]
- Data constraints: [limits, formats, required fields]
- Environment: [browsers, devices, network conditions]
- Integrations: [third-party services, APIs]

FIND EDGE CASES FOR:
1. Input boundaries (empty, max length, special characters)
2. Timing issues (slow network, timeouts, concurrent actions)
3. State transitions (interrupted flows, back button, refresh)
4. Permissions (unauthorized access, expired sessions)
5. Data edge cases (duplicates, null values, Unicode)
6. Error recovery (retry logic, partial failures)

OUTPUT FORMAT:
For each edge case:
- SCENARIO: [Brief description]
- TRIGGER: [How a user might encounter this]
- EXPECTED BEHAVIOR: [What should happen]
- RISK IF MISSED: [Impact of not handling this]

Prioritize by likelihood and impact.

Warning

AI finds obvious edge cases well. It misses domain-specific edge cases. Always review with someone who knows your users and data.

Story Splitting

Large stories kill velocity. Split them into deliverable increments that each provide value.

Story Splitting
Split this large user story into smaller, deliverable stories.

ORIGINAL STORY:
[Paste the large story here]

CONSTRAINTS:
- Each story must be completable in 1-3 days
- Each story must deliver user-visible value (no "backend only" stories)
- Stories should be independently deployable when possible
- Maintain a logical progression users can follow

SPLITTING STRATEGIES TO CONSIDER:
1. By user workflow steps
2. By data variations (CRUD operations)
3. By user roles or permissions
4. By platform (web first, then mobile)
5. By business rules (simple case first, then exceptions)
6. By acceptance criteria (each criterion becomes a story)

OUTPUT:
For each split story:
1. User story in standard format
2. Brief acceptance criteria
3. Dependencies on other stories (if any)
4. Value delivered independently

Also provide:
- Recommended implementation order
- Which stories could be parallel vs sequential
- MVP subset (minimum stories for usable feature)

Common Mistakes to Avoid

These patterns make stories harder to implement and test:

Technical tasks as user stories

“As a developer, I want to refactor the database schema” - This is a task, not a user story. Real users do not care about your schema.

Missing the “So that”

“As a user, I want to filter by date” - Why? To find recent items? To generate reports? The reason changes the implementation.

Solution in the story

“As a user, I want a dropdown menu to select my country” - Prescribing UI. Maybe autocomplete is better. Focus on the need, not the solution.

Epic disguised as a story

“As a user, I want to manage my account settings” - This is 10 stories pretending to be one. Split it.

Vague acceptance criteria

“The page should load quickly” - How quickly? “Under 2 seconds on 3G” is testable. “Quickly” is not.

Jira, Linear & Notion Integration

AI-generated stories need to land in your actual tools. Here is how to format for direct import.

Jira Format
Format this user story for Jira import.

USER STORY:
[Your story here]

OUTPUT AS:
- Summary: [One line for Jira title]
- Description: Full story in Jira wiki markup
- Acceptance Criteria: As a checklist in description
- Labels: [relevant tags]
- Story Points: [estimate if possible]
- Components: [affected areas]

Use Jira wiki syntax:
- h3. for headings
- * for bullets
- {code} for code blocks
- [link text|url] for links
Linear Format
Format this user story for Linear.

USER STORY:
[Your story here]

OUTPUT AS:
- Title: [Concise, action-oriented]
- Description: Markdown formatted
- Labels: [feature, bug, improvement, etc.]
- Priority: [Urgent, High, Medium, Low]
- Estimate: [points or t-shirt size]

Use Linear conventions:
- Checkboxes for acceptance criteria: - [ ]
- Code blocks with language hints
- Link related issues with #issue-id format
Notion Format
Format this user story for a Notion database.

USER STORY:
[Your story here]

OUTPUT AS:
Property fields:
- Name: [Story title]
- Status: [Backlog/Ready/In Progress/Done]
- Priority: [P0/P1/P2/P3]
- Sprint: [if known]
- Owner: [if assigned]

Page content (Markdown):
## User Story
[Full story]

## Acceptance Criteria
[Checkboxes]

## Technical Notes
[Implementation hints]

## Open Questions
[Unresolved items]

Pro Tip

Create a saved prompt template for your team’s specific tool and conventions. Include your custom fields, labels, and formatting preferences.

Next Steps

Great user stories are built from great context. AskSmarter.ai guides you through the right questions about your users, requirements, and constraints to generate stories your team will love.

Build your user stories now

Stop writing user stories from scratch. Answer questions about your feature, and get complete stories with acceptance criteria - ready to paste into Jira, Linear, or Notion.

Start building free