用途
verified-planning 用于创建或审阅实施计划、设计计划。它要解决的是计划评审流于形式的问题:作者凭记忆写“第 1 遍/第 2 遍”自查,往往什么也发现不了,因为作者看不见自己的错误假设。该技能用两个强制环节替代这种仪式化评审。
计划存放位置
开发计划放在所属仓库的 plans/ 目录下,按该仓库的命名约定命名(PLAN-NNN_slug.md),不放 docs/superpowers/,也不放在自身没有开发的聚合/伞形仓库中。该约定优先于任何通用计划技能的默认位置。
主要能力
1. 带主张台账起草
计划中每个承重主张——文件路径、函数/方法签名、字段或键名、事件/枚举值,或行为断言(如“验证器 X 忽略未知键”)——都要进入 ## Claim ledger 表,并附上实际打开阅读过的 file:line。未能核实的主张在引文列写 UNVERIFIED,不能进入 ready 状态。源码无法回答的主张写 PROBE: <命令>。探针不是免检通行证:校验要求给出能真正终结该主张的命令,并且主张文本要指明它阻塞哪个阶段。两条经验规则:命令必须终结争议(若主张是“X 允许 Y”,命令就必须实际尝试 Y);探针要在一次性环境中运行,而非你关心的仓库。
符号是权威依据,行号只是提示:后续编辑导致行号漂移时校验仍通过(仅警告行号漂移),只有符号确实不存在才算失败。可用 check_plan.py --fix <plan> 自动重新指向漂移的行号。
1.1 平台技术栈验证与安全不变量
涉及软件依赖、架构组件、运行时、数据库或工具链的计划,须对照权威平台技术栈规范进行验证:组件须与已批准技术栈对齐;不得提出不安全选项(放宽沙箱、明文密钥、未加密传输、弱化权限、绕过验证等);所需工具在技术栈清单中缺失时,作者不得自行猜测或选用任意包,必须暂停并告知操作者,自主会话中须在仓库提交 GitHub issue 说明缺失的工具需求;涉及真实部署、基础设施变更、容器运行时配置或技术选型的工作,应在仓库提交 issue,而非做未经验证的本地假设。
2. 运行校验门
python3 .agents/skills/verified-planning/check_plan.py <plan>
校验脚本放在技能目录内,以便 plan-gate.yml 和 pre-commit 钩子在检出环境中运行。成功时打印 ok <plan> — verified N citation(s), M review pass(es)。它检查形式与引文解析,无法检查评审是否真正独立、台账是否完整。应在派发独立评审前运行,并在任何编辑计划的折叠后重跑。新建计划可用 check_plan.py --init <plan> 追加 ## Claim ledger 与 ## Review log 两节(幂等)。引文路径相对于计划所在仓库根目录(最近的 .git 祖先);跨仓库引文可加 --root <dir>,先按计划所在仓库解析,再依次按各 --root 解析。
3. 强制独立评审
校验通过后,派发全新上下文、只读的子代理作为独立评审者;作者自己重读不算。若没有专用评审代理类型,退回使用通用的全新上下文子代理。评审者不重复验证符号是否存在(校验已证明),其职责是脚本做不到的三件事:语义真实性(引用的符号在上下文中是否确实表达了主张所说的意思)、完整性(台账是否漏掉承重主张)、错误假设(对抗性搜寻作者看不见的问题)。
结果记录为 ### Pass N - <date> - independent(使用回退时加 - fallback)。折叠发现后重新派发,直到某一轮返回零个承重发现,最多 3 轮;若第 3 轮仍有承重发现,应停止并向人上报未决项,而不是派发第 4 轮。
3.1 折叠纪律
折叠本身会写新文字,新文字就是新的评审面。实测:23 个计划的中位 ready 轮次为 4.5,12 个中只有 5 个在 3 轮上限内完成。因此默认做减法:删除、收窄主张或砍掉阶段是免费的;新增主张需要自己的引文和 NEW@passN 标记。台账或计划的增长是缺陷信号而非进展:若第 N+1 轮承重发现多于第 N 轮,应停止折叠并削减范围(拆分计划或把阶段拆成独立计划)。反驳一个主张时,安全做法是删除或标为 PROBE,而非断言相反结论。修正台账,而不只是正文。范围削减会破坏引用关系而非事实:需手工检查台账 ID 唯一性、正文中每个 Claim N 指向正确的行、每个 §N 指针存在、每个阶段仍有交付物;还要 grep 仓库中对本计划的引用并在同一变更中迁移。
3.2 收敛目标
对会增长的计划而言,整个工件零发现是不现实的目标。应收敛决策集:改变“要建什么”的主张。像“计划还应提到 X”这样的发现,除非 X 改变行动,否则不算承重,应在折叠中说明并略过。
ready 的含义
Claim ledger 中无 UNVERIFIED 行(PROBE 行可以,它只阻塞其指定阶段而非整个计划)且校验通过;Review log 至少 2 轮(每轮按上述定义实际派发),最终一轮声明零发现,并以明确的 **Result:** ready 行(或“no new/further/load-bearing findings”)结束。该技能叠加在 superpowers:writing-plans 之上,不替代它。
限制
校验脚本只检查形式与引文解析,不检查评审是否真正独立、台账是否完整,也不检查计划内部一致性;评审独立性依赖流程约束;最多 3 轮的限制是断路器,超出后需人工介入。