如何编写一个自动修复 jira issue 的 skill

如何编写一个自动修复 jira issue 的 skill

更新时间
Last updated March 16, 2026
AI 占比
Tags
AI
效率
description
在日常开发流程中,一个典型的 Bug 修复通常是这样的:
  1. 产品或测试提交 Issue
  1. 开发阅读 Issue 描述
  1. 定位代码
  1. 实施修复
  1. 提交代码并创建 PR
  1. 更新 Issue 状态
如果观察这个流程,会发现其中大量步骤是重复性操作。因此一个很自然的想法是:
是否可以让 AI 自动完成整个 Issue 修复流程?
随着 AI Agent 工具的发展,例如
Claude Code
Cursor
这个想法变得越来越可行。
本文介绍一种实践方式:通过 Agent Skill 自动化 Jira Issue 修复流程

一、最初的想法:完全自动修复 Issue

最初的设想是构建一个完整的自动修复流程:
Jira Issue ↓ AI 分析问题 ↓ 搜索代码 ↓ 生成修复 ↓ 提交 PR ↓ 更新 Issue 状态
理论上整个流程可以完全自动完成。
但在实际尝试后,很快遇到几个问题:
1 Issue 描述质量不稳定
很多 Issue 信息不完整,需要人工补充。
2 AI 修改代码风险较高
如果完全自动提交 PR,很容易引入新的问题。
3 自动化流程不可控
一旦系统错误执行,可能影响开发流程。
因此,一步到位的自动化风险过大。

二、调整思路:先实现一个 Agent Skill

为了降低风险,我将方案调整为:
先实现一个
Jira 修复 Skill
整体架构如下:
Agent (Claude Code / Cursor) ↓ Jira Skill ↓ Jira CLI ↓ Jira
职责划分非常清晰:
Agent 负责
  • 理解 Issue
  • 搜索代码
  • 制定修复方案
  • 修改代码
Skill 负责
  • 提供 Jira 操作能力
这种设计遵循
AgentSkills
规范。
开发者可以通过命令调用 Skill:
/fix-jira-issue ISSUE_URL
例如:
/fix-jira-issue https://issue.xsky.com/browse/SPRING-9415

三、Skill 的完整工作流程

当 Agent 调用 Skill 时,整体修复流程如下:
  1. 读取 Jira Issue
  1. 分析 Issue 内容
  1. 在仓库中搜索相关代码
  1. 生成修复方案
  1. 修改代码
  1. 生成 commit message
  1. 生成 PR 描述
  1. 根据需要更新 Issue 状态
需要注意的是:
代码搜索由 Agent 完成,而不是 Skill。
Skill 只负责与外部系统交互。
这种设计可以保持 Skill 简单、稳定且易复用。

四、第一个坑:直接调用 Jira API

一开始,我尝试直接使用 curl 调用 Jira REST API:
curl https://jira/api/issue/xxx
但这种方式很快暴露出几个问题:
1 Agent 很容易写错 API
API 参数较多,AI 经常生成错误请求。
2 新 API 学习成本高
不同 Jira 实例 API 版本不同。
3 Prompt 难以维护
如果把 API 文档全部写进 Prompt,会非常冗长。
最终发现这种方式稳定性不足

五、解决方案:使用 Jira CLI

后来我改用一个开源工具:
jira-cli
CLI 的优势非常明显:
1 API 复杂性被封装
Agent 不需要理解 REST API。
2 命令结构简单
例如:
jira issue view PROJ-123
3 输出结构稳定
更适合 Agent 解析。
但原始 jira-cli 的能力不够,因此我对它做了一些增强。

六、增强 jira-cli 能力

为了让 Agent 能获取足够信息,我增加了三类能力。

1 字段查看

Agent 可以读取 Issue 的任意字段:
jira issue field PROJ-123 description
读取自定义字段:
jira issue field PROJ-123 customfield_11103
这样 Agent 就可以读取:
  • description
  • 自定义业务字段
  • 其他上下文信息

2 Issue 状态流转

查看可用状态流转:
jira issue transitions PROJ-123
执行流转:
jira issue transition PROJ-123 31
支持附加字段:
jira issue transition PROJ-123 31 --field resolution=Done
甚至支持 JSON 参数:
jira issue transition PROJ-123 31 --field-json '{"resolution":{"name":"Done"}}'
这使得 Agent 可以在修复完成后自动推进 Issue 状态

3 附件管理

很多 Issue 会包含截图或日志文件,因此附件能力非常重要。
列出附件:
jira issue attachment list PROJ-123
下载附件:
jira issue attachment download PROJ-123
Agent 可以读取截图、日志等信息,从而提高修复准确性

七、Skill 的实现结构

Skill 目录结构如下:
fix-jira-issue ├── references │ ├── help.md │ └── transitions.md └── SKILL.md
核心逻辑在 SKILL.md 中。
Skill 定义:
name: fix-jira-issue description: when user want to fix jira issue, you can use this skill
Skill 会首先检查环境:
jira --version echo $JIRA_HOST echo $JIRA_API_VERSION
如果缺失依赖,会提示用户安装:
npm install -g @acring/jira-cli
并配置环境变量。

八、自动修复流程

Skill 执行的主要步骤如下。

1 获取 Issue 信息

jira issue view <issue-key>
并下载附件:
jira issue attachment download <issue-key> --output ./tmp/

2 分析上下文

Agent 会:
  • 读取附件
  • 结合 Issue 描述
  • 判断是否具备修复条件
如果上下文不足,会提示用户补充信息。

3 创建修复分支

根据 Issue 类型创建分支:
git checkout -b fix/<issue-key>
例如:
fix/NTOS-3705

4 实施修复

Agent:
  • 搜索相关代码
  • 修改最小范围代码
  • 保持代码风格一致

5 创建 MR / PR

提交代码后生成 MR:
fix(SPRING-9257): 修复共享路径校验失败的问题
MR 描述模板:
## Summary 变更说明 ## Issue 链接到 Issue ## Changes 具体修改 ## Test plan 测试计划

6 更新 Issue 状态

在 MR 创建后,可以自动执行状态流转:
jira issue transition PROJ-123 31
例如将 Issue 推进到:
  • 提交审核
  • QA 测试
  • 已完成

九、实践效果

通过这种方式,开发者只需要执行:
/fix-jira-issue ISSUE_URL
Agent 就可以自动完成:
  • 读取 Issue
  • 下载附件
  • 分析问题
  • 修改代码
  • 生成 PR
  • 更新 Issue 状态
整个 Bug 修复流程被大幅自动化。

十、总结

这次实践有两个重要结论。
1 CLI 比直接调用 API 更适合 Agent
相比 curl:
  • CLI 更稳定
  • 命令更简单
  • Agent 更容易理解
2 Agent Skill 是企业落地 AI 自动化的有效方式
相比完全自动系统:
  • Skill 风险更低
  • 可以逐步验证
  • 更容易融入现有开发流程
随着 Agent 工具的发展,通过 Skill 自动化开发流程将变得越来越普遍。
自动修复 Issue,只是其中一个非常有潜力的应用场景。