Master user story templates including As-a/I-want/So-that format, acceptance criteria (Given-When-Then), story splitting, and INVEST criteria...
Comprehensive templates and frameworks for writing effective user stories with clear acceptance criteria, enabling agile development teams to deliver value incrementally.
A user story is a concise description of a feature from the end-user's perspective. It follows the format: "As a [user], I want [goal], so that [benefit]."
Purpose:
Auto-loaded by agents:
requirements-engineer - For user story formats, epic breakdown, and spike storiesUse when you need:
As a [user type/persona]
I want to [action/goal]
So that [benefit/value]
Example:
As a small business owner
I want to export my invoices as PDF
So that I can send professional-looking invoices to clients
1. User Type/Persona (Who)
2. Action/Goal (What)
3. Benefit/Value (Why)
For detailed guidance on each component, see assets/basic-user-story-template.md.
We provide copy-paste-ready templates for common story types:
Use for: New features, enhancements, user-facing work
Template: assets/feature-story-template.md
Includes:
Use for: Defects, regressions, user-reported issues
Template: assets/bug-fix-story-template.md
Includes:
Use for: Refactoring, code improvements, infrastructure work
Template: assets/technical-debt-story-template.md
Includes:
Use for: Time-boxed investigation, POCs, research tasks
Template: assets/spike-research-story-template.md
Includes:
Use for: Breaking large initiatives into manageable stories
Template: assets/epic-breakdown-template.md
Includes:
Acceptance criteria define when a story is "done." Use one of three formats:
Best for: Complex workflows, state-dependent behavior, testing focus
GIVEN [precondition/context]
WHEN [action/event]
THEN [expected outcome]
Example:
GIVEN I'm on the login page
WHEN I enter valid email and password
THEN I'm redirected to my dashboard
Best for: Simple features, quick validation, straightforward requirements
Acceptance Criteria:
- [ ] [Observable outcome 1]
- [ ] [Observable outcome 2]
- [ ] [Observable outcome 3]
Example:
- [ ] Export button appears on data table
- [ ] Clicking export generates CSV file
- [ ] CSV includes all visible columns
- [ ] CSV filename includes current date
- [ ] Export completes within 5 seconds for up to 10K rows
Best for: Variable scope, prioritization needed, time-constrained sprints
Must: [Critical requirements]
Should: [Important but not critical]
May: [Nice to have]
Comprehensive guide: See references/invest-criteria-guide.md for deep dive on writing testable, specific criteria including error states, edge cases, and performance requirements.
Large stories (>5 days or >8 points) should be split into smaller, deliverable pieces.
1. Workflow Steps: Sequential process steps (e.g., checkout: cart → shipping → payment → confirmation)
2. CRUD Operations: Create → Read → Update → Delete
3. User Roles: Admin → Manager → Employee → Guest
4. Business Rules: Different variations of logic (e.g., discount types: percentage, fixed amount, BOGO)
5. Simple to Complex: MVP → Advanced features (progressive enhancement)
6. Happy Path vs Edge Cases: Success scenarios → Error handling
7. Data Variations: Different formats, sizes, types
8. Platform/Device: Desktop → Tablet → Mobile
9. Performance Tiers: 1-5 users → 6-20 users → 21-100 users
10. Interface vs API: Backend → Frontend → Integration
Best practice: Use vertical slicing (complete feature through all layers) vs horizontal slicing (one layer across many features).
Comprehensive guide: See references/story-splitting-guide.md for detailed examples, anti-patterns, and decision trees.
Good user stories follow the INVEST principles:
I - Independent: Can be developed without dependency on other stories N - Negotiable: Details flexible, focuses on outcome not implementation V - Valuable: Delivers clear value to user or business E - Estimable: Team can estimate effort with reasonable confidence S - Small: Fits in one sprint (1-5 days) T - Testable: Clear acceptance criteria that can be verified
If a story fails any INVEST criterion, it should be rewritten or split.
Comprehensive guide: See references/invest-criteria-guide.md for deep dive on each principle with examples, anti-patterns, and fixing strategies.
DO:
DON'T:
As a free trial user
I want to see how many days remain in my trial
So that I can decide when to upgrade
Acceptance Criteria:
- [ ] Days remaining appears in header
- [ ] Warning shows when <7 days remain
- [ ] "Upgrade" CTA appears with countdown
- [ ] Counter updates daily at midnight
As the system
I want to implement a counter using React hooks
So that the trial days feature works
[No acceptance criteria]
DO:
Good Example:
- [ ] Search completes within 2 seconds for datasets <10K records
- [ ] Loading spinner shows while search is processing
- [ ] Error message appears if search fails
- [ ] No results message shows when query returns 0 items
- [ ] Search results highlight matching keywords
Bad Example:
- Search feature works
- UI looks good
- Performance is acceptable
Too technical:
Too large:
Implementation-focused:
Missing acceptance criteria:
Vague:
Copy-paste these for immediate use:
assets/basic-user-story-template.md - Simple story format with guidanceassets/feature-story-template.md - Full-featured story with DoDassets/bug-fix-story-template.md - Bug tracking and resolutionassets/technical-debt-story-template.md - Technical improvementsassets/spike-research-story-template.md - Time-boxed researchassets/epic-breakdown-template.md - Epic to stories breakdownWhen you need comprehensive guidance:
references/story-splitting-guide.md - 10 splitting patterns with examples, anti-patterns, decision treesreferences/invest-criteria-guide.md - Writing testable criteria, all three formats, common mistakesreferences/invest-criteria-guide.md - Deep dive on each INVEST principle with examples and fixesFor new features:
assets/feature-story-template.mdreferences/invest-criteria-guide.md if needed)references/story-splitting-guide.mdFor bugs:
assets/bug-fix-story-template.mdFor research:
assets/spike-research-story-template.md"My stories are too big to estimate": Apply the INVEST S (Small) test. If a story can't ship in one sprint, split it. Use the splitting patterns in references/story-splitting-guide.md -- split by workflow step, user type, data variation, or happy path vs. error handling.
"Developers say my acceptance criteria are unclear": Switch to Given-When-Then format. "Given [precondition], When [action], Then [outcome]" forces you to be specific. If you can't write the Given clause, you don't understand the starting state well enough.
"Every story feels like it depends on every other story": You're writing at the wrong level. Stories should be independently deliverable (the I in INVEST). If they can't be, you likely have an epic that needs decomposition, not a set of interdependent stories.
prd-templates - PRD structure for the feature these stories belong tospecification-techniques - Broader spec writing including non-functional requirementsprioritization-methods - Prioritizing stories in the backlogKey Principle: Great user stories are conversations, not contracts. They enable collaboration while providing enough structure to guide development, testing, and acceptance.