agentskills.codes
ST

story-slicing

Slice epics and oversized stories into independently deliverable vertical slices. Analyzes the codebase to ground sizing in real complexity. Applies Richard Lawrence's 9 splitting patterns and INVEST criteria. Includes agent-native equivalents of Jira Intelligence features — work breakdown, story en

Install

mkdir -p .claude/skills/story-slicing && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16997" && unzip -o skill.zip -d .claude/skills/story-slicing && rm skill.zip

Installs to .claude/skills/story-slicing

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Slice epics and oversized stories into independently deliverable vertical slices. Analyzes the codebase to ground sizing in real complexity. Applies Richard Lawrence's 9 splitting patterns and INVEST criteria. Includes agent-native equivalents of Jira Intelligence features — work breakdown, story enhancement, comment summarization, edge case generation, dependency detection, NL-to-JQL, and story point estimation — no Jira Premium required.
443 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

About this skill

Story Slicing

Context

Large stories and epics are the #1 cause of missed sprint commitments, deferred feedback, and integration risk. The fix is not to "try harder" — it's to slice differently. Most teams slice horizontally by technical layer (UI story, API story, DB story) — a glorified waterfall that produces nothing shippable until all layers are done. Vertical slicing cuts end-to-end through all layers, delivering a thin but complete and usable increment after every sprint.

This skill combines:

  • Richard Lawrence's 9 story splitting patterns — the most widely used framework in agile coaching
  • INVEST criteria — the acceptance test for every slice
  • Codebase analysis — grounds sizing in real complexity, not guesses
  • Jira MCP — creates child stories directly from the analysis

Vertical vs Horizontal Slicing

Horizontal (❌ avoid)Vertical (✅ target)
How it slicesBy technical layer or skillEnd-to-end through all layers
Example"Design story", "Backend story", "QA story""User can log in with email/password (happy path)"
Demo-able at sprint end?No — each slice is incomplete aloneYes — working feature, even if limited
User feedback possible?NoYes
INVEST-compliant?No (not Valuable, not Independent)Yes
RiskIntegration crunch at endCaught early

The sandwich analogy (nextagile.ai): Horizontal = separating the bun, lettuce, patty, tomato into layers. Vertical = cutting the whole sandwich into smaller sandwiches — each one complete and edible.


Step 1 — Codebase Analysis (Agent-Driven)

Before slicing on paper, analyze the codebase to understand the real cost of each slice.

What to scan

Service/module boundaries:

# Understand the architecture
find . -name "*.service.*" -o -name "*.controller.*" -o -name "*.handler.*" | head -30
find . -name "routes.*" -o -name "router.*" | head -20
ls src/ services/ modules/ packages/ apps/ 2>/dev/null

API surface (how many endpoints does this feature touch?):

grep -rn "@Get\|@Post\|@Put\|@Delete\|@Patch\|router\.\(get\|post\|put\|delete\)" src/ --include="*.ts" --include="*.js" | grep -i "<feature_keyword>"

Schema / migration impact:

ls db/migrations/ migrations/ prisma/migrations/ 2>/dev/null | tail -10
grep -rn "ALTER TABLE\|CREATE TABLE\|addColumn\|createTable" migrations/ db/ 2>/dev/null

Test coverage surface:

find . -name "*.test.*" -o -name "*.spec.*" | xargs grep -l "<feature_keyword>" 2>/dev/null

Cross-cutting concerns (auth, logging, feature flags):

grep -rn "featureFlag\|isEnabled\|authorize\|@Guard\|middleware" src/ --include="*.ts" | grep -i "<feature_keyword>"

Complexity signals

Use the scan to estimate the slice's real cost:

SignalLow complexityHigh complexity
Services touched13+
New API endpoints0–13+
Schema changesNoneNew table / multi-column
Auth/permission changesNoneNew role or scope
New test files needed1–25+
Cross-service callsNoneSync or async integration
Feature flag neededNoYes (phased rollout)

Key insight: A story that touches 3 services, adds 4 endpoints, and requires a schema migration is almost certainly 2–3 sprints of work. Slice it before estimation, not during.


Step 2 — INVEST Check on the Input Story

Before splitting, evaluate whether the input story/epic fails INVEST — this tells you what kind of split is needed.

INVESTCheckFailure → Split by
IndependentCan this be built without waiting for another story?Workflow steps or spike first
NegotiableAre details still open?That's fine — don't over-specify
ValuableDoes this deliver user-perceivable value alone?Role or happy-path split
EstimableCan the team give a rough size?Spike story needed first
SmallFits in ≤ half a sprint?Apply splitting patterns below
TestableDo we know what "done" looks like?Acceptance criteria split

Step 3 — Richard Lawrence's 9 Splitting Patterns

Apply these in order. Use the first pattern that produces independently valuable stories.

Pattern 1 — Workflow Steps

Split by the sequential steps a user takes through a workflow.

