Jira问题管理技能 jira-issues

此技能使用自然语言处理技术,允许用户通过语音或文本创建、更新和管理Jira问题,适用于软件开发团队的bug跟踪、任务管理和项目监控。关键词:Jira问题管理、自然语言处理、软件项目管理、DevOps、bug跟踪、Jira集成、任务自动化、团队协作。

DevOps 0 次安装 0 次浏览 更新于 3/8/2026

名称:jira-问题 描述:通过自然语言创建、更新和管理Jira问题。当用户想要记录bug、创建工单、更新问题状态或管理Jira积压时使用。 许可证:MIT

Jira问题管理

使用Jira REST API或MCP创建和管理Jira问题。

设置

选项1:Jira MCP服务器

安装Jira MCP服务器以实现无缝集成:

npx @anthropic/create-mcp-server jira

选项2:直接API

设置环境变量:

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

获取您的API令牌:https://id.atlassian.com/manage-profile/security/api-tokens

创建问题

基本问题

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()

# 示例
issue = create_issue("PROJ", "修复登录bug", "用户无法通过SSO登录", "Bug")
print(f"已创建:{issue['key']}")

带有标签和优先级

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}

    # ... 发起请求

常见问题类型

类型 用途
Bug 某些东西损坏了
Task 工作项目
Story 面向用户的功能
Epic 大型倡议
Sub-task 大型任务的一部分

更新问题

更改状态

def transition_issue(issue_key, transition_name):
    # 获取可用转换
    url = f"{JIRA_BASE_URL}/rest/api/3/issue/{issue_key}/transitions"
    transitions = requests.get(url, auth=auth).json()

    # 查找匹配的转换
    transition_id = None
    for t in transitions['transitions']:
        if t['name'].lower() == transition_name.lower():
            transition_id = t['id']
            break

    # 执行转换
    requests.post(url, json={"transition": {"id": transition_id}}, auth=auth)

添加评论

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)

搜索问题

JQL查询

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']

# 示例
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")

快速命令

当用户说… 时创建:

命令 动作
“记录关于X的bug” 带有描述的Bug问题
“为X创建任务” 任务问题
“我的待办事项有哪些” JQL: assignee = currentUser() AND status != Done
“将X移动到完成” 将问题转移到完成状态
“为X添加评论” 为问题添加评论

最佳实践

  1. 摘要:保持在80个字符以下,以动词开头(修复、添加、更新)
  2. 描述:对于bug,包括重现步骤
  3. 标签:用于分类(前端、后端、紧急)
  4. 链接:当相关时参考相关问题