home / skills / rohunj / claude-build-workflow / story-quality
This skill reviews user stories for quality, sizing, and acceptance criteria to ensure ready-to-execute PRD conversions.
npx playbooks add skill rohunj/claude-build-workflow --skill story-qualityReview the files below or copy the command above to add this skill to your agents.
---
name: story-quality
description: "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."
---
# 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
```markdown
# 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
This skill reviews user stories for quality, proper sizing, sequencing, and acceptance criteria before converting them to prd.json. It produces a clear, actionable quality report that lists issues per story and recommended fixes so stories are ready for autonomous implementation.
The skill reads the PRD or list of user stories and evaluates each story against concise quality rules: description clarity, scope size, dependency ordering, and acceptance criteria completeness. It flags problems, suggests specific splits or reordering, and adds precise, testable acceptance criteria including required checks like typechecks and browser verification for UI stories.
What does 'one context window' mean?
It means the story can be completed in a single autonomous iteration and described in 2–3 implementation sentences.
What mandatory checks are added?
Every story must include 'Typecheck passes'. UI stories must also include 'Verify in browser'.