story-quality

Review user stories for quality, proper sizing, sequencing, and acceptance criteria. Use before converting to prd.json. Triggers on: review stories, check user stories, story quality, validate stories.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "story-quality" with this command: npx skills add rohunj/claude-build-workflow/rohunj-claude-build-workflow-story-quality

User Story Quality Review

Review user stories for proper sizing, clear descriptions, dependency ordering, and comprehensive acceptance criteria before autonomous execution.


The Job

  1. Read the PRD with user stories
  2. Evaluate each story against quality criteria
  3. Identify issues and propose fixes
  4. Ensure stories are ready for autonomous implementation

Output: Quality report with specific improvements for each story.


Quality Criteria

1. Story Description (1-2 Lines Max)

Good descriptions are:

  • Single sentence or two short sentences maximum
  • Written as "As a [user], I want [feature] so that [benefit]"
  • Focused on ONE capability
  • Clear about who benefits and why

Red flags:

  • Description longer than 2 lines
  • Multiple "and" conjunctions (doing too many things)
  • Vague benefit ("so that it works better")
  • Missing user perspective

Examples:

BAD (too long, multiple things):

As a user, I want to be able to create new tasks, edit existing tasks,
delete tasks, and also mark them as complete, with validation on all
fields and proper error handling so that I can manage my workflow.

GOOD (split into focused stories):

As a user, I want to create new tasks so that I can track my work.

2. Story Scope (One Context Window)

Each story must be completable in ONE autonomous agent iteration. This is critical for Ralph/Claude Code loops.

Right-sized stories:

  • Add a database column/table
  • Create one UI component
  • Implement one API endpoint
  • Add one form with validation
  • Update one existing feature

Too large (needs splitting):

  • "Build the entire dashboard"
  • "Add authentication"
  • "Implement the checkout flow"
  • "Create the admin panel"

Rule of thumb: If you can't describe the implementation in 2-3 sentences, split it.

3. Dependency Ordering

Stories must be ordered so earlier stories don't depend on later ones.

Correct order:

  1. Schema/database changes first
  2. Backend logic/API endpoints second
  3. UI components that use the backend third
  4. Integration/polish features last

Check for:

  • UI story before the API it needs
  • Feature story before schema it requires
  • Delete/update before create exists

4. Acceptance Criteria Quality

Good acceptance criteria are:

  • Verifiable (can check if done)
  • Specific (not vague)
  • Complete (cover the full story)
  • Testable (can write a test for it)

Every story must include:

- [ ] Typecheck passes

UI stories must also include:

- [ ] Verify in browser

Bad criteria (vague):

  • "Works correctly"
  • "Good user experience"
  • "Handles errors properly"
  • "Is fast"

Good criteria (specific):

  • "Button disabled while request is pending"
  • "Error message shown below input field"
  • "Response time < 200ms for 1000 items"
  • "Empty state shows 'No items yet' message"

Review Checklist

For each user story, check:

Description Quality

  • 1-2 lines maximum
  • Follows "As a... I want... so that..." format
  • Single focused capability
  • Clear user and benefit

Scope Assessment

  • Can be implemented in one session
  • Describable in 2-3 implementation sentences
  • No "and also" or multiple features
  • Doesn't require multiple file types of changes

Dependency Check

  • Doesn't depend on later stories
  • Database changes come before code that uses them
  • API exists before UI that calls it

Acceptance Criteria

  • All criteria are verifiable
  • No vague language
  • Includes "Typecheck passes"
  • UI stories include browser verification
  • Covers happy path
  • Covers obvious error cases

Output Format

# Story Quality Review for [PRD Name]

## Summary
- Total stories: X
- Ready for implementation: X
- Needs revision: X

## Story-by-Story Review

### US-001: [Title]
**Status:** Ready | Needs Revision

**Description Review:**
- Length: OK (1 line) | TOO LONG (X lines)
- Format: Follows template | Missing [user/want/benefit]
- Focus: Single capability | Multiple capabilities (split)

**Scope Assessment:**
- Size: Appropriate | Too large (split into X stories)
- Complexity: One context window | Risk of overflow

**Dependency Check:**
- Dependencies: None | Depends on US-00X (OK, comes after) | ISSUE: Depends on US-00X (comes before!)

**Acceptance Criteria:**
- Verifiable: All | Issues with: [list vague criteria]
- Complete: Yes | Missing: [list missing scenarios]
- Includes typecheck: Yes | NO (add it!)
- Includes browser check: Yes | NO (add it!) | N/A (not UI)

**Recommended Changes:**
1. [Specific change]
2. [Specific change]

---

### US-002: [Title]
...

## Recommended Story Splits

### Original: US-003 "Build user dashboard"
**Problem:** Too large - involves schema, API, and multiple UI components

**Split into:**
1. US-003a: "Add dashboard_preferences table to database"
2. US-003b: "Create dashboard API endpoint"
3. US-003c: "Build dashboard layout component"
4. US-003d: "Add widget rendering to dashboard"

## Reordering Recommendations

Current order has dependency issues:

| Story | Current Position | Should Be | Reason |
|-------|------------------|-----------|--------|
| US-005 | 5 | 2 | Creates schema that US-003 needs |
| US-002 | 2 | 4 | Uses API from US-003 |

**Recommended order:** US-001, US-005, US-003, US-002, US-004

## Updated Acceptance Criteria

### US-001 (add these):
- [ ] Typecheck passes
- [ ] Loading state shown during API call
- [ ] Error state shown on failure

### US-004 (make specific):
- Before: "Handles errors properly"
- After: "Shows 'Failed to save. Try again.' on 500 error"

Common Issues and Fixes

Issue: Story too large

Fix: Split by layer (schema → backend → frontend) or by feature (list → create → edit → delete)

Issue: Vague acceptance criteria

Fix: Ask "How would I verify this?" - if no clear answer, make it specific

Issue: Missing error handling

Fix: Add criteria for: empty states, loading states, error states, edge cases

Issue: Wrong order

Fix: Map dependencies and reorder so each story only uses what exists

Issue: Missing typecheck/browser verification

Fix: Always add "Typecheck passes" and "Verify in browser" for UI stories


Tips

  • Be ruthless about scope: Smaller stories are always better for autonomous execution
  • Think in iterations: Each story = one Ralph/Claude iteration
  • Verify means verify: If you can't write a test for it, it's not verifiable
  • Order matters: Wrong order = broken builds and wasted iterations

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

edge-cases

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

compound-engineering

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

test-and-break

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

bugs-to-stories

No summary provided by upstream source.

Repository SourceNeeds Review