关于 create-pr
用于推送当前分支并创建 GitHub 拉取请求或 GitLab 合并请求的开发技能。它会先检查分支和迁移状态,再根据近期提交拟定标题与描述。
主要功能
- 01检查分支和工作区状态
- 02执行迁移漂移预检
- 03将分支推送到远程仓库
- 04创建 GitHub PR 或 GitLab MR
- 05遵循标题和描述规则
适用场景
- 01针对指定基分支提交热修复 PR
- 02提交已完成的代码变更
- 03为分层分支创建依赖 PR
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill create-pr安装后在 Claude Code 中输入/create-pr确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
rules/migration-drift.mdpr-description.mdpr-title.md详细介绍
推送分支并创建拉取请求/合并请求。
规则概览
| 规则 | 影响 | 文件 |
|---|---|---|
| PR 标题 | HIGH | rules/pr-title.md |
| 迁移漂移 | HIGH | rules/migration-drift.md |
| PR 描述 | MEDIUM | rules/pr-description.md |
工作流
- 检查当前 git 状态和分支,并确定基准分支:用户指定的分支(例如热修复对应的发布分支);否则使用默认分支
- 如果当前位于基准分支,先通过
create-branch技能创建分支 - 如果有未提交的更改,通过
commit技能提交,切勿在此处直接使用原始git commit。只有在某些更改看起来与其余更改无关时,才先询问
- 如果当前位于基准分支,先通过
- 按照
rules/migration-drift.md执行迁移漂移预检。如果架构发生变化但没有对应迁移,则停止并在推送前询问 - 将当前分支推送到远程(必要时使用
-u标志) - 分析近期提交,生成 PR 标题和描述
- 通过
git remote get-url origin检测远程主机(github.com → gh;gitlab.com → glab;默认使用 GitHub),并使用相应 CLI 创建 PR/MR。正文仅使用简洁的项目符号(不要使用## Summary、## Test Plan、检查清单或其他标题段落):- GitHub:
gh pr create --assignee @me(@me会解析为已通过身份验证的用户)。- 基准分支选择:使用第 1 步确定的基准分支。如果该分支是从一个非默认分支切出的,且该分支本身有未关闭的 PR(检查 merge base,然后运行
gh pr list --head <parent>),则使用--base <parent-branch>创建 PR——这样差异范围仅限于当前层,GitHub 也会自动将 PR 链接成堆叠结构(公开预览)。堆叠结构仅适用于同一仓库;对于尚未推出该预览功能的仓库,这会退化为普通的依赖 PR,而这仍是正确的基准分支。 - 如果已安装
gh stack扩展(gh extension list),可用它进行堆叠导航和本地级联变基。不要安装该扩展;堆叠管理(变基顺序、合并各层)应交由它处理,不要手动重新指定分支目标——较低层合并后,GitHub 会自行变基并重新指定较高层的目标。 gh stack submit创建的 PR 带有自动生成的标题和正文,不符合规则。提交后,仅使用gh pr edit <number> --title "..." --body "..."重写本次提交刚创建的 PR,并遵循rules/pr-title.md和rules/pr-description.md;每个标题和描述都应仅针对该层的差异(该层相对于其基准分支的提交),而不是整个堆叠结构。不要改动已有层——submit 不会重新生成它们的内容,而且它们可能已在审查中被修改。
- 基准分支选择:使用第 1 步确定的基准分支。如果该分支是从一个非默认分支切出的,且该分支本身有未关闭的 PR(检查 merge base,然后运行
- GitLab:
@me是列表筛选器,不能用于创建 MR——先通过glab api user --jq .username获取用户名,然后使用第 1 步确定的基准分支运行glab mr create --assignee <username> --target-branch <base>。
- GitHub:
自动分配给当前用户。如果分配失败(用户不是协作者/成员),仍会创建 PR/MR,但不分配负责人。
评论
支持 Markdown