Skip to content
Development
Skill

/user-story

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.

From plugin
crew44
35862 skills4 agents

Claude Code

$ npx -y skills add getcrew44/crew44 --skill user-story --agent claude-code

SKILL.md

user-story.SKILL.md
name: user-story
description: 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.
intent: >-
  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.
type: component
theme: pm-artifacts
best_for:
  - "Writing user stories with proper acceptance criteria"
  - "Converting requirements into development-ready stories"
  - "Establishing story quality standards across your team"
scenarios:
  - "I need to write a user story for a new notification system in our B2B SaaS app"
  - "Convert this PRD requirement into a properly formatted user story with Gherkin acceptance criteria"
estimated_time: "5-10 min"

Purpose

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.

Key Concepts

The Mike Cohn + Gherkin Format

A user story combines:

**Use Case (Mike Cohn format):**

  • **As a** [user persona/role]
  • **I want to** [action to achieve outcome]
  • **so that** [desired outcome]

**Acceptance Criteria (Gherkin format):**

  • **Scenario:** [Brief description of the scenario]
  • **Given:** [Initial context or preconditions]
  • **and Given:** [Additional preconditions]
  • **When:** [Event that triggers the action]
  • **Then:** [Expected outcome]

Why This Structure Works

  • **User-centric:** Forces focus on who benefits and why
  • **Outcome-focused:** "So that" emphasizes the value delivered, not just the action
  • **Testable:** Gherkin acceptance criteria are concrete and verifiable
  • **Conversational:** Story is the opening for discussion, not the final spec
  • **Shared language:** Product, engineering, and QA all understand the format

Anti-Patterns (What This Is NOT)

  • **Not a task:** "As a developer, I want to refactor the database" (this is a tech task, not user value)
  • **Not a feature list:** "I want dashboards, reports, and analytics" (this is too big—needs splitting)
  • **Not vague:** "I want a better experience" (unmeasurable, no clear outcome)
  • **Not a contract:** Stories are placeholders for conversation, not locked-in specs

When to Use This

  • Translating user needs into development work
  • Backlog grooming and sprint planning
  • Communicating value to engineering and design
  • Ensuring testable acceptance criteria exist before development

When NOT to Use This

  • For pure technical debt or refactoring (use engineering tasks instead)
  • When stories are too large (split first—see `skills/user-story-splitting/SKILL.md`)
  • Before understanding the user problem (write a problem statement first)

---

Application

Step 1: Gather Context

Before writing a story, ensure you have:

  • **User persona:** Who is this for? (reference `skills/proto-persona/SKILL.md`)
  • **Problem understanding:** What need does this address? (reference `skills/problem-statement/SKILL.md`)
  • **Desired outcome:** What does success look like?
  • **Constraints:** Technical, time, or scope limitations

**If missing context:** Run discovery interviews or problem validation work first.

---

Optional Helper Script (Template Generator)

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.

python3 scripts/user-story-template.py --persona \"trial user\" --action \"log in with Google\" --outcome \"access the app without creating a new password\"

---

Step 2: Write the Use Case

Use `template.md` for the full fill-in structure.

Fill in the template:

### 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:**

  • **"As a" specificity:** Is this a specific persona (e.g., "trial user") or generic ("user")?
  • **"I want to" clarity:** Is this an action the user takes, or a feature you're building?
  • **"So that" outcome:** Does this explain the user's motivation? Or is it just restating the action?

**Common mistakes:**

  • ❌ "As a user, I want a login button, so that I can log in" (restating the action)
  • ✅ "As a trial user, I want to log in with Google, so that I can access the app without creating a new password"

---

Step 3: Write the Acceptance Criteria

Fill in the template:

#### 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:**

  • **Multiple Givens are okay:** Preconditions stack up (e.g., "Given I'm logged in" + "Given I have items in my cart")
  • **Only one When:** If you need multiple "When" statements, you likely have multiple stories—split them
  • **Only one Then:** If you need multiple "Then" statements, you likely have multiple stories—split them
  • **Alignment:** Does "When" match "I wan
Read more
@getcrew44
Ships withcrew44

Orchestrate a crew of specialist AI agents in one local-first workspace. Each role on its best model, with memory and skills that compound. Free, MIT.

35862 skills4 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
358
Star history of getcrew44/crew44 on GitHub, a chart by star-history.com

Other skills on crew44.

brainstorming

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.…

@getcrew44@getcrew44Install Skill
executing-plans

executing-plans

Use when you have a written implementation plan to execute in a separate session with review checkpoints

@getcrew44@getcrew44Install Skill
receiving-code-review

receiving-code-review

Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically…

@getcrew44@getcrew44Install Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about user-story.

Which coding agents can use user-story?
user-story installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.