关于 jackin-refresh-pr
jackin-refresh-pr 是用于更新 jackin❯ 仓库 PR 标题和正文的技能,适合分支内容变化后需要校正描述的操作者。它依据当前差异重新选择本地验证区块,同时保留仍准确的人工撰写内容。
主要功能
- 01根据当前差异生成正文结构
- 02按工具选择验证区块
- 03保留未过时的人工内容
- 04重写已偏离的正文部分
- 05按实际范围校准 PR 标题
- 06检查正文渲染结果
适用场景
- 01新增提交导致 PR 正文过时
- 02PR 范围扩展或发生变化
- 03标题类型不再符合实际交付内容
- 04评审者看到的描述已产生误导
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jackin-project/ jackin-dev --skill jackin-refresh-pr安装后在 Claude Code 中输入/jackin-refresh-pr确认已加载。
附带文件agents/openai.yaml
详细介绍
jackin-refresh-pr
根据当前差异修正开放 PR 的标题和正文,让正文描述分支现在实际包含的内容,而不是 PR 创建时包含的内容。当正文已过时、又合入了更多提交、范围扩大或发生变化,或标题仍写着 docs:,但 PR 现在包含一项功能时运行。
与 jackin-create-pr 共用 cargo xtask pr body——由二进制程序选择本地验证区块;由 Agent 负责撰写正文。这是有意按需执行的版本,用于执行 jackin-merge-pr 在第 5 步进行的修正。
适用场景
- 操作者要求刷新/更新 PR 正文或标题(“正文过时了”“刷新 PR”)。
- 对于此刻查看 PR 的审阅者来说,正文已产生误导。
不适用场景
- 创建新 PR →
jackin-create-pr。 - 准备合并时 →
jackin-merge-pr第 5 步会在最终检查时修正;不要重复刷新。 - 每次迭代提交后——刷新由操作者触发,而非由提交触发(
.github/AGENTS.md中的 PR 正文刷新政策)。自动刷新会导致正文反复变动,浪费注意力。
参数
PR— PR 编号(默认为当前分支对应的 PR)。
流程
-
解析 PR。 执行
gh pr view <PR> --json number,title,body,headRefName,baseRefName。留存当前标题和正文。 -
获取最新结构。 执行
git fetch origin <baseRefName>,然后执行cargo xtask pr body --base origin/<baseRefName> > /tmp/pr-body.fresh.md。读取 stderr 中的变更摘要(rust/docs/capsule/schema 类别 + 文件列表)——这就是当前变更的实际内容。读取 stdout 中的最新骨架——其## Verify locally下的###块集合,就是当前 diff 所要求的选择。 -
协调本地验证块。 比较最新骨架中的块集合与现有正文中的块:
- 在最新选择中、但正文缺少的 → 添加(使用模板结构,并填写此 PR 的内容)。
- 在正文中、但已从最新选择中移除的 → 删除。
- 两边都有的 → 原样保留操作者填写的内容。Checkout 块包含真实 PR 编号;Rust tests 块包含限定范围的筛选条件;User smoke 块包含特定于 PR 的步骤。切勿用占位符覆盖保留的块。
完成条件:
## Verify locally下的每个###块都与当前 diff 对应的二进制选择一致,且每个保留的块都保留其编写者填写的内容。 -
协调说明文字。 阅读
gh pr diff <PR>和git log origin/<baseRefName>..HEAD --oneline。针对正文中的每个说明部分(Summary、What ships、Behavior changes、What this addresses、Hard rule、Not included、Migration notes):- 仍与实际交付内容一致 → 保持不变。刷新旨在避免无谓改动;不要重写正确的内容。
- 已有偏差 → 重写,使其与当前 diff 一致。已不再适用的部分 → 删除。交付了新的成果但没有对应说明部分 → 添加。
完成条件: 每个说明部分都反映当前 diff,且没有任何部分逐文件重复描述 diff。
-
协调标题。 Conventional Commits 格式的主题是否仍能描述已交付的范围?如果 PR 扩大了范围——例如,原本是
fix(typo),现在却交付了功能;或原本是docs:,现在却包含代码——通过gh pr edit <PR> --title更新类型和作用域。只有在范围变化重大到操作者可能没有注意到时,才暂停并请求确认(.github/AGENTS.md中的标题/描述规则)。 -
写入正文。 在临时文件中整理协调后的正文——保留的说明文字、重写后的说明文字、协调后的块——然后执行
gh pr edit <PR> --body-file /tmp/pr-body.md。绝不要使用--body "...";.github/AGENTS.md中的正文构建规则要求使用--body-file,以正确处理代码围栏和$。 -
验证渲染结果。 执行
gh pr view <PR> --json body -q .body——确认没有手动编辑造成的多余\`或\$。如果格式损坏,使用--body-file修复。 -
汇报。 说明具体变更:添加/移除的块、重写的说明部分、标题变更(旧 → 新)及其原因。如果操作者要求刷新,不要再请求许可。如果标题变更会扩大范围且操作者可能有异议,应在变更生效前明确说明。
常见错误
- 从骨架重新生成正文,丢失操作者撰写的说明文字——骨架包含占位符;刷新应保留已撰写的内容,只重写有偏差的部分。
- 重写原本准确的说明文字——会造成无谓的 diff,并浪费注意力。
- 不使用
cargo xtask pr body,而是手动挑选本地验证块——二进制程序才是选择依据。 - 使用
gh pr edit --body "..."而不是--body-file——代码围栏和$会导致问题。 - 忘记检查渲染结果——错误的
\`或\$会悄然提交。 - 每次提交后都刷新——这违反了由操作者触发的策略。
工具
cargo xtask pr body --base origin/<base>(jackin❯ repo)会将变更摘要输出到 stderr,并将经过本地验证块筛选的骨架输出到 stdout。与 jackin-create-pr 共用。块的选择由二进制程序负责;说明文字的协调由 Agent 负责。没有任何 xtask 子命令会刷新 PR——此技能通过协调 pr body(选择)和 gh pr edit(写入)来完成。