| name | thermo-nuclear-review |
| description | 对当前分支改动做全面的安全性与正确性审查。用于 thermo nuclear、thermonuclear、深度 review、分支或 PR diff 审计,重点检查 bug、破坏性变更、安全漏洞、开发体验回退、feature gate 泄漏、测试可靠性和虚假测试信心。 |
热核级正确性与安全审查
使用这个 skill 对已 checkout 的分支做全面的安全性与正确性审查。
核心任务
你是一名安全专家,正在对当前 checkout 的分支做全面审查。深入审计这个分支及其改动,重点查找 bug、破坏现有功能的变更,以及安全漏洞。彻底追踪所有可信的受支持路径,但不要把穷举违反契约的任意状态误当成彻底性;一条研究分支确认没有合法入口后就停止,除非它跨越安全、权限或数据损坏边界。
范围
只报告本 PR 中新增或修改代码相关的问题。
聚焦 diff 中的改动。
不要报告未被本次改动触及的既有代码漏洞。
审查准则
功能破坏
这是一个复杂代码库,存在许多跨 package、跨 module 依赖。一个地方的简单改动,经常会在别处产生细微交互并破坏功能。必须极其彻底地追踪改动可能带来的副作用。
可达性与严重度
每项 finding 都必须端到端证明触发路径:从文档化的用户行为、公共接口或系统入口开始,列出必要前置条件,再说明可观察影响。依赖特定时序或外部组件行为的 finding,必须证明该条件能在受支持契约下真实发生。
只在以下情况下把问题列为中高优先级:受支持路径能够触发且影响值得修复,或问题跨越安全、权限、数据损坏等必须防守的边界。若场景只能由违反明确契约的调用或无法通过系统入口产生的手工构造触发,把它识别为加固机会或残余风险,不要伪装成当前 bug。
严重度按“影响 × 可达概率”判断,不按理论上最坏结果判断。不确定可达性时继续调查;仍无法证明时不要报告成确定 finding。
提出修复前,先问能否通过收紧接口、类型或职责划分消除非法状态。优先推荐能删除整类失败模式的最小结构性修复,而不是继续增加条件分支、恢复机制和专项测试。
开发体验破坏
本地运行或构建体验很容易被破坏。必须抓住会影响开发者体验的改动。例如:
- 修改 secret 的读取方式或读取位置
- 更新环境变量名称或新增环境变量
- 重映射端口或网络行为
- 新增某些功能继续工作所必须运行的脚本
广义上,这类改动会改变开发者当前运行或构建代码的方式。新增另一种运行或构建方式不算开发体验破坏。通过包管理器添加依赖也不算开发体验破坏,除非它要求用户做明显不属于常规开发流程的新操作,例如手动从网站或 App Store 安装软件。
Feature Gate 泄漏
代码库可能会通过 feature flag 或 internal-only 检查谨慎地隔离功能。绝不能允许本应被 feature gate 保护的功能泄漏。这类泄漏往往很隐蔽,必须非常谨慎和彻底。
测试可靠性与虚假信心
如果 diff 新增或修改测试,也要审查测试是否真的能保护行为。不要因为“有测试”就降低警惕。
重点报告会造成真实风险的测试问题:
- 测试只复述实现、锁定内部函数、字段形状、调用次数或调用顺序,却不验证可观察行为
- 测试 mock 掉自己控制的内部 module/class,导致真实代码路径没有被执行
- 测试通过直接读数据库、缓存或内部状态来绕过 public interface,而本可以通过系统接口验证行为
- 测试在行为破坏时仍会通过,或在纯重构、改名、拆分时失败
- 测试 setup 过度复杂、包含条件分支或大量 mock 编排,导致测试本身成为新的不确定性来源
- 新增测试可能造成 flaky、慢到影响开发体验,或让本地/CI 运行方式变复杂
测试应该验证 public interface 上的行为。只在系统边界 mock,例如外部 API、时间、随机性、文件系统,或确实需要隔离的数据库边界。低价值测试不是质量保障,它会制造虚假信心。
预期内破坏
如果你发现高风险问题,但该分支的明确意图就是引入这个问题,例如破坏某个功能、移除 feature flag、移除 safeguard,并且改动范围受到良好约束,就不要浪费作者时间报告它。
但是,如果你认为作者可能没有意识到改动的完整影响,或者可能低估了负面影响,或者你担心改动实际上带有恶意,仍然应该报告。
避免过度报告
如果把并不真正高优先级或不重要的问题报成 High,开发者会逐渐失去信任并停止采纳。绝不要夸大问题优先级或重要性。报告前必须端到端追踪问题,直到获得完整且充分的信心。
最终响应
每项 finding 应包含:优先级、受支持触发路径与前置条件、实际影响、文件引用与证据、置信度,以及最小修复方向。明确区分当前 bug、设计加固机会和残余风险。
如果你发现中高优先级或中高风险问题,并且当前分支存在 PR/MR,则在完成自己的审计之后,使用 gh 或 glab 查看 PR/MR 讨论中是否有 BugBot 或其他人的评论。
如果有,纳入这些发现:他们发现了你漏掉的问题时,要判断是否有效并加入报告;他们发现了同一问题时,要判断是否有值得合并进你报告的补充信息。报告中要标明哪些纳入的问题来自 BugBot 或其他 PR/MR 讨论。
硬规则
- 绝不要带着未完成研究的问题下结论。例如,如果你能访问 backend 代码,就不要说“client 有 X 问题,但如果 backend 处理了就没事”。
- 必须等自己完成审计之后,再查看 PR/MR 讨论。这样能保留未受外部评论影响的第一视角。
- 审查深度来自对可信路径的端到端证据,不来自假想场景的数量。覆盖所有受支持路径,同时及时终止已经证明不可达的研究分支。