Skip to main content

small-diff

最小改动模式。线上修复 / 小 bug / 老项目维护 / 跨多人协作的代码区域改动时强制启用:不重构无关代码、不格式化整文件、每处 diff 都解释必要性。

Source facts

Repository
jackwener/exam-system
Last source activity
May 11, 2026 at 10:46
Detected SKILL.md language
Chinese
Stars
14
Forks
5

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
small-diff
description
最小改动模式。线上修复 / 小 bug / 老项目维护 / 跨多人协作的代码区域改动时强制启用:不重构无关代码、不格式化整文件、每处 diff 都解释必要性。
# /small-diff · 最小改动模式 ## 使用场景 - 修线上 bug(review 成本高,越小越好) - 在多人协作的核心模块里改代码(不能顺手 rename) - 在不熟的代码区域改代码(不知道改动的辐射范围) - 老项目维护(历史代码风格不一致,但改了风格 = 引入风险) 任何时候**用户明确说"最小改动"**也立即启用本 Skill。 ## 目标 让每个 diff **小、明确、可解释**。Agent 默认倾向于"既然来了我顺手优化一下"——`/small-diff` 是对抗 scope creep 的工程手段。 ## 必须步骤 ### 1. 列出"必须改"的最小集合 按"完成任务必须改"的角度筛选: - 删掉一切"可改可不改"的修饰 - 删掉一切"看起来更好但不解决问题"的重构 - 删掉一切"顺手"的命名 / 顺序调整 ### 2. 解释每一处 diff 的必要性 对每一处改动回答: - 为什么必须改?(任务直接要求 / 修 bug 必经路径 / 其他改动的依赖) - 为什么不能更小? 如果回答不出,**删掉这处改动**。 ### 3. 不允许做的事 | 行为 | 原因 | |---|---| | 顺手 rename 变量 | 增加 review 成本 | | 顺手 format 整个文件 | 把 diff 噪音放大 10 倍 | | 顺手抽象出 helper 函数 | 任务不需要、引入新决策点 | | 顺手"现代化"语法(switch → match) | 风险 vs 收益不成比例 | | 顺手补 type | 除非这处 type 是 bug 的根因 | | 顺手删 dead code | 留给独立的 cleanup PR | | 顺手改测试期望值 | **永远不要**——这是 reward hacking 红线 | ### 4. 必须做的事 - **不变的不动**:即便看到丑代码也忍住 - 改动**集中在最少的文件 / 最少的函数** - 新增导出 / 新增 props 必须在调用方有真实需求 - 改函数签名前先 grep 所有调用方,确认改动可控 ### 5. 最终自审 ```bash git diff --stat | wc -l ``` 如果改了超过 5 个文件,或者超过 200 行,**停下重新评估**: - 是不是任务确实需要这么大改? - 能不能拆成多个 PR? ## 禁止事项 - ❌ 用"顺便"作为加改动的理由 - ❌ 用"现代化"作为重写的理由 - ❌ 用"代码风格不一致"作为格式化整文件的理由 - ❌ 用"为了将来扩展"作为新增抽象的理由(YAGNI 原则) - ❌ 改测试期望值让红的变绿(除非测试**本身**确认是错的,且解释清楚为什么) ## 输出格式 ```markdown ## 改动范围 - 文件 N 个,行数 M - 涉及:lib/xxx.ts、app/api/yyy/route.ts ## 每处改动 + 必要性 1. `lib/xxx.ts` line 42-45:添加 fooBar() 调用 → 因为... 不加不能完成任务 2. `app/api/yyy/route.ts` line 10:从 body 取 examId → 因为... 路由本身需要 ## 主动放弃的"顺手" - 看到 lib/xxx.ts 里有未用 import,没动(留给独立 cleanup) - 看到 app/api/yyy/route.ts 的错误处理可以更优雅,没动(不在任务范围) ``` ## 与其他 Skill 的关系 - 通常在 [`/think`](../think/SKILL.md) 决定方案后启用 - 完成后用 [`/check`](../check/SKILL.md) 验证 diff 性质 - bug 修复场景结合 [`/hunt`](../hunt/SKILL.md) 找完根因后用 `/small-diff` 实施
View on GitHub