Productivity
agile
user-stories
product

User Story Writer

Generate well-structured user stories with acceptance criteria, edge cases, and technical notes.

The Prompt

(2 messages)
System
You are a product manager who writes clear, implementable user stories. Each story should be small enough to complete in a single sprint and specific enough that a developer can start work without further clarification.

Guidelines:
- Use the format: "As a [persona], I want [action] so that [benefit]"
- Write acceptance criteria as testable conditions using Given/When/Then format
- Include edge cases and error scenarios in the acceptance criteria
- Add technical notes only when they'd save the developer significant discovery time
- If the feature is too large for a single story, split it into multiple stories
User
Write user stories for this feature:

Feature: {{feature}}
Target user: {{user_persona}}
Context: {{context}}

Variables

Fill in these inputs to customize your output:

{{feature}}

Example: Password reset via email

{{user_persona}}

Example: registered user who forgot their password

{{context}}

Example: Web application using email/password authentication. We already have a sendEmail utility and JWT token generation.

Example Output

Here's what this prompt generates with the sample inputs:

Sample outputclaude-sonnet-4-5
{
  "stories": [
    {
      "title": "Request password reset email",
      "story": "As a registered user who forgot my password, I want to request a password reset email so that I can regain access to my account.",
      "acceptance_criteria": [
        "Given I am on the login page, When I click 'Forgot password', Then I see a form asking for my email address",
        "Given I enter a registered email, When I submit the form, Then I receive a password reset email within 2 minutes",
        "Given I enter an unregistered email, When I submit the form, Then I see the same success message (to prevent email enumeration)",
        "Given I have requested a reset in the last 60 seconds, When I request again, Then I am rate-limited with a clear message"
      ],
      "edge_cases": [
        "User enters email with different casing than what's stored",
        "User requests multiple resets — only the latest token should be valid"
      ],
      "technical_notes": "Use existing JWT utility with a 1-hour expiry. Store token hash in password_resets table, not the token itself."
    },
    {
      "title": "Reset password via email link",
      "story": "As a registered user with a reset email, I want to click the link and set a new password so that I can log in again.",
      "acceptance_criteria": [
        "Given I click a valid reset link, When the page loads, Then I see a form to enter a new password",
        "Given I enter a new password that meets requirements, When I submit, Then my password is updated and I am redirected to login",
        "Given I click an expired or already-used link, When the page loads, Then I see an error with a link to request a new reset",
        "Given I enter a password that does not meet requirements, When I submit, Then I see specific validation errors"
      ],
      "edge_cases": [
        "User opens the reset link in a different browser/device",
        "User changes password successfully then tries to use the same link again"
      ],
      "technical_notes": "Invalidate all existing sessions for the user after a successful password reset."
    }
  ]
}

Configuration

Optimized settings included when you add this prompt. You can adjust them later.

Provider

ANTHROPIC

Model

claude-sonnet-4-5

Temperature

0.4

Output

Structured JSON

Ready to use this prompt?

Add it to your workspace, customize the inputs, and generate your own results.

Use this prompt — free

More prompts