From claude-harness
Analyzes PRD into atomic features with Gherkin acceptance criteria, performs product/architecture/QA analysis, generates dependency graphs, MVP features, and project plans from specs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-harness:prd-breakdownThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze a Product Requirements Document (PRD) and decompose it into atomic features that integrate with the claude-harness workflow.
Analyze a Product Requirements Document (PRD) and decompose it into atomic features that integrate with the claude-harness workflow.
Arguments: $ARGUMENTS
Detect PRD source (in priority order):
@ -> treat as file reference (e.g., @./docs/prd.md)--url flag provided -> fetch from GitHub issue--file flag provided -> read from specified file path./.claude-harness/prd.md exists -> read from fileValidate PRD format:
Store PRD input:
.claude-harness/prd/ directory if missing.claude-harness/prd/input.md.claude-harness/prd/metadata.json:
{
"version": 1,
"sourceType": "inline|file|github|interactive",
"fetchedAt": "{ISO timestamp}",
"sourceUrl": "{URL or path}",
"hash": "{SHA256 of PRD}",
"characterCount": 0,
"sections": 0
}
Perform comprehensive analysis from three perspectives:
Product Analysis:
Architecture Analysis:
QA Analysis:
Save analysis results to .claude-harness/prd/analysis.json:
{
"version": 1,
"analyzedAt": "{timestamp}",
"product": {
"businessGoals": [...],
"userPersonas": [...],
"functionalRequirements": [...]
},
"architecture": {
"feasibilityAssessment": [...],
"implementationOrder": [...],
"mvpFeatures": [...],
"dependencies": {...}
},
"qa": {
"verificationFramework": {...},
"edgeCases": [...]
}
}
Transform analysis into atomic features:
Resolve dependencies:
Generate feature specifications (with structured Gherkin acceptance criteria):
{
"id": "feature-XXX",
"prdSource": {
"section": "Section Name",
"requirement": "R001"
},
"name": "Feature Title",
"description": "One-line description",
"detailedDescription": "Full description from PRD",
"priority": 1,
"dependencies": ["feature-YYY"],
"acceptanceCriteria": [
{
"scenario": "Descriptive scenario name",
"given": "precondition (context setup)",
"when": "action performed",
"then": "expected outcome"
}
],
"riskLevel": "low|medium|high",
"estimatedComplexity": "low|medium|high",
"mvpFeature": true|false
}
Important: acceptanceCriteria MUST use structured Gherkin format ({ scenario, given, when, then }) -- not plain strings. This enables the ATDD workflow in /flow --team where the tester teammate programmatically iterates scenarios to write executable tests.
Apply limits (if --max-features N provided):
Generate preview showing (skip if --auto flag provided):
PRD BREAKDOWN ANALYSIS COMPLETE
Sections: 5 | Requirements: 23 | Features: 8
MVP Features: 3 | High-Risk: 1 | Dependencies: 5
FEATURES (by priority):
1. [MVP] Add user authentication
Risk: MEDIUM | Complexity: MEDIUM | No dependencies
2. Build user dashboard
Risk: LOW | Complexity: LOW | Depends on: #1
... (6 more)
Create features? [Y/n/select/review]
Handle user response:
.claude-harness/prd/breakdown.jsonCreate features in .claude-harness/features/active.json:
{
"id": "feature-XXX",
"name": "...",
"description": "...",
"priority": N,
"status": "pending",
"acceptanceCriteria": [
{
"scenario": "...",
"given": "...",
"when": "...",
"then": "..."
}
],
"prdMetadata": {
"section": "...",
"breakdown": "prd-{date}-{hash}"
},
"verification": {
"build": "{auto-detected}",
"tests": "{auto-detected}",
"lint": "{auto-detected}",
"typecheck": "{auto-detected}"
},
"relatedFiles": [],
"github": {
"issueNumber": null,
"prNumber": null,
"branch": "feature/feature-XXX"
},
"createdAt": "{timestamp}",
"updatedAt": "{timestamp}"
}
GitHub issues are created by default for all generated features. Skip with --no-issues.
Pass 1 -- Create issues with rich bodies (in dependency order -- dependencies first):
Parse GitHub owner/repo from git remote get-url origin (or use cached from SessionStart)
For each created feature (ordered so dependencies are created first):
Build labels:
["feature", "prd-generated", "claude-harness"]mvpFeature is true: add "mvp"riskLevel is "high": add "high-risk"Build rich issue body:
## Description
{feature.detailedDescription or feature.description}
### PRD Source
**Section:** {prdSource.section} | **Requirement:** {prdSource.requirement}
---
## Acceptance Criteria
**Scenario: {scenario}**
- **Given** {given}
- **When** {when}
- **Then** {then}
{repeat for each criterion in acceptanceCriteria}
---
## Implementation Context
| Attribute | Value |
|-----------|-------|
| Priority | {priority} |
| Complexity | {estimatedComplexity} |
| Risk Level | {riskLevel} |
| MVP Feature | {mvpFeature ? "Yes" : "No"} |
### Related Files
{for each file in relatedFiles: "- `{file}`"}
{if empty: "- To be determined during planning"}
### Implementation Hints
{from architecture analysis for this feature: suggested approach, tech stack considerations, risks and mitigations}
---
## Dependencies
{placeholder -- will be updated in Pass 2 with actual issue numbers}
{if feature.dependencies: "Depends on: {list dependency feature names}"}
{if no dependencies: "No dependencies -- can be implemented independently."}
---
## Verification Commands
build: {verification.build or "not configured"} tests: {verification.tests or "not configured"} lint: {verification.lint or "not configured"} typecheck: {verification.typecheck or "not configured"} acceptance: {verification.acceptance or "not configured"}
---
*Generated by [claude-harness](https://github.com/panayiotism/claude-harness) PRD breakdown*
*Breakdown ID: {prdMetadata.breakdown}*
Create issue via gh issue create or mcp__github__create_issue:
{feature.name}Update feature entry in active.json:
github.issueNumber to created issue number.claude-harness/features/active.jsonRate limiting: 500ms delay between API calls
15.5. Pass 2 -- Update issues with cross-references (after ALL issues are created):
Now that every feature has an assigned `github.issueNumber`, update each issue that has dependencies or is depended upon:
- For each feature with `dependencies` array OR that appears in another feature's `dependencies`:
1. **Build "Depends on" section**:
```markdown
**Depends on:**
- #43 -- Add user authentication
- #45 -- Create database schema
```
Map each dependency feature ID to its `github.issueNumber` and `name`.
2. **Build "Blocks" section** (reverse lookup):
- Find all features whose `dependencies` array includes this feature's ID
```markdown
**Blocks:**
- #44 -- Build user dashboard
- #46 -- Add admin panel
```
3. **Replace the Dependencies section** in the issue body:
- Use `gh issue edit {issueNumber} --body "{updated body}"` or GitHub MCP
- Replace the placeholder dependency section with the actual cross-referenced version
4. **Rate limiting**: 500ms delay between API calls
This ensures **bidirectional linking**: if feature-002 depends on feature-001, then:
- feature-001's issue shows "**Blocks:** #44 -- feature-002 name"
- feature-002's issue shows "**Depends on:** #43 -- feature-001 name"
**Error Handling** (applies to both Pass 1 and Pass 2):
- GitHub MCP unavailable -> Log warning, skip issue creation entirely but continue with feature creation
- Permission denied -> Log error for specific feature, continue with others
- API rate limit -> Add 500ms delay between requests
- Network error -> Retry 3x with exponential backoff
- Pass 2 update failure -> Log warning (issues exist but without cross-references), continue
Report completion:
FEATURES CREATED FROM PRD
PRD Sections: 5
Features Extracted: 8
Created Now: 3
GitHub Issues Created: 3
#43: Add user authentication (MVP)
#44: Build user dashboard -> depends on #43
#45: Create database schema
Cross-references: 2 issues updated with dependency links
Files:
- PRD input: .claude-harness/prd/input.md
- Analysis: .claude-harness/prd/analysis.json
- Breakdown: .claude-harness/prd/breakdown.json
NEXT STEPS:
1. Start implementation: /flow feature-001
2. Or batch process: /flow --autonomous
3. Review analysis: cat .claude-harness/prd/breakdown.json
Interactive menu (if user doesn't select all):
--no-issues
--analyze-only
--auto
--max-features N
/claude-harness:prd-breakdown "Detailed PRD markdown here..." # Inline PRD (creates features + issues)
/claude-harness:prd-breakdown @./docs/prd.md # File reference (creates features + issues)
/claude-harness:prd-breakdown --file ./docs/prd.md # File flag
/claude-harness:prd-breakdown --url https://github.com/.../issues/42 # GitHub issue as PRD source
/claude-harness:prd-breakdown --analyze-only # Analysis only (no features, no issues)
/claude-harness:prd-breakdown --auto # No prompts, full automation
/claude-harness:prd-breakdown --max-features 10 # Top 10 only
/claude-harness:prd-breakdown @./prd.md --no-issues # Features only, skip GitHub issues
/claude-harness:prd-breakdown @./prd.md --auto # Full automation: analyze + features + issues
| Syntax | Behavior |
|---|---|
/prd-breakdown "markdown text" | Analyze inline PRD, create features + GitHub issues |
/prd-breakdown @path/to/file.md | Read PRD from file, create features + issues |
/prd-breakdown --file path/to/file.md | Read PRD from file (--flag syntax) |
/prd-breakdown --url https://... | Fetch PRD from GitHub issue |
/prd-breakdown @file.md --no-issues | Create features only, skip GitHub issues |
/prd-breakdown @file.md --auto | Full automation: analyze, create features AND issues |
| (no args) | Prompt user for interactive input |
| Scenario | Action |
|---|---|
| PRD not provided | Prompt via AskUserQuestion |
| PRD too large (>100KB) | Warn user, ask to focus section |
| GitHub fetch fails (no MCP) | Fall back to interactive input |
| Invalid markdown | Parse as plaintext, still extract |
| Feature ID collision | Use timestamp suffix for uniqueness |
| Dependency cycle | Report error, suggest manual ordering |
| GitHub MCP unavailable | Log warning, skip issue creation entirely but continue with feature creation |
| Issue creation permission denied | Log error for specific feature, continue with others |
| Issue creation rate limit | Add 500ms delay between requests, continue |
| Issue creation network error | Retry 3x with exponential backoff |
| Pass 2 update failure | Log warning (issues exist but without cross-references), continue |
/flow: Each created feature can be implemented via /flow feature-XXX/start: Shows PRD analysis summary from prior sessionsnpx claudepluginhub joshuarweaver/cascade-ai-ml-agents-agent-framework --plugin panayiotism-claude-harnessTransforms product ideas, feature requests, or stakeholder requirements into structured PRDs with user stories, acceptance criteria, and GitHub issues.
Breaks a PRD into engineering tasks and hands off to Linear, GitHub Issues, OpenSpec, gstack, Symphony, or human-readable markdown.
Generates requirements, UX spec, architecture, data model, issues, and test plan from a PRD by running 6 subagents in sequence. Includes worktree isolation, registry updates, and checkpoint verification.