Hve-core jira

Jira issue workflows for search, issue updates, transitions, comments, and field discovery via the Jira REST API. Use when you need to search with JQL, inspect an issue, create or update work items, move an issue between statuses, post comments, or discover required fields for issue creation. - Brought to you by microsoft/hve-core

install
source · Clone the upstream repo
git clone https://github.com/microsoft/hve-core
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/microsoft/hve-core "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.github/skills/jira/jira" ~/.claude/skills/microsoft-hve-core-jira && rm -rf "$T"
manifest: .github/skills/jira/jira/SKILL.md
source content

Jira Skill

Overview

This skill provides a Python CLI for common Jira REST API workflows:

  • Search with JQL
  • Get issue details
  • Create and update issues with JSON payloads
  • Transition issues by name or ID
  • Add comments and list existing comments
  • Discover issue types and required fields for creation

The skill supports Jira Cloud with email plus API token authentication and Jira Server or Data Center with a personal access token.

Use

--fields
on read commands by default to keep output concise. The script supports dot-notation such as
fields.status.name
and prints tab-separated output for lists.

Prerequisites

Set the required environment variables before running the script.

PlatformRuntime
Cross-platformPython 3.11+

Authentication Variables

VariableWhen requiredPurpose
JIRA_BASE_URL
AlwaysJira base URL, for example
https://company.atlassian.net
JIRA_USER_EMAIL
Jira CloudAccount email used for basic authentication
JIRA_API_TOKEN
Jira CloudAPI token paired with the Jira Cloud email
JIRA_PAT
Jira Server or Data CenterPersonal access token used for bearer authentication

Authentication is selected automatically:

  • If
    JIRA_PAT
    is set, the script uses bearer authentication for Jira Server or Data Center.
  • Otherwise, the script expects
    JIRA_USER_EMAIL
    and
    JIRA_API_TOKEN
    for Jira Cloud.

Quick Start

Search for your current Jira issues and return a compact table:

python scripts/jira.py search 'assignee = currentUser() ORDER BY updated DESC' --fields key,fields.summary,fields.status.name

Inspect one issue with a compact field list:

python scripts/jira.py get PROJ-123 --fields key,fields.summary,fields.status.name,fields.assignee.displayName

Create an issue from JSON piped through stdin:

cat <<'EOF' | python scripts/jira.py create
{
  "fields": {
    "project": { "key": "PROJ" },
    "summary": "Fix login timeout on mobile",
    "issuetype": { "name": "Bug" }
  }
}
EOF

Parameters Reference

Command or optionSyntaxDefaultDescription
search
python scripts/jira.py search '<jql>' [max_results]
max_results = 50
Search for issues with JQL
get
python scripts/jira.py get <ISSUE-KEY>
NoneGet one issue
create
python scripts/jira.py create '<json>'
Reads stdin if omittedCreate an issue from JSON
update
python scripts/jira.py update <ISSUE-KEY> '<json>'
Reads stdin if omittedUpdate an issue from JSON
transition
python scripts/jira.py transition <ISSUE-KEY> '<name-or-id>'
NoneMove an issue to another workflow state
comment
python scripts/jira.py comment <ISSUE-KEY> '<body>'
Reads stdin if omittedAdd a comment to an issue
comments
python scripts/jira.py comments <ISSUE-KEY> [ISSUE-KEY ...]
NoneList comments across one or more issues
fields
python scripts/jira.py fields <PROJECT-KEY> [issue-type-id]
NoneDiscover issue types or required create fields
--fields
--fields key,fields.summary,...
NoneExtract selected fields from
search
,
get
, and
comments
output

Script Reference

Search for Issues

Use bounded JQL for Jira Cloud queries. Include a project, assignee, sprint, or another filter instead of a bare

ORDER BY
query. See JQL Reference for the query patterns this skill expects.

python scripts/jira.py search 'project = PROJ AND status = "In Progress"' --fields key,fields.summary,fields.status.name
python scripts/jira.py search 'assignee = currentUser() ORDER BY updated DESC' 10 --fields key,fields.summary

Get One Issue

python scripts/jira.py get PROJ-123 --fields key,fields.summary,fields.priority.name,fields.status.name

Create an Issue

Discover valid issue types first:

python scripts/jira.py fields PROJ

Inspect required fields for one issue type:

python scripts/jira.py fields PROJ 10045

Create the issue:

python scripts/jira.py create '{
  "fields": {
    "project": { "key": "PROJ" },
    "summary": "Document rollout checklist",
    "issuetype": { "name": "Task" },
    "labels": ["docs", "release"]
  }
}'

Update an Issue

python scripts/jira.py update PROJ-123 '{
  "fields": {
    "summary": "Updated summary",
    "priority": { "name": "High" },
    "labels": ["backend", "urgent"]
  }
}'

Transition an Issue

Use a transition display name or a numeric transition ID:

python scripts/jira.py transition PROJ-123 'In Progress'
python scripts/jira.py transition PROJ-123 31

If a transition name is not found, the script returns the available transition names in the error output.

Comment on an Issue

python scripts/jira.py comment PROJ-123 'PR #42 addresses this issue.'
printf 'Deployed to staging.\n' | python scripts/jira.py comment PROJ-123

List Comments

python scripts/jira.py comments PROJ-123 PROJ-456 --fields _issue,author.displayName,created,body

Troubleshooting

SymptomLikely causeResolution
JIRA_BASE_URL is not set
Base URL is missingExport
JIRA_BASE_URL
in the current shell
Authentication errorWrong token or missing auth variablesVerify
JIRA_PAT
for Jira Server or Data Center, or verify
JIRA_USER_EMAIL
and
JIRA_API_TOKEN
for Jira Cloud
Invalid issue key
Issue key format is malformedUse keys in the form
PROJ-123
Transition not foundThe requested workflow transition is unavailableRe-run the command with the transition name returned in the error output
JSON payload errorInvalid JSON was passed to
create
or
update
Validate the payload and retry with well-formed JSON
Network connection errorJira instance URL is unreachableVerify the base URL and local network access

🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.