关于 pre-landing-review
Pre-Landing Review 是一项在代码变更合入前按清单进行安全审查的技能。它区分阻塞性问题与建议项;默认只读,只有明确要求时才修复严重问题。
主要功能
- 01按安全清单审查代码差异
- 02分类严重问题与提示项
- 03判定合入状态为通过或阻塞
- 04提供含文件和行号的问题记录
- 05仅在获准时修复严重问题
适用场景
- 01合入前审查功能分支
- 02判断严重风险是否阻止变更
- 03检查测试缺口和其他建议事项
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mathews-tom/ armory --skill pre-landing-review安装后在 Claude Code 中输入/pre-landing-review确认已加载。
附带文件evals/cases.yamlreferences/checklist.md
详细介绍
合并前审查
针对合并前代码变更的门禁导向安全审计。使用结构化清单,通过两轮严重性分流和阻塞/非阻塞分类进行审查。
与 pr-review 不同:pr-review 是多维度代码质量审查。本技能是门禁导向安全审计——使用外部清单,通过两轮严重性分流和阻塞/非阻塞分类进行审查。
**原生替代方案:**Claude Code 的
/ultrareview会启动专门的原生审查会话,专门用于查找漏洞(Anthropic 在 Opus 4.7 发布时为 Pro/Max 套餐用户每月提供三次免费使用)。使用本技能进行清单驱动、门禁导向的阻塞分类,并遵循有记录的分流流程;使用/ultrareview对单个变更进行轻量级漏洞排查。
工作流
1. 确定差异
确定要审查的变更:
- 如果当前位于功能分支:与默认分支进行比较(
git symbolic-ref refs/remotes/origin/HEAD) - 如果提供了 PR 编号:获取该 PR 的差异
- 如果提供了特定文件:审查这些文件
2. 加载清单
阅读 references/checklist.md。这是必需步骤——如果无法读取清单,请停止并报告错误。
3. 第一轮 — CRITICAL(阻塞)
根据关键安全类别审查差异。这些问题可能阻止代码发布。
SQL 与数据安全
- 未使用参数化查询的原始 SQL
- 未确保迁移安全性的架构变更(锁超时、可逆性)
- 未核实 WHERE 子句的批量更新/删除
- 绕过模型验证/回调的直接列更新
竞态条件与并发
- 未加锁的先读后写
- 依赖唯一约束,但数据库层未强制执行
- 未同步的共享可变状态
- 队列/后台任务的幂等性
信任边界
- 未经清理便将 LLM/AI 输出用于 SQL、shell 命令或渲染后的 HTML
- 未经验证便将用户输入用于特权操作
- 未进行架构验证便使用外部 API 响应
- 对不可信数据进行反序列化
对于每项 CRITICAL 发现:
- 指明确切的文件和行号
- 说明具体风险
- 使用
AskUserQuestion,并且选项恰好为三个:立即修复 / 确认风险 / 误报 - 如果选择“立即修复”:进行修复,然后重新检查
- 如果选择“确认风险”:记录确认信息,然后继续
- 如果选择“误报”:记录,然后继续
4. 第二轮 — INFORMATIONAL(非阻塞)
根据其余类别进行审查:
条件副作用 — 隐藏在条件分支中的副作用、由状态变更触发的回调、静默吞掉失败的错误处理器。
魔法数字 — 未作说明的数字字面量、未定义为常量的硬编码阈值、缺少依据的超时值。
死代码 — 无法到达的分支、未使用的导入、未作说明的注释掉的代码。
测试缺口 — 新代码路径没有测试覆盖、行为变更后未更新测试、缺少边界情况和错误路径测试。
加密与熵 — 在安全场景中使用弱随机源、硬编码密钥、敏感数据传输时缺少 TLS/加密。
时间窗口安全 — 未考虑时区的比较、夏令时边界情况、未考虑时钟偏差的 cron 表达式。
类型强制转换 — 可能造成数据丢失的隐式类型转换、跨边界时的数字精度损失、I/O 边界处的隐式字符串编码。
在单个汇总表中列出所有 INFORMATIONAL 发现(文件、行号、类别、描述)。
5. 门禁分类
- 第一轮所有问题均已解决(已修复或已确认)→ 可以合并
- 第一轮仍有未解决的问题 → 阻止合并
- 第二轮问题仅供参考——不会阻止合并
6. 抑制项
不要标记以下内容:
- 使用测试固件/工厂的测试文件
- 遵循框架惯例的迁移文件
- 说明某种模式为何是有意采用的注释
- 包含已记录值的配置文件
- 类型存根或接口定义
输出
Gate 判定(CLEAR TO LAND / BLOCKED)、关键问题摘要及解决状态、信息性发现表。
此技能默认只读——仅当用户明确选择针对关键问题的“立即修复”时才会修改代码。