跳到正文
claudemods

cc-pr-tracker:在输入框上方查看 Claude Code PR 状态

在 Claude Code 输入框上方为每个 GitHub PR 显示一行:合并状态、审查、必需检查,状态变化时发出提醒。

权限

  • 读取文件可以读取你电脑上的文件并列出目录($.fs.read / list / stat / exists)。
  • 执行命令可以在你的电脑上运行 shell 程序($.process.run / spawn)。具体运行哪些程序请查看源码。
  • 拦截工具调用能看到 Claude 发起的每一次工具调用(tool.call / tool.check),并可以阻止或修改它。
  • 读取你的提示词可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
  • 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
  • 添加命令/工具注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
  • 存储数据在插件的私有存储中跨会话保存数据($.store.*)。
实测版本
v2.1.296
最近实测
需要
Claude Code ≥ 2.1.287
显示位置
输入框上方、弹出通知

在 Claude Code 中安装:

/plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker
全部安装方式 ↓

这个插件能做什么?

cc-pr-tracker 是一款社区插件,作者是 Seza Akgün(sezaakgun),它让你在工作时始终能看到 Claude Code PR 状态。粘贴一个 GitHub 拉取请求(PR)的链接,或者让 Claude 自己创建一个 PR,这个 PR 就会在输入框上方占据一行:显示它的合并状态、审查结论、必需检查中通过、失败和等待中的数量,以及标题。默认每分钟刷新一次。

当某个必需检查发生变化或合并状态改变时,你会收到一条弹出提示,输入框上方会出现一条持续一秒的闪烁条,在 macOS 上还会播放系统提示音。Claude 也会在下一轮收到一条简短的自动说明,附带失败检查的日志链接。把鼠标悬停在某一行上会显示按钮,可以打开 PR、复制链接、静音、显示详情面板或停止关注。Claude 可以通过 pr_status 工具自己查询状态,而 /prs 可以在任何地方以文本形式列出所关注的 PR。

它和 提示框上方的 Git 分支 很接近,后者显示的是本地分支,而 cc-pr-tracker 关注的是 GitHub 而非你的工作区。如果你只想在一轮结束时收到一条简单的提示,请看 完成提示。作者的 README 要求 Claude Code 2.1.289 或更高版本才能使用全部功能;更早的版本只会把关注列表保存在内存中。

演示

录屏使用的是作者自己提供的替身 gh 脚本(仓库中的 docs/record/gh),它用预先准备的 JSON 回应插件的 GraphQL 调用,因此不会查询任何真实的 GitHub 仓库。我们在小型演示项目里启动加载了该插件的 Claude Code,然后把两个 PR 链接作为一条提示词粘贴进去:acme/api#87 和 acme/storefront#418。这里没有运行任何模型轮次。Claude Code 显示 "Prompt dropped by a hook: watching acme/api#87, watching acme/storefront#418",输入框上方随即出现两行,每行包含仓库和编号、红色的 blocked、绿色的 approved、绿色的通过检查数、黄色的等待检查数,以及 PR 标题。

安装

使用安装区块中的任意一种方式;它们都直接从作者自己的插件市场安装。你还需要安装并登录 gh(gh auth status)。如果想从克隆的仓库只试用一个会话,可以在仓库中运行 claude --plugin-dir .。运行 /plugin 确认插件已启用。

$ install cc-pr-tracker

需要 Claude Code ≥ 2.1.287

从作者自己的 marketplace 安装: sezaakgun/cc-pr-tracker

  1. 1.在 Claude Code 中一行安装

    /plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker

    粘贴到正在运行的会话中(v2.1.275+)。Claude Code 会先询问是否添加该插件市场。

  2. 2.从终端安装

    claude plugin marketplace add sezaakgun/cc-pr-tracker
    claude plugin install cc-pr-tracker@cc-pr-tracker

    然后在所有已打开的会话中运行 /reload-plugins。

  3. 3.免安装试用

    git clone https://github.com/sezaakgun/cc-pr-tracker
    claude --plugin-dir ./cc-pr-tracker

    仅在当前会话中加载该插件,不会写入你的设置。

工作原理

