mcpField
R
rhdh-jira-link

rhdh-jira-link

github.com/redhat-developer开发1956 次安装1 天前更新
代码仓库

关于 rhdh-jira-link

rhdh-jira-link 是用于创建 GitHub PR 或 GitLab MR 并关联 Jira 的技能。其脚本还可更新 Jira 评论,并按需填写空缺的问题字段。

主要功能

  1. 01创建 GitHub PR 和 GitLab MR
  2. 02添加 Jira 网页链接和评论
  3. 03更新已有 PR/MR 评论
  4. 04按需填写空缺的 Jira 字段
  5. 05标记关联请求已合并或关闭

适用场景

  1. 01创建 PR/MR 并关联 Jira 问题
  2. 02为已有 PR/MR 添加 Jira 链接和评论
  3. 03请求合并或关闭后更新 Jira 链接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/redhat-developer/rhdh-skills --skill rhdh-jira-link

安装后在 Claude Code 中输入/rhdh-jira-link确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

config.example.json
agents/
openai.yaml
references/
raise-pr-integration.md
scripts/
create-pr-mr.js
lib.js
link-pr-mr.js
tests/
lib.test.mjs

详细介绍

Jira PR / MR 链接

为 GitHub 和 GitLab 提供零令牌 Node 脚本:创建 PR/MR、附加 Jira 远程 Web 链接、发布或更新结构化评论,并可选择填充空的议题字段。

脚本位于此技能的 scripts/ 目录下。请从已安装的技能根目录解析该路径(Agent 读取此文件时已能获取该路径):

SKILL="$(cd "$(dirname "$0")" && pwd)"   # or the absolute path to this skill root
node "$SKILL/scripts/create-pr-mr.js" …
node "$SKILL/scripts/link-pr-mr.js" …

需要链接步骤的其他技能会按名称调用 /rhdh-jira-link,并让此技能运行自己的脚本;绝不会通过路径调用此目录。

首选:一次性创建(create-pr-mr.js)

功能分支提交后:

撰写面向审阅者的 PR 或 MR 标题和正文,然后以 flavored 语体对两者同时调用一次 /prose-editing。保留 Jira 键、关闭语法、标题、检查清单、链接以及必需的 Generated-by 行。将编辑后的字符串传给 create-pr-mr.js;它是传输层,不得编辑这些内容。稍后创建的结构化 Jira 链接评论是协议负载,不需要经过此文本润色步骤。

node "$SKILL/scripts/create-pr-mr.js" \
  --issue RHIDP-12345 \
  --title 'fix: short summary' \
  --target main \
  --body "$(cat <<'EOF'
## Summary
- …

## Test plan
- [ ] …

Generated-by: cursor
EOF
)"
  1. git push -u origin HEAD(除非使用 --no-push)
  2. 根据 origin 检测 GitHub 或 GitLab
  3. 运行 gh pr create 或 glab mr create
  4. 运行 link-pr-mr.js link(除非使用 --no-link)。缺少 Jira 身份验证信息时会报错;传入 --no-link 可跳过链接操作。
  5. 打开差异页面(除非使用 --no-open)

标志:--draft、--no-push、--no-link、--no-open、--no-defaults、--no-comment、--no-jira-ref、--host github|gitlab。

身份验证

以下任一种方式均可(两者使用相同令牌):

  1. JIRA_API_TOKEN,以及 ~/.config/.jira/.config.yml 中的 login/server;或
  2. acli 旁边的 .jira-token(email:token)——与 /rhdh-jira-api 使用的凭据相同。请按名称调用 /rhdh-jira-api,以获取权威的身份验证设置说明,而不要在此重复说明。

如果缺少以下内容,create-pr-mr.js 会将 Ref: https://redhat.atlassian.net/browse/KEY 和 Generated-by: cursor 附加到 PR/MR 正文中。对于 community-plugins 远程仓库(或设置了 --no-jira-ref 时),它会跳过 Jira Ref: 行,以避免该仓库的 git 历史记录 / PR 文本中出现 Jira 浏览 URL。

仅链接:link-pr-mr.js

PR/MR 已存在时:

node "$SKILL/scripts/link-pr-mr.js" link \
  --issue RHIDP-12345 \
  --url 'https://gitlab.cee.redhat.com/rhidp/example/-/merge_requests/817' \
  --title 'example #817: fix: short summary' \
  --host gitlab
  • --host 为可选项;省略时会根据 URL 推断。
  • --no-defaults 会跳过「进行中」状态和元数据填充(Web 链接和评论仍会执行)。
  • --no-comment 会跳过 Jira 评论。
  • 如果评论中已提及 PR/MR URL,则会在原位置更新(评论会分页处理)。
RHDHPLAN → RHIDP 自动迁移

如果关联议题是 RHDHPLAN 中的 Epic、Story 或 Task,link 会通过 Jira 批量迁移 API 将其迁移到 RHIDP(保持相同议题类型),然后继续使用新键执行 Web 链接 / 默认值 / 评论操作。Features 和其他 RHDHPLAN 类型不会迁移。

标准输出包含 move: … 和迁移后的 issue: 键。

评论格式(仅包含新设置的字段;省略 kept 值):

PR: https://github.com/org/repo/pull/123

或对于 GitLab:

MR: https://gitlab.cee.redhat.com/group/repo/-/merge_requests/817

然后,如果有任何默认值是新设置的:

