mcpField
C
create-pull-request

create-pull-request

github.com/cline开发71.0k810 次安装今天更新
代码仓库

关于 create-pull-request

指导 GitHub Pull Request 创建流程的技能,适用于需要按项目约定提交 PR 的开发者。它涵盖 CLI、分支和提交检查、信息收集,并要求使用仓库中的 PR 模板。

主要功能

  1. 01检查 gh 安装与认证状态
  2. 02检查工作区和当前分支
  3. 03梳理提交、差异与基准分支
  4. 04收集 PR 所需信息
  5. 05按模板生成 PR 描述
  6. 06使用 gh CLI 创建 PR

适用场景

  1. 01为功能分支创建 GitHub PR
  2. 02在提交前检查分支与工作区状态
  3. 03依据提交记录整理 PR 描述

安装

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

$npx skills add https://github.com/cline/cline --skill create-pull-request

安装后在 Claude Code 中输入/create-pull-request确认已加载。

详细介绍

创建拉取请求

本技能将指导你创建结构完善、符合项目惯例和最佳实践的 GitHub 拉取请求。

前置条件检查

继续之前,请确认以下事项:

1. 检查是否已安装 gh CLI
gh --version

如果尚未安装,请告知用户:

需要 GitHub CLI(gh),但尚未安装。请安装:

2. 检查是否已通过 GitHub 身份验证
gh auth status

如果尚未通过身份验证,请指导用户运行 gh auth login。

3. 确认工作目录干净
git status

如果存在未提交的更改,询问用户是否要:

  • 将其作为此 PR 的一部分提交
  • 暂时将其暂存
  • 丢弃这些更改(请谨慎)

收集上下文

1. 确认当前分支
git branch --show-current

确保当前分支不是 main 或 master。如果是,请让用户创建或切换到功能分支。

2. 查找基础分支
git remote show origin | grep "HEAD branch"

通常为 main 或 master。

3. 分析与此 PR 相关的近期提交
git log origin/main..HEAD --oneline --no-decorate

检查这些提交,以了解:

  • 引入了哪些更改
  • PR 的范围(单个功能/修复,还是多项更改)
  • 是否应该压缩或重新整理提交
4. 查看差异
git diff origin/main..HEAD --stat

这会显示哪些文件发生了更改,有助于识别更改类型。

收集信息

创建 PR 之前,需要收集以下信息。检查能否从以下内容中推断出来:

  • 提交消息
  • 分支名称(例如 fix/issue-123、feature/new-login)
  • 更改的文件及其内容

如果缺少任何关键信息,请使用 ask_followup_question 询问用户:

必需信息
  1. 相关问题编号:在提交消息中查找 #123、fixes #123 或 closes #123 等格式
  2. 描述:此更改解决了什么问题?为什么要进行这些更改?
  3. 更改类型:缺陷修复、新功能、破坏性更改、重构、外观调整、文档或工作流
  4. 测试流程:如何进行测试?可能会导致什么问题?
澄清问题示例

如果没有找到问题编号:

我在提交消息或分支名称中找不到相关问题编号。此 PR 要解决哪个 GitHub 问题?(请输入问题编号,例如“123”;如果是小型修复,请输入“N/A”)

Git 最佳实践

创建 PR 之前,请考虑以下最佳实践:

提交规范
  1. 原子提交:每个提交应只表示一项独立的逻辑更改
  2. 清晰的提交消息:尽可能遵循约定式提交格式
  3. 避免合并提交:优先使用变基而非合并,以保持提交历史整洁
分支管理
  1. 基于最新的 main 进行变基(如有需要):

    git fetch origin
    git rebase origin/main
    
  2. 酌情压缩提交:如果有许多小型的“WIP”提交,可考虑交互式变基:

    git rebase -i origin/main
    

    仅当提交看起来杂乱且用户熟悉变基时才建议这样做。

推送更改

确保所有提交均已推送:

git push origin HEAD

如果分支经过变基,可能需要运行:

git push origin HEAD --force-with-lease

创建拉取请求

重要:请阅读并使用 PR 模板 .github/pull_request_template.md。PR 正文格式必须严格符合模板结构。请勿偏离模板格式。

填写模板时:

  • 将 #XXXX 替换为实际的问题编号;如果不存在相关问题(小型修复),则保留为 #XXXX
  • 根据从提交和上下文中收集的信息填写所有部分
  • 勾选相应的“更改类型”复选框
  • 完成适用的“预检清单”项目
使用 gh CLI 创建 PR

使用临时文件编写 PR 正文,避免 shell 转义问题、换行问题及其他命令行不稳定情况:

  1. 将 PR 正文写入临时文件:

    /tmp/pr-body.md
    
  2. 使用该文件创建 PR:

    gh pr create --title "PR_TITLE" --body-file /tmp/pr-body.md --base main
    
  3. 清理临时文件:

    rm /tmp/pr-body.md
    

对于草稿 PR:

gh pr create --title "PR_TITLE" --body-file /tmp/pr-body.md --base main --draft

为什么要使用文件? 直接通过 --body 传递包含换行、特殊字符和复选框的复杂 Markdown 容易出错。--body-file 标志可以可靠地处理所有内容。

创建后

创建 PR 后:

  1. 显示 PR URL,以便用户查看
  2. 提醒用户注意 CI 检查:测试和 lint 检查将自动运行
  3. 建议后续步骤:
    • 如有需要,添加评审者:gh pr edit --add-reviewer USERNAME
    • 如有需要,添加标签:gh pr edit --add-label "bug"

错误处理

常见问题
  1. 没有领先于 main 的提交:该分支没有可提交的更改

    • 询问用户是否打算在其他分支上工作
  2. 分支尚未推送:远程仓库中没有该分支

    • 先推送分支:git push -u origin HEAD
  3. PR 已存在:此分支已有关联的 PR

    • 显示已有的 PR:gh pr view
    • 询问用户是否要改为更新该 PR
  4. 合并冲突:分支与基分支存在冲突

    • 指导用户解决冲突或执行变基

总结清单

完成前,请确认:

  • 已安装并完成身份验证的 gh CLI
  • 工作目录干净
  • 所有提交均已推送
  • 分支已与基分支保持同步
  • 已确定相关议题编号,或使用占位符
  • PR 描述严格遵循模板
  • 已选择适当的更改类型
  • 已处理飞行前检查清单中的事项

评论

支持 Markdown