mcpField
J
jackin-refresh-pr

jackin-refresh-pr

github.com/jackin-project开发3469 次安装4 周前更新
代码仓库

关于 jackin-refresh-pr

jackin-refresh-pr 是用于更新 jackin❯ 仓库 PR 标题和正文的技能,适合分支内容变化后需要校正描述的操作者。它依据当前差异重新选择本地验证区块,同时保留仍准确的人工撰写内容。

主要功能

  1. 01根据当前差异生成正文结构
  2. 02按工具选择验证区块
  3. 03保留未过时的人工内容
  4. 04重写已偏离的正文部分
  5. 05按实际范围校准 PR 标题
  6. 06检查正文渲染结果

适用场景

  1. 01新增提交导致 PR 正文过时
  2. 02PR 范围扩展或发生变化
  3. 03标题类型不再符合实际交付内容
  4. 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)。

流程

  1. 解析 PR。 执行 gh pr view <PR> --json number,title,body,headRefName,baseRefName。留存当前标题和正文。

  2. 获取最新结构。 执行 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 所要求的选择。

  3. 协调本地验证块。 比较最新骨架中的块集合与现有正文中的块:

    • 在最新选择中、但正文缺少的 → 添加(使用模板结构,并填写此 PR 的内容)。
    • 在正文中、但已从最新选择中移除的 → 删除。
    • 两边都有的 → 原样保留操作者填写的内容。Checkout 块包含真实 PR 编号;Rust tests 块包含限定范围的筛选条件;User smoke 块包含特定于 PR 的步骤。切勿用占位符覆盖保留的块。

    完成条件: ## Verify locally 下的每个 ### 块都与当前 diff 对应的二进制选择一致,且每个保留的块都保留其编写者填写的内容。

  4. 协调说明文字。 阅读 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。

  5. 协调标题。 Conventional Commits 格式的主题是否仍能描述已交付的范围?如果 PR 扩大了范围——例如,原本是 fix(typo),现在却交付了功能;或原本是 docs:,现在却包含代码——通过 gh pr edit <PR> --title 更新类型和作用域。只有在范围变化重大到操作者可能没有注意到时,才暂停并请求确认(.github/AGENTS.md 中的标题/描述规则)。

  6. 写入正文。 在临时文件中整理协调后的正文——保留的说明文字、重写后的说明文字、协调后的块——然后执行 gh pr edit <PR> --body-file /tmp/pr-body.md。绝不要使用 --body "...";.github/AGENTS.md 中的正文构建规则要求使用 --body-file,以正确处理代码围栏和 $。

  7. 验证渲染结果。 执行 gh pr view <PR> --json body -q .body——确认没有手动编辑造成的多余 \` 或 \$。如果格式损坏,使用 --body-file 修复。

  8. 汇报。 说明具体变更:添加/移除的块、重写的说明部分、标题变更(旧 → 新)及其原因。如果操作者要求刷新,不要再请求许可。如果标题变更会扩大范围且操作者可能有异议,应在变更生效前明确说明。

常见错误

  • 从骨架重新生成正文,丢失操作者撰写的说明文字——骨架包含占位符;刷新应保留已撰写的内容,只重写有偏差的部分。
  • 重写原本准确的说明文字——会造成无谓的 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(写入)来完成。

评论

支持 Markdown