这个插件只有一个 hooks 模块。prompt.submit 从你的提示词中读取 PR 链接,turn.complete 和针对 Bash 的 tool.call hook 会捕获 Claude 回答中以及 gh pr create 输出中的链接,AbovePrompt 上的 ui.render 负责绘制这些行。在 session.start 中启动的计时器会通过 gh 轮询每个关注的 PR。以下是这个调用,来自 hooks/register.tsx:

const gh = async (args: string[]) => {
  const { stdout, stderr, exitCode } = await $.process.run(['gh', ...args], { timeoutMs: 30_000 })
  if (exitCode) throw new Error(stderr.trim() || `gh exited ${exitCode}`)
  return JSON.parse(stdout)
}

每次轮询都是一次只读的 gh api graphql 查询,获取 PR 的标题、状态、合并状态、审查结论以及其最新提交上的检查,并带上 GitHub 自己的 isRequired 标记。每个检查只保留最近一次运行,分组方式与 gh pr checks 相同。如果 GitHub 拒绝 GraphQL 请求(例如在 claude.ai/code 中),插件会改为每次轮询发起四到六次 REST 调用。轮询失败时会保留旧值,并把该行标记为 refresh failed,这样网络的短暂波动不会被当作状态变化报告出来。PR 的首次加载,以及进入或离开临时的 unknown 合并状态,都不会触发提醒。

自定义

打开 /config,找到 cc-pr-tracker 的各行;每一项也可以用 /config cc-pr-tracker.<field>=<value> 设置,并立即生效。十二个选项分别是:Mute all PR alerts(静音所有 PR 提醒)、Alert on(提醒范围:每次变化、失败与可合并,或仅失败)、Tell Claude about changes(把变化告诉 Claude)、Alert sound(提醒声音)、Poll every(轮询间隔,单位为秒)、Auto-watch PRs(自动关注 PR)、Remember watched PRs(记住关注的 PR:仅本会话或本项目)、Stop watching merged or closed PRs(停止关注已合并或已关闭的 PR)、Count all checks(统计所有检查)、Alert on review changes(审查变化时提醒)、Flash strip(闪烁条)和 Show PRs in the transcript(在对话记录中显示 PR)。每行的悬停按钮可以静音或停止关注单个 PR。

权限与安全

我们读过了插件会加载的每一个文件:.claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx(约 740 行可读的 TypeScript)、类型声明、两个测试文件,以及仓库中的辅助脚本和工作流。没有 package.json、安装脚本、打包或压缩后的代码、远程代码,也没有动态 import()。docs/record/ 下的脚本只用于生成 README 中的图片,插件不会加载它们。

检查结果如下,均与 README 的描述一致:

  • 网络: 插件自身不发出任何请求。它会针对你关注的 PR 运行 gh api graphql(或通过 REST 运行 gh api repos/...),因此所有者、仓库和 PR 编号会以你的 gh 登录身份发送到 github.com。
  • 进程: 轮询时运行 gh;打开按钮使用 open 或 xdg-open;提醒时用 afplay 播放 macOS 系统提示音;此外,仅在 cmux 终端中,会运行 CMUX_BUNDLED_CLI_PATH 指向的 cmux 自带 CLI,用来让窗格闪烁并发送通知。参数以数组形式传递,而不是 shell 字符串。
  • 环境变量: 只读取 CMUX_BUNDLED_CLI_PATH 和 CMUX_SURFACE_ID,从不写入环境变量。
  • 文件: 不写入任何文件。关注列表保存在插件自己的 $.store 和 $.state 中,按会话或项目区分;30 天内没有被轮询的列表会被清理。
  • 对提示词的影响: 提醒触发后,插件会向对话追加一条用户角色的说明。这条说明会注明它是自动通知、并非由你撰写,并把来自 GitHub 的检查名称作为数据引用,长度上限为 100 个字符。GitHub 文本中的控制字符在显示前会被去除。你可以通过 "Tell Claude about changes" 关闭这条说明。插件还为 Claude 注册了一个 pr_status 工具。
  • 拦截型 hook: 只包含 PR 链接的提示词会被丢弃(不触发模型轮次),这是文档中说明的行为。更长的提示词会原样通过。Bash hook 只读取 gh pr create 的输出。
  • 守护进程与遥测: 没有。轮询计时器运行在 Claude Code 内部,随它一起停止。没有任何统计分析。
  • 依赖: 已登录的 gh。声音需要 macOS;cmux 为可选。
  • 许可证: MIT,附带 LICENSE 文件。

