Back to Skills

create-prd-json

verified

Converts a PRD markdown file into prd.json format for Ralph to execute autonomously.

View on GitHub

Marketplace

richtabor-skills

richtabor/agent-skills

Plugin

development

Repository

richtabor/agent-skills
35stars

skills/create-prd-json/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/richtabor/agent-skills/blob/main/skills/create-prd-json/SKILL.md -a claude-code --skill create-prd-json

Installation paths:

Claude
.claude/skills/create-prd-json/
Powered by add-skill CLI

Instructions

# Create PRD JSON

Convert a Product Requirements Document into JSON for Ralph.

## Input

Look for PRD files in `prds/` directory:
1. `prds/*.md` files
2. User specifies a file

If multiple PRDs exist, ask which one to convert.

## 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:
1. Database/schema changes
2. Backend logic
3. API endpoints
4. UI components

### Cross-PRD Dependencies (Critical)

Ralph respects `dependsOn` to sequence PRDs. Before generating JSON:

1. **Scan existing PRDs** — Read all `prds/*.json` to know what features exist
2. **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
3. **Populate `dependsOn`** — Array of PRD names (without `.json` extension)

**Examples of dependency detection:**
```markdown
# 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:**
```json
"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:*

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3760 chars