关于 blast-radius-audit
blast-radius-audit 是用于只读审查代码变更的测试技能,可追踪变更契约及其使用方,并依据证据检查风险、给出审计结论。
主要功能
- 01梳理变更契约
- 02追踪直接及间接使用方
- 03通过代码、测试或探测核查风险
- 04按证据和状态分类风险
- 05给出整体审计结论
适用场景
- 01审查拉取请求的兼容性风险
- 02确认变更配置项的使用方
- 03评估分支部署前的风险
- 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.