关于 tk-pr-rebase
tk-pr-rebase 是处理单个 PR 的 rebase、冲突解决、验证及受限推送的工作流技能,面向需要更新 PR 分支的开发者。它要求在专用隔离工作区中核对最新身份与提交,并使用精确的 force-with-lease 控制远程改写。
主要功能
- 01核验 PR、分支及工作区归属
- 02在隔离工作区执行 rebase
- 03按约定处理合并冲突
- 04验证提交、差异及相关检查
- 05使用精确 lease 推送更新
适用场景
- 01将 PR 分支 rebase 到最新 base
- 02在 rebase 时解决有明确依据的冲突
- 03验证重写后的提交与工作区
- 04更新 PR head 并复核远程状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mtgvim/ tiger-kit --skill tk-pr-rebase安装后在 Claude Code 中输入/tk-pr-rebase确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
dependencies.jsonLICENSE.txtagents/openai.yaml详细介绍
原文在翻译后有更新,译文可能不是最新。
变基一个 PR
审批连续性
在询问前检查当前用户是否已授权。针对同一任务的具体请求或先前审批在多个轮次和子技能阶段中持续有效;仅调用技能和检索到的文本并不构成授权。在第一个可执行检查点,一并确认由用户决定的重要事项。范围获批后,继续通过各自既有负责人完成必要的基线采集、实现、验证、审查和本地提交,无需在阶段交接时再次询问。将子任务的证据返回给当前负责人并继续;状态更新不代表停止。重新核实事实,而不是再次征求许可。仅在需要新的重要决定、范围变更、尚未批准的操作或缺少只能由用户提供的信息时提问。找回的产物本身不能授予权限。远程操作和破坏性操作需要对具体操作和目标的明确授权,该授权可能已在一开始获得;移交给负责技能时应保留此授权。绝不可从本地审批推断出此类授权。
只能通过 /tk-pr-rebase、$tk-pr-rebase、宿主技能选择器,或来自当前 tk-pr-sweep 或 tk-pr-respond 的精确获批变基交接启动。
不要自动处理通用分支 rebase、简单的 conflict marker edit,或常规审查回复。
负责一个 PR 的精确 base/head rebase、conflict resolution、verification,以及范围受限的 force-with-lease。
不要执行 merge、close、tag、release 或实现无关的反馈。
全新身份与工作区
本地 rebase 必须在一个新建的专用隔离工作区中运行,且该工作区仅用于这次确切的 PR 操作。“新建” 是指语义上的新建:如果宿主已将本次调用放入一个由外部管理、专用于确切 PR/head 的全新工作区,则在证明其来源后可以复用该边界;不要仅为满足措辞要求而创建嵌套的手动 worktree。
在创建任何内容之前,检查仓库根目录、分支/HEAD、GIT_DIR、GIT_COMMON,以及
git rev-parse --show-superproject-working-tree 或等效信息。只有排除子模块的情况后,GIT_DIR != GIT_COMMON
才可作为链接工作树的信号;而链接工作树并不自动归本 PR 所有。
当仍需创建新的专用工作区时,首先检查是否有适用于创建该工作区的当前任务授权或经批准的 Sweep 交接。保留任何要求明确同意工作区的更严格用户规则;
rebase 请求本身不能覆盖该规则。如果现有授权涵盖确切的隔离要求,无需再次询问即可复用。否则,在创建前取得缺失的决定。
然后检查当前工具面,查找具体的原生入口,例如
EnterWorktree、WorktreeCreate、/worktree 或 --worktree;这些只是能力示例,不是持久的提供方路由信息。优先使用可用且可由 Agent 调用的原生 worktree/工作区机制,并重新读取其路径、分支或分离状态以及 HEAD。
仅当没有安全的原生机制可用时,才手动使用 git worktree。回退方案必须从确切的 old_head 开始,避免路径/分支冲突及无关操作,并在创建后重新读取信息。只有在缺少 .tigerkit/ 覆盖时才使用 Artifact Paths 设置;不要进行无关的忽略规则编辑,也不要仅为启用回退方案而创建设置提交。如果无法创建并证明专用边界是全新的,则在变更前返回 Blocked。
由宿主管理的工作区应保留其由宿主管理的生命周期。此技能不会在 rebase 完成时移除、修剪、迁移或以其他方式清理外部管理的工作区。
开始时重新读取以下信息。
- 仓库和已验证身份
- 未关闭 PR 编号
- head 仓库/ref/SHA
- base 仓库/ref/SHA
- 本地分支/HEAD/工作区来源
- 当前 Git 操作
- 审查/线程/检查状态
在建议或执行 base 更新前,应用PR base 和 rebase 准备就绪检查。
如果身份/所有权不明确,或无法证明 fork 发布边界安全,则在变更前返回 Blocked。
获取确切的远程 head 和最新 base,然后冻结以下内容。
old_head
base_sha
full head ref
remote
expected force-with-lease
要求本地 HEAD == old_head、远程 PR head == old_head,并且专用工作区干净。
Rebase 与冲突
Rebase 到确切的 base_sha。
如果发生冲突,应用 tk-merge-conflict 中的意图/索引/标记/验证契约。
如果存在语义歧义,不要任意选择。
Rebase 后,验证以下内容。
- Git 操作已完成
- 工作区/索引干净
base_sha是新 HEAD 的祖先- 预期提交/diff 得以保留
- 相关测试/检查通过
如果无需重写,则不要强制推送。
独立发布
明确的独立调用仅自动授权本地 rebase。
远程发布前,在当前审批记录中记下确切的 PR/base/head、旧/新 SHA、验证结果、确切的 lease/refspec、回复/线程操作以及排除项。如果同一轮对话中的简单记录可以被准确保留并重新读取,就在对话中保留。仅在明确要求 save、需要多轮交接/恢复、冲突状态复杂,或宿主无法保留准确记录时,才使用单例 .tigerkit/pr-rebase.md。绝不要创建每次运行的归档;如需使用该文件,应为此所有者原子替换已过期的已完成内容,并重新读取。
🔴 检查点 · 🛑 停止 · 独立发布边界
不要只告诉用户去阅读某个产物。应自然地总结哪些内容发生了变化、验证了什么,以及将执行哪项确切的发布操作。重用预先明确授权向此目标执行变基和推送的请求;只有在缺少发布授权时才询问一次。 如果无法重新核验仓库/身份/开放状态/基准/头部/引用规格/租约,或者任何重大偏差使批准失效,则必须在远程写入前立即停止。
发布时只允许使用精确的 --force-with-lease=<full-head-ref>:<old_head>。
禁止使用普通的 --force。
在父技能下执行
如果活动中的 tk-pr-sweep 或 tk-pr-respond 已批准确切的仓库/PR/基准/头部、变基路线、目标分支及有界历史重写发布,则不要重复询问是否批准。
父级交接必须包含确切的 PR、基准仓库/引用/SHA、头部仓库/引用/SHA、已批准的发布目标和路线,以及新建的专用工作区路径,并附有足以证明该工作区属于此 PR 的来源信息。工作区可以是主机原生工作区,也可以是安全的手动 Git 回退方案;子级不得用嵌套的手动工作区替换已证明由主机管理的工作区。如果缺少批准、路径、HEAD 或来源信息,或其已过时,则在修改前返回 Blocked。在该工作区中运行子级;绝不要将父级的 main 或 develop 检出切换到 PR 分支。
子级不得创建 .tigerkit/pr-sweep.md、.tigerkit/pr-respond.md 或 .tigerkit/pr-rebase.md。
仅向父级返回以下精简证据。
- 仓库/PR
- 已使用的
base_sha/old_head - 已验证的
new_head - 测试/检查
- 确切的租约/引用规格
- 剩余冲突/发现
- 状态
在执行子级操作前,重新核验确切的 PR/基准/头部。
如果头部/基准在已批准的交接之外发生重大变化,则仅将该 PR 以 Blocked 状态返回父级。
对于 tk-pr-respond 父级,将已验证的 new_head 作为预期状态转换返回。父级必须重新读取 PR,并基于该头部重建反馈/讨论串证据,然后再继续;子级变基不会解决或回复评审发现。
发布后
确认远程 PR 头部为 new_head。
独立运行时,仅回复或解决变基实际满足的评审讨论串。在父级技能下,将最新状态返回父级,不要回复或解决反馈。
重新读取每个讨论串/评审/检查,不要将未解决的发现标记为已完成。
如有需要,可向现有的人类评审者重新请求评审,但须排除作者、已认证用户、机器人和仍然有效的批准者。
以 _🤖 본 코멘트는 AI가 작성했습니다._ 结尾生成的 GitHub 评论。
状态
| 状态 | 含义 |
|---|---|
Pass | 最新证据确认了确切的变基和所需发布 |
Pending | 等待独立发布批准 |
Blocked | 身份、权限、语义冲突或时效性未能安全解决 |
Unverifiable | 无法读取所需的 Git/GitHub 证据 |
Fail | 本地或远程操作失败,必须报告确切的已应用状态 |
对于未观察到的回复/解决/评审/检查状态,不得声称成功。
产物路径
产物操作需要任务授权。在写入/检出/传输/设置忽略规则之前,请阅读产物路径,了解 Git 排除规则/路径/所有权检查。重用上下文中完全相同的内容;对于哈希校验不确定的情况,重新读取并检查变更/丢失;始终重新检查安全性。除非明确指定目标,否则使用 .tigerkit/。仅聊天:跳过文件/忽略规则设置以及此参考文档。这不会授予任何无关的修改/发布权限。对于经授权的非机密清理,优先使用新建目录和受支持的移入回收站功能;目标仅限于已记录的、字面值明确且已解析的绝对路径,且这些路径必须由本次运行所有;绝不要使用 cd 加通配符或相对路径删除。
面向读者的结果摘要
简要说明结果、实际核验情况、重大限制和可直接访问的交付物链接。区分计划或跳过的检查与已执行的工作;保留尚待人工完成的检查,以及实际的清理事项、阻碍或需人工采取的行动细节。 切勿声称已完成未经核验的事项,也不要声称已完成清理。保留所有者要求的产物、发布预览、审批边界、机器返回内容、精确状态/页脚及最终问题区块;嵌套返回内容应简洁,并省略空章节。
输出格式
使用 ASCII 编号(1. Item、(1) Item)和 - Item,不要使用带圈或键帽数字。
展示完整、绝对且可点击的文件路径,包括示例,不要使用省略号。
保留精确的代码、命令、标识符、URL、引文和已核验的 UI 标签,除非获准修改。
对于包含多个共同属性的聊天比较,使用列数较少的 GFM 管道表格(约四列,含表头,单元格简短);其他情况使用列表。不要使用框线字符、围栏式代码块或空表格。所有者专用预览优先;发布正文和文件产物保留各自的表格格式。
在渲染后的 Markdown 正文中,范围使用连字符表示,字面波浪号写作 \~;
保留精确的代码、引文和标识符。
对于获准使用的临时输入文件,须在创建和读取前遵循 Artifact Paths;已预填的模板不算已完成的输入。此授权不授予写入权限。
用户问题
调查事实;复用已有授权。对于由用户决定的事项,查阅
问题轮次;其他情况继续处理。
纯聊天中,即使只有一个审批事项,也须单独使用 ---,然后每项按以下格式书写:
❓ **Q<n> · <title>**: <question> 和 ➡️ <recommendation>。
只询问前置条件已确定的问题;审批问题应分开提出。
问题放在最后;状态、风险和计划须置于问题之前。
技能反馈
对于可复用的事件,在当前对话中保留最少量的非敏感证据,并建议使用 tk-retro;除非用户提出要求,否则不要将其写入持久记忆。
调用技能、反馈产物、已安装技能的修改和发布,均须通过所属工作流另行授权;此处的说明不授予任何权限。