mcpField
M
manage-pr

manage-pr

github.com/klausborges开发1110 次安装2 周前更新
代码仓库

关于 manage-pr

用于通过 `gh` 创建、更新和协调 GitHub PR 的技能,也涵盖堆叠 PR 工作流。它遵循仓库约定、记录实际验证结果,并将合并留给用户。

主要功能

  1. 01检查提交、差异和 PR 状态
  2. 02拟定标题及模板化正文
  3. 03将分支推送到主远程端
  4. 04协调堆叠 PR 的变基
  5. 05由用户执行合并

适用场景

  1. 01完成分支后创建 PR
  2. 02按仓库约定更新现有 PR
  3. 03PR 合并后推进堆叠流程

安装

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

$npx skills add https://github.com/klausborges/workflow-skills --skill manage-pr

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

附带文件agents/openai.yamlskill.toml

详细介绍

管理 PR

标题、风格和远程命名遵循 git-conventions 技能。PR 位于仓库的主要远程仓库;此技能通过 gh 支持 GitHub。若仓库有明确约定(PR 模板、标题检查、贡献指南),则以该约定为准,而非以下默认规则。

创建或更新

  1. 先检查:git log <base>..HEAD --oneline、git diff <base>...HEAD --stat,以及通过 gh pr view 查看现有 PR 状态。
  2. 标题:type(scope): description。
  3. 使用下方模板编写正文,并通过 --body-file 传入;显式传入标志,确保 gh 不会提示输入。
  4. 先将分支推送到主要远程仓库(git push -u <primary> <branch>;仓库通常有两个远程仓库,未设置上游会导致 gh 提示输入)。
  5. 创建一个已准备好供审查的 PR,并将自己设为指派人:gh pr create --assignee @me --base <base> --title <title> --body-file <file>。
  6. “验证”部分只填写实际运行过的命令及其结果。

模板(内容为空时省略“备注”):

## Summary

- 用 2-5 条普通项目符号说明做了哪些更改及原因。
- 基于 #N。(仅限堆叠 PR)

## Verification

- 运行的命令及其结果。

## Notes

- 风险、迁移顺序或审查提示。

堆叠 PR

当工作涉及多个 PR 时,按自下而上的顺序串联分支:第一个 PR 以默认分支为基准,后续每个 PR 以上一个分支为基准。确保每个 PR 都能独立通过,并按论证顺序排列整个堆栈。

合并循环

当用户说“让我们合并这些 PR”时,自下而上梳理堆栈,记录每个分支当前的最新提交,将最底部 PR 的链接发回,然后等待。每当用户说“已合并 #N”(采用任何合并方式,通常是 squash)时:

  1. 获取主要远程仓库,并将本地默认分支快进到最新状态。
  2. 使用记录的提交,将下一个分支变基到最新的默认分支上:git rebase --onto <default> <old-base-tip> <branch>。然后以相同方式将其余每个分支变基到变基后的父分支上:git rebase --onto <parent> <old-parent-tip> <branch>。记录新的最新提交。
  3. 若发生冲突,停止并报告;尚未完全解决的变基绝不能推送。
  4. 确认每个分支的内容都已保留:git range-diff <old-base-tip>..<old-tip> <new-base>..<branch> 应只显示基准变更。仅在此之后使用 --force-with-lease 推送。
  5. 调整下一个 PR 的目标分支(gh pr edit <next> --base <default>),回复其链接,然后等待下一个“已合并 #N”。即使合并方式不是 squash,也要按此方式重新同步。最后一个 PR 合并后,确认堆栈已完成,并提出清理本地分支(在 worktree 中检出的分支需要先运行 git worktree remove)。

防护规则

  • 合并由用户执行;此技能绝不合并。
  • 按名称确定主要远程仓库;这些仓库中不存在名为 origin 的远程仓库。
  • 标题和正文中不要包含计划及里程碑相关内容。

输出

PR URL;或者在合并循环期间,输出下一个 PR 的链接及剩余堆栈。

评论

支持 Markdown