jira-issues

安装量: 136
排名: #6355

安装

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

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 Summary: Keep under 80 chars, start with verb (Fix, Add, Update) Description: Include steps to reproduce for bugs Labels: Use for categorization (frontend, backend, urgent) Links: Reference related issues when relevant

返回排行榜