antfu-create-pr 技能详解:按审查者需求编写证据驱动的 PR 正文(pr-body)
AI 技能人工智能【免费下载链接】skillsAnthony Fus curated collection of agent skills.项目地址https://gitcode.com/gh_mirrors/skills11/skills点击查看免费下载PR 正文是代码评审的第一道入口一份好的正文应当让审查者“只看正文就能理解变更”而不是去翻 diff 猜意图。本指南以 antfu-create-pr 技能中的 pr-body 决策指南为骨架结合 SKILL.md 的完整工作流与 visual-evidence 的截图取证规范系统讲解 Summary、Change map、Architecture and behavior、Boundaries and risks、Visual changes、Rollout and follow-up 每个分区何时该写、怎么写、写出什么效果。读完本文你将掌握一套可复制、与变更规模成比例、处处有证据可溯的 PR 正文写作方法。一、核心原则按需取用章节而不是机械套模板pr-body.md的 frontmatter 用一句话定义了这份文档的本质它是每个 PR 正文分区的决策指南与模板Decision guide and templates for each PR body section。其中有一个贯穿全文的约束Summary 和 Verification 始终存在其余每个分区只在能让评审更快或更准时才添加。这意味着一份合格的 PR 正文不是把所有标题都堆上去而是回答一个前置问题审查者需要知道什么原文给出了一个极简示例一个小的局部改动正文就是Summary 一行closes #N 一个Verification块仅此而已。同时要遵循一条铁律不要为了填满标题而编造内容Do not invent content to fill a heading。在 antfu-create-pr/SKILL.md 中这条原则被进一步展开为正文与变更成比例一行代码的修复几句话即可跨模块的特性用表格和图表。并且始终遵守证据纪律Evidence discipline说清楚什么是已验证verified、什么是假设assumed、什么是未验证not verified没有证据支撑就不要写 safe、fixed、backward compatible 这类结论绿色 CI 只能证明 CI 所跑的检查聚焦测试只能证明它们覆盖的行为。这套方法的来源据 README 说明是从 moeru-ai/airi 的 create-pr 技能适配而来——保留了其 merge-base 与 stacked-PR 处理、变更地图、行为图、边界与验证映射、视觉取证工作流并结合了 Anthony Fu 的 PR 写作惯例。下文逐节拆解每个分区。二、Summary以问题或能力开篇再说结果与原因Summary 是每份 PR 必备的第一节写法遵循固定顺序先抛问题或能力the problem or the capability再给结果what changed最后解释为什么选这个方案why this approach。原文示例## Summary Uploads over ~10MB failed silently because the client dropped the response body on a 413. This surfaces the error to the caller and retries once with chunked transfer. closes #482注意示例的三个层次第一句陈述故障现象与根因客户端在收到 413 时静默丢弃响应体第二句给出修复结果把错误暴露给调用方并用分块传输重试一次最后用closes #482关联 issue让 GitHub 自动链接并支持合并时自动关闭。针对stacked PR叠放式 PR需要显式声明依赖关系与归属范围例如Stacked on #480; only the last two commits belong to this PR.这行声明在 SKILL.md 中有一条配套规则不要把父分支继承下来的变更描述成本 PR 的变更Do not describe inherited changes from a parent branch as this PRs changes两者互相印证。三、Change map模块级前因后果表拒绝文件清单当 diff 触及多个模块或在模块之间转移职责时使用 Change map。它有两个关键约束行是模块或边界modules or boundaries不是文件绝不使用原始文件列表Never a raw file list。模板如下## Change map | Module | Before | After | Description | | --- | --- | --- | --- | | upload/client | Swallowed non-2xx responses | Maps 413 to PayloadTooLarge, retries once chunked | Callers can distinguish size errors from network errors | | cli/upload | Printed generic failed | Prints the mapped error and hint | Actionable output for users |每行回答三件事这个模块原来是什么行为、现在是什么行为、为什么值得让审查者知道。上面的例子中upload/client的行为变化是吞掉非 2xx 响应 → 把 413 映射为PayloadTooLarge并分块重试一次其价值是调用方能区分大小错误与网络错误cli/upload的变化则是把笼统的 failed 输出换成映射后的错误 提示让终端用户得到可行动的反馈。当变更本身即目录结构调整时可以用一棵简短的职责树responsibility tree代替表格server/ ├── routes/ # accept and validate input ├── domain/ # own the invariants └── adapters/ # talk to external systems树的注释标注每个目录承担的职责routes 负责接收与校验输入、domain 负责持有不变式、adapters 负责对接外部系统让审查者一眼看懂职责边界在哪。四、Architecture and behavior用图说话且图必须可溯源当一张图比一段散文更快地解释变更时才使用本分区。图表的使用原则是节点名必须绑定真实模块或符号箭头必须标注调用、事件或数据按变更性质选图型跨模块特性或边界迁移 → 模块流程图flowchart LR排序变化、异步工作、重试、取消、清理 → 时序图sequence diagram每个alt分支必须对应一个真实代码分支状态迁移或终止态变化 → 状态图state diagram。原文给出了一个完整的 Mermaid 时序图示例演示413 后分块重试的完整调用链图中 CLI → UploadClient → Server 的参与者命名都对应真实代码层alt 413与else success两个分支分别对应客户端错误映射逻辑与正常路径返回的AssetUrl是调用方的最终结果。对于改变流程或状态的修复类 PR规范要求给出同一抽象层级的Before/After图对并明确点出到底是哪条边或哪个步骤变了这样审查者无需自己 diff 两张图。反过来如果审查者预期这里会有图但实际不适用就应当直接声明例如Not applicable: only renames a constant, no runtime flow changes.五、Boundaries and risks不变式、失败模式、防护与证据一一对应当变更存在真实的失败模式、不变式invariants、迁移或外部影响时用四列表格把风险变成可核查项并且只保留真正有意义的行## Boundaries and risks | Invariant or boundary | Failure mode | Protection | Evidence or gap | | --- | --- | --- | --- | | Retry happens at most once | Infinite loop on persistent 413 | attempt counter, hard cap of 1 | upload.test.ts does not retry twice | | Chunked upload is idempotent | Duplicate asset on retry | Server dedupes by content hash | Not verified in this PR |四列的含义分别是不变式或边界你要守护的承诺如最多重试一次失败模式违反该承诺会怎样如持久 413 导致无限循环防护措施用什么机制兜底如attempt计数器硬上限为 1证据或缺口测试名、文件路径或如实标注Not verified in this PR。注意第二行幂等性依赖服务端按内容哈希去重但本 PR 没有验证这一点因此证据列如实写作 Not verified in this PR而不是把风险问题包装成结论。原文有一句直接的规定写Not verified而不是把风险问题变成声明WriteNot verifiedinstead of turning a risk question into a claim。原文还给出了一个风险扫描清单写正文时应逐项过一遍命中哪项就补哪行输入校验与鉴权input validation and auth失败映射、重试、重复、并发、排序、清理failure mapping, retries, duplicates, concurrency, ordering, cleanupschema 变更、回填、回滚schema changes, backfills, rollback日志或错误载荷中的机密泄露secrets in logs or error payloadsUI 的加载、错误、空态、过期态、重复操作态UI loading, error, empty, stale, and repeated-action states。六、Visual changes仅限用户可见的 UI 变更图片行在下、标签行在上本分区只用于用户可见的 UI 变更模板采用图片行在前、标签行在后的两行表格## Visual changes | Before | After | | --- | --- | | ![](./shots/base/settings-connection.png) | ![](./shots/head/settings-connection.png) | | Settings / Connection, 1440x900, dark | Settings / Connection, 1440x900, dark |标签行需要说明位置、视口尺寸、主题等复现条件上例为 Settings / Connection, 1440x900, dark确保前后截图的对比条件一致。新增的状态用Absent表示删除的状态用Removed表示。完整的取证与附件流程在 visual-evidence 中展开要点包括用git worktree add --detach检出 merge-base避免污染工作分支前后两张截图必须使用相同的视口、主题、语言、夹具数据与就绪条件截图写入被忽略的目录如.pr-shots/base/id.png与.pr-shots/head/id.png逐张检查图片拒绝空白、加载中、报错或不稳定的截图除非该状态本身就是变更主题通过 GitHub CLI 2.99 的gh pr create --attach上传到 GitHub user-attachments 存储而不是提交进仓库对应 SKILL.md 中Do not commit screenshots or other PR-only artifacts to the repo的规则。七、Rollout and follow-up发布计划与已知缺口并声明是否阻塞合并这是一个可选分区适用于涉及以下内容的变更数据迁移migrations特性开关feature flags分阶段发布staged rollout监控monitoring已知缺口known gaps需要后续跟进的 PRrequired follow-up PRs。它的硬性要求是对每个缺口明确声明它是否阻塞合并State whether each gap blocks merge。这样审查者无需猜测这里没做完能不能合发布计划的决策权透明地交给评审流程。该分区不需要模板表格两到三行清晰的声明即可。八、与 SKILL.md 工作流的衔接标题、必备分区与写作规则pr-body.md是 antfu-create-pr 技能的第三步产物——SKILL 的完整流程为检查仓库 → 计算 merge-base 与base...head范围 → 通读 diff 并追踪调用链 → 分类 PR 并挑选分区即本指南内容→ 运行针对变更面的检查 → 截取 UI 证据 → 写入临时文件并用gh pr create --body-file创建 → 打开 PR 复核 → 处理评审意见。把正文写作放入这个流程还需要掌握以下配套要求每份 PR 必备## Summary问题或能力优先再讲变更与方案stacked PR 需注明关联 issuecloses #123/fixes #123/refs #123## Verification精确记录运行的命令与结果以及哪些没有验证。标题规则Conventional Commits与仓库既有提交风格一致feat(scope): add retry to upload client fix(scope): avoid double submit on enter refactor: extract diff parsing from cli chore(deps): update vite to v8 docs: clarify worktree setup小写、祈使句、无结尾句点、70 字符以内scope 使用仓库既有的包名/模块名仓库级变更可省略squash-merge 的仓库会把标题直接变成提交信息因此要按你希望留在历史上的提交来写。正文写作规则清单使用普通连字符-禁止 em dashU2014与 en dashU2013禁止 filler 措辞This PR aims to...、comprehensive、robust以事实开头禁止在正文粘贴 token、密钥、用户记录或完整 payload截图等 PR 专用产物不得提交进仓库用gh --attach附件上传如果 PR 由 Agent 辅助编写在正文末尾用一行声明。如果仓库自带 PR 模板则保留模板的标题并填写内容只在模板留白处补充上述分区SKILL.md 原文If the repo has a PR template, keep its headings and fill them; add sections above only where the template leaves room。九、写作前的自查清单把上述要点压缩成发布前的最终检查Summary 是否以问题/能力开篇并包含closes #NVerification 是否记录了精确命令与结果未验证项是否如实标注每个可选分区是否为审查者而写而非凑标题小改动是否只保留了 Summary issue VerificationChange map 是否按模块而非文件组织且每行有 Before / After / Description 三要素图表节点是否绑定真实模块或符号alt分支是否对应真实代码分支修复类 PR 是否有Before/After图对风险表格是否四列齐全不变式 / 失败模式 / 防护 / 证据或缺口无法验证的是否写了Not verifiedUI 变更的截图是否前后条件一致、以附件上传而非入库全文是否只用普通连字符、无 filler、无机密内容这套方法的核心始终是那句话按审查者需要选择分区而不是按模板机械填充——正文的每一行都应该帮助评审更快、更准地做出判断。赞分享AI 技能人工智能【免费下载链接】skillsAnthony Fus curated collection of agent skills.项目地址https://gitcode.com/gh_mirrors/skills11/skills点击查看免费下载相关推荐antfu-create-pr 技能实战用 Conventional Commits 标题与证据驱动正文打造可审查的 GitHub Pull Requestantfu create pr 技能实战用 Conventional Commits 标题与证据驱动正文打造可审查的 GitHub Pull RequestAI 技能人工智能antfu-create-pr 技能实战用证据驱动工作流创建可审查的 GitHub Pull Requestantfu create pr 技能实战用证据驱动工作流创建可审查的 GitHub Pull Request 导读 本指南以 skills/antfu creAI 技能人工智能Hexclave 视觉化 PR 描述写作指南基于 pr-body-template 的 Before/After 截图矩阵与 GitHub PR 正文编排Hexclave 视觉化 PR 描述写作指南基于 pr body template 的 Before/After 截图矩阵与 GitHub PR 正文编排 导后端认证鉴权前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AnyPS5跨平台串流工具:从协议逆向到低延迟编码的工程实践

