smithery.ai

story

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

First seen Mar 21, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 17,445 B
  • docs SUMMARY.md 85 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

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