Original: "As a user, I can manage my account"
→ S1: User can update their profile photo
→ S2: User can update personal information
→ S3: User can change their password
→ S4: User can delete their account

Best for: Large features with a clear user journey. Each step is usable independently.


Pattern 2 — Happy Path / Alternate Paths

Implement the happy path first, then error cases and edge cases as follow-on stories.

Original: "User can log in with email and password"
→ S1: User can log in with valid credentials (happy path)
→ S2: System shows error for invalid credentials
→ S3: System validates email format
→ S4: System validates password complexity
→ S5: System supports 500 concurrent logins within 3s (performance story)

Best for: Any story with multiple acceptance criteria — especially validation, error handling, and performance. Most reliable pattern.


Pattern 3 — CRUD Operations

Split by Create, Read, Update, Delete — each is independently valuable.

Original: "User can manage products in the catalogue"
→ S1: User can view the product catalogue (Read)
→ S2: User can add a new product (Create)
→ S3: User can edit a product's details (Update)
→ S4: User can archive a product (Delete/soft-delete)

Best for: Admin panels, dashboards, data management features.


Pattern 4 — Data Types / Complexity

Build for the simplest data case first, then add complex variants.

Original: "User can send messages to other users"
→ S1: User can send a plain text message
→ S2: User can send a message with an image attachment
→ S3: User can send a message with a file attachment
→ S4: User can send a message with inline code formatting

Best for: File uploads, rich content editors, multi-format APIs.


Pattern 5 — Business Rules

Each distinct business rule becomes a story.

Original: "Apply discount at checkout"
→ S1: 10% discount applied for loyalty members
→ S2: Promo code discount applied at checkout
→ S3: Bulk discount applied for orders over $500
→ S4: Stacked discounts follow precedence rules

Best for: Pricing engines, approval workflows, compliance rules.


Pattern 6 — Roles / User Types

Implement for the primary user role first, then extend to other roles.

Original: "Users can view the analytics dashboard"
→ S1: Viewer role can see their own team's analytics
→ S2: Manager role can see all teams' analytics
→ S3: Admin role can export analytics to CSV

Best for: RBAC features, multi-tenant products, permission systems.


Pattern 7 — Platform / Interface Variations

Ship on one surface first, then extend.

Original: "Users can complete checkout"
→ S1: Checkout works on web (desktop)
→ S2: Checkout is responsive on mobile web
→ S3: Checkout available as native mobile app flow

Best for: Multi-platform products. Don't wait for all platforms before shipping any.


Pattern 8 — Defer Performance / Quality Constraints

Implement correctness first; meet performance/SLA targets as a follow-on story.

Original: "Search returns results in < 200ms"
→ S1: Search returns correct results (no SLA)
→ S2: Search results return in < 200ms under load (performance spike + optimization)

Best for: Any story mixing functional and non-functional requirements. NFRs should be explicit stories, not hidden acceptance criteria.


Pattern 9 — Spike (Investigation Story)

When the team can't estimate because of unknowns, create a time-boxed spike first.

Original: "Integrate with Stripe for payments" (team has never used Stripe)
→ Spike: Investigate Stripe integration — auth flow, webhook setup, test mode — 2-day timebox
  → Outcome: ADR + estimated stories for the real implementation
→ S1–SN: (defined after spike)

Best for: New technology, third-party integrations, uncertain architecture. Spikes are not features — cap them at 2 days, and always produce a written output.


Step 4 — Evaluate Each Slice

Run every proposed slice through this checklist before accepting it:

□ Independent — can be built and released without another story being done first
□ Valuable — a real user or stakeholder benefits; it's not "just the backend"
□ Demo-able at sprint end — can be shown working in a sprint review
□ Testable — acceptance criteria are written (Given/When/Then)
□ Sized ≤ half a sprint — a team of 2 could finish it in 2–3 days
□ No horizontal layer split — not "Frontend only" or "API only"
□ Happy path is separate from error paths (if large enough to warrant it)
□ Performance / NFR constraints are a separate story (if non-trivial)

Red flags — reslice if any are true:

  • "We can't demo this until the other story is done" → dependency, recombine or reorder
  • "This is just the API, the UI is next sprint" → horizontal slice
  • "This covers all the edge cases" → split off error paths and edge cases
  • "This is the whole feature" → almost certainly too big

Story Output Template

For each slice, produce:

## Story: <title>

**As a** <role>
**I want** <action>
**So that** <value>

**Why this slice:** <which splitting pattern was applied and why>

**Codebase impact (from analysis):**
- Services touched: <list>
- New endpoints: <list or none>
- Schema changes: <list or none>
- Cross-cutting: <auth changes, feature flags, etc.>
- Estimated test files: <N>

**Acceptance Criteria:**
- [ ] Given <context>, When <action>, Then <outcome>
- [ ] Given <context>, When <action>, Then 

---

*Content truncated.*

Search skills

Search the agent skills registry