AnyPS5跨平台串流工具:从协议逆向到低延迟编码的工程实践

1. 从“AnyPS5”这个标题说起:一个跨平台串流工具的设计与实现 第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一反应是:这大概率是一个围绕主机游戏串流做文章的项目。为什么这么说?因为“Any”这个前缀在技术圈里几乎已经成了…

2026/10/12 11:54:57 阅读更多 →
AnyPS5跨平台串流方案:局域网直连与公网访问技术解析

AnyPS5跨平台串流方案:局域网直连与公网访问技术解析

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题 第一次看到"AnyPS5"这个标题,我脑子里蹦出来的第一个念头是:这大概率是一个围绕"PS5"这个关键词做文章的项目,而且"Any"这个前缀暗示了…

2026/10/12 11:54:57 阅读更多 →
自动化日报系统设计:从信息采集到智能分发的全链路实践

自动化日报系统设计:从信息采集到智能分发的全链路实践

1. 当"日报"变成一种自动化基础设施做内容的人都有一个共同的痛点:信息过载。每天醒来,光是行业动态、技术更新、产品发布、社区讨论就够刷两个小时,刷完之后还记不住几条。更麻烦的是,团队里每个人刷到的信息不一样&am…

2026/10/12 11:54:57 阅读更多 →

最新新闻

