Reshape a draft ticket, Jira issue, or GitHub issue from an engineer's braindump into a real user story with INVEST-clean acceptance criteria, and split stories that are too large using SPIDR. Use when the user wants to write, refine, review, sharpen, or split a ticket / story / issue, or when they share a draft that reads like a note-to-self (commit hashes, file paths, "see Slack thread", no user in sight).
A draft is a story if a designer, PM, or new engineer can read it cold and tell what's changing and why it matters. Otherwise it's a braindump — fine as a note to self, not yet a contract between roles.
If the work touches a user-visible outcome, force it through the Story shape even if the engineer wrote it as a Task. "Migrate auth middleware to v2" is the implementation; "Users stay signed in across tab reloads" is the story.
As a <role>, I want <goal>, so that <value>.
You don't have to keep the literal sentence shape. You do have to answer all three clauses somewhere:
| Letter | Question | Most common failure |
|---|---|---|
| Independent | Can this be built without waiting on two other stories? | Hidden dependencies, sequence isn't named |
| Negotiable | Is the how still open? | Solution already baked into description |
| Valuable | Who benefits, and how? | Disguised task |
| Estimable | Could three engineers roughly agree on size? | Scope unclear |
| Small | Fits in a sprint? | Too big — go to Step 5 |
| Testable | Can a neutral reader tell when it's done? | The most violated letter in practice |
If the only failing letter is S, the story needs splitting (Step 5). Anything else, fix the framing before splitting.
Use Given/When/Then or a bullet list of observable outcomes. The format matters less than this property: a neutral reader can verify the story is done without asking the engineer.
Bad: "the feature works correctly", "users can use X". Good: "Given a signed-in user, when they reload the page, then they remain signed in."
Keep ACs separate from implementation notes. Implementation goes in Subtasks, a tech-design doc, or the PR description — not in the ACs.
Try each letter in order. You usually have an answer by the second or third.
Two rules of thumb for picking among candidate splits:
Do not split horizontally by technical layer (backend story / frontend story / migration story). That breaks INVEST on Independent, Valuable, and Testable simultaneously — none of the slices delivers user-visible value on its own, and the integration cost cancels the speed gain.
Ready: has actor + outcome + reason; ≥1 testable AC; dependencies linked, not assumed; nobody walks out of refinement still unclear; fits in a sprint.
Done: ACs verified by someone who isn't the author; tests at the right level passing; merged and deployed; docs / release notes / announcements updated; ticket closed with a short note on what actually shipped (especially if scope changed).
Based on Stories, Not Braindumps — writing Jira work the team can actually use.