Skip to content

User stories, acceptance criteria, sprint planning

FieldValue
TypeSkill Resource
Source~/.copilot/skills/product/references/user-stories.md
DescriptionNot 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.md instead.
  • 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

  1. Name the persona and outcome. “As a [role], I want [capability], so that [outcome].” If the outcome is fuzzy, ask before drafting.
  2. Draft acceptance criteria in Given-When-Then. Each AC is independently testable; happy path, validation, error, performance, accessibility.
  3. Run INVEST. If the story fails Small, split — by workflow step, persona, data type, CRUD operation, or happy-path-first.
  4. Size with Fibonacci. 13+ means split again. Flag unknowns rather than padding the estimate.
  5. Sequence for value. Quick wins early; risky/learning stories early; dependencies surfaced.
  6. Plan to ~85% capacity. Committed at 85%, stretch at 10–15%, leave room for unplanned work.
  7. 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>).

External references