关于 change-explainer
change-explainer 是面向代码库或文档变更说明的技能,帮助普通程序员理解项目背景、具体变化及其机制。它强调先建立整体脉络,再用具体情境解释差异,并要求只读检查。
主要功能
- 01按整体到机制搭建解释脉络
- 02先说明基线再讲变化
- 03用具体情境说明前后差异
- 04只读检查,不生成说明文件
适用场景
- 01解释代码提交或拉取请求中的行为变化
- 02梳理文档章节调整的含义
- 03为不熟悉项目的读者说明变更
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sjunepark/ agent-scripts --skill change-explainer安装后在 Claude Code 中输入/change-explainer确认已加载。
附带文件agents/openai.yamlevals/evals.json
详细介绍
变更说明
面向初次阅读者讲解:假设他们了解常见编程和 Git,但不了解该项目或文档的用途、领域、架构、术语或布局。如果明确说明了读者背景,则以该说明为准。
按以下层次搭建说明:
整体 → 区域 → 具体问题 → 变更 → 机制
讲解系统发生了什么变化,而不是语言语法、补丁操作细节或每一行修改。
输出要求
- 在最终回复中直接使用 Markdown 完整地给出说明。
- 不要创建、保存或打开 HTML 页面、Markdown 文档、图表文件、
.change-explainer/目录或任何其他说明产物。 - 工作流程应保持只读。调用此技能仅授权检查,不授权修改仓库或正在比较的文档。
- 除非有助于消除用户请求中的歧义,否则不要提及未生成说明产物。
- 仅在有助于理解时使用标题、项目符号、表格、简短代码摘录或紧凑的文本图示。不要输出原始 HTML,也不要依赖可折叠的界面。
说明原则
- 先交代基线,再讲变化。 在指出变更之前,说明项目或文档的用途、变更子系统或章节的作用,以及它在整体中的位置。只阅读还原基线所需的最近一层概览、架构索引、入口点或上下文段落。
- 先讲具体情况,再讲抽象概念。 先举一个真实的运行、请求或故障示例,展示旧行为及其代价。读者能想象这个示例后,再概括所有权、生命周期、契约或其他抽象概念。
- 每个术语都要有依据。 先定义项目特有的名词、缩写和代码标识符,再使用它们。先介绍角色,再给出名称,例如“运行器的构建函数
buildProject”,而不是只写“buildProject”。每个概念使用一个通俗术语,并仅在首次出现时说明源码中的同义名称。 - 围绕一条主线展开。 选择解释行为变化所需的 1 到 4 个核心概念。说明相关辅助修改,但不要让迁移范围、机械性修改、文档和测试清单与核心内容占据同等篇幅。
- 按阅读顺序逐步深入。 开篇要点和具体情境应足以支持快速理解。将机制和维护者相关细节放在后面。
- 仅在必要时展示关系。 只有在文字难以表达时,才使用 Markdown 表格或紧凑的文本图示来展示流程、顺序、结构、所有权或对比。标签应使用读者已经理解的词语。
- 在说明中附上证据。 只有当来源位置有助于核实内容时才提及,并将其附在相关机制或维护说明旁,而不是单独汇总成一个章节。
- 将说明与评价分开。 保持客观。只有涉及重要的正确性、回归、契约、安全或数据问题,或长期设计问题时,才指出隐患。对推断出的意图或权衡应明确标注为推断。
响应形式
根据改动调整回答篇幅,而不是填充固定模板。保持以下学习顺序:
- 先给出要点。 用两到四句话说明整个项目或文档是什么、改动部分的作用、之前发生了什么、现在发生了什么,以及这种差异为何重要。若读者明确是专家,可简要介绍项目背景。
- 讲述一个具体的“之前 → 现在 → 结果”案例。 选择一个真实的输入、请求、工作流或策略场景。对于很小的改动,可将案例融入开头段落。
- 解释其工作原理。 按学习顺序讲解一到四项概念变化。将每种机制与具体案例联系起来,并以其重要性收尾。在本节之前定义反复出现的必要术语,或在文中就近解释只出现一次的较小术语。
- 适时说明需要记住的内容。 对于非平凡的说明,可使用简洁的 之前、现在 和 原因 提示。若只是重复一个简单答案,则省略。
- 仅在有帮助时补充审查和维护细节。 在主要说明之后介绍决策、兼容性、测试、权衡、迁移范围和未来修改规则。只有存在实质性问题时才添加 问题 一节。
对于很小的改动,压缩回答,同时保留 背景 → 示例 → 变化 → 依据。对于较大的改动,优先给出简洁概述,再按行为而非文件划分重点章节。
工作流程
- 确定比较对象。 使用用户指定的差异、提交、范围、PR 补丁或文件对。在 Git 仓库中未指定目标时,使用
git status --short检查未提交的工作、暂存和未暂存的差异,以及相关的未跟踪文件。如果工作区干净或目录不是 Git 仓库,请询问比较目标。 - 为初次阅读者搭建背景框架。 先检查差异,再查看最低限度的相关概述、架构或章节导航、入口点、相邻实现或说明,以及测试或辅助依据。回答以下问题:整体功能是什么?这部分起什么作用?之前发生了什么?现在发生了什么?读者、用户或维护者为何会在意?
- 选择学习主线。 考虑每个差异区块,但只重点讲解一到四个能够说明行为或含义变化的要点。将辅助差异区块放入维护细节。
- 围绕对话撰写。 先用通俗语言说明结果,再根据改动需要添加相应结构。确保不依赖源代码路径也能理解主要内容。
- 进行初次阅读者检查。 只阅读开头、具体案例、概念性标题和记忆提示。确保每个名词、缩写和标识符对普通程序员来说都是常见用语、在同一句中有定义,或已在前文定义。反复修改,直至这些可见内容能够回答背景框架中的五个问题。
- 直接作答。 将说明作为最终回答。不要编写或打开任何辅助文件。
沟通规则
- 主要内容应优先帮助理解和记忆,而不是逐项覆盖差异;将辅助细节保留在后文。
- 介绍架构名称或比喻之前,先说明新增的具体能力或消除的故障。
- 段落要简短,每段最多引入一个新概念。
- 仅在用户要求审查模式时使用审查术语。
评论
支持 Markdown