关于 scope-creep-detector
scope-creep-detector 是一个本地 Skill,用于将 Git diff 与声明的意图对照,识别范围扩大的迹象。它提供保留、拆分或说明理由的判断依据,不会更改仓库。
主要功能
- 01分析工作区、暂存区和分支 diff
- 02支持保存的 diff 或标准输入
- 03标记依赖项、API 重命名和配置修改
- 04报告变更量与子系统信号
- 05不修改仓库状态
适用场景
- 01核对 Pull Request diff 是否符合意图
- 02评估 Bug 修复是否涉及过多内容
- 03为混合变更制定拆分方案
- 04提交前审查暂存区变更
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shubhamsaboo/ awesome-llm-apps --skill scope-creep-detector安装后在 Claude Code 中输入/scope-creep-detector确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/scope-signals.mdscripts/scope_creep.py详细介绍
范围蔓延检测器
一行代码的修复,不应让审查者需要跨越三个子系统,逆向分析 14 个文件。本技能会将 git diff 与其声明的意图进行比较,找出范围信号,并据此给出保留、拆分或说明理由的决定。
所有操作都在本地执行。脚本不会发起网络请求,也不会更改工作树、暂存区、提交或分支。
适用场景
- 创建拉取请求前,diff 可能已超出原定意图
- 修复 Bug 时涉及意料之外的文件或子系统
- 用户询问已暂存的更改是否范围过大
- diff 包含依赖项、公共 API、配置、CI 或构建更改
- 用户希望为混合更改制定具体的拆分方案
不适用场景
- 格式化代码、运行代码检查工具或编写提交消息
- 在已约定的范围内审查正确性、安全性或测试质量
- 衡量跨多个提交的项目历史增长情况
- 未经用户批准就编辑或还原文件
明确意图
如果用户提供了一句话的意图,就使用这句话。意图应具体明确,例如
fix null dereference in parser 或 add retry limit to webhook delivery。
如果没有提供意图,脚本会使用当前分支名作为备用。如果分支名过于宽泛、处于分离头指针状态,或与当前工作无关,请先询问用户的一句话意图,再判断相关性。
运行分类器
在此技能目录中运行,并通过 --repo 指定目标仓库。
工作树 diff:
python3 scripts/scope_creep.py --repo /path/to/repo \
--intent "fix null dereference in parser" --json
已暂存的 diff:
python3 scripts/scope_creep.py --repo /path/to/repo --staged \
--intent "fix null dereference in parser" --json
相对于合并基点的分支 diff:
python3 scripts/scope_creep.py --repo /path/to/repo --base main \
--intent "fix null dereference in parser" --json
已保存的 diff 或标准输入:
python3 scripts/scope_creep.py --diff change.diff --intent "parser fix" --json
git diff --staged | python3 scripts/scope_creep.py --diff - \
--intent "parser fix" --json
只有在仓库有明确文档说明需要更改默认变更阈值时,才使用 --hunk-threshold。不要仅仅为了消除警告而调整阈值。
解读 JSON
在给出建议前,请阅读 references/scope-signals.md。将分类器结果视为分流依据,而非作者意图的证明。
in_scope:至少有一个意图关键词与路径关键词重合的文件路径likely_creep:没有关键词重合的路径,以及对应原因和检测到的信号new_deps:受支持的清单格式中新增的依赖项api_renames:附近被删除和新增的公共函数或类声明config_edits:CI、容器、构建、YAML 和 TOML 更改stats:变更量、子系统计数、超大代码块和仅格式调整的文件
空数组也是一种依据。应说明未检测到信号,而不是说 diff 肯定在范围内。
建议保留、拆分或说明理由
为 likely_creep 中的每一项给出一种处理方式:
- 保留:当该路径是实现所述意图所必需的,且两者关系直接明确时。用一句话说明关联。
- 拆分:当该项可以独立合并、属于另一个子系统,或引入了实现该意图并非必需的依赖项、API 重命名、配置更改或大型代码块时。指出后续更改应包含的文件或代码块。
- 说明理由:当跨领域更改无法安全拆分时。说明所需的不变量或构建约束,并指出审查风险。
证据含糊时,优先建议拆分。切勿声称零重合分数证明某个文件无关。路径词汇只是成本低且确定性的代理指标。
编写范围报告
采用以下简洁结构:
- 意图和 diff 来源
- 涉及的文件和子系统,以及新增和删除总数
- 范围内的更改
- 可能的范围蔓延及其信号依据
- 保留、拆分或说明理由的表格
- 后续更改的建议分组(如有)
注明文件路径和代码块标题。对于过大的混合代码块,说明脚本无法自动拆分,并描述最小的连贯更改。在执行任何拆分、还原、暂存或提交操作前,请先征求用户同意。
文件
scripts/scope_creep.py:确定性的统一 diff 解析器和分类器references/scope-signals.md:信号定义、阈值和限制