mcpField
B
blast-radius-audit

blast-radius-audit

github.com/marcellocurto测试与质量363 次安装1 天前更新
代码仓库

关于 blast-radius-audit

blast-radius-audit 是用于只读审查代码变更的测试技能,可追踪变更契约及其使用方,并依据证据检查风险、给出审计结论。

主要功能

  1. 01梳理变更契约
  2. 02追踪直接及间接使用方
  3. 03通过代码、测试或探测核查风险
  4. 04按证据和状态分类风险
  5. 05给出整体审计结论

适用场景

  1. 01审查拉取请求的兼容性风险
  2. 02确认变更配置项的使用方
  3. 03评估分支部署前的风险
  4. 04审计编辑文件之外的调用影响

安装

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

$npx skills add https://github.com/marcellocurto/skills --skill blast-radius-audit

安装后在 Claude Code 中输入/blast-radius-audit确认已加载。

详细介绍

影响范围审计

找出一项更改可能如何影响已编辑文件之外的行为,并核实其安全性所依赖的事实。

这是一次审计。除非用户另行要求,否则不要编辑仓库文件、添加永久测试、应用修复、提交更改,也不要触及生产环境或外部系统。只读检查和可撤销的本地命令可以执行。将临时探测文件放在工作树之外,并确保它们仍能导入已检出的代码;完成后将其删除。

1. 列出更改涉及的契约

审计用户指定的拉取请求、分支、提交或工作区更改。如果用户未指定,则审计当前分支相对于默认分支的差异,以及未提交的更改。记录基准提交、头部提交和合并基点,并阅读 git diff <merge-base>..<head>,以排除仅存在于基准分支中的提交。

阅读完整差异、提交说明、相关测试和仓库说明。然后列出更改影响的每一项契约,包括那些从已编辑行中不容易看出的契约:

  • 函数和类型签名、返回结构、抛出的错误,以及调用方会据此匹配的错误消息
  • 存储的数据:数据库列、序列化格式、缓存键、事件、文件和导出内容
  • 外部接口:HTTP 或 RPC 响应、CLI 输出和标志,以及公开的包导出
  • 配置键、环境变量、功能标志和默认值
  • 时序:操作顺序、重试、事务、启动和关闭,以及稍后运行或重复运行的任务
  • 被移动、放宽或移除的权限检查、验证和其他检查
  • 热路径上的成本:查询次数、负载大小,以及遍历大型集合的循环

2. 查找使用方

针对每项更改涉及的契约,查找依赖它的内容。按符号名称和字面值搜索,例如列名、事件名、配置键或路由路径,因为许多使用方会通过字符串引用契约。不要只查直接调用方:还要检查生成的代码、依赖注入、插件、反射、迁移、固定数据、脚本、文档、其他服务和代码仓库,以及发布过程中仍在运行的旧版本。

搜索没有结果,并不能证明某项契约无人使用。请说明搜索了哪些位置。

如果结论取决于某个库或运行时的行为,请核实已安装的版本,并检查其代码或文档。

3. 检查每项风险

风险必须存在从更改到使用方的合理路径。不要列出没有这类路径的疑虑。

对于每项风险,说明更改要安全必须满足什么条件,并用成本最低且可靠的方式核实:阅读代码或已记录的契约、追踪执行路径、运行现有测试,或运行临时探测。探测必须使用真实代码和依赖版本;如果假设不成立,必须明确失败。针对模拟对象的探测无法证明已发布路径的行为。不要重复运行已有检查来重复证明已证实的结论。

为每项风险指定一种状态:

  • 已确认: 可能发生故障。说明发生条件,以及是否已复现或通过阅读代码确认。
  • 未解决: 某项具体缺失的信息使你无法确认或排除风险。指出缺失信息,以及可用于查明该信息的检查。
  • 已排除: 有证据表明,在本次审计的情形下,故障不可能发生。

4. 报告

选择结论,按以下顺序采用第一个符合的选项:

  • 存在重大风险:存在已确认的风险,且会影响用户、数据、兼容性、性能或运行。
  • 尚未核实:存在尚未解决的风险,且该风险可能造成重大影响。
  • 风险可控:其余所有风险均已排除,或已确认影响轻微。此结论仅涵盖你检查过的内容。

使用以下格式;没有内容的部分请省略:

**Verdict:** Material risk | Unverified | Contained, with one sentence on why.

**Changed contracts:** the contracts from step 1 that have consumers outside the diff.

**Risks**, confirmed and unresolved, most severe first:

- **Status: what breaks.** The conditions, who is affected, and the evidence. The next check or fix direction, plus detection and rollback when they matter.

**Ruled out:** only concerns a reviewer would likely raise, each with its evidence in one line.

**Before merge:** checks or decisions still needed.

评论

支持 Markdown