用途
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 版本、可用平台或收费情况,资料未提供。