关于 jira-assistant
面向 Cursor 的技能,通过 Atlassian MCP 工具搜索和管理 Jira 问题。它会读取工作区规则中的项目配置,或通过 MCP 查找项目,再执行问题操作。
主要功能
- 01自然语言和 JQL 搜索问题
- 02创建任务、史诗和子任务
- 03编辑问题并变更状态
- 04添加评论和管理经办人
- 05从工作区规则检测项目设置
适用场景
- 01查找分配给自己的进行中工作
- 02按统一模板创建 Jira 问题
- 03更新字段或转换问题状态
- 04为现有问题添加评论
MCP 相关
通过 Atlassian MCP 工具发现 Jira 项目,以及搜索、获取、创建和更新问题。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tech-leads-club/ agent-skills --skill jira-assistant安装后在 Claude Code 中输入/jira-assistant确认已加载。
附带文件README.md
详细介绍
Jira 助手
你精通使用 Atlassian MCP 工具与 Jira 交互。
适用场景
当用户要求执行以下操作时,请使用此技能:
- 搜索 Jira 问题或任务
- 创建新的 Jira 问题(任务、史诗、子任务)
- 更新现有问题
- 转换问题状态(待办 → 进行中 → 已完成等)
- 为问题添加评论
- 管理经办人
- 按特定条件查询问题
配置
项目检测策略(自动):
- 先检查工作区规则:在
.cursor/rules/jira-config.mdc中查找 Jira 配置 - 如果未找到:使用 MCP 搜索工具发现可用项目
- 如果仍不明确:询问用户指定项目键
- 对本次对话中的所有 Jira 操作使用检测到的值
配置检测工作流
激活此技能时:
- 检查工作区是否存在包含 Jira 配置的
.cursor/rules/jira-config.mdc - 如果找到,则提取并使用:项目键、Cloud ID、URL、看板 URL
- 如果未找到:
- 通过 MCP 使用
search("jira projects I have access to") - 向用户展示发现的项目
- 询问:“应使用哪个 Jira 项目?(例如:KAN、PROJ、DEV)”
- 通过 MCP 使用
- 保存此对话的配置,然后继续执行操作
**技能用户请注意:**若要为工作区配置此技能,请创建 .cursor/rules/jira-config.mdc 并填入项目详情。
工作流
1. 查找问题(始终从这里开始)
对于一般查询,首先使用 search(Rovo Search):
search("issues in {PROJECT_KEY} project")
search("tasks assigned to me")
search("bugs in progress")
- 对于一般搜索,自然语言比 JQL 更好用
- 速度更快,也更直观
- 能快速返回相关结果
- 将
{PROJECT_KEY}替换为配置中检测到的项目键
2. 按特定条件搜索
需要精确筛选时,使用 searchJiraIssuesUsingJql:
⚠️ JQL 查询中必须始终包含 project = {PROJECT_KEY}
示例(将 {PROJECT_KEY} 替换为检测到的项目键):
project = {PROJECT_KEY} AND status = "In Progress"
project = {PROJECT_KEY} AND assignee = currentUser() AND created >= -7d
project = {PROJECT_KEY} AND type = "Epic" AND status != "Done"
project = {PROJECT_KEY} AND priority = "High"
3. 获取问题详情
根据你掌握的信息选择:
- 如果有 ARI:
fetch(ari) - 如果有问题键/ID:
getJiraIssue(cloudId, issueKey)
4. 创建问题
必须始终使用配置中检测到的 projectKey 和 cloudId
分步流程:
a. View issue types:
getJiraProjectIssueTypesMetadata(
cloudId="{CLOUD_ID}",
projectKey="{PROJECT_KEY}"
)
b. View required fields:
getJiraIssueTypeMetaWithFields(
cloudId="{CLOUD_ID}",
projectKey="{PROJECT_KEY}",
issueTypeId="from-step-a"
)
c. Create the issue:
createJiraIssue(
cloudId="{CLOUD_ID}",
projectKey="{PROJECT_KEY}",
issueTypeName="Task",
summary="Brief task description",
description="## Context\n..."
)
**注意:**将 {PROJECT_KEY} 和 {CLOUD_ID} 替换为检测到的配置值。
可用的问题类型:
- 任务(默认)
- 史诗
- 子任务(需要使用父问题键填写
parent字段)
5. 更新和转换问题
编辑字段:
editJiraIssue(cloudId, issueKey, fields)
更改状态:
1. Get available transitions:
getTransitionsForJiraIssue(cloudId, issueKey)
2. Apply transition:
transitionJiraIssue(cloudId, issueKey, transitionId)
添加评论:
addCommentToJiraIssue(cloudId, issueKey, comment)
默认任务模板
创建问题时,description 字段中必须始终使用此模板:
## Context
[Brief explanation of the problem or need]
## Objective
[What needs to be accomplished]
## Technical Requirements
[This is high level, it doesn't mention which class or file, but the technical high level objective]
- [ ] Requirement 1
- [ ] Requirement 2
- [ ] Requirement 3
## Acceptance Criteria
- [ ] Criteria 1
- [ ] Criteria 2
- [ ] Criteria 3
## Technical Notes
[Don't include file paths as they can change overtime]
[Technical considerations, dependencies, relevant links]
## Estimate
[Time estimate or story points, if applicable]
最佳实践
✅ 应做事项
- 所有操作始终使用检测到的项目键
description字段始终使用 Markdown- 自然语言查询先使用
search - 精确筛选使用 JQL(但必须始终包含
project = {PROJECT_KEY}) - 遵循任务模板以保持一致性
- 避免在描述中使用文件路径(这些路径会随时间变化)
- 摘要尽量简短,描述则应详细
⚠️ 重要事项
- 问题 ID 是数字(内部使用)
- 问题键采用 "{PROJECT_KEY}-123" 格式(面向用户)
- 创建子任务:使用父问题键填写
parent字段 - CloudId 可以是 URL 或 UUID,两者均可
- 使用从工作区规则或用户输入中检测到的配置值
示例
示例 1:创建任务
User: "Create a task to implement user authentication"
createJiraIssue(
cloudId="{CLOUD_ID}",
projectKey="{PROJECT_KEY}",
issueTypeName="Task",
summary="Implement user authentication endpoint",
description="## Context
We need to secure our API endpoints with user authentication.
## Objective
Implement JWT-based authentication for API access.
## Technical Requirements
- [ ] Create authentication middleware
- [ ] Implement JWT token generation
- [ ] Add token validation
- [ ] Secure existing endpoints
## Acceptance Criteria
- [ ] Users can login with credentials
- [ ] JWT tokens are generated on successful login
- [ ] Protected endpoints validate tokens
- [ ] Invalid tokens return 401
## Technical Notes
Use bcrypt for password hashing, JWT for tokens, and implement refresh token logic.
## Estimate
5 story points"
)
**注意:**将占位符替换为从检测到的配置中获取的实际值。
示例 2:搜索并更新问题
User: "Find my in-progress tasks and update the first one"
1. searchJiraIssuesUsingJql(
cloudId="{CLOUD_ID}",
jql="project = {PROJECT_KEY} AND assignee = currentUser() AND status = 'In Progress'"
)
2. editJiraIssue(
cloudId="{CLOUD_ID}",
issueKey="{PROJECT_KEY}-123",
fields={ "description": "## Context\nUpdated context..." }
)
**注意:**将占位符替换为检测到的配置值。
示例 3:转换问题状态
User: "Move task {PROJECT_KEY}-456 to Done"
1. getTransitionsForJiraIssue(cloudId="{CLOUD_ID}", issueKey="{PROJECT_KEY}-456")
2. transitionJiraIssue(
cloudId="{CLOUD_ID}",
issueKey="{PROJECT_KEY}-456",
transitionId="transition-id-for-done"
)
**注意:**将占位符替换为检测到的配置值。
示例 4:创建子任务
User: "Create a subtask for {PROJECT_KEY}-789"
createJiraIssue(
cloudId="{CLOUD_ID}",
projectKey="{PROJECT_KEY}",
issueTypeName="Subtask",
parent="{PROJECT_KEY}-789",
summary="Implement validation logic",
description="## Context\nSubtask for implementing input validation..."
)
**注意:**将占位符替换为检测到的配置值。
常用 JQL 模式
所有查询必须包含 project = {PROJECT_KEY}(使用检测到的项目键):
# My current work
project = {PROJECT_KEY} AND assignee = currentUser() AND status = "In Progress"
# Recent issues
project = {PROJECT_KEY} AND created >= -7d
# High priority bugs
project = {PROJECT_KEY} AND type = Bug AND priority = High
# Epics without completion
project = {PROJECT_KEY} AND type = Epic AND status != Done
# Unassigned tasks
project = {PROJECT_KEY} AND assignee is EMPTY AND status = "To Do"
# Issues updated this week
project = {PROJECT_KEY} AND updated >= startOfWeek()
**注意:**将 {PROJECT_KEY} 替换为从检测到的配置中获取的实际项目键。
重要说明
- 项目键是必填项——始终在 JQL 查询中包含
project = {PROJECT_KEY} - 使用检测到的配置——从
.cursor/rules/jira-config.mdc中读取,或询问用户 - 描述中使用 Markdown——不要使用 HTML 或纯文本
- 遵循模板——确保各问题保持一致
- 优先使用自然语言搜索——仅在需要时使用 JQL
- 避免使用文件路径——路径会变化并过时
- 技术说明保持高层次——关注方法,而非实现细节
- 故事点为可选项——在相关时添加估算