This is a skillset -- it chains
/backlog-refine->/story-split->/story-write->/story-reviewin sequence. Each skill also works independently.
Use this when the backlog needs grooming before iteration planning -- stories are stale, priorities have shifted, large stories need splitting, or acceptance criteria are missing. Run it before IPM, typically Monday morning or end of previous week.
The chain
| Step | Skill | What it produces |
|---|---|---|
| 1 | /backlog-refine | Health assessment, priority recommendations, story improvements |
| 2 | /story-split | Oversized stories broken into vertical slices |
| 3 | /story-write | New or rewritten stories with Gherkin acceptance criteria |
| 4 | /story-review | Quality check against INVEST and testable-AC standards |
When to use: Before IPM. Typically Monday morning or end of previous week.
How skills chain
/backlog-refineidentifies what needs work -- stale stories, missing AC, wrong priorities -> you decide which stories to split/story-splitproduces smaller vertical slices -> you review the splits and decide which need full rewrites vs. are ready/story-writecreates or rewrites stories with Gherkin AC -> they feed directly into quality review/story-reviewflags issues against INVEST and testable-AC standards -> you fix or accept before IPM
What the PM does between stages
| After... | PM decision |
|---|---|
/backlog-refine | Decide which stories to split vs. which are fine as-is |
/story-split | Confirm splits make sense from a product perspective. Flag stories needing full rewrites. |
/story-write | Quick read -- does this capture what you intended? |
/story-review | Address flagged issues or mark stories as iteration-ready |
Related skills: Part of the
iteration-orbitrecipe. Feeds into/ceremony-cycle(the IPM uses backlog-craft output as input).
Example Output
Input
- Product: Meridian Health — patient-facing mobile app for appointment scheduling and care navigation
- Backlog snapshot: 14 stories in the top of backlog; last groomed 3 weeks ago; upcoming iteration focuses on "New Patient Onboarding" epic
- Known issues: 2 stories have no acceptance criteria, 1 story estimated at 13 points (oversized), priorities shifted after last week's discovery session revealed insurance verification is a blocker before booking
- IPM: Tuesday 10am; today is Monday morning
Output (abbreviated)
Backlog Craft — Meridian Health · New Patient Onboarding Epic
Run Monday 8:42am · IPM Tuesday 10:00am
Step 1 — /backlog-refine · Backlog Health Assessment
Health Summary
| Dimension | Status | Notes |
|---|---|---|
| Priority alignment | ⚠️ Needs attention | Insurance verification must move above booking flows per discovery findings |
| Story sizing | ❌ Blocked | MH-47 estimated at 13 pts — must split before iteration |
| Acceptance criteria | ❌ Incomplete | MH-51, MH-53 have no AC |
| Staleness | ⚠️ Needs attention | 6 stories untouched >3 weeks; 2 reference deprecated "Care Finder v1" flow |
Priority Recommendations
| Current Rank | Story | Recommended Rank | Reason |
|---|---|---|---|
| 4 | MH-44 · Verify insurance eligibility | 1 | Blocks booking; discovery confirmed hard dependency |
| 1 | MH-41 · Book first appointment | 3 | Cannot complete without MH-44 resolved |
| 7 | MH-48 · Show in-network providers | 2 | Depends on verification; enables booking |
| 9 | MH-53 · Profile photo upload | 8 | No user demand signal; deprioritize |
Stories Flagged for Action
- MH-47 (13 pts) → Split required — "Complete new patient onboarding" is an epic masquerading as a story
- MH-51 → AC required — "Allow patient to set communication preferences" has no testable criteria
- MH-53 → AC required + reconsider priority — "Upload profile photo" lacks AC and business justification
- MH-42 → Refresh language — references "Care Finder v1 modal" (deprecated); update to current nav pattern
PM Decision Point: Confirm MH-47 split and which stories need full rewrites. MH-51 and MH-53 need AC before Tuesday — write from scratch or pull in existing design specs?
Step 2 — /story-split · MH-47 Vertical Slices
Original: As a new patient, I can complete onboarding so that I am ready to book care. — 13 pts, no AC
Split rationale: Onboarding spans identity, insurance, preferences, and confirmation — four distinct user-visible outcomes, each independently shippable.
| Slice | Story Title | Est. | Dependency |
|---|---|---|---|
| MH-47a | Enter personal and contact information | 2 pts | None |
| MH-47b | Submit insurance information for eligibility check | 3 pts | MH-44 (verification service) |
| MH-47c | Set care preferences and communication opt-ins | 2 pts | MH-47a |
| MH-47d | View onboarding confirmation and next steps | 1 pt | MH-47a, 47b, 47c |
PM Decision Point: Does MH-47c overlap with MH-51 (communication preferences)? Recommend merging — confirm before /story-write proceeds.
Step 3 — /story-write · Full Stories with Gherkin AC
MH-47b · Submit insurance information for eligibility check
New Patient Onboarding · 3 pts
As a new patient completing onboarding, I want to enter my insurance details and receive immediate eligibility confirmation, So that I know whether my plan is accepted before I attempt to book an appointment.
Acceptance Criteria
Scenario: Eligible insurance confirmed
Given I am on the insurance information step of onboarding
And I enter a valid member ID and group number for a supported payer
When I tap "Check my coverage"
Then I see a confirmation banner: "Your plan is accepted at Meridian Health"
And I can proceed to the next onboarding step
Scenario: Insurance not recognized
Given I enter a member ID and payer that is not in the supported network
When I tap "Check my coverage"
Then I see an inline message: "We couldn't verify your plan — you can continue and resolve this before your visit"
And I can still proceed through onboarding without being blocked
Scenario: Verification service unavailable
Given the eligibility API returns a timeout or 5xx error
When I tap "Check my coverage"
Then I see: "Coverage check is temporarily unavailable — we'll verify before your appointment"
And the error is logged for the care team to follow up
Scenario: Required fields missing
Given I leave the member ID field blank
When I tap "Check my coverage"
Then I see inline validation: "Member ID is required"
And the form does not submit
Out of scope: Real-time cost estimates, plan benefit details, dependent coverage
MH-51 · Set communication preferences
New Patient Onboarding · 2 pts
As a new patient, I want to choose how Meridian contacts me for appointment reminders and care updates, So that I receive communications through my preferred channel without unwanted outreach.
Acceptance Criteria
Scenario: Patient selects preferred channels
Given I am on the communication preferences step
When I toggle on "SMS reminders" and toggle off "Email updates"
Then my selections are saved to my profile
And I see a summary: "We'll contact you by text message"
Scenario: No preference selected
Given I skip the preferences step without making a selection
Then the system defaults to email only
And I can update preferences later from account settings
Scenario: Opt-out of all communications
Given I deselect all communication channels
Then I see a confirmation: "You've opted out of all reminders — you can update this anytime"
And no automated messages are sent until preferences are changed
Step 4 — /story-review · INVEST + Testable-AC Quality Check
| Story | Independent | Negotiable | Valuable | Estimable | Small | Testable | Overall |
|---|---|---|---|---|---|---|---|
| MH-47a | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | Write AC before IPM |
| MH-47b | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Iteration-ready |
| MH-47c | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | Merge with MH-51 — see note |
| MH-47d | ⚠️ | ✅ | ✅ | ✅ | ✅ | ⚠️ | Dependent — schedule last |
| MH-51 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Iteration-ready |
| MH-44 | ✅ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | AC needs error states added |
Flags to Resolve Before IPM
- MH-47a — No AC written yet. Assign to PM or tech lead to draft this morning; 30 min effort.
- MH-47c / MH-51 overlap — Recommend merging into MH-51. Delete MH-47c post-confirmation.
- MH-47d