Adjusted fields:
* Priority: Normal
* Status: In Progress

Web 链接标题仍为 repo #N: <title>(不变)。

标记为已合并 / 已关闭
node "$SKILL/scripts/link-pr-mr.js" mark-merged --issue RHIDP-12345

PR/MR 已合并时,会在 Web 链接标题前加上 [x] merged: ;未合并而已关闭时,则加上 [!] closed: 。不会重新应用默认值或评论。标准输出会列出每个标题及其 PR/MR URL(在标题下缩进显示)。仍处于开放状态的 PR/MR 会保留在 leftOpen 中,且不加前缀。

mark-merged 会通过 gh / glab 检查状态。检查失败时会输出一行 warn:,并将链接保留在 leftOpen 中(不要将检查失败视为已关闭)。对于 GitLab 远程链接,它会从 URL 中传入 --hostname(例如 gitlab.cee.redhat.com),以便 CEE MR 使用正确的主机解析。日常 CEE 工作建议在 ~/.config/glab-cli/config.yml 中将 glab 默认 host: gitlab.cee.redhat.com。

向用户总结时,请使用 Markdown 链接([<title>](<url>))。

link --title 的标题格式

<repo-short-name> #<id>: <full PR/MR title>

已合并:[x] merged: <repo-short-name> #<id>: <full PR/MR title> 已关闭(未合并):[!] closed: <repo-short-name> #<id>: <full PR/MR title>

link 应用的默认值(仅在为空时)

没有内置的团队或受派人值。 首次启用默认值运行时,必须提供配置文件(或环境变量/CLI)。应用默认值时,缺少键会报错;使用 --no-defaults 时,Web 链接和评论仍会成功。

mkdir -p ~/.config/rhdh-jira-link
cp "$SKILL/config.example.json" ~/.config/rhdh-jira-link/config.json
# edit assigneeEmail, teamId, teamName, boardId, …

也接受:$JIRA_PR_MR_CONFIG 或 $SKILL/config.local.json (请勿将个人邮箱放入代码库)。

优先级:CLI > 环境变量 > 配置文件 > Jira CLI 提示(~/.config/.jira/.config.yml 中的 login / board.id 只能用于补充受派人/看板)。

字段应用默认值时是否必需
assigneeEmail是(或 Jira login 邮箱)
teamId / teamName是;或者将其中任一项设为 NONE,以跳过团队和冲刺
boardId是(或 jira CLI board.id),除非通过 NONE 跳过团队/冲刺
storyPoints是
priorityName是(仅在优先级为空时填入)
storyPointsField是
teamField / sprintField是,除非通过 NONE 跳过团队/冲刺
状态→ 进行中,除非已是进行中 / 审核中 / 已关闭

跳过所有默认值:--no-defaults 或 JIRA_PR_MR_APPLY_DEFAULTS=0。

仅跳过团队和冲刺(仍设置故事点/受派人/优先级/进行中状态):

"teamName": "NONE",
"teamId": "NONE"

与 /rhdh-pr-create 的关系

/rhdh-pr-create 负责 rhdh-plugins / community-plugins 单体仓库的 PR 工作流(构建、变更集、录制)。此技能负责任何仓库的 Jira Web 链接和评论 (以及可选的默认值)。按名称调用它;不要读取或运行其文件。

/rhdh-pr-create 创建 PR 后,会将 URL 和标题交回;随后此技能使用 --no-defaults 执行链接步骤,使 /rhdh-pr-create 可以自由地将问题转换为审核中(参见 references/raise-pr-integration.md)。

Agent 检查清单

  1. 确定 Jira 键。若缺失则询问(除非用户跳过 Jira)。
  2. 在功能分支上提交。将 Jira 浏览 URL 和 Generated-by: cursor 放入 PR/MR 正文(create-pr-mr.js 会在缺失时追加;对于 community-plugins 会跳过 Ref:)。
  3. 运行一次 create-pr-mr.js。从其标准输出中报告 url: / diffs: / browserOpened: / jiraLink:(browserOpened: true 或 --no-open 表示打开步骤已完成)。
  4. 回退方案:直接创建 → 运行 link-pr-mr.js,然后自行打开差异页面一次。
  5. 对于标记为已合并:运行 link-pr-mr.js mark-merged --issue KEY。报告已合并、已关闭和仍打开的 Web 链接。
  6. 在面向用户的摘要中,将 PR/MR 链接写为 [<title>](<url>)。

此处的每次运行都会产生外部写入

创建 PR/MR、写入 Jira Web 链接、发布评论、将问题移至其他项目以及填写默认字段,都会更改会话之外的内容。请在执行第一条命令前调用 /mutation-gate 并遵循其要求: 单次脚本调用可能同时执行其中多项操作,因此请将它们作为一组说明——推送、创建、链接、评论、默认值——并获取一份涵盖所有操作的批准。

完成

完成时,答案必须列出 PR/MR URL 和差异链接、链接到的 Jira 键——如果 RHDHPLAN Epic、Story 或 Task 已移至 RHIDP,则包括移动后的键——Web 链接标题、评论是已发布还是已更新、新设置了哪些默认字段,以及脚本打印的每一行 warn:。将脚本未更改的字段报告为保留,绝不要报告为已设置。若 Web 链接成功但随后默认值更新报错,则属于部分链接;请说明哪一部分已完成。

评论

支持 Markdown