ralph-json-create-issues
Create PRD JSON
Convert a Product Requirements Document or plan file into JSON for Ralph.
Input
Check these locations in order:
.claude/plans/— Where plan mode saves approved plans. Primary source.plans/— Project-level plans directory.prds/— Standalone PRDs not generated from plan mode.
If files exist in multiple locations, list all and ask which to convert. If only one file is found, use it directly. If no files are found in any location, ask the user for the path to their PRD/plan file.
Conversion Rules
Story Sizing (Critical)
Each story MUST complete in ONE Ralph iteration (one context window).
Right-sized:
- Add a database column
- Create a single UI component
- Add one API endpoint
- Add form validation
- Update a server action
Too large (must split):
❌ "Build entire auth system"
✅ "Add login form"
✅ "Add email validation"
✅ "Add auth server action"
Dependency Ordering
Stories execute sequentially by priority:
- Database/schema changes
- Backend logic
- API endpoints
- UI components
Cross-PRD Dependencies (Critical)
Ralph respects dependsOn to sequence PRDs. Before generating JSON:
- Scan existing PRDs — Read all
prds/*.jsonto know what features exist - Detect dependencies — Look for references in the markdown PRD:
- Explicit: "See
elevenlabs-integration.md", "Depends on morning brief" - Implicit: Story notes mentioning other features
- Technical: Uses tables/APIs defined in another PRD
- Explicit: "See
- Populate
dependsOn— Array of PRD names (without.jsonextension)
Examples of dependency detection:
# In evening-ritual.md:
"See `elevenlabs-integration.md` for shared infrastructure"
→ dependsOn: ["elevenlabs-integration"]
"Depends on morning brief feature for regeneration"
→ dependsOn: ["elevenlabs-integration", "morning-brief"]
If no dependencies detected:
"dependsOn": []
Acceptance Criteria (Critical)
Must be explicit and verifiable:
Good:
- Email/password fields present
- Validates email format
- Shows error on invalid input
- Typecheck passes
- Verify at localhost:3000/login
Bad:
- Users can log in (vague)
- Works correctly (vague)
- Good UX (subjective)
Required in every story:
- "Typecheck passes"
- "Lint passes"
Required for UI stories:
- "Verify at localhost:3000/[path]"
Output Format
Generate prds/[feature-name].json:
{
"projectName": "Feature Name",
"branchName": "ralph/feature-name",
"description": "Brief description",
"dependsOn": ["other-feature", "another-feature"],
"status": "pending",
"completedAt": null,
"userStories": [
{
"id": "US-001",
"title": "Add login form",
"description": "As a user, I want to see a login form so I can authenticate",
"acceptanceCriteria": [
"Email/password fields present",
"Form submits on enter",
"Typecheck passes",
"Lint passes",
"Verify at localhost:3000/login"
],
"priority": 1,
"passes": false,
"notes": ""
}
]
}
Process
- Scan existing PRDs — Read
prds/*.jsonto understand the dependency landscape - Read the PRD/plan markdown file from
.claude/plans/,plans/, orprds/ - Derive feature name from filename (e.g.,
auth-flow.md→auth-flow) - Detect dependencies — Check for references to other PRDs in the markdown
- Break into right-sized stories starting at US-001
- Order by dependency (set priority)
- Add explicit acceptance criteria
- Save to
prds/[feature-name].json
Pre-Save Checklist
Before saving, verify:
- Each story completable in one iteration
- Stories ordered by dependency
- All criteria include "Typecheck passes"
- UI stories include "Verify at localhost:3000/..."
- No vague criteria ("works", "good", "correct")
- Story IDs are sequential (US-001, US-002, ...)
-
dependsOnis populated (empty array if no dependencies) - Dependencies reference existing PRD names (without extension)
After Conversion
Created prds/[feature-name].json with [N] stories
Dependencies: [list or "none"]
Branch: ralph/[feature-name]
Run: /ralph-json-start-loop
More from richtabor/agent-skills
humanize
Reviews and edits copy to remove AI-generated patterns and make text sound natural. Use when editing drafts, reviewing copy, "humanize this", "make it less AI", "sounds too AI", "remove AI patterns", "edit my copy", "this sounds robotic", or when text feels machine-generated.
105technical-writing
Writes technical blog posts about features being built. Triggers when user asks to write about development progress, implementations, or project updates.
43create-prd
Plan features interactively. Asks clarifying questions, then generates a detailed PRD document.
36motion-design
Provides motion design guidance for UI components. Triggers on animation requests ("animate this", "add transition", "motion for"), refinement requests ("clean up this animation", "clean up the motion", "this feels too fast/slow", "make this feel more alive/natural"), and questions about easing, timing, or micro-interactions.
28review-agents-md
Creates minimal, effective AGENTS.md files using progressive disclosure. Triggers on "create agents.md", "refactor agents.md", "review my agents.md", "claude.md", or questions about agent configuration files. Also triggers proactively when a project is missing AGENTS.md.
27ralph-json-start-loop
Runs the Ralph autonomous loop. Executes stories from prds/*.json using git worktrees.
24