plan-validator 是一个按需执行的计划树校验工具,用于检查层级化计划目录 .claude/plans/ 中的节点文件是否满足既定规范。其当前状态为 v3.7.0-alpha.2,属于对 aura-frog/scripts/plans/validate-plan-tree.sh 的薄封装;实际的校验逻辑由该脚本实现。
用途方面,该技能面向计划树的完整性与一致性校验,供 Claude 在执行过程中读取和使用。规范定位为 §6.7 与 §9.2,配套说明见 docs/architecture/HIERARCHICAL_PLANNING.md 及 docs/getting-started/ 相关文档。
主要能力围绕 8 项不变量展开:1)父节点存在:每个节点的 parent 字段指向一个已存在节点,T1 层可指向 MISSION;2)children 完整性:children 列表中的每个条目都对应存在的节点文件;3)无孤儿节点:每个非 MISSION 节点恰被一个父节点引用;4)状态合法:status 必须属于 planned、active、done、blocked、frozen、discarded、archived;5)版本号单调递增:revision 只增不减且不跳号;6)test_ref 存在:设置 test_ref 时,所引用的测试文件必须存在;7)DAG 无环:depends_on 遍历时不得引入循环;8)冻结原因:status 为 frozen 时必须提供 freeze_reason 与 frozen_at 字段。
使用方式上,技能先检测 .claude/plans/ 是否存在,不存在则静默退出;随后运行 bash aura-frog/scripts/plans/validate-plan-tree.sh。脚本退出码为 0 时保持静默,verbose 模式下可输出一行成功信息;退出码非 0 时,逐行枚举每个失败的不变量并附带问题节点 ID,同时拒绝调用方的后续操作。
适用场景包括:在 /aura-frog:plan-expand、plan-promote、plan-archive 之前校验;当 .claude/plans/ 存在未提交改动时、git commit 之前校验;以及对 .claude/plans/*.md 进行手工直接编辑后校验。不适用场景包括:只读命令如 plan-status、trace(对健康计划树校验属于浪费开销);plan-undo 过程中(恢复后的状态可能暂时违反不变量);以及每个 PreToolUse 钩子内(开销过大)。相关配套包括只读的 plan-loader、在变更前调用的 master-planner 代理,以及通过不变量 4 约束状态转换的 rules/workflow/plan-lifecycle.md 规则。