User stories, acceptance criteria, sprint planning
| Field | Value |
|---|---|
| Type | Skill Resource |
| Source | ~/.copilot/skills/product/references/user-stories.md |
| Description | Not specified |
Source Content
User stories, acceptance criteria, sprint planning
Absorbed from the former agile-product-owner skill. Turns fuzzy feature
requests into stories an engineer can pick up Monday and a tester can verify
Friday. Keeps the backlog honest about cost, value, and what’s actually
ready.
Use for
- Writing user stories and Given-When-Then acceptance criteria.
- Splitting epics into ≤8-point, independently shippable slices.
- Sprint planning: capacity math, commitment vs stretch, sequencing.
- Backlog prioritization (RICE / WSJF-style trade-offs) at the sprint level —
for RICE portfolio scoring across a roadmap, use
references/rice-and-discovery.mdinstead. - Refining vague requests until they pass INVEST.
Examples
- “Write a user story for letting users export their data” → emit an INVEST-checked story with persona + outcome and 4–6 Given-When-Then ACs covering happy path, validation, error, and accessibility.
- “Break this epic into a sprint” → split into ≤8-point independently shippable slices, sequence for value, and hand back a sprint loadout at 85% capacity.
- “Estimate this story” → size in Fibonacci, flag unknowns instead of padding, and refuse to estimate anything still failing INVEST Small.
How I work
- Name the persona and outcome. “As a [role], I want [capability], so that [outcome].” If the outcome is fuzzy, ask before drafting.
- Draft acceptance criteria in Given-When-Then. Each AC is independently testable; happy path, validation, error, performance, accessibility.
- Run INVEST. If the story fails Small, split — by workflow step, persona, data type, CRUD operation, or happy-path-first.
- Size with Fibonacci. 13+ means split again. Flag unknowns rather than padding the estimate.
- Sequence for value. Quick wins early; risky/learning stories early; dependencies surfaced.
- Plan to ~85% capacity. Committed at 85%, stretch at 10–15%, leave room for unplanned work.
- Confirm Definition of Done. Code reviewed, tests passing, AC verified, docs updated, PO accepted.
Who I learn from
Agile foundations: Mike Cohn (INVEST — User Stories Applied), Jeff Patton (User Story Mapping — map the journey before you stack a backlog), Ron Jeffries (“card, conversation, confirmation”).
Outcome-oriented product: Marty Cagan (Inspired), Teresa Torres (Continuous Discovery Habits), Melissa Perri (Escaping the Build Trap — a backlog of features is not a strategy).
Writing for action: Bryan Garner (precise verbs, concrete nouns), Edgar Schein (Humble Inquiry), William Zinsser (On Writing Well).
Self-rubric
- Outcome, not feature — the “so that” names a user-visible result, not an implementation.
- AC is testable — a QA could write the test from the AC without asking.
- INVEST passes — especially Small (≤8) and Independent (no blocking sibling).
- No invented numbers — story points reflect uncertainty; don’t pretend to know capacity not given.
- Sprint math adds up — committed ≤85% of (velocity × availability), stretch sized separately.
- A peer PO would accept this. Otherwise revise.
Templates and tools
references/user-stories-ac-templates.md— story templates by type (feature, improvement, bug fix, integration, enabler), the persona library, Given-When-Then patterns, INVEST checklist, story splitting techniques, Fibonacci estimation, and antipatterns.references/user-stories-sprint-planning-guide.md— sprint planning workflow, capacity math, WSJF, backlog organization, ceremonies (standup, refinement, review, retro), velocity/burndown tracking, Definition of Done.scripts/user_story_generator.py— generates INVEST-checked stories from an epic description and can pack a sprint by capacity (sprint <points>).