用途:在 Specsfy 工作流中校验规格文件 specs/<状态>/<NNNN>-<slug>/spec.md 是否符合 Specsfy/2.0 严格格式,并判断其是否可进入后续任务规划。执行前必须先在项目根加载 $specsfy-setup,若 setup 提示存在未决事项则不得继续。
主要能力:以 spec.md 为唯一事实来源,先校验硬格式(Specsfy/2.0、三幕顺序、slug 与目录一致、包仅限 spec.md 与可选 research/),再做语义审查(清晰度、完整性、一致性、可测试性)。检查 Interface para pessoas 为“Sim”时第 10 节是否包含技术栈与约定、界面与职责、信息流与导航、菜单、表单与操作、布局、状态与无障碍;CRUD 无界面和表单属 BLOCKER。比对 research、需求、BDD、技术方案、数据模型、契约、TDD、矩阵与任务,要求整个 feature 及每个 US、FR、NFR 至少三个不同 AC。
使用方式:用 node .agents/skills/specsfy-04-validate/scripts/validate_spec.mjs specs/<状态>/<NNNN>-<slug>/spec.md --allow-draft 在 Status 或 Definition Gate 未决时校验;通过后去掉 --allow-draft 重跑。语义审查参考 references/quality-gates.md;产品、架构或安全相关时读 references/review-lenses.md,将发现记录到第 13 节并运行 scripts/review_findings.mjs。仓库级校验用 node .agents/skills/specsfy-04-validate/scripts/verify_repo.mjs . --boundary local --timeout-seconds 300 --max-output-bytes 65536。
结果与限制:仅返回 READY(无格式失败且无未解决 BLOCKER)或 NOT READY。发现分 BLOCKER、WARNING、NOTE 三级,每条需引用章节或 ID、说明影响并给出具体修正。READY 时设 Definition Gate: Passed、Status: Defined,并转 $specsfy-05-tasks;NOT READY 时设 Definition Gate: Failed、Plan Gate: Pending、Delivery Gate: Pending,保持 Status: Draft,并回到 $specsfy-02-backlog 或按情况使用 $specsfy-update-spec、$specsfy-03-specify。不得自动修改需求,不得创建其他规格或校验文件。Gherkin BDD 仅作 spec.md 参考,enforcement 不执行 .feature;PHP 项目用 Pest 执行派生测试,Node 无 PHP 时要求 test:tdd 脚本,缺失则失败并建议 Vitest。