Assumptions Skill:把代码 Diff 变成可审查的隐藏假设清单
Assumptions Skill:把代码 Diff 变成可审查的隐藏假设清单
大多数线上故障并非源于明显写错的代码,而是代码无声地假设了某些前提为真——”这个请求只会被处理一次””迁移先于 Worker 部署””那个 API 字段永远不会缺失””事件总是按顺序到达””当前用户拥有这条记录”。这些隐式假设不写在代码注释里,不出现在 PR 描述中,却恰恰是生产事故的根源。Assumptions Skill 正是为解决这一问题而生——它要求 AI 在审查代码 Diff 时回答一个核心问题:“这个改动要满足哪些前提条件,才能在生产环境不出问题?” 并将答案组织成一份结构化的假设清单,包含证据、风险评级、 falsification 测试和推荐的控制措施。
功能与原则
Assumptions 的核心能力是将无结构的生产风险审查转化为标准化的”假设账本”(Assumption Ledger)。每个假设条目包含:假设本身(表述为条件句)、代码库中的证据(含文件/行号定位)、假设失效时的影响、状态评级(Protected / Partially protected / Unprotected / Unknown)、最快验证方式(falsification test)、推荐控制措施,以及证据置信度标签和发布优先级(P0-P3)。
设计原则强调可审查性:不是给一段自由文本让 AI 自由发挥,而是强制模型按固定格式输出,每个风险点都必须有具体文件/行号,必须说明状态评级依据,必须指出无法检查的范围,而非承诺在固定工时内覆盖所有问题。
认可度
- GitHub Star:⭐ 19(截至 2026-09-07)
- 创建时间:2026-07-25
- 技术栈:TypeScript 80.2% + Python 14.7% + Shell 5.2%
- 最新更新:2026-08-24
- 定位:出现在 GitHub Trending 监控列表(linny006/trending-claude-skills),Claude Code 生态内的垂直代码审查 Skill
- 作者背景:Teycir Ben Soltane,资深工程师(2006 年起从业),同时维护 BurpAPISecuritySuite(73 ⭐)等安全工具,GitHub Followers 47
链接
GitHub:https://github.com/Teycir/Assumptions
原作者
Teycir Ben Soltane(GitHub @Teycir),独立安全/开发工具开发者,同时活跃于 API 安全测试(BurpAPISecuritySuite)和 AI Agent Skill 方向。
介绍
Assumptions 是一个 Claude Code(也支持 Cursor、Codex、OpenCode 等主流 AI 编码助手)的代码审查 Skill,以 SKILL.md 单文件分发,无需构建、无需依赖、无服务器、也无须注册账号。安装方式极为轻量:创建 .claude/skills/assumptions/ 目录,将 SKILL.md 复制进去即可。
使用流程围绕”触发 → 范围界定 → 证据审查 → 假设账本输出”四个阶段展开。审查会分析 Diff 中的高风险路径,涵盖:认证与权限范围(租户隔离、RLS 检查)、幂等性与并发请求(重复支付、重试竞争)、数据库迁移(Schema 变更与部署顺序)、消息队列(事件重投与乱序)等维度。分析完成后,每个假设都有具体的状态评级,reviewer 可以直接看到”哪些路径已有代码保护””哪些路径只有部分防护””哪些路径完全未覆盖”,以及为什么某些路径被标记为”Unknown”(超出范围或无法检查)。
特点
- 无依赖单文件安装:SKILL.md 即全部,无需 npm install 或服务器
- 结构化假设账本:每个假设条目包含 7 个标准字段,输出格式统一,reviewer 无需猜测 AI 在说什么
- 证据溯源:假设必须附带代码库内的文件/行号引用,而非泛泛而谈
- 明确的 Unknown 声明:主动标注”无法检查”的范围,避免虚假全覆盖感
- 多模式支持:支持
--deploy(部署前)、--concurrency(并发风险)、--failure(故障注入)、--tests(已有测试审查)、--compact(精简输出)等多种调用方式
使用方法
安装步骤:
mkdir -p .claude/skills/assumptions
cp SKILL.md .claude/skills/assumptions/SKILL.md
基本调用:
在 Claude Code(或其他兼容 Agent)的对话窗口中输入:
Use Assumptions to review the current diff.
Agent 将自动加载 Skill 规范,对当前 git diff 进行分析,输出假设账本。
指定模式示例:
Use Assumptions to review the current diff with --deploy flag.
使用场景与人群
适用场景:
– 代码审查阶段作为第二 reviewer,对 AI 生成改动进行深度风险确认
– PR 合并前检查高风险路径(支付、权限、迁移、消息队列)
– 安全/架构review,作为传统 Linters 的补充
– 团队建立代码风险文化——用统一的假设格式沉淀审查知识
目标用户:
– 使用 Claude Code / Cursor / Codex 进行日常开发的工程师
– 需要在 AI 辅助编码后保持人类判断力的技术团队
– 关注生产环境稳定性的 DevOps / SRE 工程师
– 安全意识强的后端/全栈开发者
输入与输出案例
示例 1:重复支付风险(输入)
Agent 接收到一个支付处理模块的 Diff,新增了重试逻辑。
Assumptions 输出(核心条目):
| 假设 | 证据 | 状态 | 失效影响 | Falsification 测试 |
|---|---|---|---|---|
| 支付请求在幂等键保护下只处理一次 | PaymentService.php:142 使用 idempotency_key,processOnce() 有锁保护 |
Protected | 无保护时重复扣款 | 并发发送相同 idempotency_key 两个请求,验证只扣一次 |
| 迁移脚本在 Worker 启动前完成 | .migrations/v12_retry.sql 无 pre-deployment-check 钩子 |
Unprotected | Worker 读旧 Schema 崩溃 | 人工确认部署顺序,或加 DB 锁 |
| 退款请求只能由持卡人发起 | RefundController.php 无 ownership check |
Partially protected | 攻击者构造退款 | 发送非本人 payment_id,验证 403 |
示例 2:跨租户访问(输入)
一个 API 改动了数据查询逻辑,新增了根据 account_id 过滤的条件。
Assumptions 输出(核心条目):
| 假设 | 证据 | 状态 |
|---|---|---|
| 查询结果只返回当前租户数据 | query.php:88 已有 WHERE account_id = :current_user.account_id |
Protected |
current_user 在所有代码路径中正确设置 |
未找到 middleware 强制注入 account_id 到请求上下文 |
Unknown |
通过这种方式,reviewer 可以快速定位”这个改动到底在哪些地方有防护、哪些地方裸奔”,而不是读完一段自由文本风险评估之后仍然心里没底。
评论区
登录后可评论。