PRD to td — Requirements Decomposition for td Task Management
Transform product requirements documents into a fully populated td backlog with epics, features, tasks, priorities, and dependency tracking.
When to Use This Skill
Use when:
-
You have a PRD, concept brief, feature spec, RFC, or architecture doc
-
You need to populate td with structured work items
-
You're starting a new project or major feature and need a task breakdown
-
You want to convert informal requirements into actionable tracked work
Process Overview
PRD/Brief/Spec │ ▼ ┌─────────────┐ │ 1. PARSE │ Extract vision, features, constraints, dependencies └──────┬──────┘ │ ▼ ┌─────────────┐ │ 2. CLASSIFY │ Assign priorities (P0-P3), identify scope boundaries └──────┬──────┘ │ ▼ ┌─────────────┐ │ 3. DECOMPOSE│ Epic → Feature → Task hierarchy (tasks ≤ 8 hours) └──────┬──────┘ │ ▼ ┌─────────────┐ │ 4. MAP DEPS │ Identify blockers, critical path, execution order └──────┬──────┘ │ ▼ ┌─────────────┐ │ 5. CREATE │ td create for each issue, log dependencies └──────┬──────┘ │ ▼ ┌─────────────┐ │ 6. PLAN │ Write plan file with dependency graph + critical path └─────────────┘
Outputs
Output Location Purpose
td issues .todos/ (via td create ) Trackable work items
Plan file ~/.claude/plans/<repo>-plan.md
Dependency graph, critical path, architecture notes
Summary stdout Counts, critical path, recommended first actions
Quick Start
Input: Give the skill a document
Any of these work:
-
A file path: Analyze /path/to/prd.md and create td issues
-
Pasted text: Here's our PRD: [content]
-
A description: We're building X with these features...
The skill then:
-
Reads and analyzes the document
-
Asks clarifying questions if critical gaps exist (max 3-5 questions)
-
Creates the full td backlog
-
Writes the plan file
-
Reports what was created and recommends where to start
Step 1: Parse the Document
Extract these elements from any input format:
Element What to Find Required?
Vision Why build this? Problem solved? Yes
Users Who uses it? Personas? Yes
Features What does it do? Yes
Scope What's included/excluded? Recommended
Tech stack Languages, frameworks, infrastructure If specified
Constraints Timeline, budget, team size If specified
Dependencies External systems, APIs, teams If specified
Success metrics How measured? If specified
Document Types Handled
Type Approach
Formal PRD Direct extraction — sections map cleanly
Concept brief Infer details, flag assumptions, ask questions
Feature spec Technical → functional mapping, reverse-engineer user needs
Architecture doc Extract components as epics, interfaces as features
Informal description Structure it, propose scope, validate with user
Gap Detection
Flag missing information rather than assuming:
GAPS IDENTIFIED:
- No success metrics defined
- Authentication method unspecified (SSO? OAuth? Email/password?)
- Mobile behavior not addressed
- Data retention policy unclear
ASSUMPTIONS MADE (flag for user validation):
- English-only (i18n not mentioned)
- Web-only (mobile not specified)
If gaps are critical (can't decompose without answers), ask the user before proceeding. Non-critical gaps get logged as notes in the plan file.
Step 2: Classify and Prioritize
Priority Levels
Priority Meaning Criteria
P0 Must have Product doesn't work without it. Launch blocker.
P1 Should have Significant user value. Not blocking but important.
P2 Nice to have Improves experience, not critical. Future iteration candidate.
P3 Out of scope Explicitly excluded or deferred. Don't create td issues.
Classification Rules
-
If the PRD says "must have" or "required" → P0
-
If it says "should" or "important" → P1
-
If it says "nice to have" or "future" → P2
-
If it says "out of scope" or "not included" → P3 (skip)
-
When unclear, default to P1 and flag for user validation
Step 3: Decompose into Hierarchy
td Issue Type Mapping
PRD Feature Area → td epic (--type epic) User Capability → td feature (--type feature) Implementation → td task (--type task) Bug/Fix → td bug (--type bug)
Hierarchy Rules
Level td type Scope Duration Target
Epic epic
Large feature area 1-4 weeks
Feature feature
User-facing capability 1-5 days
Task task
Implementable unit 1-8 hours
Naming Conventions
Use these prefixes in td issue titles for scannability:
Epics: "E001: User Authentication" Features: "User registration with email/password" Tasks: "Create users table schema"
Epic IDs (E001, E002, ...) go in the title. Features and tasks reference their parent epic in the description.
Decomposition Process
-
Identify epics from major feature areas in the PRD
-
Break each epic into user-facing features (INVEST criteria: Independent, Negotiable, Valuable, Estimable, Small, Testable)
-
Break large features into tasks if they exceed 5 days
-
Tag everything with type and priority
Size Limits
If estimated at... Action
4 weeks Split into multiple epics
5 days (feature) Split into smaller features or break into tasks
8 hours (task) Split into smaller tasks
Step 4: Map Dependencies
Dependency Tracking in td
td has flat issues with a block command that sets status. It does NOT have built-in dependency relationships. Dependencies are tracked in TWO places:
-
Issue descriptions: Each issue's description lists what it blocks and what blocks it
-
Plan file: The plan file contains the full dependency graph and critical path
Dependency Template for Issue Descriptions
Dependencies
- Blocks: [list of issue IDs this enables]
- Blocked by: [list of issue IDs that must complete first]
- Related: [list of related but non-blocking issues]
Critical Path
Identify the longest chain of dependent work — this determines minimum project duration.
Example: DB Schema (2h) → Data Model (3h) → API Layer (8h) → Integration Tests (4h) Total critical path: 17h minimum
Record the critical path in the plan file.
Step 5: Create td Issues
Creation Order
-
Create epics first (they're referenced by features/tasks)
-
Create features in dependency order
-
Create tasks in dependency order
-
Log the mapping of td IDs to plan IDs
td Commands Used
Create an epic
td create "E001: User Authentication" --type epic --priority P0
Create a feature under an epic
td create "User registration with email/password" --type feature --priority P0
Create a task
td create "Create users table schema" --type task --priority P0
Log dependency info (since td doesn't have native dep tracking)
td log "Blocked by: td-XXXX (DB schema). Blocks: td-YYYY (API layer)."
Description Template
Every created issue gets a structured description:
[One-line summary of what this delivers]
Parent Epic
E001: [Epic name]
Acceptance Criteria
- [Criterion 1]
- [Criterion 2]
Dependencies
- Blocks: [issue IDs]
- Blocked by: [issue IDs]
Technical Notes
[Implementation hints, constraints, key files]
Estimate
[X hours/days]
Batch Creation
When creating many issues, use a work session:
td ws start "PRD breakdown: [project name]"
... create all issues ...
td ws log "Created N epics, M features, K tasks from PRD" td ws handoff
Step 6: Write Plan File
Location
~/.claude/plans/<repo-name>-plan.md
If a plan file already exists, append a new section rather than overwriting.
Plan File Template
[Project Name] — Implementation Plan
Source: [PRD filename or "user description"] Created: [date] Epics: [count] Features: [count] Tasks: [count] Estimated effort: [total hours/days]
Epic Overview
| ID | Epic | Priority | Features | Est. Days |
|---|---|---|---|---|
| E001 | [Name] | P0 | [count] | [days] |
| E002 | [Name] | P1 | [count] | [days] |
Dependency Graph
E001: DB Foundation └── td-XXXX: Create schema ──→ td-YYYY: Data model ──→ td-ZZZZ: API layer E002: Authentication └── td-AAAA: Auth service (blocked by E001) ──→ td-BBBB: Login UI
Critical Path
[Longest dependency chain with total duration]
Execution Order
Recommended order for starting work:
-
Start immediately (no blockers):
- td-XXXX: [title]
- td-YYYY: [title]
-
After phase 1:
- td-ZZZZ: [title] (blocked by td-XXXX)
-
After phase 2:
- td-AAAA: [title] (blocked by td-ZZZZ)
Open Questions
- [Questions flagged during analysis]
Assumptions
- [Assumptions made during decomposition]
Anti-Patterns
Anti-Pattern Problem What to Do Instead
Creating 100+ flat tasks Unmanageable backlog Group under epics, keep features at 5-day max
Everything is P0 No real prioritization Force-rank: only 30% should be P0
Vague task titles "Work on auth" — what specifically? Specific deliverables: "Create JWT token service"
Skipping dependency mapping Work gets blocked unexpectedly Always identify what blocks what
Assuming instead of asking Build wrong thing Flag gaps, ask 3-5 clarifying questions
Giant tasks (> 8h) Can't track progress Split until each piece is ≤ 8 hours
No plan file Dependencies live only in your head Always write the plan file
Worked Example
Input
"We need a REST API for a bookstore. Users can browse books, search by title/author/genre, add to cart, and checkout. Admin can manage inventory. We're using Python/FastAPI with PostgreSQL."
Output
Epics
td create "E001: Book Catalog & Search" --type epic --priority P0 td create "E002: Shopping Cart" --type epic --priority P0 td create "E003: Checkout & Orders" --type epic --priority P0 td create "E004: Admin Inventory Management" --type epic --priority P1
E001 Features
td create "Browse books with pagination" --type feature --priority P0 td create "Search books by title, author, genre" --type feature --priority P0 td create "Book detail view with metadata" --type feature --priority P1
E001 Tasks (for search feature)
td create "Design books table schema" --type task --priority P0 td create "Implement full-text search with pg_trgm" --type task --priority P0 td create "Create /books/search endpoint with filters" --type task --priority P0
... continue for all epics
Plan file written to ~/.claude/plans/bookstore-api-plan.md with dependency graph and critical path.
References
-
references/td-mapping.md — Detailed mapping from PRD structures to td issue types
-
references/analysis-guide.md — Document parsing methodology and gap detection