ralph-json-create-issues
SKILL.md
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
Weekly Installs
19
Repository
richtabor/agent-skillsGitHub Stars
50
First Seen
Jan 30, 2026
Security Audits
Installed on
claude-code18
gemini-cli16
cursor16
opencode15
github-copilot15
amp15