Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create user stories with Mike Cohn format and Gherkin acceptance criteria. Use when turning user needs into development-ready work with clear outcomes and testable conditions.
.claude/skills/getcrew44-user-story/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 131% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 175% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 242% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 152% | 0% |
Create clear, concise user stories that combine Mike Cohn's user story format with Gherkin-style acceptance criteria. Use this to translate user needs into actionable development work that focuses on outcomes, ensures shared understanding between product and engineering, and provides testable success criteria.
This is not a feature spec—it's a conversation starter that captures who benefits, what they're trying to do, why it matters, and how you'll know it works.
A user story combines:
Use Case (Mike Cohn format):
Acceptance Criteria (Gherkin format):
skills/user-story-splitting/SKILL.md)Before writing a story, ensure you have:
skills/proto-persona/SKILL.md)skills/problem-statement/SKILL.md)If missing context: Run discovery interviews or problem validation work first.
If you want a consistent Markdown stub, you can generate one from CLI inputs. This script is deterministic and does not fetch data or write files.
bashpython3 scripts/user-story-template.py --persona \"trial user\" --action \"log in with Google\" --outcome \"access the app without creating a new password\"
Use template.md for the full fill-in structure.
Fill in the template:
markdown### User Story [ID]: - **Summary:** [Brief, memorable title focused on value to the user] #### Use Case: - **As a** [user name if available, otherwise persona, otherwise role] - **I want to** [action user takes to get to outcome] - **so that** [desired outcome]
Quality checks:
Common mistakes:
Fill in the template:
markdown#### Acceptance Criteria: - **Scenario:** [Brief, human-readable scenario describing value] - **Given:** [Initial context or precondition] - **and Given:** [Additional context or preconditions] - **and Given:** [Additional context as needed] - **and Given:** [UI-focused context ensuring 'When' can happen] - **and Given:** [Outcomes-focused context ensuring 'Then' is delivered] - **When:** [Event that triggers the action—aligns with 'I want to'] - **Then:** [Expected outcome—aligns with 'so that']
Quality checks:
Red flags:
skills/user-story-splitting/SKILL.md)Write a short, memorable summary that captures the story's value:
markdown- **Summary:** [Brief, human-readable title]
Examples:
skills/user-story-splitting/SKILL.mdSee examples/sample.md for full examples (good, bad, and split-needed stories).
Mini example excerpt:
markdown### User Story 042: - **Summary:** Enable Google login for trial users to reduce signup friction #### Use Case: - **As a** trial user visiting the app for the first time - **I want to** log in using my Google account - **so that** I can access the app without creating and remembering a new password #### Acceptance Criteria: - **Scenario:** First-time trial user logs in via Google OAuth - **Given:** I am on the login page - **and Given:** I have a login account - **When:** I click the "Sign in with Google" button and authorize the app - **Then:** I am logged into the app and redirected to the onboarding flow
Symptom: "As a developer, I want to refactor the API, so that the code is cleaner"
Consequence: This is an engineering task, not a user story. No user value is delivered.
Fix: If there's no user outcome, it's not a user story—use an engineering task or tech debt ticket instead.
Symptom: Every story starts with "As a user"
Consequence: No persona clarity. Different users have different needs.
Fix: Use specific personas: "As a trial user," "As a paid subscriber," "As an admin," etc. (reference skills/proto-persona/SKILL.md)
Symptom: "I want to click the save button, so that I can save my work"
Consequence: No insight into why the user cares. Just restating the action.
Fix: Dig into the motivation: "so that I don't lose my progress if the page crashes" (real outcome).
Symptom: Acceptance criteria with 5 "When" statements and 5 "Then" statements
Consequence: Story is too big. Likely multiple features bundled together.
Fix: Split the story using skills/user-story-splitting/SKILL.md. Each When/Then pair should be its own story (or at least evaluated for splitting).
Symptom: "Then the user has a better experience" or "Then it's faster"
Consequence: QA can't verify success. Ambiguous definition of "done."
Fix: Make it measurable: "Then the page loads in under 2 seconds" or "Then the user sees a success confirmation message."
skills/user-story-splitting/SKILL.md — How to break large stories into smaller onesskills/proto-persona/SKILL.md — Defines the "As a persona]" sectionskills/problem-statement/SKILL.md — Stories should address validated problemsskills/epic-hypothesis/SKILL.md — Epics decompose into user storiesskills/user-story/scripts/user-story-template.py — Deterministic Markdown stub generator (no network access)prompts/user-story-prompt-template.md in the https://github.com/deanpeters/product-manager-prompts repo.Skill type: Component Suggested filename: user-story.md Suggested placement: /skills/components/ Dependencies: References skills/proto-persona/SKILL.md, skills/problem-statement/SKILL.md Used by: skills/user-story-splitting/SKILL.md, skills/epic-hypothesis/SKILL.md
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,446 | 9,708 | +30% | 1 | 1 | 0% | 1,166 | 3,400 | +192% | 0 | 0 | — |
case-02 | fail→pass | 8,888 | 6,510 | -27% | 1 | 1 | 0% | 1,576 | 3,635 | +131% | 0 | 0 | — |
case-03 | fail→pass | 7,484 | 6,041 | -19% | 1 | 1 | 0% | 1,273 | 3,506 | +175% | 0 | 0 | — |
case-04 | pass→pass | 10,490 | 10,717 | +2% | 1 | 1 | 0% | 1,586 | 4,113 | +159% | 0 | 0 | — |
case-05 | fail→pass | 13,893 | 11,133 | -20% | 1 | 1 | 0% | 2,219 | 4,299 | +94% | 0 | 0 | — |
case-06 | fail→fail | 14,186 | 12,781 | -10% | 1 | 1 | 0% | 2,106 | 4,550 | +116% | 0 | 0 | — |
case-07 | pass→pass | 12,924 | 7,201 | -44% | 1 | 1 | 0% | 1,980 | 3,873 | +96% | 0 | 0 | — |
case-08 | pass→pass | 12,575 | 6,079 | -52% | 1 | 1 | 0% | 1,900 | 3,473 | +83% | 0 | 0 | — |
case-09 | fail→pass | 7,425 | 11,335 | +53% | 1 | 1 | 0% | 1,262 | 4,320 | +242% | 0 | 0 | — |
case-10 | fail→pass | 9,119 | 6,252 | -31% | 1 | 1 | 0% | 1,413 | 3,556 | +152% | 0 | 0 | — |
case-11 | fail→pass | 15,326 | 6,037 | -61% | 1 | 1 | 0% | 2,639 | 3,562 | +35% | 0 | 0 | — |
case-12 | pass→pass | 12,653 | 6,873 | -46% | 1 | 1 | 0% | 1,959 | 3,618 | +85% | 0 | 0 | — |
case-13 | fail→pass | 13,302 | 6,516 | -51% | 1 | 1 | 0% | 2,082 | 3,618 | +74% | 0 | 0 | — |
case-14 | fail→pass | 12,536 | 7,543 | -40% | 1 | 1 | 0% | 2,101 | 3,733 | +78% | 0 | 0 | — |
case-15 | pass→fail | 8,528 | 6,274 | -26% | 1 | 1 | 0% | 1,289 | 3,526 | +174% | 0 | 0 | — |
case-16 | fail→pass | 11,896 | 11,357 | -5% | 1 | 1 | 0% | 1,803 | 4,214 | +134% | 0 | 0 | — |
case-17 | pass→pass | 16,749 | 8,023 | -52% | 1 | 1 | 0% | 2,741 | 3,745 | +37% | 0 | 0 | — |
case-18 | fail→pass | 9,793 | 6,144 | -37% | 1 | 1 | 0% | 1,567 | 3,611 | +130% | 0 | 0 | — |
case-19 | pass→pass | 10,636 | 13,796 | +30% | 1 | 1 | 0% | 1,761 | 4,925 | +180% | 0 | 0 | — |
case-20 | fail→pass | 19,777 | 6,855 | -65% | 1 | 1 | 0% | 3,219 | 3,521 | +9% | 0 | 0 | — |
case-21 | pass→pass | 12,876 | 7,581 | -41% | 1 | 1 | 0% | 2,128 | 3,754 | +76% | 0 | 0 | — |
case-22 | fail→pass | 9,950 | 5,809 | -42% | 1 | 1 | 0% | 1,510 | 3,329 | +120% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.