用途
grill 是一个关键代码审查与质量拷问技能,用于在增量(increment)完成前对代码实现进行压力测试。它的定位是“严苛的高级工程师”,目标是在用户发现问题之前先把问题找出来。它不是用来验证实现,而是用来挑战实现。
该技能在 /sw:done 之前是强制性的,必须在关闭任何增量之前调用。适用场景包括:完成功能、在标记增量完成之前;验证实现质量、发现隐藏问题;对边界情况做压力测试;安全审查、在攻击者之前发现漏洞;性能检查、定位瓶颈与低效之处。
主要能力
grill 采用一套“拷问流程”,分为多个阶段:
-
上下文收集:读取 .specweave/increments/{id}/spec.md(本应构建什么)、tasks.md(实际做了什么)、plan.md(架构决策),并通过 git diff --name-only $(git merge-base HEAD main)..HEAD 找出所有修改过的文件。
-
代码拷问:对每个重要改动文件,从四个维度提问:
- 正确性:是否满足验收标准;null/undefined 输入会怎样;边界值(0、-1、MAX_INT)会怎样;错误情况是否处理还是静默失败;是否存在可能引发竞态条件的状态变更。
- 安全:用户输入能否到达此代码、是否被清理;密钥/凭据是否妥善保护;身份认证/授权是否检查正确;是否可被注入(SQL、XSS、命令)利用;是否存在 OWASP Top 10 漏洞。
- 性能:时间复杂度如何、在生产规模下是否可接受;是否存在 N+1 查询;循环中是否有不必要的内存分配;是否会阻塞事件循环/主线程;大数据集是否用分页/流式处理。
- 可维护性:新团队成员能否看懂;是否有魔法数字或硬编码值;错误处理是否与代码库一致;是否有明显代码坏味道(上帝函数、深层嵌套)。
-
问题分类:将发现的问题按严重程度分为 BLOCKER(生产会崩,必须修复后才能关闭)、CRITICAL(安全/数据风险,必须修复后才能关闭)、MAJOR(显著功能缺口,应在关闭前修复)、MINOR(代码质量/风格,可在后续修复)、SUGGESTION(改进机会,可选)。
使用方式
调用时可指定聚焦领域,用法为 /sw:grill 0042 或 /sw:grill 0042 security。聚焦领域包括:security(OWASP Top 10、认证/授权、输入验证、密钥)、performance(时间复杂度、内存使用、N+1 查询、阻塞操作)、edge-cases(null 处理、边界、竞态条件、错误路径)、correctness(验收标准满足度、业务逻辑、数据完整性)、all(默认,以上全部)。
技能会输出一份 GRILL REPORT,包含:审查范围(已检查文件数、改动行数、已验证 AC 数/总数)、逐条问题(严重程度、标题、文件与行号、类别、问题描述、证据代码片段、风险、修复建议)、汇总统计表,以及最终结论 PASS 或 FAIL。PASS 时提示代码通过拷问、可运行 /sw:done;FAIL 时提示代码未通过拷问、需先修复 BLOCKER/CRITICAL 问题,并给出阻塞问题清单,修复后重新运行 /sw:grill {increment-id} {focus-area}。
当拷问通过时,技能会创建标记文件(写入 .specweave/state/.sw-grill-passed-{increment-id}),该标记文件由 /sw:done 检查。与 /sw:done 的集成流程为:开发者完成所有任务;运行 /sw:grill {increment-id};若 FAIL 则修复问题并重新运行;若 PASS 则创建标记文件;运行 /sw:done {increment-id};/sw:done 检查标记文件;若缺失则被阻止并提示先运行 grill;若存在则关闭增量。
常见问题类型
安全方面:字符串拼接导致的 SQL 注入、未转义用户内容导致的 XSS、路由缺少认证检查、代码或日志中的密钥、弱加密选择。性能方面:在增长数据集上的 O(n²) 算法、异步环境中的同步 I/O、未关闭资源导致的内存泄漏、列表端点缺少分页、循环中的昂贵操作。正确性方面:差一错误、潜在的空指针异常、状态更新中的竞态条件、输入缺少验证、掩盖 bug 的静默失败。可维护性方面:函数职责过多、深层回调/promise 嵌套、无常量的魔法数字、不一致的错误处理、缺少类型标注。
适用场景与限制
grill 适用于采用 specweave 增量工作流的项目,作为 /sw:done 之前的强制质量门禁。它围绕 .specweave/increments 目录结构与 /sw:grill、/sw:done 命令集成,并会检查项目专属学习记录(.specweave/skill-memories/grill.md),学习记录由反思系统在开发过程中识别纠正或模式时自动捕获。
资料中未提供关于收费、价格、安装命令、支持平台或其他集成方式的明确信息。