pm-user-stories — Break an Epic into User Stories

SkillDev tools

Breaks an Epic or large requirement into independent User Stories with acceptance criteria in Given-When-Then format, an INVEST check, and Story Point estimation (Fibonacci or T-shirt). Outputs a Story Map with Sprint planning suggestions. User-invoked only — do NOT auto-trigger. Triggers on /pm

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the pm-user-stories — Break an Epic into User Stories skill

What this skill tells your AI

The instructions your AI receives, as published by serejaris/personal-corp-os in skills/pm-user-stories/SKILL.md and read by ahel’s review.

Part of the Personal Corp framework — running a one-person business through AI agents. Decompose a large requirement or Epic into independently-deliverable User Stories. Every Story is validated against INVEST. Output is ready to paste into Jira, Linear, or GitHub Issues.

Inputs

FieldRequiredNotes
Requirement descriptionyesAn Epic or large requirement; can paste a PRD section
GranularitynoSprint-level (1-3 days/story) or iteration-level (1-2 weeks); default Sprint
Team compositionnoFE+BE split / full-stack / has mobile — affects per-tier splitting
Estimation systemnoFibonacci (1/2/3/5/8/13) or T-shirt (S/M/L/XL); default Fibonacci

Step 1 — Map the full requirement

Extract from the requirement:

  • Roles involved: who uses this? (end user, admin, ops, etc.)
  • Core flow: main path? branches?
  • Business rules: constraints and conditions?
  • Data entities: what data objects are involved?

Step 2 — Pick a splitting pattern

Five patterns. Pick by requirement shape; combine for hybrids.

PatternWhen to useExample
By workflow stepRequirement is a complete processCheckout → pick item / address / payment / confirm
By business-rule variantSame feature with multiple rule setsDiscount → fixed-amount / coupon / points / combined
By CRUD operationRequirement centers on one data objectAddress book → create / edit / delete / set default
By role perspectiveMulti-role featureOrder management → user view / merchant processing / ops dashboard
By complexity progressionFeature has simple and full versionsSearch → keyword / filters / suggestions / history

Selection principle: target ≤ 1 Sprint per Story. Hybrid requirements combine patterns.

Granularity calibration:

  • Stories < 3 → likely too coarse; check for hidden sub-flows
  • Stories > 20 → likely too fine, or this is multiple Epics; split Epics first
  • Single Story estimate > 8 points → too big; split further

Step 3 — Write each User Story + AC

### US-{N}: {Story title — verb-led, e.g. "Choose payment method"}

**Role:** As a {role}
**Action:** I want to {specific action}
**Value:** so that {business value}
**Priority:** P0 (must) / P1 (important) / P2 (nice-to-have)
**Story Points:** {estimate}

**Acceptance Criteria:**
- [ ] Given {precondition}, When {action}, Then {expected result}
- [ ] Given {exception precondition}, When {action}, Then {error handling}

**Dependencies:** {other Story IDs, or "none"}
**Tech notes:** {dev callouts, optional}

Story Point reference (Fibonacci):

PointsComplexityEffortTypical scope
1Trivial< 0.5 dayCopy change, config tweak, add an event
2Simple0.5-1 dayOne CRUD operation, form validation
3Medium1-2 daysA complete feature point with business logic
5Complex2-4 daysMulti-module interaction
8Big4-7 daysNew system / new flow core module
13Re-split> 1 weekMeans the Story is too big — must split

AC quality rules — every AC must satisfy:

  • Specific: Given clause has a concrete precondition ("user logged in AND balance ≥ 100"), not "user logged in"
  • Testable: Then clause has a verifiable result ("balance decreases by 100 AND order status = paid"), not "payment succeeds"
  • Edge coverage: every Story has ≥ 1 happy-path AC + ≥ 1 exception-path AC

Step 4 — INVEST validation

Run each Story against the six checks:

PrincipleCheckIf fails
IndependentDelete this Story — can the others still ship?Cyclic deps → merge or re-split
NegotiableDoes it describe "what" or "how"?Strip implementation detail, keep value
ValuableWill the user perceive value when this ships?Pure refactor → attach to a user-perceivable feature
EstimableCan the team agree on points within 5 minutes?Wide spread = unclear requirement; clarify first
SmallFits in one Sprint?Larger → split
TestableCan QA write test cases directly from the AC?Add concrete edge values and expected results

Definition of Ready (must hold before entering development):

CheckStandardIf unmet
AC complete≥ 1 happy + ≥ 1 exceptionFill ACs, then schedule
No blocking depsAll upstream Stories done or mockableTag "Blocked", push to a later Sprint
Designs readyUI Stories have design specsNo designs → tag "Needs design"
Estimation consensusSpread < 2×Re-discuss scope until agreed
Business rules confirmedAll [TBD] resolvedConfirm with PM/business, then dev

Dependency rules:

  • Data dependency: Story B needs data created by Story A → B depends on A
  • Interface dependency: Story B calls API provided by A → B depends on A
  • No dependency: Stories on different objects or different roles → parallel
  • Pseudo-dependency: looks dependent but mockable → tag "Mockable to decouple"

Step 5 — Output a Story Map

## Epic: {requirement name}

### Story Map (user journey → Story mapping)

| Journey stage | Stories | Priority | Points |
|---|---|---|---|
| {stage 1} | US-001, US-002 | P0 | 5 |
| {stage 2} | US-003, US-004 | P1 | 8 |

### Sprint planning
- **Sprint 1 (MVP):** {Story list}, total {X} points
- **Sprint 2:** {Story list}, total {X} points

### Dependencies
US-001 → US-003 → US-005 (must follow this order)
US-002, US-004 (parallel)

Quality bar

  1. Every Story passes all six INVEST checks
  2. AC uses Given-When-Then with ≥ 1 happy + ≥ 1 exception
  3. Dependencies tagged explicitly, with mockability flagged
  4. 13-point Stories must be re-split
  5. Story Map includes Sprint planning suggestion

When input is incomplete

  • One-sentence requirement → first output a feature outline, confirm scope, then split
  • Too large (> 20 Stories) → recommend splitting into Epics; agree on MVP scope first
  • Missing business rules → tag [business rule TBD] and propose plausible assumptions for confirmation

Related skills

  • /pm-prd — write a PRD first to lock scope, then break into Stories
  • /pm-prioritize — when there are many Stories, RICE-rank for Sprint priority

Signals

GitHub stars
226
Forks
27
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
pm-user-stories
Source
github.com/serejaris/personal-corp-os