skills/ballee/user-stories-manager/SKILL.md
Manage user stories: create, list, update status, link migrations/tests, validate; use when working on features, tracking progress, or creating new stories (project)
npx skillsauth add javeedishaq/ai-workflow-orchestrator user-stories-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage user stories for tracking feature development, linking code artifacts, and monitoring progress.
# List stories
./scripts/story-list.sh # All stories summary
./scripts/story-list.sh --status draft # Filter by status
./scripts/story-list.sh --module invoices # Filter by module
# Create new story
./scripts/story-create.sh "feature-name" --module admin-events
# Update story
./scripts/story-update.sh US-001 --status in-progress
./scripts/story-update.sh US-001 --priority high
# Link resources
./scripts/story-link.sh US-001 --migration 20251224_add_feature
./scripts/story-link.sh US-001 --test apps/web/__tests__/e2e/path/test.ts
# Validate
./scripts/story-validate.sh
# Statistics
./scripts/story-stats.sh
docs/user-stories/
├── {module}/ # Module directories (18 total)
│ ├── US-{number}-{slug}.md # Story files
│ └── _module.yml # Optional module metadata
├── story-template.md # Template for new stories
├── index.json # Auto-generated index
└── README.md # Documentation
Stories use markdown with YAML frontmatter:
---
id: US-001
title: Dancer Registration
module: authentication
status: in-progress
priority: high
acceptance_criteria:
- "User can register with email/password"
- "Profile created in database"
migration_ids:
- "20251115120000_add_dancer_profiles"
db_tables:
- profiles
- auth.users
test_files:
- "apps/web/__tests__/e2e/auth/01-registration-flow.test.ts"
dependencies: []
created_at: 2025-11-15
updated_at: 2025-12-15
---
# User Story: Dancer Registration
## Context
...
## User Story Statement
**As a** dancer
**I want to** create an account
**So that** I can participate in events
## Acceptance Criteria
1. User can register with email/password
2. Profile created in database
## Technical Implementation
...
draft → in-progress → testing → done
| Status | Meaning | Requirements | |--------|---------|--------------| | draft | Being planned | None | | in-progress | Active development | Must have acceptance_criteria | | testing | Code complete, validating | Must have migration_ids, test_files | | done | Fully complete | All linked migrations & tests exist |
| Module | Stories | Description | |--------|---------|-------------| | authentication | US-001 | Registration, login | | cast-management | US-002 | Cast workflows | | communications | US-003 to US-007 | Emails, invitations | | admin-events | US-008 to US-014 | Event management | | dancer-experience | US-015 to US-019 | Dancer features | | admin-productions | US-020 to US-021 | Production management | | admin-cast-assignment | US-022 to US-029 | Cast assignment | | admin-reporting | US-030 to US-032 | Reports, exports | | invoices | US-033 to US-038 | Invoice system | | hire-orders | US-039 to US-045 | Hire orders | | clients | US-046 to US-048 | Client management | | ai-chatbot | US-049 to US-052, US-059 | AI chatbot | | venues | US-053 to US-054 | Venue management | | reimbursements | US-055 to US-056 | Reimbursements | | legal-compliance | US-057 | Legal documents | | airtable-sync | US-058 | Airtable sync | | payments | US-060 | Tipalti payments | | repertoire | US-061+ | Repertoire management |
Find or create a story:
./scripts/story-list.sh --status draft
# or
./scripts/story-create.sh "new-feature" --module admin-events
Update status to in-progress:
./scripts/story-update.sh US-070 --status in-progress
As you implement, link resources:
./scripts/story-link.sh US-070 --migration 20251224_add_feature
./scripts/story-link.sh US-070 --test apps/web/__tests__/e2e/feature/test.ts
Mark complete when done:
./scripts/story-update.sh US-070 --status done
# What needs work?
./scripts/story-list.sh --status draft
./scripts/story-list.sh --status in-progress
# What's in a module?
./scripts/story-list.sh --module invoices
# High priority items
./scripts/story-list.sh --priority critical
./scripts/story-list.sh --priority high
Stories are validated for:
Run validation:
./scripts/story-validate.sh
The skill wraps the @ballee/user-stories package:
import {
getAllStories,
getStoryById,
getStoriesByModule,
getStoriesByStatus,
validateStoryCompleteness,
} from '@ballee/user-stories';
wip-lifecycle-manager - For multi-step implementation trackingdatabase-migration-manager - For creating migrationstest-patterns - For writing E2E testsservice-patterns - For service layer implementationtools
# Test Patterns Testing patterns for reliable, maintainable, and fast tests. > **Template Usage:** Customize for your test framework (Vitest, Jest, Playwright, etc.) and assertion library. ## Test Structure ```typescript // user.test.ts import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import { userService } from '@/services/user.service'; import { createTestUser, cleanupTestData } from '@/tests/helpers'; describe('UserService', () => { let testUserId: string; befor
tools
# State Management Patterns Client-side state management patterns for modern applications. > **Template Usage:** Customize for your state library (React Query, Zustand, Jotai, Redux, etc.). ## State Categories | Type | Description | Solution | |------|-------------|----------| | **Server State** | Data from API/database | React Query, SWR | | **Client State** | UI state, user preferences | Zustand, Jotai, useState | | **Form State** | Form inputs, validation | React Hook Form, Formik | | **U
development
# Service Patterns Service layer patterns for clean architecture with proper error handling, logging, and type safety. > **Template Usage:** Customize for your ORM (Prisma, Drizzle, TypeORM, etc.) and logging solution. ## Result Type Pattern Never throw exceptions from services. Always return a Result type. ```typescript // lib/result.ts export type Result<T, E = Error> = | { success: true; data: T } | { success: false; error: E }; export function ok<T>(data: T): Result<T, never> { r
testing
# Row-Level Security Patterns Database security patterns for multi-tenant and user-scoped data. > **Template Usage:** Customize for your database (PostgreSQL, Supabase, etc.) and auth system. ## RLS Fundamentals ### Enable RLS on Tables ```sql -- Enable RLS (required before policies take effect) ALTER TABLE users ENABLE ROW LEVEL SECURITY; ALTER TABLE posts ENABLE ROW LEVEL SECURITY; ALTER TABLE comments ENABLE ROW LEVEL SECURITY; -- Force RLS for table owners too (recommended) ALTER TABLE