Agent skill

User Story Writer

by mohitagw15856 in mohitagw15856/pm-claude-skills

Write well-structured user stories with acceptance criteria and edge cases.

MITAuto-check passedProduct & Project Management

Install User Story Writer

skills CLI
$ npx skills add mohitagw15856/pm-claude-skills --skill user-story-writer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mohitagw15856/pm-claude-skills user-story-writer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mohitagw15856/pm-claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/user-story-writer .claude/skills/user-story-writer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
user-story-writer
GitHub stars
1.4k
Token cost
~2.7k tokens
SKILL.md length
1,426 words
Files
4 (incl. references)
Skills in repo
1,348
Repo updated
First seen
Licence
MIT

At a glance

Write well-structured user stories with acceptance criteria and edge cases.

  • Asked to write user stories
  • SKILL.md covers Required Inputs, Output Structure, Story: [Short title — verb +… and Epic Decomposition Template, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Create tickets from a feature brief

What it does

User Story Writer is an agent skill from mohitagw15856/pm-claude-skills. Write well-structured user stories with acceptance criteria and edge cases. Use when asked to write user stories, create tickets from a feature brief, convert a PRD into stories, or write acceptance criteria. Produces ready-to-estimate stories in the standard format with clear acceptance criteria, edge cases, and definition of done.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/acceptance-criteria-craft.md`, `references/worked-example.md` and `templates/story-card.md`).

It sits in Product & Project Management, covering User stories. The repository describes itself as: 1255 professional Agent Skills for Claude, ChatGPT, Gemini, Cursor & Codex — PRDs, postmortems, leases, medical bills, layoffs, go-bags, new countries. Plain markdown, MIT, in… The licence is MIT.

When your agent uses it

  • Asked to write user stories
  • Create tickets from a feature brief
  • Convert a PRD into stories
  • Write acceptance criteria

Example prompts

  • “/user-story-writer”

What it can do on your machine

Read from SKILL.md and the folder at commit 1cbf1f0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

User Story Writer loads about 2.7k tokens when it runs, and up to ~6k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,426 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mohitagw15856/pm-claude-skills at commit 1cbf1f0, republished under its MIT licence (© mohitagw15856). 1,426 words, ~2,743 tokens.

Download SKILL.mdSave it as .claude/skills/user-story-writer/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
user-story-writer
description
Write well-structured user stories with acceptance criteria and edge cases. Use when asked to write user stories, create tickets from a feature brief, convert a PRD into stories, or write acceptance criteria. Produces ready-to-estimate stories in the standard format with clear acceptance criteria, edge cases, and definition of done.

User Story Writer Skill

This skill produces production-ready user stories from a feature brief, PRD section, or verbal description. Each story follows the standard format with a clear who/what/why, behavioural acceptance criteria in Given/When/Then format, edge cases, and definition of done. Output is ready to paste into Jira, Linear, or your planning tool.

Required Inputs

Ask the user for these if not provided:

  • Feature or change to break into stories — paste the brief, PRD section, or describe the feature
  • User types / personas involved (e.g. admin, end user, guest, API consumer)
  • Scope — are we writing one story or decomposing an epic into a full set of stories?
  • Acceptance criteria format preference — Given/When/Then, bullet checklist, or both?
  • Technical constraints or notes — anything the engineering team has flagged that should shape the stories

Output Structure

For each story:


Story: [Short title — verb + noun, e.g. "Filter search results by date range"]

Epic: [Parent epic name — e.g. "Advanced Search"] Story ID: [Jira/Linear ID — leave blank if not yet created] Priority: [P1 / P2 / P3] Story points: [Leave blank — for engineering to estimate]


User Story

As a [specific user type — not "user"], I want to [concrete action they want to take], So that [the outcome they achieve — business value, not feature description].

Example:

As an account manager, I want to filter my client list by last contact date, so that I can quickly identify clients I haven't spoken to in over 30 days and prioritise outreach.


Context

[1–3 sentences of context that aren't in the user story itself: when does this story matter, what triggers the need, how does it fit into a larger flow. This helps engineers understand why before they ask.]


Acceptance Criteria

Format: Given / When / Then

Each criterion tests one specific behaviour. Write one GWT per observable outcome — not one GWT for the whole feature.

AC1: [Short name for this criterion]

Given [starting state or context]
When [user action]
Then [observable system behaviour]

AC2: [Short name]

Given [...]
When [...]
Then [...]

AC3: [Short name]

Given [...]
When [...]
Then [...]

Edge Cases

[List scenarios that are non-obvious but must be handled. These become additional ACs or notes to engineering.]

  • [Edge case 1]: [e.g. User applies a date filter that returns 0 results — show empty state with clear messaging and a "clear filters" action]
  • [Edge case 2]: [e.g. User has >10,000 clients — filter must not degrade load time >200ms]
  • [Edge case 3]: [e.g. Date filter persists across page refresh — or explicitly should not if that's the decision]
  • [Permission edge case]: [e.g. Read-only users can see the filter but cannot save filter presets]

Out of Scope

[Explicitly state what this story does NOT cover — prevents scope creep and clarifies where the next story begins.]

  • Saving and sharing filter presets (separate story — see [Story X])
  • Bulk actions on filtered results
  • Exporting filtered client list to CSV

Definition of Done
  • Acceptance criteria all pass
  • Edge cases handled (or explicitly deferred with a new ticket raised)
  • Unit tests written for each AC
  • Works on mobile viewport (if applicable)
  • Accessibility: keyboard navigable and screen-reader compatible
  • Error states are handled and copy approved
  • Product and design have reviewed in staging
  • No console errors in production build

Epic Decomposition Template

If the user provides an epic or feature brief, decompose it into a full set of stories before writing them:

Epic: [Name] Goal: [What outcome does completing this epic achieve?] Stories:

#StoryNotesDependencies
1[Core happy path story — the simplest version of the feature that delivers value]
2[Validation / error handling story]Depends on #1
3[Edge case or power user story]Depends on #1
4[Admin or configuration story]
5[Performance or scale story — if applicable]Depends on #1

Suggested sprint order: [Which stories are P1 for MVP? Which can follow in a later sprint?]


Common Story Anti-Patterns — and Fixes

Use these to review stories before handing to engineering:

Anti-patternExampleFix
Solution in the story"As a user I want a dropdown filter"Remove the UI decision — "As a user I want to filter by date range"
Vague "so that""so that it's easier to use"Make it specific — "so that I can prioritise outreach without opening each record manually"
Too bigStory covers 5 distinct user flowsSplit into separate stories per flow
No acceptance criteriaStory has description onlyAdd at least 3 GWT criteria before engineering starts
ACs that test the solution, not the behaviour"Given the dropdown is open, When I select an option"Test the outcome — "Given I have applied a date filter, When I view my results, Then only clients last contacted in that date range appear"
Missing empty stateNo AC for what happens with 0 resultsAdd it — empty states are part of the feature
Missing error stateNo AC for network failure or invalid inputAdd error handling ACs explicitly

Example: Full Story Set for a Feature

Feature brief: "Allow users to export their invoice history as a PDF or CSV"


Story 1: Export invoice list as CSV

As a finance admin, I want to export my invoice history as a CSV file, so that I can import it into our accounting software without manual data entry.

AC1: Successful export

Given I am on the Invoices page with at least one invoice
When I click "Export" and select "CSV"
Then a CSV file is downloaded containing all visible invoices with columns: Invoice ID, Date, Amount, Status, Customer Name

AC2: Empty state

Given I am on the Invoices page with no invoices
When I click "Export"
Then the export button is disabled and a tooltip reads "No invoices to export"

AC3: Filtered export

Given I have applied a date filter showing invoices from Jan 2026 only
When I click "Export" and select "CSV"
Then the export contains only invoices from Jan 2026 — not all invoices

Edge cases:

  • Export with >10,000 invoices — must complete in <30s or show a progress indicator
  • Export triggered on mobile — downloads to device's default download location

Out of scope: PDF export (Story 2), scheduled exports (future epic)


Show full SKILL.md (547 more words)Show less
Story 2: Export invoice list as PDF

As a finance admin, I want to export my invoice history as a formatted PDF, so that I can share a professional summary with our accountant.

[... ACs follow same pattern ...]


Deeper Materials

This skill ships with support files — use them when they are available:

  • references/acceptance-criteria-craft.md — Acceptance Criteria That Actually Gate. Apply it while producing the output; it carries the calibration and judgment calls the method summary above compresses.
  • templates/story-card.md — a fill-in version of the deliverable with the quality gates inline. Offer it when the user wants to work the document themselves rather than have it generated.

Scoring Rubric (0–40)

Score any output of this skill before handing it over; 32+ is ship-quality.

Dimension0510
User voice & valueStories written from the system's or developer's perspective; "so that" is missing or circular ("so that it's easier")Personas are specific but some "so that" clauses describe the feature rather than the outcome the user getsEvery story names a specific user type and a "so that" stating the concrete outcome they achieve — a stakeholder could read it and know why it's worth building
AC testability & granularityACs missing, or prose descriptions with no pass/fail conditionGWT format used, but criteria bundle multiple behaviours or test the UI solution instead of the observable outcomeOne GWT per observable behaviour, each with an unambiguous pass/fail condition, testing outcomes not implementation
Unhappy-path coverageHappy path only — no empty, error, or permission states anywhereSome edge cases listed, but key failure modes (empty state, mid-flow failure, permission boundaries) are missing or vagueEmpty states, error states, permission boundaries, and known technical constraints all appear as explicit ACs or edge cases with defined behaviour
Scope discipline & sizingStories are epic-sized, interdependent, with no out-of-scope sectionOut of scope is present but generic; some stories too large to estimate or ship independently in one sprintEvery story is sprint-sized and independently shippable, splits are recorded with their reason, and Out of Scope names where the next story begins

Quality Checks

  • Every story has a specific user type — not "a user" or "the system"
  • The "so that" explains business value — not just feature description
  • Each AC tests one observable outcome — not a bundle of behaviours
  • Empty states, error states, and edge cases are explicitly handled
  • Out of scope is documented — not assumed
  • Stories are independent — they can be shipped individually without depending on unreleased work (except where explicitly noted)

Anti-Patterns

  • Do not write user stories from a technical perspective — every story must be from the user's point of view and state their goal
  • Do not write acceptance criteria that are untestable — every criterion must have a clear pass/fail condition
  • Do not create stories that are too large to complete in a single sprint — break epics into estimable, independently deliverable stories
  • Do not omit edge cases — unhappy paths and error states are required, not optional
  • Do not skip the Definition of Done — without it, "done" means different things to different people

Example Trigger Phrases

  • "Write user stories for [feature] from this brief"
  • "Break this PRD section into user stories with acceptance criteria"
  • "Convert these feature requirements into Jira tickets"
  • "Write the user stories and ACs for [feature name]"
  • "Decompose this epic into individual stories ready for sprint planning"

© mohitagw15856, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/user-story-writer of mohitagw15856/pm-claude-skills.

  • SKILL.md
  • references/acceptance-criteria-craft.md
  • references/worked-example.md
  • templates/story-card.md

Open the folder on GitHubat commit 1cbf1f0

Compare with similar skills

User Story Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

User Story Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
User Story Writer this skillmohitagw15856/pm-claude-skills1.4k—~2.7kAutomated safety check: PassMIT
User Story Writerdeanpeters/Product-Manager-Skills7.2k2 repos~2.9kAutomated safety check: PassCustom licence
Ralph Tui Create Beadssubsy/ralph-tui2.5k1 repos~2.6kAutomated safety check: PassMIT
Agile Product Owneralirezarezvani/claude-skills28k3 repos~3.2kAutomated safety check: PassMIT
Ralph Tui Create Beads Rustsubsy/ralph-tui2.5k1 repos~2.8kAutomated safety check: PassMIT
To Specbestofjs/bestofjs3.1k21 repos~757Automated safety check: PassMIT

Similar skills

  • User Story Writer

    deanpeters/Product-Manager-Skills

    Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.

    7.2k GitHub starsUsed in 2 repos~2.9k tokens
    Product & Project ManagementAuto-check passed
  • Ralph Tui Create Beads

    subsy/ralph-tui

    Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.

    2.5k GitHub starsUsed in 1 repo~2.6k tokens
    Product & Project ManagementAuto-check passed
  • Agile Product Owner

    alirezarezvani/claude-skills

    Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.

    28k GitHub starsUsed in 3 repos~3.2k tokens
    Product & Project ManagementAuto-check passed
  • Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).

    2.5k GitHub starsUsed in 1 repo~2.8k tokens
    Product & Project ManagementAuto-check passed
  • To Spec

    bestofjs/bestofjs

    Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.

    3.1k GitHub starsUsed in 21 repos~757 tokens
    Product & Project ManagementAuto-check passed
  • Ralph Tui Create JSON

    subsy/ralph-tui

    Convert PRDs to prd.json format for ralph-tui execution. An agent skill from subsy/ralph-tui.

    2.5k GitHub starsUsed in 1 repo~2.6k tokens
    Product & Project ManagementAuto-check passed

More from mohitagw15856/pm-claude-skills

All 1,348 skills in this repo
  • Car Tco

    mohitagw15856/pm-claude-skills

    Compare the total cost of car ownership across buy-new, buy-used, lease, and keep-your-current-car — depreciation, insurance, maintenance ramp, and fuel over a real horizon, not just the monthly…

    1.4k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Cs Health Scorecard

    mohitagw15856/pm-claude-skills

    Build a customer health scorecard for a specific account. An agent skill from mohitagw15856/pm-claude-skills.

    1.4k GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Exit Waterfall

    mohitagw15856/pm-claude-skills

    Compute who gets what at each exit price from a cap table — liquidation preferences, conversion points, and where the founders' share collapses.

    1.4k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Feature Prioritisation

    mohitagw15856/pm-claude-skills

    Apply prioritisation frameworks (RICE, MoSCoW, Kano, ICE, Opportunity Scoring) to rank features and backlog items.

    1.4k GitHub stars~2k tokensUpdated 2 days ago
    Auto-check passed
  • Fire Number

    mohitagw15856/pm-claude-skills

    Compute a financial-independence (FIRE) target and years-to-reach with every assumption labeled as an assumption — plus a sensitivity table instead of a single false-precision answer.

    1.4k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Freelance Rate

    mohitagw15856/pm-claude-skills

    Derive a freelance day/hourly rate backwards from target income, honest billable utilization, overhead, and the self-employment tax premium — the arithmetic that proves a rate is not salary÷2000.

    1.4k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed

Questions about User Story Writer

What does User Story Writer do?

Write well-structured user stories with acceptance criteria and edge cases. User Story Writer is an agent skill from mohitagw15856/pm-claude-skills. Write well-structured user stories with acceptance criteria and edge cases.

When should I use User Story Writer?

User Story Writer fits situations like: asked to write user stories; create tickets from a feature brief; convert a PRD into stories; write acceptance criteria.

How do I install User Story Writer in Claude Code?

Run `npx skills add mohitagw15856/pm-claude-skills --skill user-story-writer -a claude-code`. Or copy the skill folder (skills/user-story-writer in mohitagw15856/pm-claude-skills) into .claude/skills/user-story-writer in your project. Claude Code loads it when a task matches its description.

How do I install User Story Writer in Codex?

Run `npx skills add mohitagw15856/pm-claude-skills --skill user-story-writer -a codex`. Or copy the skill folder (skills/user-story-writer in mohitagw15856/pm-claude-skills) into .agents/skills/user-story-writer in your project. Codex loads it when a task matches its description.

Can I use User Story Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mohitagw15856/pm-claude-skills --skill user-story-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/user-story-writer, .gemini/skills/user-story-writer, .github/skills/user-story-writer and .opencode/skills/user-story-writer in your project.

What does User Story Writer need to run?

SKILL.md names no scripts, command-line tools or credentials: User Story Writer is instructions for the agent only.

Does User Story Writer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is User Story Writer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does User Story Writer use?

User Story Writer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does User Story Writer use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.3k tokens, read only when the agent opens those files.

What are the alternatives to User Story Writer?

Skills that share tags, products or a category with User Story Writer: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Ralph Tui Create Beads Rust (subsy/ralph-tui, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains User Story Writer?

mohitagw15856 (a GitHub user) maintains it in mohitagw15856/pm-claude-skills, which has 1,434 GitHub stars. The repository holds 1,348 skills in this directory. The repository was last updated on October 9, 2026.

Source: mohitagw15856/pm-claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.