Skip to content
Development
Skill

/jira

Jira integration — view issues, generate branches, create tickets, transition status. Use when: user mentions Jira ticket key (XX-123), says /jira, wants to create branch from ticket, create a new ticket, or update Jira status. Not for: GitHub issues (use issue-analyze).

From plugin
sd0x-dev-flow
18899 skills16 agents5 hooks
Install
$ npx -y skills add sd0xdev/sd0x-dev-flow --skill jira --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/jira

Context preview

The summary Claude sees to decide when to auto-load this skill.

Jira integration — view issues, generate branches, create tickets, transition status. Use when: user mentions Jira ticket key (XX-123), says /jira, wants to create branch from ticket, create a new ticket, or update Jira status. Not for: GitHub issues (use issue-analyze).

SKILL.md

jira.SKILL.md
name: jira
description: "Jira integration — view issues, generate branches, create tickets, transition status. Use when: user mentions Jira ticket key (XX-123), says /jira, wants to create branch from ticket, create a new ticket, or update Jira status. Not for: GitHub issues (use issue-analyze)."
allowed-tools: mcp__claude_ai_Atlassian__getAccessibleAtlassianResources, mcp__claude_ai_Atlassian__getJiraIssue, mcp__claude_ai_Atlassian__getTransitionsForJiraIssue, mcp__claude_ai_Atlassian__transitionJiraIssue, mcp__claude_ai_Atlassian__addCommentToJiraIssue, mcp__claude_ai_Atlassian__searchJiraIssuesUsingJql, mcp__claude_ai_Atlassian__createJiraIssue, mcp__claude_ai_Atlassian__getJiraProjectIssueTypesMetadata, Bash(git:*), AskUserQuestion

Jira Skill

View Jira issues, generate branch names from tickets, transition issue status — all via Atlassian MCP.

Trigger

  • Keywords: jira, ticket, issue key (`[A-Z][A-Z0-9]+-\d+`), branch from ticket, transition status, start work, pr opened, pr merged
  • User says `/jira`

When NOT to Use

  • GitHub Issues → use `/issue-analyze`
  • Searching Jira issues → v1.1 (deferred)
  • Generic project management

Input Parsing

Extract `issueKey` and optional `host` from user input:

| Input Format | Example | Extraction | |-------------|---------|------------| | Bare key | `OK-51513` | key=`OK-51513` | | Full URL | `https://foo.atlassian.net/browse/OK-51513` | key=`OK-51513`, host=`foo.atlassian.net` | | Software URL | `https://foo.atlassian.net/jira/software/.../OK-51513` | key=`OK-51513`, host=`foo.atlassian.net` | | Branch context | (auto from `git branch --show-current`) | key via `{TICKET_PATTERN}` regex |

**Regex**:

  • Issue key: `([A-Z][A-Z0-9]+-\d+)`
  • Host: `https?://([^/]+\.atlassian\.net)`

CloudId Resolution

1. Call getAccessibleAtlassianResources()
2. 0 results → error: "Atlassian MCP not configured or unauthorized"
3. 1 result  → use its cloudId automatically
4. N results →
     Host provided and matches?    → use matching cloudId
     Host provided but no match?   → warn: "Host '<host>' not found. Available: ..." → AskUserQuestion to select or abort
     No host?                      → AskUserQuestion to choose instance

Do NOT persist cloudId. Resolve at runtime each time; Claude context naturally caches within a session.

Subcommand: `view`

| Step | Action | |------|--------| | 1 | Parse input → issueKey (+ host if URL) | | 2 | Resolve cloudId | | 3 | `getJiraIssue(cloudId, issueKey)` | | 4 | Format output |

**Output format**:

## KEY: Summary

| Field | Value |
|-------|-------|
| Status | ... |
| Assignee | ... |
| Priority | ... |
| Type | ... |
| Created | ... |

### Description
(first 500 chars, truncated if longer)

Subcommand: `branch`

| Step | Action | |------|--------| | 1 | Parse input → issueKey | | 2 | Resolve cloudId | | 3 | `getJiraIssue` → get summary + issuetype | | 4 | Map issue type → branch prefix (see `references/branch-policy.md`) | | 5 | Apply `--type` override if provided | | 6 | Generate slug from summary | | 7 | Assemble branch name: `${prefix}/${issueKey}-${slug}` | | 8 | Check collision (local + remote) | | 9 | Plan mode: output branch name + command. Execute mode: run `git checkout -b` |

See `references/branch-policy.md` for full mapping table, slug algorithm, and collision detection.

**Plan output** (default):

Branch: feat/OK-51513-add-user-profile-page
From: OK-51513 "Add user profile page" (Story)

To create: git checkout -b feat/OK-51513-add-user-profile-page

**Execute mode** (`--execute`): run `git checkout -b <branch>` directly.

Subcommand: `transition`

| Step | Action | |------|--------| | 1 | Parse input → issueKey + `--event` value | | 2 | Resolve cloudId | | 3 | `getJiraIssue` → current status | | 4 | `getTransitionsForJiraIssue` → available transitions | | 5 | Match event → target transition (see `references/transition-mapping.md`) | | 6 | Plan mode: show plan. Execute mode: AskUserQuestion → `transitionJiraIssue` |

See `references/transition-mapping.md` for event vocabulary, regex patterns, and resolution algorithm.

**Plan output** (default):

## Transition Plan

- Issue: OK-51513 "Add user profile page"
- Current: To Do
- Event: start_work
- Target: In Progress (transition id: 21)

Execute? /jira transition OK-51513 --event start_work --execute

Subcommand: `create`

| Step | Action | |------|--------| | 1 | Extract project key from input (bare key like `OK`, or from issue key prefix) | | 2 | Resolve cloudId | | 3 | `getJiraProjectIssueTypesMetadata(cloudId, projectKey)` → list available types | | 4 | Validate issue type against available types (case-insensitive match) | | 5 | Format description as markdown (see `references/create-policy.md`) | | 6 | Plan mode: display creation plan. Execute mode: AskUserQuestion → `createJiraIssue` |

**Input sources** (both supported):

  • `--summary` and `--description` flags: explicit values
  • Context inference: extract summary and description from user's prompt (structured content like Background, Items, etc.)

**MCP call** (`createJiraIssue`):

| Parameter | Source | |-----------|--------| | `cloudId` | Resolved via step 2 | | `projectKey` | From input | | `issueTypeName` | Validated against available types | | `summary` | From `--summary` or context | | `description` | Formatted markdown from `--description` or context | | `contentFormat` | Always `"markdown"` |

**Plan output** (default):

## Create Issue Plan

- Project: OK
- Type: Task
- Summary: P1 Hardening — Quote state machine + Recovery Worker
- Description: (preview first 200 chars...)

Execute? /jira create OK --summary "..." --type Task --execute

**Execute output**:

✅ Created: OK-51514
https://yourorg.atlassian.net/browse/OK-51514

See `references/create-policy.md` for description format guidelines, project key extraction, and issue type validation.

Graceful Degradation

| Failure | Mess

Read more
Ships withsd0x-dev-flow

Language: English | 繁體中文 | 简体中文 | 日本語 | 한국어 | Español The harness layer for Claude Code. Let the model choose the path. Keep "done" verifiable. Full control plane on Claude Code. Skills-only distribution for Codex CLI and other compatible agents.

Get the whole plugin

Other skills on sd0x-dev-flow.