
Ralph Tui Create Json
Turn an existing PRD into a flat prd.json with user stories, merged quality gates, and dependencies for ralph-tui autonomous runs.
Overview
Ralph-tui-create-json is an agent skill for the Build phase that converts PRDs into flat prd.json files with user stories, quality-gate acceptance criteria, and dependencies for ralph-tui execution.
Install
npx skills add https://github.com/subsy/ralph-tui --skill ralph-tui-create-jsonWhat is this skill?
- Converts markdown PRDs into ralph-tui-ready prd.json with name and userStories at the JSON root—no nested prd wrapper
- Extracts universal and UI-specific Quality Gates from the PRD and appends them to each story’s acceptance criteria
- Wires dependencies between user stories for ordered autonomous execution via ralph-tui run --prd
- Bundled with ralph-tui’s JSON tracker plugin; other trackers may ship alternate creation skills
- Documents schema anti-patterns so agents do not emit tasks arrays or invalid nesting
- Root schema requires exactly name and userStories at top level (flat object, no prd wrapper)
Adoption & trust: 968 installs on skills.sh; 2.4k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have a markdown PRD but ralph-tui will not run until stories, gates, and dependencies are encoded in the correct flat prd.json schema.
Who is it for?
Builders already using ralph-tui who want agent-assisted PRD-to-JSON conversion without schema mistakes.
Skip if: Teams without a PRD or those using non-JSON ralph-tui tracker plugins that bundle different task-creation skills.
When should I use this skill?
Triggers on: create prd.json, convert to json, ralph json, create json tasks.
What do I get? / Deliverables
You get a valid prd.json at the repository path you choose, ready for ralph-tui run --prd with gates inlined into every story’s acceptance criteria.
- prd.json file compatible with ralph-tui run --prd
Recommended Skills
Journey fit
Build/pm is where PRDs become executable task graphs for agent runners; this skill is the handoff artifact before implementation sprints. Pm subphase fits JSON task creation, acceptance criteria, and story dependencies rather than writing UI or API code directly.
How it compares
Planning artifact generator for ralph-tui’s JSON runner—not a substitute for writing the PRD itself or for Linear/GitHub issue trackers.
Common Questions / FAQ
Who is ralph-tui-create-json for?
Solo and indie developers running subsy/ralph-tui who need PRDs translated into machine-runnable JSON tasks with quality gates and story order.
When should I use ralph-tui-create-json?
Use it in build/pm right after your PRD is drafted, when triggers like create prd.json or convert to json appear, and before starting ralph-tui autonomous execution.
Is ralph-tui-create-json safe to install?
It guides file creation from your PRD text; review the Security Audits panel on this page and validate generated JSON and gate commands before letting an agent run them in CI.
SKILL.md
READMESKILL.md - Ralph Tui Create Json
# Ralph TUI - Create JSON Tasks 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. --- ## The Job Take a PRD (markdown file or text) and create a prd.json file: 1. **Extract Quality Gates** from the PRD's "Quality Gates" section 2. Parse user stories from the PRD 3. Append quality gates to each story's acceptance criteria 4. Set up dependencies between stories 5. Output ready for `ralph-tui run --prd <path>` --- ## Step 1: Extract Quality Gates Look for the "Quality Gates" section in the PRD: ```markdown ## 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 ``` Extract: - **Universal gates:** Commands that apply to ALL stories (e.g., `pnpm typecheck`) - **UI gates:** Commands that apply only to UI stories (e.g., browser verification) **If no Quality Gates section exists:** Ask the user what commands should pass, or use a sensible default like `npm run typecheck`. --- ## Output Format The JSON file MUST be a FLAT object at the root level: ```json { "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"] } ] } ``` --- ## CRITICAL: Schema Anti-Patterns (DO NOT USE) The following patterns are INVALID and will cause validation errors: ### ❌ WRONG: Wrapper object ```json { "prd": { "name": "...", "userStories": [...] } } ``` This wraps everything in a "prd" object. **DO NOT DO THIS.** The "name" and "userStories" fields must be at the ROOT level. ### ❌ WRONG: Using "tasks" instead of "userStories" ```json { "name": "...", "tasks": [...] } ``` The array is called **"userStories"**, not "tasks". ### ❌ WRONG: Complex nested structures ```json { "metadata": {...}, "overview": {...}, "migration_strategy": { "phases": [...] } } ``` Even if the PRD describes phases/milestones/sprints, you MUST flatten these into a single "userStories" array. ### ❌ WRONG: Using "status" instead of "passes" ```json { "userStories": [{ "id": "US-001", "status": "open" // WRONG! }] } ``` Use `"passes": false` for incomplete stories, `"passes": true` for completed. ### ✅ CORRECT: Flat structure at root ```json { "name": "Android Kotlin Migration", "branchName": "ralph/kotlin-migration", "userStories": [ {"id": "US-001", "title": "Create Scraper interface", "passes": false, "dependsOn": []}, {"id": "US-002", "title": "Imple