← Back to Skills
Productivity

prd

bjesuiter By bjesuiter 👁 9 views ▲ 0 votes

Create and manage Product Requirements Documents (PRDs).

GitHub
---
name: prd
description: Create and manage Product Requirements Documents (PRDs). Use when: (1) Creating structured task lists with user stories, (2) Specifying features with acceptance criteria, (3) Planning feature implementation for AI agents or human developers.
author: Benjamin Jesuiter <[email protected]>
metadata:
  clawdbot:
    emoji: "📋"
    os: ["darwin", "linux"]
---

# PRD Skill

Create and manage Product Requirements Documents (PRDs) for feature planning.

## What is a PRD?

A **PRD (Product Requirements Document)** is a structured specification that:

1. Breaks a feature into **small, independent user stories**
2. Defines **verifiable acceptance criteria** for each story
3. Orders tasks by **dependency** (schema → backend → UI)

## Quick Start

1. Create/edit `agents/prd.json` in the project
2. Define user stories with acceptance criteria
3. Track progress by updating `passes: false` → `true`

## prd.json Format

```json
{
  "project": "MyApp",
  "branchName": "ralph/feature-name",
  "description": "Short description of the feature",
  "userStories": [
    {
      "id": "US-001",
      "title": "Add priority field to database",
      "description": "As a developer, I need to store task priority.",
      "acceptanceCriteria": [
        "Add priority column: 'high' | 'medium' | 'low'",
        "Generate and run migration",
        "Typecheck passes"
      ],
      "priority": 1,
      "passes": false,
      "notes": ""
    }
  ]
}
```

### Field Descriptions

| Field | Description |
|-------|-------------|
| `project` | Project name for context |
| `branchName` | Git branch for this feature (prefix with `ralph/`) |
| `description` | One-line feature summary |
| `userStories` | List of stories to complete |
| `userStories[].id` | Unique identifier (US-001, US-002) |
| `userStories[].title` | Short descriptive title |
| `userStories[].description` | "As a [user], I want [feature] so that [benefit]" |
| `userStories[].acceptanceCriteria` | Verifiable checklist items |
| `userStories[].priority` | Execution order (1 = first) |
| `userStories[].passes` | Completion status (`false` → `true` when done) |
| `userStories[].notes` | Runtime notes added by agent |

## Story Sizing

**Each story should be completable in one context window.**

### ✅ Right-sized:
- Add a database column and migration
- Add a UI component to an existing page
- Update a server action with new logic
- Add a filter dropdown to a list

### ❌ Too large (split these):
- "Build the entire dashboard" → Split into: schema, queries, UI, filters
- "Add authentication" → Split into: schema, middleware, login UI, session

## Story Ordering

Stories execute in priority order. Earlier stories must NOT depend on later ones.

**Correct order:**
1. Schema/database changes (migrations)
2. Server actions / backend logic
3. UI components that use the backend
4. Dashboard/summary views

## Acceptance Criteria

Must be verifiable, not vague.

### ✅ Good:
- "Add `status` column to tasks table with default 'pending'"
- "Filter dropdown has options: All, Active, Completed"
- "Typecheck passes"

### ❌ Bad:
- "Works correctly"
- "User can do X easily"

**Always include:** `"Typecheck passes"`

## Progress Tracking

Update `passes: true` when a story is complete. Use `notes` field for runtime observations:

```json
"notes": "Used IF NOT EXISTS for migrations"
```

## Quick Reference

| Action | Command |
|--------|---------|
| Create PRD | Save to `agents/prd.json` |
| Check status | `cat prd.json | jq '.userStories[] | {id, passes}'` |
| View incomplete | `jq '.userStories[] | select(.passes == false)' prd.json` |

## Resources

See `references/` for detailed documentation:
- `agent-usage.md` - How AI agents execute PRDs (Claude Code, OpenCode, etc.)
- `workflows.md` - Sequential workflow patterns
- `output-patterns.md` - Templates and examples
productivity

Comments

Sign in to leave a comment

Loading comments...