jira

Jira-Aufgabenworkflows für Suche, Aufgabenaktualisierungen, Übergänge, Kommentare und Felderkennung über die Jira REST API. Verwenden Sie dies, wenn Sie mit JQL suchen, inspizieren…

npx skills add https://github.com/microsoft/hve-core --skill jira

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_URLAlwaysJira base URL, for example https://company.atlassian.net
JIRA_USER_EMAILJira CloudAccount email used for basic authentication
JIRA_API_TOKENJira CloudAPI token paired with the Jira Cloud email
JIRA_PATJira 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.

Operational Variables

VariableWhen requiredPurpose
JIRA_AUDIT_LOGOptionalPath to a JSON Lines audit log. When set, every request is audited (see Audit Logging).
JIRA_AUDIT_ACTOROptionalOverrides the recorded actor identity (for example, a CI service principal).

Audit Logging

When JIRA_AUDIT_LOG is set, the script writes a structured JSON Lines audit trail for every API request. Auditing is fail-closed and write-ahead:

  • An attempt record is written before the request is sent. If the audit log cannot be written, the operation is aborted and nothing is sent to Jira.
  • An outcome record (success or error, with HTTP status on failure) is written after the request completes.

Each record includes a UTC timestamp, the actor (from JIRA_AUDIT_ACTOR, otherwise JIRA_USER_EMAIL or jira-pat), the operation, HTTP method, and the request path. Credentials, authorization headers, and query strings are never written. Audit failures after the request emit a warning without altering the result.

Credential Rotation

The script reads credentials from the environment on every invocation, so an external rotator can swap JIRA_API_TOKEN or JIRA_PAT between calls without code changes. A 401 or 403 response indicates the token may be expired or revoked; rotate the credential through your Atlassian account or instance token settings. Full OAuth-style refresh flows are out of scope for this CLI.

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
searchpython scripts/jira.py search '<jql>' [max_results]max_results = 50Search for issues with JQL
getpython scripts/jira.py get <ISSUE-KEY>NoneGet one issue
createpython scripts/jira.py create '<json>'Reads stdin if omittedCreate an issue from JSON
updatepython scripts/jira.py update <ISSUE-KEY> '<json>'Reads stdin if omittedUpdate an issue from JSON
transitionpython scripts/jira.py transition <ISSUE-KEY> '<name-or-id>'NoneMove an issue to another workflow state
commentpython scripts/jira.py comment <ISSUE-KEY> '<body>'Reads stdin if omittedAdd a comment to an issue
commentspython scripts/jira.py comments <ISSUE-KEY> [ISSUE-KEY ...]NoneList comments across one or more issues
fieldspython 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 setBase 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 keyIssue 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 updateValidate the payload and retry with well-formed JSON
Network connection errorJira instance URL is unreachableVerify the base URL and local network access