mcpField
P
pr-link-issue

pr-link-issue

github.com/getsentry开发1.1k1.3k 次安装5 天前更新
代码仓库

关于 pr-link-issue

将 GitHub 问题和 Linear 工单引用添加到拉取请求描述中的工作流技能。它保留现有内容,并替换已有的 `#### Issues` 区块以避免重复。

主要功能

  1. 01查找当前分支的开放 PR
  2. 02读取 Linear 回链评论
  3. 03追加或替换 Issues 区块
  4. 04保留 PR 描述的其他内容
  5. 05提示缺少 Linear 工单键

适用场景

  1. 01为 PR 添加问题引用
  2. 02将 PR 关联到 Linear 工单
  3. 03更新已有的 Issues 区块

安装

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

$npx skills add https://github.com/getsentry/skills --skill pr-link-issue

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

详细介绍

在 PR 上关联 GitHub Issue 和 Linear Ticket

在 PR 描述中追加 Sentry 风格的 #### Issues 区块,同时引用 GitHub issue 和从该 issue 的 linear-linkback 评论中获取的 Linear ticket。

输入

  • <issue-url> — GitHub issue URL,例如 https://github.com/<owner>/<repo>/issues/<n>。如果 PR 位于同一仓库,也可以只提供 issue 编号。
  • (可选)<pr-number> — 默认使用当前分支对应的开放 PR。

步骤

  1. 解析 PR 编号 — 如果用户已提供,则跳过:

    gh pr view --json number,body -q '.number'
    

    如果该分支不存在 PR,则停止并告知用户。

  2. 从输入 URL 中提取 issue 编号和仓库,或者接受当前仓库中的纯 #1234。

  3. 从 issue 的 linear-linkback 评论中获取 Linear ticket:

    gh issue view <n> --repo <owner>/<repo> --json comments \
      -q '.comments[] | select(.author.login=="linear-code") | .body' \
      | grep -Eioe '[a-z]+-[0-9]+' | head -1
    

    如果没有匹配项,则改为询问用户 Linear key,或者省略它。

  4. 读取现有 PR 正文,以便追加内容而不是覆盖:

    gh pr view <pr-number> --json body -q '.body'
    
  5. 构建新的正文。如果正文为空,则只使用 #### Issues 区块。否则,在空行后追加。不要重复添加——如果已经存在 #### Issues,则替换该区块,而不是再添加一个。

    格式:

    #### Issues
    
    * Resolves: #<n>
    * Resolves: <linear-key>
    
  6. 使用 heredoc 更新 PR,以保留换行:

    gh pr edit <pr-number> --body "$(cat <<'EOF'
    <new body>
    EOF
    )"
    
  7. 通过输出最终 PR URL 确认:

    gh pr view <pr-number> --json url -q '.url'
    

备注

  • Linear linkback 评论由 GitHub 用户 linear-code 发布。正文包含一个 Markdown 链接,其文本是 Linear key,例如 PY-2357。
  • 不同仓库的项目 key 各不相同(sentry-python 使用 PY-…,sentry-javascript 使用 JS-… 等)——正则表达式 [a-z]+-[0-9]+ 可以匹配它们。
  • 不要删除现有 PR 内容。始终先读取,再追加或替换。
  • 如果 issue 尚无 Linear linkback(例如刚创建的 issue),则只添加 GitHub issue 引用,并告知用户缺少 Linear key。

评论

支持 Markdown