Converts PRDs to prd.json format for ralph-tui autonomous execution. > **Note:** This skill is bundled with ralph-tui's JSON tracker plugin. Future tracker plugins (Linear, GitHub Issues, etc.) will bundle their own task creation skills. > **⚠️ CRITICAL:** The output MUST be a FLAT JSON object with "name" and "userStories" at the ROOT level. DO NOT wrap content in a "prd" object or use "tasks" array. See "Schema Anti-Patterns" section below.
Note: This skill is bundled with ralph-tui's JSON tracker plugin. Future tracker plugins (Linear, GitHub Issues, etc.) will bundle their own task creation skills.
⚠️ CRITICAL: The output MUST be a FLAT JSON object with "name" and "userStories" at the ROOT level. DO NOT wrap content in a "prd" object or use "tasks" array. See "Schema Anti-Patterns" section below.
ralph-tui run --prd <path>## Quality Gates These commands must pass for every user story: - `pnpm typecheck` - Type checking - `pnpm lint` - Linting For UI stories, also include: - Verify in browser using dev-browser skill
pnpm typecheck)npm run typecheck.{ "name": "[Project name from PRD or directory]", "branchName": "ralph/[feature-name-kebab-case]", "description": "[Feature description from PRD]", "userStories": [ { "id": "US-001", "title": "[Story title]", "description": "As a [user], I want [feature] so that [benefit]", "acceptanceCriteria": [ "Criterion 1 from PRD", "Criterion 2 from PRD", "pnpm typecheck passes", "pnpm lint passes" ], "priority": 1, "passes": false, "notes": "", "dependsOn": [] }, { "id": "US-002", "title": "[UI Story that depends on US-001]", "description": "...", "acceptanceCriteria": [ "...", "pnpm typecheck passes", "pnpm lint passes", "Verify in browser using dev-browser skill" ], "priority": 2, "passes": false, "notes": "", "dependsOn": ["US-001"] } ] }
{ "prd": { "name": "...", "userStories": [...] } }
{ "name": "...", "tasks": [...] }
{ "metadata": {...}, "overview": {...}, "migration_strategy": { "phases": [...] } }
{ "userStories": [{ "id": "US-001", "status": "open" // WRONG! }] }
"passes": false for incomplete stories, "passes": true for completed.{ "name": "Android Kotlin Migration", "branchName": "ralph/kotlin-migration", "userStories": [ {"id": "US-001", "title": "Create Scraper interface", "passes": false, "dependsOn": []}, {"id": "US-002", "title": "Implement WeebCentralScraper", "passes": false, "dependsOn": ["US-001"]} ] }
dependsOndependsOn array to specify which stories must complete first:{ "id": "US-002", "title": "Create API endpoints", "dependsOn": ["US-001"], // Won't be selected until US-001 passes ... }
status column to tasks table with default 'open'"passes: false and empty notesralph/./tasks/prd.json (alongside the PRD markdown files)tasks/ directory.ralph-tui run --prd ./path/to/prd.json# PRD: Task Priority System Add priority levels to tasks. ## Quality Gates These commands must pass for every user story: - `pnpm typecheck` - Type checking - `pnpm lint` - Linting For UI stories, also include: - Verify in browser using dev-browser skill ## User Stories ### US-001: Add priority field to database **Description:** As a developer, I need to store task priority. **Acceptance Criteria:** - [ ] Add priority column: 1-4 (default 2) - [ ] Migration runs successfully ### US-002: Display priority badge on task cards **Description:** As a user, I want to see task priority at a glance. **Acceptance Criteria:** - [ ] Badge shows P1/P2/P3/P4 with colors - [ ] Badge visible without hovering ### US-003: Add priority filter dropdown **Description:** As a user, I want to filter tasks by priority. **Acceptance Criteria:** - [ ] Filter dropdown: All, P1, P2, P3, P4 - [ ] Filter persists in URL `**Output prd.json:**` { "name": "Task Priority System", "branchName": "ralph/task-priority", "description": "Add priority levels to tasks", "userStories": [ { "id": "US-001", "title": "Add priority field to database", "description": "As a developer, I need to store task priority.", "acceptanceCriteria": [ "Add priority column: 1-4 (default 2)", "Migration runs successfully", "pnpm typecheck passes", "pnpm lint passes" ], "priority": 1, "passes": false, "notes": "", "dependsOn": [] }, { "id": "US-002", "title": "Display priority badge on task cards", "description": "As a user, I want to see task priority at a glance.", "acceptanceCriteria": [ "Badge shows P1/P2/P3/P4 with colors", "Badge visible without hovering", "pnpm typecheck passes", "pnpm lint passes", "Verify in browser using dev-browser skill" ], "priority": 2, "passes": false, "notes": "", "dependsOn": ["US-001"] }, { "id": "US-003", "title": "Add priority filter dropdown", "description": "As a user, I want to filter tasks by priority.", "acceptanceCriteria": [ "Filter dropdown: All, P1, P2, P3, P4", "Filter persists in URL", "pnpm typecheck passes", "pnpm lint passes", "Verify in browser using dev-browser skill" ], "priority": 3, "passes": false, "notes": "", "dependsOn": ["US-002"] } ] }
ralph-tui run --prd ./tasks/prd.jsonpasses: false and no blocking dependenciespasses: true on completiondependsOn correctly set for each story