关于 list-open-work
list-open-work 是用于当前 Git 仓库的 Agent 技能,汇总本人在该仓库远程源上的未关闭 MR 或 PR,并关联工单。它还要求核查影响后续处理的冲突、CI 和评审问题。
主要功能
- 01限定当前仓库及其 origin
- 02列出本人未关闭的 MR 或 PR
- 03从标题、分支或描述识别工单
- 04核查冲突、流水线和评审阻碍
- 05按指定 Markdown 格式输出
适用场景
- 01查看当前仓库尚未关闭的代码审查
- 02确认 MR 或 PR 对应的工单
- 03发现冲突或失败流水线以安排后续工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ outthislife/ brooklyn-skills --skill list-open-work安装后在 Claude Code 中输入/list-open-work确认已加载。
详细介绍
/list-open-work
回答一个问题:在此仓库中,我有哪些未关闭的事项,各自关联哪个工单?先列清单,其他内容放在清单之后,用散文说明。
仅限此仓库
范围是你当前所在的 git 检出(工作树或主检出)。读取其 origin。
仅列出我针对该远程仓库发起的未关闭 MR/PR。到此为止。
- 如果不是 git 仓库 → 说明这一点并停止。不要去找其他项目。
- 不要凭记忆、其他会话或其他工作树列出其他 origin、组织、代码托管平台或工单跟踪系统。
- 根据此仓库的分支名/标题推断工单键(例如
feat/PROJ-123-slug中的PROJ-123)。绝不要重用在别处看到的前缀。
git rev-parse --show-toplevel
git remote get-url origin
输出格式
直接在聊天中以普通渲染后的 Markdown 输出。绝不要用代码围栏包起来——链接必须可点击。
每项之间空一行。 Markdown 会把单个换行视为空格,因此相邻行会变成同一段。这是错误的。每个 MR 都必须单独成段:换行、空行、下一行。
严格使用以下格式。标题为 Open MRs: 或 Open PRs:。不要用项目符号或表情符号。编号和工单键都必须是链接。工单放在末尾的 [KEY] 中。
Open MRs:
!30 - 在公共 API 中公开状态历史记录
- 按编号降序排列。GitLab 使用
!N,GitHub 使用#N。“MRs”或“PRs”也要相应使用。 - 每项单独成段:
<!|#><N> - <title> [<KEY>]。不要加粗。 - 工单放在末尾的
[KEY]中。如果作者把它放在标题中间,就移到末尾:perf: PROJ-77 — cut over-fetch应改为perf: cut over-fetch [PROJ-77]。 - 没有工单 → 省略
[KEY]。不要编造,也不要写(no ticket)。 - 保持 MR/PR 标题原样(仅移除调换位置的工单键)。不要改写。
错误示例(会渲染成一行):
Open MRs:
!42 - shorten the save path [PROJ-101]
!41 - default the new flag on [PROJ-99]
粘贴到 Slack 是另一项需求。代码托管平台/工单跟踪系统的集成会自动将 !42
和 PROJ-101 转为链接,因此该版本只需去掉链接语法,行内容保持不变——仍然每项一行。
收集
“我”指作者是我。通过 API 获取我的用户名——绝不要猜测。
GitLab origin:
glab api user
glab api "projects/<url-encoded-path>/merge_requests?state=opened&scope=all&per_page=100"
按作者 = 我筛选。<url-encoded-path> 是此 origin 的路径,不是其他仓库的路径。
GitHub origin:gh pr list --author @me --state open --json number,title,headRefName,body
工单 = 标题中第一个 \b[A-Z][A-Z0-9]+-\d+\b,其次是分支名,再其次是描述。使用此仓库所用的该工单键对应的工单跟踪主机——不要猜测其他公司的站点。
Jira 账户验证
根据仓库的工单跟踪项目验证实际 Jira 结果;仅运行 acli jira auth status 可能会显示预期站点,但搜索仍可能访问其他账户。如果项目键或 API 主机与预期工作区不符,请明确使用 acli jira auth switch --site <repo-tracker-host> --email <verified-email> 选择已保存的账户,然后读取一个已知工单,再信任列表结果。不要重用错误站点的结果。
使用 acli jira workitem search --paginate,并将实际获取的不同工单数与相同 JQL 的 --count 结果进行比较。搜索可用的字段受限;请改用 workitem view --fields summary,description,status,priority,assignee,updated,comment,issuelinks --json 获取时间戳、描述和评论。在将 Testing 工单归类为新的实现工作之前,先阅读评论。
然后,用文字说明
只提会影响我下一步行动的事项:
- 与默认分支存在冲突——已阻塞,尚未进入审核。GitLab 会延迟重新计算可合并状态,因此普通的 MR GET 会直接返回过时的
has_conflicts: false。强制重新计算并读取merge_status:
glab api "projects/<path>/merge_requests/<iid>?include_diverged_commits_count=true"
# cannot_be_merged + has_conflicts → needs a rebase; diverged_commits_count = how far behind
- 流水线失败(
head_pipeline.status)。 - 工单状态与 MR 矛盾:所有讨论串都已解决且检查通过,但工单仍显示 In Progress。
- 没有关联工单且已搁置数月——说明搁置时长,并提出关闭建议。
除非有人要求,否则跳过审批信息。不要描述没有影响的字段变化。
对于 GitHub 就绪状态检查,除了分页获取的行内讨论串,还要读取已提交的审核意见正文和人工 PR 评论。即使未解决的行内讨论串数量为零且 CI 检查通过,COMMENTED 审核意见中也可能包含明确的合并阻塞项。将每条审核意见与其审核的提交版本对应起来;较早的发现需要重新核查,不能直接断言为当前缺陷。
将 CI 结论、冲突状态和实质性的审核阻塞项分开处理。针对每个当前提交版本查询 gh pr checks;合并状态为 UNKNOWN 表示尚未验证,并非没有冲突。在报告总数之前,以编程方式保存清单并汇总计数。
如果此仓库使用 GitHub issue 而不是跟踪器键,则除了检查 closingIssuesReferences,还要检查 PR 正文中明确链接的 issue。非关闭式引用也可能是实际关联的工单。更改 issue 状态前,先阅读其状态和讨论;部分修复或等待实时验证,都可能意味着应保持开启。