explore
需求已经明确时不要用本技能,让用户显式调用 to-spec。也可改一个尚未归档单位的需求。不写 spec、不改代码。禁止啰嗦和故作高深。
前置检查
本对话之前已运行过且 PASS,或任务书写明「前置检查已通过,项目类别:X」:跳过本节,沿用该类别。否则运行 node .agents/scripts/precheck.mjs:FAIL 则停止,提示用户执行 setup,不要代跑;PASS 输出带项目类别。之后按根 AGENTS.md 按需读 docs。
统一工具定义
交互式提问:Agent 内置的向用户提问并给出选项的工具,各 Agent 命名不同(如AskUserQuestion、AskQuestion)。本技能所有向用户的提问都用它。
单位
一次只做一个 cooking/<feature>/。其它单位未完成也可以新开。用户一次说了多件不相关的事:问清本次是哪一件。
新开或扩范围:先只读其它未归档单位的 goal.md 做冲突检查(没有 goal 则只看 spec.md 标题)。冲突未解决不新建。
改已有单位(该单位已有 已确认 的 goal.md,或已有 spec.md / tasks/):立刻把 goal.md 的确认改为 未确认(没有 goal.md 则按模板新建);问用户是补充、改写还是取消。取消:goal.md 恢复到介入前的状态(原本没有就删掉),下游不动。确认新目标后:有 tasks/ 则把 node .agents/scripts/cooking.mjs status <feature> 的输出抄进对话纪要,删除该单位的 spec.md、tasks/、reviews/,不回滚代码。其它 cooking 单位一律不动。
决策树
核心是钉死全部有歧义的点、跟用户同步心智:凡是「不问就可能做错」的歧义都要问到。开局先把当前能想到的歧义逐条写进 goal.md 的「未决问题」(用户已答或仓库事实可查的不算)。对象、目标、边界、约束、冲突只是常见自查角度,不是固定轮次,也不限于此:简单需求可能一轮就够,复杂需求轮次不设上限。不要把后续轮次的具体问题预先写进 goal.md。
每一轮:
- 从未决歧义里挑最阻塞的问;不要为凑数而问;一轮最多 5 题。
- 使用
交互式提问工具按 question-template.md 进行提问,不要夹带下一轮预告,不要把未决清单当问卷一次倒给用户。 - 用户答完才能决定下一轮的具体问题;讨论中新冒出的歧义随时补进「未决问题」。
- 查得到的事实派子代理,不问用户。子代理未返回时:只挡住依赖该事实的问题,本轮其余照问。
范围边界(包含 / 不包含)尽早钉死,禁止「范围以后再说」。
不要问拆任务、改哪些文件、验收条文案。
退出
「未决问题」清零才停:没有默许的假设。把「需求目标 + 范围」交给用户确认后,才写 确认:已确认。未确认前每轮按 goal-template.md 回写,不得增删标题。对话纪要只写已钉死结论,禁止复述问答、禁止复制决策树。
写下 已确认 后结束语只说一件事:建议用户新开会话再 to-spec <feature> 或 rush <feature>。多轮问答已占用本对话上下文,不在这里接着写 spec 或派下游。