Smithery Logo
MCPsSkillsDocsPricing
Login
NewFlame, an assistant that learns and improves. Available onTelegramSlack
    Spacehunterz

    story

    Spacehunterz/story
    Writing
    194

    About

    SKILL.md

    Install

    • Telegram
      Telegram
    • Slack
      Slack
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    • Download skill
    ├─
    ├─
    └─
    Smithery Logo

    Give agents more agency

    Resources

    DocumentationPrivacy PolicySystem Status

    Company

    PricingAboutBlog

    Connect

    © 2026 Smithery. All rights reserved.

    About

    Create and manage user stories in proper narrative format for Ralph Loop

    SKILL.md

    /story - Interactive User Story Management

    Create, manage, and track user stories in proper narrative format. Stories feed into Ralph Loop for autonomous implementation.

    What It Does

    The /story skill provides an interactive workflow for creating well-structured user stories that follow the proven "As a / I want / So that" narrative format. Stories are:

    • Narrative-driven - Forces clarity of user role, desired action, and business value
    • Validated - Ensures proper format before adding to work queue
    • Trackable - Integrates with Ralph Loop for autonomous execution and progress tracking
    • Filterable - Search by priority, status, or affected files
    • Exportable - Generate markdown summaries for documentation

    Quick Start

    Create a Story

    /story new
    

    You'll be prompted for:

    1. User role - "As a [developer/researcher/etc.]"
    2. Desired action - "I want to [action]"
    3. Business value - "So that [benefit]"
    4. Title - Suggested auto-generated from action
    5. Priority - 1 (high), 2 (normal), 3 (low)
    6. Files - Affected files (comma-separated, optional)
    7. Acceptance criteria - Multiple criteria (at least 1 required)

    View Stories

    /story show                        # List all stories with status
    /story view STORY-001             # Show full details for one story
    /story list --priority 1          # Filter by priority
    /story list --status in_progress  # Filter by status
    /story list --files src/auth.ts   # Find stories touching a file
    

    Update Story

    /story update STORY-001
    

    Interactively change: status, priority, acceptance criteria

    Export

    /story export > stories.md
    

    Generate markdown summary grouped by priority and status.

    Two Paths: Quick vs Structured

    When you run /story new, you choose your approach:

    Quick Path (Default)

    Traditional narrative format - fast for simple stories.

    • User role → Desired action → Business value
    • Builds "As a X, I want Y, so that Z" automatically
    • Best for: Simple features, quick iterations, clear scope

    Structured Path (Prevents Ralph Spiraling)

    Ryan's methodology - comprehensive planning for complex work.

    • Problem statement (what challenge does this solve?)
    • Narrative format (As a / I want / So that)
    • Functional requirements (what must the system do?)
    • Constraints & non-goals (what's out of scope?)
    • Success metrics (how do we measure success?)
    • Auto-generates subtasks to prevent infinite iteration loops

    Choose Structured when:

    • Building large features with many moving parts
    • You want Ralph to have clear sub-goals
    • You need to prevent "Ralph spiraling" (infinite iteration loops)
    • You want detailed requirements documented

    Why Structured prevents spiraling:

    • Breaks complex work into finite, testable subtasks
    • Each subtask has one clear purpose
    • Ralph processes TASK-001, TASK-002... in order
    • Forces upfront thinking about scope and boundaries

    Story Format

    Stories follow the user story narrative:

    As a [user role]
    I want to [desired action]
    So that [business value]
    

    Why this format?

    • Clarity - Each part serves a specific purpose
    • User-focused - Starts with who benefits and why
    • Context - Helps Claude understand the bigger picture
    • Traceability - Each story has clear reasoning

    Example story:

    As a developer in a Ralph loop
    I want to see my task context in a collapsible JSON card
    So that I can quickly reference my context without switching windows
    
    Acceptance Criteria:
    - Card displays TIER 0 project context
    - Card shows top 5 relevant golden rules for current domain
    - JSON is syntax-highlighted (keys, values, strings colored differently)
    - Card has 'Collapse all' button to minimize nested objects
    - Card loads in <500ms
    - Works offline (no external CDN dependencies)
    

    Story Lifecycle

    pending (waiting for work)
       ↓
    in_progress (Ralph Loop assigned it)
       ↓
    done ✓ (Ralph completed + tests passed)
    
    OR blocked ✗ (Ralph encountered an issue)
    

    Automatic transitions:

    • Ralph Loop changes status to in_progress when starting work
    • Status becomes done if implementation + tests succeed
    • Status becomes blocked if tests fail or error occurs
    • Manual update via /story update as needed

    Commands Reference

    /story new

    Create a new story interactively.

    First, you choose your path: [Q] Quick (default) or [S] Structured

    Quick Path Prompts

    1. Story ID (auto-suggest next available)
    2. Path choice: [Q/S, default=Q]
    3. User role (As a)
    4. Desired action (I want to)
    5. Business value (So that)
    6. Title (auto-suggested from action)
    7. Priority (1-3)
    8. Files (comma-separated, optional)
    9. Acceptance criteria (blank to finish, at least 1)

    Structured Path Prompts

    1. Story ID (auto-suggest next available)
    2. Path choice: [S]
    3. Problem statement (What problem does this solve?)
    4. User role (As a)
    5. Desired action (I want to)
    6. Business value (So that)
    7. Title (auto-suggested)
    8. Priority (1-3)
    9. Functional requirements (blank to finish)
    10. Constraints & non-goals (blank to finish)
    11. Success metrics (blank to finish, at least 1 recommended)
    12. Files (comma-separated, optional)
    13. Acceptance criteria (blank to finish, at least 1)
    14. Generate subtasks? [Y/n, default=Y]
      • If yes: Automatically creates TASK-001, TASK-002... for each requirement

    Output (Quick Path):

    ✓ Created story: [STORY-001] Your Story Title
    

    Output (Structured Path):

    ✓ Created story: [STORY-006] Your Story Title
      Linked subtasks: 4
    

    /story show

    List all stories with visual status and brief info.

    Output:

    STORIES (5 total, 2 complete)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    [ ] [P1] STORY-001: User Authentication
         Status: pending | Files: 2
    
    [~] [P2] STORY-002: Dashboard UI
         Status: in_progress | Files: 4
    
    [X] [P1] STORY-003: Database Migration
         Status: done | Files: 3
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    

    Status icons: [ ] pending, [~] in_progress, [X] done, [!] blocked

    /story view STORY-001

    Show complete details for a single story.

    Output:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    STORY-001: User Authentication
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    Description:
      As a developer, I want to implement JWT-based authentication,
      so that users can login securely.
    
    Priority: 1 (High)
    Status: pending
    
    Acceptance Criteria:
      - Users can login with email/password
      - JWT tokens are issued on successful auth
      - Protected routes require valid token
      - Token expiration is enforced
    
    Files:
      - src/auth/login.ts
      - src/auth/middleware.ts
      - tests/auth.test.ts
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    

    /story update STORY-001

    Interactively modify a story's status, priority, or criteria.

    Prompts:

    • Status (pending/in_progress/done/blocked)
    • Priority (1-3)
    • New acceptance criteria (optional)

    Output:

    ✓ Updated story STORY-001
    

    /story list [OPTIONS]

    Filter and display stories matching criteria.

    Options:

    --priority 1|2|3              # Filter by priority
    --status pending|in_progress|done|blocked  # Filter by status
    --files src/path/file.ts      # Find stories touching specific file
    

    Examples:

    /story list --priority 1                    # All high-priority stories
    /story list --status in_progress            # What Ralph is currently working on
    /story list --files src/components/Card.tsx # Stories affecting Card component
    

    /story export

    Generate markdown summary of all stories.

    Output: Markdown file with:

    • Summary stats (total, complete %, in progress, pending)
    • Stories grouped by priority
    • Each story shows: status, narrative, criteria, files

    Redirect to file:

    /story export > stories.md
    

    Integration with Ralph Loop

    How Stories Flow Through Ralph Loop

    1. /story new         → Create story in narrative format
    2. /prd validate      → Verify format (warns on issues)
    3. /loop start        → Ralph picks next story from prd.json
    4. Ralph implements   → Writes code
    5. Code review step   → Catches issues
    6. Simplify code      → Cleans up
    7. Run tests          → Validates correctness
    8. If pass:
       - Commit to git
       - Set "passes": true in prd.json
       - Log learnings to progress.txt
       - Pick next story → back to step 3
    9. If fail:
       - Set status to "blocked"
       - Log failure analysis
       - Human review required
    

    Story Status in Ralph Loop

    Stories start as pending → Ralph changes to in_progress → ends as done (✓ tests passed) or blocked (✗ failed)

    You can manually update status with /story update if needed.

    How Ralph Processes Stories with Subtasks

    When a story has subtasks (created with structured path):

    1. Ralph processes subtasks in order (TASK-001, TASK-002...)
    2. Each subtask is a separate, finite work item
    3. Ralph marks each subtask in_progress → done individually
    4. When all subtasks done → parent story marked done
    5. If any subtask fails → parent story marked blocked

    Why this prevents spiraling:

    • Each subtask is too small to spiral on (one clear purpose)
    • Ralph finishes TASK-001 completely before TASK-002
    • Clear success criteria at the subtask level
    • Parent story only marks done when all children done

    Example flow:

    STORY-007: Search Context Card
      ├─ TASK-001: Create feature branch [DONE]
      ├─ TASK-002: Search is case-insensitive [DONE]
      ├─ TASK-003: Highlights matching [DONE]
      ├─ TASK-004: Returns count [IN_PROGRESS]
      └─ TASK-005: Filters nested objects [PENDING]
    

    Ralph is working on TASK-004. When done, moves to TASK-005. Once all complete, STORY-007 marked done.

    Validation

    Stories are validated for:

    ✅ Required fields:

    • Unique ID
    • Title
    • Description with proper narrative format
    • At least 1 acceptance criterion
    • Valid status (pending, in_progress, done, blocked)
    • Priority 1-3

    ⚠️ Warnings (don't block):

    • Less than 3 acceptance criteria (recommend 3-5)
    • Missing narrative format ("As a X, I want Y, so that Z")
    • No files listed (sometimes OK for cross-cutting concerns)

    Validate stories:

    /prd validate    # Validates all stories (including format checks)
    

    Best Practices

    1. Clear User Role

    ✅ "As a developer debugging a failed loop" ❌ "As a user"

    2. Specific Action

    ✅ "I want to see the exact JSON state that triggered the failure" ❌ "I want to see something"

    3. Real Business Value

    ✅ "So that I can understand what went wrong without digging through logs" ❌ "So that I have a feature"

    4. Testable Criteria

    ✅ "Card displays TIER 0 project context" ✅ "JSON is syntax-highlighted" ❌ "Card is nice" ❌ "UI is better"

    5. Right Scope

    • One story = one feature or user interaction
    • If it takes >4 hours to implement, consider breaking it
    • List affected files upfront (helps Ralph plan work)

    6. Priority Guidance

    • P1 (High) - Blocks other work or critical path
    • P2 (Normal) - Important but not urgent
    • P3 (Low) - Nice to have, can defer

    Comparison: /story vs /prd

    Aspect /story /prd
    Input Interactive prompts Manual JSON editing
    Format Guided narrative Free-form
    Validation Enforced Optional
    ID Prefix STORY-XXX (user stories) TASK-XXX (technical tasks)
    Use case Feature work Project setup/management
    Best for Ralph Loop automation Overall PRD management

    When to use /story:

    • Creating new user stories for Ralph Loop
    • Iterating on features with clear user benefits
    • Ensuring narrative format is followed

    When to use /prd:

    • Viewing/managing entire PRD
    • Adding technical tasks (non-story work)
    • Validating entire project structure

    Both tools read/write the same prd.json - they're complementary!

    Troubleshooting

    Story not appearing after creation

    1. Check: /story show lists it
    2. Validate: /prd validate shows no errors
    3. File: Verify prd.json was updated: tail prd.json

    Ralph Loop not picking up story

    1. Verify status is pending or in_progress
    2. Run validation: /prd validate
    3. Check story ID starts with STORY- or TASK-
    4. View Ralph log: check progress.txt for errors

    Can't update story status

    1. Verify story ID: /story show
    2. Valid status: pending, in_progress, done, blocked
    3. Try: /story update STORY-001 (interactive mode)

    See Also

    • /prd - Full PRD management and validation
    • /loop - Start Ralph Loop for autonomous execution
    • prd.json - Raw data file (view with /story show)
    • progress.txt - Learnings and execution log
    • prompt.md - Ralph's work order (generated per iteration)

    Examples

    Example 1: Quick Path - React Component Story

    $ /story new
    
    Story ID [STORY-006]:
    Path [Q/S, default=Q]: Q
    User role (As a): developer in a React project
    Desired action (I want to): implement a collapsible JSON card component
    Business value (So that): display context at a glance without opening other windows
    Title [Implement Collapsible JSON Card]:
    Priority [1=high, 2=normal, 3=low, default=2]: 1
    Files (comma-separated, optional): src/components/ContextCard.tsx, src/hooks/useContext.ts, tests/ContextCard.test.tsx
    Add acceptance criteria (blank line to finish, need at least 1):
      - Component accepts JSON data as prop
      - Sections collapse/expand on click
      - JSON is syntax-highlighted
      - Works with deeply nested objects
      - Component is <500ms to render
      - No external dependencies
      (blank to finish)
    
    ✓ Created story: [STORY-006] Implement Collapsible JSON Card
    

    Example 2: Structured Path - Complex Feature with Subtasks

    $ /story new
    
    Story ID [STORY-007]:
    Path [Q/S, default=Q]: S
    
    === Problem Statement ===
    What problem does this solve? Users can't easily search through large heuristics in the context card
    
    Create narrative: 'As a X, I want Y, so that Z'
    User role (As a): developer in Ralph loop with large knowledge base
    Desired action (I want to): search the context card by domain or keyword
    Business value (So that): I can find relevant heuristics without manual scrolling
    
    Title [Search Context Card By Domain Or Keyword]:
    Priority [1=high, 2=normal, 3=low, default=2]: 1
    
    === Functional Requirements ===
    List what the system must do (blank to finish):
      Requirement: Search is case-insensitive
      Requirement: Highlights matching keys and values
      Requirement: Returns count of matches
      Requirement: Filters work with nested objects
      Requirement: Search input is sticky while scrolling
      Requirement: (blank to finish)
    
    === Constraints & Non-Goals ===
    What should this NOT do? Any limits? (blank to finish):
      Constraint: Don't add external search libraries (keep it lightweight)
      Constraint: Don't modify the JSON structure for search purposes
      Constraint: (blank to finish)
    
    === Success Metrics ===
    How do we measure success? (blank to finish, at least 1):
      Metric: Search returns results in <100ms
      Metric: All criteria work with 1000+ item datasets
      Metric: Works offline without external dependencies
      Metric: (blank to finish)
    
    Files (comma-separated, optional): src/components/ContextCard.tsx, src/components/SearchFilter.tsx
    
    Add acceptance criteria (blank line to finish, need at least 1):
      - Search box accepts text input
      - Results highlight in card
      - Count displayed: "X matches found"
      - Escape key clears search
      - (blank to finish)
    
    Generate subtasks to prevent Ralph spiraling? [Y/n]: Y
    
    === Generating Subtasks ===
      - [TASK-001] Create feature branch
      - [TASK-002] Search is case-insensitive
      - [TASK-003] Highlights matching keys and values
      - [TASK-004] Returns count of matches
      - [TASK-005] Filters work with nested objects
      - [TASK-006] Search input is sticky while scrolling
    ✓ Generated 5 subtasks (plus feature branch)
    
    ✓ Created story: [STORY-007] Search Context Card By Domain Or Keyword
      Linked subtasks: 6
    

    Example 2: Filter High-Priority Pending Work

    $ /story list --priority 1 --status pending
    
    [STORY-001] User Authentication
    [STORY-005] Dashboard KPI Display
    [STORY-009] Error Handling Framework
    
    → Ralph will process these in order
    

    Example 3: Review Before Starting Ralph Loop

    $ /story show
    $ /prd validate    # Ensure all stories are valid
    $ /loop            # Start Ralph Loop
    

    Contributing

    To improve the /story skill:

    1. Use it regularly and note friction points
    2. Suggest UX improvements to the prompts
    3. Add new filters for /story list
    4. Extend validation rules (in /prd validate)
    5. Share story templates for common patterns
    Recommended Servers
    tldraw
    tldraw
    Sanity
    Sanity
    Memory Tool
    Memory Tool
    Repository
    spacehunterz/emergent-learning-framework_elf
    Files