# Pm User Story

> Write clear user stories combining Mike Cohn format with Gherkin acceptance criteria. Use when the user asks to "write a user story", "create acceptance criteria", "format a requirement as a story", or needs to translate user needs into development-ready work.

- **Type:** Skill
- **Install:** `agentstack add skill-jiplet-transformation-os-pm-user-story`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Jiplet](https://agentstack.voostack.com/s/jiplet)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [Jiplet](https://github.com/Jiplet)
- **Source:** https://github.com/Jiplet/transformation-os/tree/main/skills/product/pm-user-story

## Install

```sh
agentstack add skill-jiplet-transformation-os-pm-user-story
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

## 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.

## Key Concepts

### The Format

**Use Case (Mike Cohn):**
- **As a** [specific persona/role]
- **I want to** [action to achieve outcome]
- **so that** [desired outcome / motivation]

**Acceptance Criteria (Gherkin):**
- **Scenario:** [Brief description]
- **Given:** [Precondition]
- **and Given:** [Additional preconditions as needed]
- **When:** [Triggering event — one only]
- **Then:** [Expected outcome — one only]

### Key Rules
- One **When** per story. Multiple Whens = split the story.
- One **Then** per story. Multiple Thens = split the story.
- "As a user" is too generic — always use a specific persona.
- "So that" must reveal the *why*, not restate the action.

### When to Use
- Translating user needs into development work
- Backlog grooming and sprint planning
- Ensuring testable acceptance criteria exist before development

### When NOT to Use
- For pure technical debt or refactoring (use engineering tasks)
- Before understanding the user problem (write a problem statement first)

## Application

### Step 1: Gather Context
- **User persona:** Who is this for?
- **Problem understanding:** What need does this address?
- **Desired outcome:** What does success look like?

### Step 2: Write the Story

```markdown
### User Story [ID]:

- **Summary:** [Brief, value-focused title]

#### Use Case:
- **As a** [specific persona, not "user"]
- **I want to** [action the user takes]
- **so that** [desired outcome — the WHY]

#### Acceptance Criteria:
- **Scenario:** [Human-readable description of the scenario]
- **Given:** [Initial context / precondition]
- **and Given:** [Additional preconditions]
- **When:** [Single triggering event]
- **Then:** [Single measurable expected outcome]
```

### Step 3: Quality Checks
- **"As a" specificity:** Specific persona, not "user"
- **"So that" clarity:** Reveals motivation, doesn't restate the action
- **One When/Then:** If you have more, split the story
- **Testability:** Can QA verify "Then" happened?
- **INVEST:** Independent, Negotiable, Valuable, Estimable, Small, Testable

## Example

```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 Google account
- **When:** I click "Sign in with Google" and authorise the app
- **Then:** I am logged in and redirected to the onboarding flow
```

## Common Pitfalls

- **Technical tasks as stories:** "As a developer, I want to refactor..." → not a user story
- **Generic persona:** "As a user" → use specific role
- **"So that" restates action:** "I want to save, so that I can save" → dig into motivation
- **Multiple When/Then:** split the story
- **Untestable criteria:** "Then it's faster" → "Then the page loads in under 2 seconds"

## Related Skills
- `pm-proto-persona` — Defines the "As a [persona]" section
- `pm-problem-statement` — Stories should address validated problems

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Jiplet](https://github.com/Jiplet)
- **Source:** [Jiplet/transformation-os](https://github.com/Jiplet/transformation-os)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-jiplet-transformation-os-pm-user-story
- Seller: https://agentstack.voostack.com/s/jiplet
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
