From sprint-jira
Maps raw Jira issue objects to the internal InternalTicket format used by the sprint-coding-agent routing skills. Extracts id, title, description (ADF to plain text), type, labels, components, links, priority, and assignee.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sprint-jira:ticket-normalizerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Transforms raw Jira issue objects into the normalised `InternalTicket` format consumed by `domain-router` and `dependency-mapper`.
Transforms raw Jira issue objects into the normalised InternalTicket format consumed by domain-router and dependency-mapper.
{
"id": "PROJ-123",
"title": "Add user authentication endpoint",
"description": "Plain text, max 500 chars",
"type": "Story",
"labels": ["api", "auth"],
"components": ["backend"],
"links": [
{ "type": "blocks", "targetId": "PROJ-124" },
{ "type": "is blocked by", "targetId": "PROJ-120" }
],
"priority": "High",
"assignee": "[email protected]",
"domainSignals": []
}
| InternalTicket field | Jira source |
|---|---|
id | issue.key |
title | issue.fields.summary |
description | issue.fields.description — ADF to plain text (see below) |
type | issue.fields.issuetype.name |
labels | issue.fields.labels |
components | issue.fields.components[].name |
links | issue.fields.issuelinks — see link normalisation below |
priority | issue.fields.priority.name (null if unset) |
assignee | issue.fields.assignee.emailAddress (null if unassigned) |
domainSignals | Empty array — populated by label-classifier |
Jira Cloud returns description in Atlassian Document Format (ADF). Extract plain text by:
doc.content recursivelytext node valuesIf description is null or not ADF, use an empty string.
Map Jira link types to internal types:
Jira type.inward / type.outward | Internal type |
|---|---|
| "blocks" / "is blocked by" | blocks / is blocked by |
| "relates to" | relates to |
| All others | relates to |
For each link in issue.fields.issuelinks:
outwardIssue.key when the outward relationship is presentinwardIssue.key when the inward relationship is present{ type, targetId } object per linkArray of InternalTicket objects, one per raw Jira issue.
Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
npx claudepluginhub gagandeepp/software-agent-teams --plugin sprint-jira