GitHub Training Kit《Git 速查手册》精讲:覆盖安装配置、分支、仓库同步与历史重写的完整命令行指南

GitHub Training Kit《Git 速查手册》精讲:覆盖安装配置、分支、仓库同步与历史重写的完整命令行指南

文档教程 【免费下载链接】training-kit Open source courseware for Git and GitHub 项目地址: https://gitcode.com/gh_mirrors/tr/training-kit 点击查看 免费下载 Git 是一个开源的分布式版本控制系统,也是 GitHub 上一切协作活动的基础设施。本文以…

2026/10/13 1:50:14 阅读更多 →
基于SpringBoot3+Vue3的心理健康预约系统、心理测评系统、医生预约管理系统、心理圈子社交平台,毕业设计,课程设计

基于SpringBoot3+Vue3的心理健康预约系统、心理测评系统、医生预约管理系统、心理圈子社交平台,毕业设计,课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/10/13 1:50:14 阅读更多 →
基于SpringBoot3+Vue3的健康体检预约系统、体检套餐管理系统、体检机构管理系统、体检客户预约平台、体检信息管理系统,毕业设计,课程设计

基于SpringBoot3+Vue3的健康体检预约系统、体检套餐管理系统、体检机构管理系统、体检客户预约平台、体检信息管理系统,毕业设计,课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/10/13 1:50:14 阅读更多 →
基于SpringBoot3+Vue3的在线医院预约系统、医生预约管理系统、医院科室管理系统、患者预约平台、医疗信息管理系统,毕业设计,课程设计

基于SpringBoot3+Vue3的在线医院预约系统、医生预约管理系统、医院科室管理系统、患者预约平台、医疗信息管理系统,毕业设计,课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/10/13 1:50:14 阅读更多 →
Wing 标准库 `cloud.Api` 完全指南:从 REST API 实战到多平台实现原理

Wing 标准库 `cloud.Api` 完全指南:从 REST API 实战到多平台实现原理

编程语言编译器云原生语言运行时 【免费下载链接】wing A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡ 项目地址: https://gitcode.com/gh_mirrors/wi/wing 点击查看 免…

2026/10/13 1:50:14 阅读更多 →
ArcGIS动态表格联动属性表实现批量分幅出图全流程解析

ArcGIS动态表格联动属性表实现批量分幅出图全流程解析

先说个现象。做自然资源确权、村庄规划或者土地利用现状图的时候,成果图件经常需要在图幅外侧放一张属性明细表,把当前图幅范围内的宗地编号、权属人、地类名称、面积挨个列出来。很多人的第一反应是手工在Excel里整理,再用表格框或者截图贴到…

2026/10/13 1:49:14 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →