agentleFS
JayRHaJayRHa/agent-skills/user-story-writer/SKILL.md

user-story-writer

Skill12 starsChanged 5 months agoMITView on GitHub

Writes high-quality agile user stories that satisfy the INVEST criteria, with clear role/goal/benefit phrasing and testable Gherkin (Given/When/Then) acceptance criteria, and splits epics into thin vertical slices. Use this skill when the user asks to "write a user story", "create acceptance criteria", "break this epic into stories", "turn this requirement into a backlog item", "write Gherkin scenarios", or is grooming/refining a product backlog.

We split this skill into the rules it gives an agent

6 rules. 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Keep it to one sentence and one outcome.

    line 20
  2. Very specific:

    Split if too big: Use the splitting patterns in references/splitting-patterns.md (workflow steps, business rules, happy/error path, data …

    line 22
  3. Distinctive:

    Write from the user's perspective, not the system's.

    line 68
  4. Distinctive:

    Always include at least one negative/edge scenario.

    line 71
  5. Distinctive:

    Use neutral, security-aware wording for auth flows (no account enumeration).

    line 72
  6. Distinctive:

    Keep the "so that" honest — if you can't name a benefit, question the story.

    line 73

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

User Story Writer

Overview

Turn a feature idea, requirement, or epic into well-formed user stories that a team can estimate, build, and verify. Every story states who wants what and why, passes the INVEST test, and ships with testable acceptance criteria.

Keywords: user story, agile, scrum, backlog, INVEST, acceptance criteria, Gherkin, given when then, story splitting, epic, vertical slice, definition of done, product backlog, refinement, grooming.

Workflow

  1. Capture the intent. Identify the user/persona, the goal, and the underlying benefit. If the benefit is unclear, ask "so that what?" until you reach real value.
  2. Write the story statement using the canonical form: As a <role>, I want <capability> so that <benefit>. Keep it to one sentence and one outcome.
  3. Apply INVEST (see references/invest-checklist.md). If the story fails any letter — especially Small and Testable — split or sharpen it.
  4. Split if too big. Use the splitting patterns in references/splitting-patterns.md (workflow steps, business rules, happy/error path, data variations, CRUD operations). Each slice must be a thin vertical slice that delivers value end-to-end, not a horizontal layer.
  5. Write acceptance criteria in Gherkin: one Scenario per rule, covering the happy path, key edge cases, and at least one failure path. Use the template in templates/story-template.md.
  6. Add a Definition of Done checklist items only if they are story-specific (e.g. "feature flag added", "analytics event fired"). Leave generic DoD to the team.
  7. Self-review against references/invest-checklist.md and confirm every acceptance criterion is independently verifiable.

Decision Framework

SymptomAction
Story has "and" in the goalSplit into separate stories
Can't estimate itToo big or too vague — split or clarify
No clear userIt may be a task/enabler, not a story — label it as such
Acceptance criteria describe UI pixelsRe-focus on observable behavior, not implementation
"As a user" (generic)Name the real persona; "user" hides differing needs

Worked Example

Epic: "Users can reset their password."

Story:

As a registered customer, I want to request a password reset link by email so that I can regain access when I've forgotten my password.

Acceptance Criteria:

Scenario: Request reset with a known email
  Given a registered account exists for "ana@example.com"
  When she submits the reset form with "ana@example.com"
  Then a reset email with a single-use link is sent within 1 minute
  And the page shows a neutral "If the email exists, we've sent a link" message

Scenario: Request reset with an unknown email
  Given no account exists for "ghost@example.com"
  When the reset form is submitted with "ghost@example.com"
  Then no email is sent
  And the same neutral confirmation message is shown (no account enumeration)

Scenario: Reset link expires
  Given a reset link issued more than 60 minutes ago
  When the user opens it
  Then they see "This link has expired" and can request a new one

See examples/checkout-epic-split.md for a full epic-to-stories breakdown.

Best Practices

  • Write from the user's perspective, not the system's.
  • One story = one outcome that fits comfortably in a sprint.
  • Acceptance criteria describe observable behavior, not implementation.
  • Always include at least one negative/edge scenario.
  • Use neutral, security-aware wording for auth flows (no account enumeration).
  • Keep the "so that" honest — if you can't name a benefit, question the story.

Common Pitfalls

  • Horizontal slices ("build the database table") that deliver no user value alone.
  • Generic personas ("as a user") masking conflicting needs.
  • Untestable criteria ("it should be fast" — quantify it).
  • Solutioning in the story ("add a Redis cache") instead of stating the need.
  • Giant stories disguised by vague language; if you can't test it, you can't size it.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.