claude plugin validate 没有报告任何错误或警告;它的提示信息列出了四个没有 .catch 的 hook(config.set、prompt.submit 以及两个 tool.call hook),这只是提示性信息。作者的 70 个测试在 Claude Code 2.1.296 上全部通过。

读取文件
可以读取你电脑上的文件并列出目录($.fs.read / list / stat / exists)。
执行命令
可以在你的电脑上运行 shell 程序($.process.run / spawn)。具体运行哪些程序请查看源码。
拦截工具调用
能看到 Claude 发起的每一次工具调用(tool.call / tool.check),并可以阻止或修改它。
读取你的提示词
可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
修改界面
在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
添加命令/工具
注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
存储数据
在插件的私有存储中跨会话保存数据($.store.*)。

兼容性与故障排除

已在 macOS 上使用 Claude Code 2.1.296 检查(validate、测试和录屏)。如果有功能无法正常工作:

  • 链接被发送给了模型。 说明插件没有加载。检查 claude --version 是否为 2.1.287 或更高版本,以及 /plugin 是否在已启用的插件中列出了 cc-pr-tracker。
  • 某行显示 gh failed: …。 在终端中运行 gh pr view <url>;通常是 gh 没有登录,或者无权访问该仓库。
  • 没有悬停按钮。 你的终端不上报鼠标事件;再次粘贴该链接即可停止关注,或者使用 /prs。
  • 没有声音。 只有带 /System/Library/Sounds 的 macOS 才会播放声音。
  • 只识别 github.com 链接,不支持 GitHub Enterprise 主机。

常见问题

cc-pr-tracker 需要 GitHub token 或 API 密钥吗?
它需要已登录的 GitHub CLI(gh),并且能访问你关注的仓库。插件自身不保存任何 token;每次轮询都会运行 gh,所以它能看到什么,由 gh 自己的登录状态决定。
它多久轮询一次?会消耗模型 token 吗?
默认每 60 秒一次,每个 PR 通过 gh 发起一次 GraphQL 调用;间隔可在 /config 中设为 30 到 3600 秒。轮询不会调用模型。只有提醒触发时,才会添加一条简短说明,由 Claude 在下一轮读取。
为什么我粘贴 PR 链接后,提示词消失了?
只包含 PR 链接的提示词会被插件丢弃,并开始(或停止)关注这些 PR,不会触发模型轮次。Claude Code 会显示 "Prompt dropped by a hook: watching owner/repo#N"。如果链接位于一段更长的提示词中,它会被关注,提示词也照常执行。
Claude 能看到 PR 状态吗?
能。插件注册了一个 pr_status 工具,Claude 可以通过它查询所关注 PR 的状态、合并状态、审查和检查,而不必调用 gh。提醒触发后,插件还会添加一条自动说明,标明并非由你撰写,并附上失败检查的日志链接。
怎样关闭提醒?
把鼠标悬停在某一行上并点击静音按钮可以静音单个 PR,或在 /config 中开启 "Mute all PR alerts"。各行仍会继续更新,但不会弹出提示、闪烁、播放声音或通知 Claude。"Alert sound"、"Flash strip" 和 "Tell Claude about changes" 可以分别关闭其中某一部分。
提示框上方的 Git 分支 在 Claude Code 中运行精选

提示框上方的 Git 分支

在 Claude Code 输入框上方用一行横条显示当前 git 分支、已修改文件数和领先/落后状态。

  • 输入框上方
  • 执行命令
  • 拦截工具调用
  • 修改界面

已在 v2.1.310 实测

完成提示 在 Claude Code 中运行精选

完成提示

Claude 较长的一轮结束时弹出「Done in 2m 14s」提示并播放短促提示音,还可选发送桌面通知。

  • 弹出通知
  • 执行命令
  • 修改界面
  • 播放声音

已在 v2.1.310 实测

更多 Git 与 GitHub、提示与通知。