Converts a PRD markdown file into prd.json format for Ralph to execute autonomously.
Convert a Product Requirements Document into JSON for Ralph.
Look for PRD files in prds/ directory:
prds/*.md filesIf multiple PRDs exist, ask which one to convert.
Each story MUST complete in ONE Ralph iteration (one context window).
Right-sized:
Too large (must split):
ā "Build entire auth system"
ā
"Add login form"
ā
"Add email validation"
ā
"Add auth server action"
Stories execute sequentially by priority:
Ralph respects dependsOn to sequence PRDs. Before generating JSON:
prds/*.json to know what features existelevenlabs-integration.md", "Depends on morning brief"dependsOn ā Array of PRD names (without .json extension)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": []
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:
Required for UI stories:
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": ""
}
]
}
prds/*.json to understand the dependency landscapeprds/prds/auth-flow.md ā auth-flow)prds/[feature-name].jsonBefore saving, verify:
dependsOn is populated (empty array if no dependencies)Created prds/[feature-name].json with [N] stories
Dependencies: [list or "none"]
Branch: ralph/[feature-name]
Run: /ralph