关于 pr-explainer
为代码审查者生成本地独立 HTML 页面,按问题背景、系统上下文、实现流程和验证证据讲解 PR。适用于需要以易读方式梳理变更及审查重点的开发者。
主要功能
- 01按故事线组织 PR 内容
- 02展示变更前后流程
- 03聚焦关键代码差异
- 04汇总测试与验证证据
- 05生成独立 HTML 文件
适用场景
- 01向审查者解释复杂 PR
- 02梳理代码变更的系统影响
- 03整理测试和构建结果
- 04生成不提交到仓库的审查页面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mastra-ai/ mastra --skill pr-explainer安装后在 Claude Code 中输入/pr-explainer确认已加载。
详细介绍
PR 解读器
创建一个本地、自包含的 HTML 页面,帮助审阅者理解 PR 的来龙去脉:改了什么、为什么重要、如何运作、与系统的关系,以及如何验证。
必要工作流
-
在编写 HTML 之前先理解 PR
- 收集 PR 标题/编号、分支、链接(如有)、基础分支、提交范围、变更文件以及已完成的验证。
- 使用
git status --short检查当前状态。 - 使用
git log --oneline -n 10检查最近的提交。 - 使用
git diff <base>...HEAD --stat和git diff <base>...HEAD检查改动范围。 - 如果某个提交承载了主要改动,使用
git show --stat <commit>和git show <commit>检查该提交。
-
确定解释路径
- 不要按原始 diff 的文件顺序解释文件。
- 在可能的情况下,按以下顺序讲解改动:
- 问题,
- 系统背景,
- 改动前后的数据或控制流,
- 关键代码改动,
- 来自测试/构建/手动检查的证明,
- 审阅者要点。
- 将变更文件分类为核心行为、管道/集成、测试、发布元数据或无关噪声。
- 只突出有助于解释 PR 的文件。
-
以易于理解为目标编写
- 使用通俗语言、简短章节、具体的改动前后示例、小而聚焦的代码片段、图示、表格和提示框。
- 在介绍实现细节之前先说明问题。
- 在使用缩写或特定包的术语之前先加以定义。
- 避免直接堆砌完整 diff,也避免假设审阅者已了解内部背景。
-
创建本地自包含的 HTML 文件
- 将生成的文件放在
.pr-review/中。 - 使用一个包含全部 CSS 和内容的 HTML 文件。
- 默认不要提交
.pr-review/。 - 优先使用仓库忽略规则或
.git/info/exclude,确保生成的审阅页面不进入提交。
- 将生成的文件放在
推荐的 HTML 结构
除非 PR 明确需要不同的讲解顺序,否则使用以下结构:
-
Hero 区
- PR 编号/标题、一句话摘要、分支/链接/状态。
- 小型指标:变更文件数、新增测试数、受影响的包数。
-
问题
- 之前的行为。
- 为什么它错误、令人困惑、缺失或存在风险。
-
系统背景
- 此改动位于产品或架构的哪个位置。
- 上游调用方、下游行为,以及为什么这是正确的层级。
- 有意保持不变的行为。
-
改动前后的流程
- 当 PR 改变了流程、状态、所有权、权限、请求处理、数据转换或组件关系时,展示旧路径与新路径的可视化对比。
-
代码讲解
- 分步解释讲解路径。
- 仅针对重要文件给出聚焦的 diff。
- 说明每个片段的作用以及为什么必要。
-
测试 / 验证
- 新增或更新的测试。
- 运行过的测试、构建、类型检查、lint 或手动验证命令。
- 已知的无关警告或失败(如有)。
-
审阅者要点
- 对 PR 最简短而有用的心智模型。
- 审阅实际 diff 时审阅者应重点关注的内容。
图示
当图示能够降低认知负担时添加图示。优先使用简单的 HTML/CSS 图示,避免依赖外部资源。
适合的图示类型:
- 请求流:客户端 → 服务端 → 处理器 → 服务 → 结果
- 改动前后路径:有问题的路径 vs. 修复后的路径
- 所有权图:包/模块的职责边界
- 数据转换:输入 → 规范化形式 → 输出
- 状态机:pending → running → complete/error
每个图示都必须回答:"这能帮助审阅者更快理解什么?"
聚焦差异代码片段
沿着讲解脉络展示代码片段,不要贴出大段补丁。每个重要片段应包含:
- 文件路径,
- 仅包含相关的新增/删除行,
- 用视觉样式区分新增/删除内容,
- 简短说明,
- 与 PR 故事的联系。
使用以下格式:
<div class="diff">
<div class="diff-title">packages/example/src/file.ts</div>
<pre>
<span class="del">- old behavior</span>
<span class="add">+ new behavior</span>
</pre>
</div>
评审者无需打开 GitHub 也应能理解该 PR,但页面不应取代最终的完整差异审查。
验证要求
最后提供验证依据。可用时请包含准确的命令,例如:
pnpm --filter @scope/package test path/to/test.ts -- --run
pnpm turbo build --filter ./packages/package
如果未运行验证,请明确说明,并列出建议运行的命令。
最终检查清单
在确认页面完成之前,请确认页面包含:
- 清晰的一句话总结,
- 问题陈述,
- 前后对比说明,
- 更广泛的系统背景,
- 合适时提供的可视化图示,
- 分步骤的代码讲解,
- 标注文件路径的聚焦差异,
- 测试和验证命令,
- 给评审者的要点总结,
- 自包含的 HTML/CSS,
- 存放在
.pr-review/中, - 除非收到明确要求,否则不要暂存或提交。
默认输出
收到创建 PR 解读页面的请求时,生成或更新 .pr-review/*.html 文件,并总结:
- 输出路径,
- 涵盖的 PR 故事,
- 包含的关键章节,
- 纳入的验证证据,
.pr-review/是否仍未跟踪或已排除。
评论
支持 Markdown