用途
review-hamster 用于在功能分支上做发布前的代码审查,以偏执的安全视角审视改动,只标记真实问题而非风格偏好。它强调假设所有输入都是恶意的、每个边界都是攻击面、每个捷径都藏着 bug。
主要能力
审查分两轮进行:
- 第一轮 CRITICAL(阻塞发布):SQL 与数据安全(查询中的字符串插值、TOCTOU 竞态、绕过校验、N+1 查询);竞态条件与并发(无约束的读-检查-写、缺少唯一索引、非原子的状态转换、原始 HTML 导致 XSS);认证与信任边界(未校验的 LLM 生成值、未净化的外部输入、权限提升路径);枚举与取值完整性(新枚举值需追溯到所有消费方,检查允许列表、switch/case 链、序列化边界);密钥与凭据安全(硬编码密钥、日志中的令牌、错误信息中的凭据)。
- 第二轮 INFORMATIONAL(建议性):条件副作用(静默跳过副作用的支路、误导性日志);魔法数字与字符串耦合(多文件中的裸字面量、把错误字符串当标识符);死代码与一致性(未使用的变量/导入、过时注释、版本不匹配);测试缺口(缺少负路径测试、不检查副作用的断言、无集成测试的安全约束);边界处的类型转换(跨语言类型变化如 JSON 序列化、API 边界缺少类型守卫);时间与日期安全(时区假设、假设「今天」为 24 小时的日期键查询、不匹配的时间窗口)。
明确不标记:无害的冗余、diff 中已可见的已处理问题、无正确性影响的风格偏好、明显有意的阈值/常量值。
使用方式
运行前提:项目需存在 .hamster/ 目录(用于确认是 hamster 管理的项目)。流程如下:
- 验证环境:检查 .hamster/ 目录是否存在,缺失则退出。
- 识别基础分支:通过 gh 读取仓库默认分支,失败时回退为 main。
- 分支检查:若当前位于基础分支,提示「无可审查内容,请先切换到功能分支」并停止。
- 收集差异:git fetch 基础分支后执行 git diff origin/<base>...HEAD,同时获取 --stat 与 --name-only 摘要;若无差异则报告「无改动可审查」并退出;随后完整阅读每个改动文件以理解 diff 之外的上下文。
- 两轮审查,按上述类别逐行检查改动。
- 输出格式:Pre-Landing Review: N issues(X critical, Y informational),CRITICAL 与 INFORMATIONAL 分别以 [file:line] 列出问题描述和具体修复建议;无问题时输出「Clean… Ship it」。
- CRITICAL 问题交互处理:逐个询问用户选择——A 立即修复(描述推荐修复方式)、B 承认风险仍发布、C 标记误报(说明理由并移出列表)。选择修复时编辑文件、验证不引入新问题,然后处理下一个。
- 最终判定:若仍有未修复的 CRITICAL(用户选择照常发布),给出 BLOCK 并注明数量;若所有 CRITICAL 已解决或标为误报、仅剩提示性问题,给出 APPROVE 并注明建议数量;完全无问题则为 APPROVE — Clean review。
适用场景
适合 hamster 管理的项目在功能分支上、发布前使用,以尽早发现阻塞性问题;也可独立地在任意功能分支上运行。由于命令只读、不做提交或任何 git 写操作,可在修复迭代中反复运行。审查聚焦 diff,不追究未改动代码中的既有问题。
限制与注意事项
必须存在 .hamster/ 目录,否则无法运行;需在 git 仓库中且不在基础分支上,否则没有可审查内容;无差异时直接退出。gh CLI 不可用时回退到硬编码的 main 作为默认分支;git fetch 失败时改用本地差异继续。资料未提供该技能的安装命令、收费方式或支持平台信息。