jira-issues

skillcreatorai/ai-agent-skills · updated Apr 8, 2026

$npx skills add https://github.com/skillcreatorai/ai-agent-skills --skill jira-issues
0 commentsdiscussion
summary

Create and manage Jira issues using the Jira REST API or MCP.

skill.md

Jira Issue Management

Create and manage Jira issues using the Jira REST API or MCP.

Setup

Option 1: Jira MCP Server

Install the Jira MCP server for seamless integration:

npx @anthropic/create-mcp-server jira

Option 2: Direct API

Set environment variables:

export JIRA_BASE_URL="https://yourcompany.atlassian.net"
export JIRA_EMAIL="your-email@company.com"
export JIRA_API_TOKEN="your-api-token"

Get your API token: https://id.atlassian.com/manage-profile/security/api-tokens

Creating Issues

Basic Issue

import requests
from requests.auth import HTTPBasicAuth
import os

def create_issue(project_key, summary, description, issue_type="Task"):
    url = f"{os.environ['JIRA_BASE_URL']}/rest/api/3/issue"

    auth = HTTPBasicAuth(
        os.environ['JIRA_EMAIL'],
        os.environ['JIRA_API_TOKEN']
    )

    payload = {
        "fields": {
            "project": {"key": project_key},
            "summary": summary,
            "description": {
                "type": "doc",
                "version": 1,
                "content": [{
                    "type": "paragraph",
                    "content": [{"type": "text", "text": description}]
                }]
            },
            "issuetype": {"name": issue_type}
        }
    }

    response = requests.post(url, json=payload, auth=auth)
    return response.json()

# Example
issue = create_issue("PROJ", "Fix login bug", "Users can't login with SSO", "Bug")
print(f"Created: {issue['key']}")

With Labels and Priority

def create_detailed_issue(project_key, summary, description,
                          issue_type="Task", priority="Medium",
                          labels=None, assignee=None):
    payload = {
        "fields": {
            "project": {"key": project_key},
            "summary": summary,
            "description": {
                "type": "doc",
                "version": 1,
                "content": [{
                    "type": "paragraph",
                    "content": [{"type": "text", "text": description}]
                }]
            },
            "issuetype": {"name": issue_type},
            "priority": {"name": priority},
        }
    }

    if labels:
        payload["fields"]["labels"] = labels
    if assignee:
        payload["fields"]["assignee"] = {"accountId": assignee}

    # ... make request

Common Issue Types

Type Use For
Bug Something broken
Task Work item
Story User-facing feature
Epic Large initiative
Sub-task Part of larger task

Updating Issues

Change Status

def transition_issue(issue_key, transition_name):
    # Get available transitions
    url = f"{JIRA_BASE_URL}/rest/api/3/issue/{issue_key}/transitions"
    transitions = requests.get(url, auth=auth).json()

    # Find matching transition
    transition_id = None
    for t in transitions['transitions']:
        if t['name'].lower() == transition_name.lower():
            transition_id = t['id']
            break

    # Execute transition
    requests.post(url, json={"transition": {"id": transition_id}}, auth=auth)

Add Comment

def add_comment(issue_key, comment_text):
    url = f"{JIRA_BASE_URL}/rest/api/3/issue/{issue_key}/comment"

    payload = {
        "body": {
            "type": "doc",
            "version": 1,
            "content": [{
                "type": "paragraph",
                "content": [{"type": "text", "text": comment_text}]
            }]
        }
    }

    requests.post(url, json=payload, auth=auth)

Searching Issues

JQL Queries

def search_issues(jql):
    url = f"{JIRA_BASE_URL}/rest/api/3/search"
    params = {"jql": jql, "maxResults": 50}
    response = requests.get(url, params=params, auth=auth)
    return response.json()['issues']

# Examples
my_bugs = search_issues("project = PROJ AND type = Bug AND assignee = currentUser()")
open_items = search_issues("project = PROJ AND status != Done")
recent = search_issues("project = PROJ AND created >= -7d")

Quick Commands

When user says... create this:

Command Action
"log bug about X" Bug issue with description
"create task for X" Task issue
"what's on my plate" JQL: assignee = currentUser() AND status != Done
"move X to done" Transition issue to Done
"add comment to X" Add comment to issue

Best Practices

  1. Summary: Keep under 80 chars, start with verb (Fix, Add, Update)
  2. Description: Include steps to reproduce for bugs
  3. Labels: Use for categorization (frontend, backend, urgent)
  4. Links: Reference related issues when relevant

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.668 reviews
  • Ganesh Mohane· Dec 28, 2024

    Registry listing for jira-issues matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Hana Jackson· Dec 28, 2024

    Solid pick for teams standardizing on skills: jira-issues is focused, and the summary matches what you get after install.

  • Ren Okafor· Dec 24, 2024

    jira-issues reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Chinedu Perez· Dec 24, 2024

    jira-issues is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Sakura Johnson· Dec 4, 2024

    I recommend jira-issues for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Diego Harris· Nov 23, 2024

    Useful defaults in jira-issues — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Rahul Santra· Nov 19, 2024

    Solid pick for teams standardizing on skills: jira-issues is focused, and the summary matches what you get after install.

  • Sakura Robinson· Nov 19, 2024

    Registry listing for jira-issues matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Fatima Liu· Nov 15, 2024

    We added jira-issues from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Ama Lopez· Nov 15, 2024

    Keeps context tight: jira-issues is the kind of skill you can hand to a new teammate without a long onboarding doc.

showing 1-10 of 68

1 / 7