mcpField
S
scope-creep-detector

scope-creep-detector

github.com/shubhamsaboo测试与质量143.3k617 次安装1 周前更新
代码仓库

关于 scope-creep-detector

scope-creep-detector 是一个本地 Skill,用于将 Git diff 与声明的意图对照,识别范围扩大的迹象。它提供保留、拆分或说明理由的判断依据,不会更改仓库。

主要功能

  1. 01分析工作区、暂存区和分支 diff
  2. 02支持保存的 diff 或标准输入
  3. 03标记依赖项、API 重命名和配置修改
  4. 04报告变更量与子系统信号
  5. 05不修改仓库状态

适用场景

  1. 01核对 Pull Request diff 是否符合意图
  2. 02评估 Bug 修复是否涉及过多内容
  3. 03为混合变更制定拆分方案
  4. 04提交前审查暂存区变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shubhamsaboo/awesome-llm-apps --skill scope-creep-detector

安装后在 Claude Code 中输入/scope-creep-detector确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
scope-signals.md
scripts/
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 中的每一项给出一种处理方式:

  1. 保留:当该路径是实现所述意图所必需的,且两者关系直接明确时。用一句话说明关联。
  2. 拆分:当该项可以独立合并、属于另一个子系统,或引入了实现该意图并非必需的依赖项、API 重命名、配置更改或大型代码块时。指出后续更改应包含的文件或代码块。
  3. 说明理由:当跨领域更改无法安全拆分时。说明所需的不变量或构建约束,并指出审查风险。

证据含糊时,优先建议拆分。切勿声称零重合分数证明某个文件无关。路径词汇只是成本低且确定性的代理指标。

编写范围报告

采用以下简洁结构:

  1. 意图和 diff 来源
  2. 涉及的文件和子系统,以及新增和删除总数
  3. 范围内的更改
  4. 可能的范围蔓延及其信号依据
  5. 保留、拆分或说明理由的表格
  6. 后续更改的建议分组(如有)

注明文件路径和代码块标题。对于过大的混合代码块,说明脚本无法自动拆分,并描述最小的连贯更改。在执行任何拆分、还原、暂存或提交操作前,请先征求用户同意。

文件

  • scripts/scope_creep.py:确定性的统一 diff 解析器和分类器
  • references/scope-signals.md:信号定义、阈值和限制

评论

支持 Markdown