mcpField
P
pre-landing-review

pre-landing-review

github.com/mathews-tom测试与质量33788 次安装2 天前更新
代码仓库

关于 pre-landing-review

Pre-Landing Review 是一项在代码变更合入前按清单进行安全审查的技能。它区分阻塞性问题与建议项;默认只读,只有明确要求时才修复严重问题。

主要功能

  1. 01按安全清单审查代码差异
  2. 02分类严重问题与提示项
  3. 03判定合入状态为通过或阻塞
  4. 04提供含文件和行号的问题记录
  5. 05仅在获准时修复严重问题

适用场景

  1. 01合入前审查功能分支
  2. 02判断严重风险是否阻止变更
  3. 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 发现:

  1. 指明确切的文件和行号
  2. 说明具体风险
  3. 使用 AskUserQuestion,并且选项恰好为三个:立即修复 / 确认风险 / 误报
  4. 如果选择“立即修复”:进行修复,然后重新检查
  5. 如果选择“确认风险”:记录确认信息,然后继续
  6. 如果选择“误报”:记录,然后继续
4. 第二轮 — INFORMATIONAL(非阻塞)

根据其余类别进行审查:

条件副作用 — 隐藏在条件分支中的副作用、由状态变更触发的回调、静默吞掉失败的错误处理器。

魔法数字 — 未作说明的数字字面量、未定义为常量的硬编码阈值、缺少依据的超时值。

死代码 — 无法到达的分支、未使用的导入、未作说明的注释掉的代码。

测试缺口 — 新代码路径没有测试覆盖、行为变更后未更新测试、缺少边界情况和错误路径测试。

加密与熵 — 在安全场景中使用弱随机源、硬编码密钥、敏感数据传输时缺少 TLS/加密。

时间窗口安全 — 未考虑时区的比较、夏令时边界情况、未考虑时钟偏差的 cron 表达式。

类型强制转换 — 可能造成数据丢失的隐式类型转换、跨边界时的数字精度损失、I/O 边界处的隐式字符串编码。

在单个汇总表中列出所有 INFORMATIONAL 发现(文件、行号、类别、描述)。

5. 门禁分类
  • 第一轮所有问题均已解决(已修复或已确认)→ 可以合并
  • 第一轮仍有未解决的问题 → 阻止合并
  • 第二轮问题仅供参考——不会阻止合并
6. 抑制项

不要标记以下内容:

  • 使用测试固件/工厂的测试文件
  • 遵循框架惯例的迁移文件
  • 说明某种模式为何是有意采用的注释
  • 包含已记录值的配置文件
  • 类型存根或接口定义

输出

Gate 判定(CLEAR TO LAND / BLOCKED)、关键问题摘要及解决状态、信息性发现表。

此技能默认只读——仅当用户明确选择针对关键问题的“立即修复”时才会修改代码。

评论

支持 Markdown