# punit-labs/prd-to-jira-skill architecture

> Architecture diagram of the GitHub repository punit-labs/prd-to-jira-skill, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/punit-labs/prd-to-jira-skill
- Repository: https://github.com/punit-labs/prd-to-jira-skill

## Overview

prd-to-jira is a Claude Code skill that turns a PRD into an estimated, dependency-aware Jira backlog. Claude applies the skill’s rubric to produce structured epics and tasks; a deterministic Python renderer validates that data and creates Jira CSV, dependency views, and a reviewable backlog. The user then imports the CSV into Jira and manually links issues. The README documents the workflow and renderer behavior; the skill rubric itself was not excerpted, so its internal stages are summarized from the README rather than mapped to unverified implementation details.

Main entry points: [`skill/scripts/render_outputs.py`](https://github.com/punit-labs/prd-to-jira-skill/blob/main/skill/scripts/render_outputs.py) (Validate and render), [`examples/output/epics.json`](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/epics.json) (Structured backlog), [`examples/output/dependencies.md`](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/dependencies.md) (Dependency instructions), [`examples/sample-prd.md`](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/sample-prd.md) (Product requirements)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["PRD extraction"]
  node_claude["Claude Code"]
  node_prd["Product requirements<br/>[sample-prd.md]"]
  node_skill["Extraction rubric<br/>[SKILL.md]"]
end

subgraph group_render["Artifact rendering"]
  node_epics["Structured backlog<br/>[epics.json]"]
  node_renderer["Validate and render<br/>[render_outputs.py]"]
end

subgraph group_handoff["Jira handoff"]
  node_csv["Jira import CSV<br/>[jira_import.csv]"]
  node_depgraph["Dependency graph<br/>[dependencies.mmd]"]
  node_depsteps["Dependency instructions<br/>[dependencies.md]"]
  node_backlog["Review backlog<br/>[backlog.md]"]
end

node_user(("Product planner"))
node_jira["Jira"]

node_user -->|"provides PRD"| node_claude
node_claude -->|"reads"| node_prd
node_claude -->|"follows rubric"| node_skill
node_claude -->|"extracts backlog"| node_epics
node_epics -->|"validates and renders"| node_renderer
node_renderer -->|"writes"| node_csv
node_renderer -->|"writes"| node_depgraph
node_renderer -->|"writes"| node_depsteps
node_renderer -->|"writes"| node_backlog
node_user -->|"imports CSV"| node_jira
node_user -->|"manually links issues"| node_depsteps

click node_prd "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/sample-prd.md"
click node_skill "https://github.com/punit-labs/prd-to-jira-skill/blob/main/skill/SKILL.md"
click node_epics "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/epics.json"
click node_renderer "https://github.com/punit-labs/prd-to-jira-skill/blob/main/skill/scripts/render_outputs.py"
click node_csv "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/jira_import.csv"
click node_depgraph "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/dependencies.mmd"
click node_depsteps "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/dependencies.md"
click node_backlog "https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/backlog.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_claude,node_prd,node_skill toneBlue
class node_epics,node_renderer toneAmber
class node_csv,node_depgraph,node_depsteps,node_backlog toneMint
class node_user,node_jira toneIndigo
```

## Components

### PRD extraction

- **Claude Code**
- [Product requirements](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/sample-prd.md): `examples/sample-prd.md`
- [Extraction rubric](https://github.com/punit-labs/prd-to-jira-skill/blob/main/skill/SKILL.md): `skill/SKILL.md`

### Artifact rendering

- [Structured backlog](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/epics.json): `examples/output/epics.json`
- [Validate and render](https://github.com/punit-labs/prd-to-jira-skill/blob/main/skill/scripts/render_outputs.py): `skill/scripts/render_outputs.py`

### Jira handoff

- [Jira import CSV](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/jira_import.csv): `examples/output/jira_import.csv`
- [Dependency graph](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/dependencies.mmd): `examples/output/dependencies.mmd`
- [Dependency instructions](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/dependencies.md): `examples/output/dependencies.md`
- [Review backlog](https://github.com/punit-labs/prd-to-jira-skill/blob/main/examples/output/backlog.md): `examples/output/backlog.md`

### Other components

- **Product planner**
- **Jira**

## Connections

- Product planner → Claude Code: provides PRD (evidence: `README.md`)
- Claude Code → Product requirements: reads (evidence: `README.md`)
- Claude Code → Extraction rubric: follows rubric (evidence: `README.md`)
- Claude Code → Structured backlog: extracts backlog (evidence: `README.md`)
- Structured backlog → Validate and render: validates and renders (evidence: `README.md`)
- Validate and render → Jira import CSV: writes (evidence: `skill/scripts/render_outputs.py`)
- Validate and render → Dependency graph: writes (evidence: `skill/scripts/render_outputs.py`)
- Validate and render → Dependency instructions: writes (evidence: `skill/scripts/render_outputs.py`)
- Validate and render → Review backlog: writes (evidence: `skill/scripts/render_outputs.py`)
- Product planner → Jira: imports CSV (evidence: `README.md`)
- Product planner → Dependency instructions: manually links issues (evidence: `README.md`)
