SuperAPI AI 工具集

quick-pr

编程与开发

查看项目

更新于 10-15 09:31

技能介绍

用途

quick-pr 用于把一个混在较大功能分支中的无关小改动(约定修复、拼写错误、配置微调等)从当前工作树中拆分出来,形成独立的 PR,而不需要离开当前分支。

它适用于:小修复(typo、lint、config)被混入较大的功能分支;用户希望立即发布一个微小改动而不污染当前 PR;用户说出 "quick PR"、"split this out" 或 "ship this separately"。

它不适用于:改动属于当前功能工作的一部分;用户只需要一段 PR 描述(这种情况用 /write-pr);改动需要超出简单目视检查的评审或测试。

这是一个 Claude Code 技能,依赖 Claude Code 内置工具:EnterWorktree、ExitWorktree 和 AskUserQuestion。

输入与参数解释

输入记为 $ARGUMENTS,解释方式如下:

  • 文件路径(例如 src/config.py):提取该文件当前的 diff 并在工作树中应用。
  • 描述文本(例如 "fix typo in README"):直接在工作树中进行编辑。
  • 为空:询问用户要拆分什么内容。

工具

使用前需通过 ToolSearch 获取以下工具:

用途 工具
进入隔离工作树 EnterWorktree
退出/删除工作树 ExitWorktree
询问用户 AskUserQuestion

使用流程

步骤 1:确定改动范围

  • 参数为文件路径:运行 git diff HEAD -- <file> 并展示 diff。
  • 参数为描述文本:提出应修改哪些文件以及如何修改。
  • 参数为空:询问要拆分出什么。

→ 使用 AskUserQuestion 在继续之前确认范围。

步骤 2:选择分支名与提交信息

检查项目的提交风格:git log --oneline -10。

各提出最多 5 个候选:

  • 分支:kebab-case,前缀 fix/ chore/ docs/ feat/
  • 提交:匹配主流模式(Conventional Commits、ticket 前缀等);不清楚时默认使用 Conventional Commits

→ 使用 AskUserQuestion 给出编号选项。用户选择或自行填写。

步骤 3:选择基线分支、创建工作树、应用改动

git fetch origin

检测默认分支作为推荐基线:

git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null

回退方案:检查 main、master、develop 中哪个存在。

收集最近的远程分支作为额外候选:

git for-each-ref --sort=-committerdate refs/remotes/ \
  --format='%(refname:short)' | grep -v HEAD | head -5

→ 使用 AskUserQuestion 选择基线分支。把检测到的默认分支作为推荐选项,其后是最近的分支。用户可以自行填写。该基线在步骤 4 中复用为 PR 目标分支。

使用 EnterWorktree 基于所选基线分支创建工作树。然后重命名分支:

git branch -m <chosen-branch-name>

基于文件的模式:在进入工作树之前,记录原始工作树路径。进入之后,从原始路径复制被改动的文件:

cp <original-worktree-path>/<file> <current-worktree-path>/<file>

基于描述的模式:直接在工作树中进行编辑。

步骤 4:提交、推送、创建 PR

git add <changed-files>
git commit -m "<chosen-commit-message>"

→ 使用 AskUserQuestion 确认推送。获批后执行:

git push -u origin <branch-name>

内联构建 PR 正文(不要委托给其他技能):

并行检查模板:

  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/pull_request_template.md
  • docs/pull_request_template.md
  • PULL_REQUEST_TEMPLATE.md
  • .github/PULL_REQUEST_TEMPLATE/ 目录

存在模板时:原样保留其结构,从 diff 填写各章节。无法填写的章节(截图、关联 Issue)保留其原始占位符。

无模板时:

## Summary
<what and why — 1-3 sentences>

## Changes
<bullet list of key changes>

PR 标题:匹配 gh pr list --state merged --limit 5 --json title 2>/dev/null。回退到 git log --oneline -10。不清楚时默认使用 Conventional Commits。

→ 使用 AskUserQuestion 展示草拟的标题、正文与目标分支(默认使用步骤 3 中的基线)。在获批之前不要运行 gh pr create。

gh pr create --base <target-branch> --title "<title>" --body "<body>"

步骤 5:确认与清理

显示 PR created: <URL>。

→ 使用 AskUserQuestion 询问:"Remove the worktree?"

  • 是 → ExitWorktree,action: "remove",discard_changes: true(安全——提交在步骤 4 中已经推送到 origin)
  • 否 → ExitWorktree,action: "keep"

适用场景与限制

适用于需要将夹带的微小改动快速独立成 PR、且不想打断当前工作流的开发场景。限制方面:该技能依赖 Claude Code 内置工具 EnterWorktree、ExitWorktree 和 AskUserQuestion;不适用于属于当前功能工作的改动、仅需 PR 描述的场景,以及需要超出简单目视检查的评审或测试的改动。关于该技能的兼容 Claude Code 版本、可用平台或收费情况,资料未提供。