--- name: clarifying description: >- 共享澄清纪律(grill 式)——沿决策树一次一题逼近共识:事实自查、每个决策带推荐交用户裁决;独立会话以共识摘要 + 三出口收束(转主流程/就此结束/写入 md),不强制产出。被 requirement-analysis 与 quick-fix 引用作提问纪律。当用户想把一个想法/计划/决定逐题磨清楚时独立使用;发散式的思考陪伴用 exploring;已承诺交付的开发工作直接用 requirement-analysis / quick-fix。 --- > 输出语言:用户显式指定(含平台语言设置)优先,其次跟随近期对话,否则使用英语。新产物使用创建时语言,增量修改沿用原文语言;固定话术按语义表达。 > **外部搜索统一入口**:外部检索先用 anysearch;不可用时按[搜索与降级规则](../requirement-analysis/references/exploration-patterns.md)执行。 # 澄清纪律(Clarifying) 沿决策树一次一题,把一个想法、计划或决定磨到共识态。**事实是你的活,决策是用户的**——环境能回答的自己查,需要裁决的逐题交给用户,每题附上你的推荐答案。 **纪律定义以本 skill 为准**:requirement-analysis 阶段 3 与 quick-fix 步骤 3 引用本纪律;引用方文本与本文冲突时以本文为准。 相关术语与历史否决按 [context-reuse.md](../requirement-analysis/references/context-reuse.md) 读取并处理冲突;保存仍沿本角色已有出口与授权,不自动建立知识文件。 ## 两种角色 | 角色 | 进入方式 | 流程控制权 | 终点 | |------|---------|-----------|------| | **被引用模式** | requirement-analysis / quick-fix 进入澄清环节 | 引用方 | 澄清完成,控制权回引用方下一阶段——**不呈现共识摘要与三出口,不发开场声明** | | **独立会话模式** | 用户直接调用 clarifying | 本 skill | 共识态 → 共识摘要 → 三出口 | ## 核心纪律(两种角色共用) - **第 0 条·提问前自我披露**——开出第一题之前,先用三小段向用户披露:(a) 我默认了哪些未说出口的假设;(b) 哪些信息一旦提供会显著改变我的答案或方案;(c) 处理这类问题最容易犯什么错。披露基于已完成的探索事实、不编造;披露后才进入逐题澄清,且披露内容随澄清进展可修订。两种角色(独立会话/被引用)均适用 - **未决决策清单**——三段披露后以陈述句显示当前澄清范围的决策名、未决含义及依赖;裁决后移出未决区或标已决,新解锁项追加,显式挂起与已决分开。不把清单变成批量问卷或持久状态机;无疑点不编造事项。被引用时只覆盖该分岔或环节,结束即归还控制权。 - **一次只问一个问题**——等用户答复再问下一个;一次多题会把人淹没 - **选择题优先**——每题尽量给 2-4 个互斥的具体选项,**推荐项放首位并说明理由**。只列足够区分当前决策的最少选项,选项比较同一个决策维度(Claude Code 用 `AskUserQuestion`;没有合适选项的开放式问题用对话直接问) - **范围扩展先二分**——当前分岔是“是否需要扩大现有边界”时,只问两个排他范围:保持当前边界,或必须扩展。范围选项只约定需要支持的对象或场景,不隐含选择尚未裁决的实现机制;例如先确认同机或多机,不能把共享文件系统或事务服务绑定到范围答案。可以说明可能的实现代价,但明确机制仍待选。扩展已包含原范围时不另列“两者都要”;多套实现等后续决策待范围裁决后另问。 - **最终消息核对**——首题发出前,按第 0 条核对三类披露的实际含义都已表达;三个编号或三段文字不代表覆盖完整,仅有假设、优先级或推荐理由不等于说明哪些缺失信息会改变答案或方案。构造本次实际要发出的题目后,再按每个答案会落实的用户裁决核对:同一份需求或许可政策不能同时命中两项;细则留待以后时,说明当前哪些边界已决定、哪些仍未决定,不用含糊的后定项充当另一选项。每项只锁定当前决策,不代为确定清单中的其他未决项。不满足则先修正最终消息再发送;核对是内部步骤,不额外向用户提问或要求工件。 - **事实自查,决策交用户**——能由环境(代码库、文件系统、已有探索产物、工具)回答的事实性问题自己查证,绝不抛给用户;真正需要用户裁决的才带到对话 - **按决策依赖排序**——沿决策树逐支下行,上游决策未定时不问下游问题(如存储选型未定就不问索引设计),避免上游答案变化令下游澄清作废;同级可决项按重要性排序 - **裁决来源**——推荐、沉默和显式挂起不算回答;依赖决定的动作继续等待。可恢复上下文中同范围已有明确决定且无新冲突时直接消费,不能因清单或会话恢复重问。 - **术语挑战**——用户用词模糊或一词多义时,当场提出规范术语请用户裁决,此后全程沿用 - **不编造问题**——没有疑点就明确说"已清晰、无需澄清"并收束;为走流程而提问和带着错误假设前进同样是浪费 ## 独立会话模式 澄清会话只提问与查证,不实施:可以读文件、搜代码,但绝不编写生产代码、不搭脚手架、不执行实施动作。用户在会话中要求直接实施时,引导走出口 1 转入对应主流程 skill。 1. **开场**:声明「我正在使用 clarifying skill,逐题把这件事磨清楚。」无参数时先问一句"要磨清楚的是什么"。 2. **先探索后开题**:轻量查证(Grep/Glob/Read;Codex 下 `rg` + 文件阅读)能自答的事实,再开第一题。 3. **逐题下行**:按核心纪律沿决策树推进,直至**共识态**——所有决策支线要么已由用户裁决、要么被显式挂起为未决点,无静默假设。 4. **共识摘要**:呈现达成的理解 + 挂起的未决点。 5. **三出口**(提议制,用户选,未选前不落盘任何文件): - **转主流程**——按承诺状态、任务类型与设计空间建议 requirement-analysis(已承诺、有设计空间)、quick-fix(已承诺、无设计空间)或报告通道(已承诺的非开发交付,约定见 requirement-analysis 阶段 1 任务类型检查),经用户确认后进入;共识结论作为下游输入,**已裁决过的问题不在下游重问** - **就此结束**——共识留在对话里,零产物 - **写入 md**——落盘 `.spec-dev/explorations/.md`(复用 exploring 的落盘约定,结构从轻:问题、关键结论、未决点),改天转正式流程时由 requirement-analysis 阶段 1 作为输入消费 ## 与 exploring 的分界 分界是嵌套而非对立:exploring 默认发散,但其开场披露与关键分岔漏斗以被引用模式复用本 skill 纪律;分岔漏斗结束即归还控制权回发散。 | | exploring | clarifying | |---|-----------|------------| | 姿态 | **发散**——开支线让用户挑方向 | **收敛**——沿决策树逼近共识 | | 提问 | 问题自然涌现,不照脚本(关键分岔漏斗期除外) | 逐题下行,覆盖每条支线 | | 终点 | 可以没有结论 | 共识态(或显式挂起) | | 典型措辞 | "帮我想想要不要做 X" | "把这个方案逐题问清楚 / grill me" | 两者都不进行正式实施、都可按授权落盘 explorations 笔记、都能交接主流程;exploring 的受控 spike 仅适用于其自身授权实验,不能扩展为 clarifying 独立会话的实施权限——选错了也能中途换,向用户说明即可。 ## Codex 规范 - 提问以普通对话消息进行:保持一次一题,每题 2-3 个互斥选项且推荐项在首位,等待用户明确回复 - 自我披露以一条对话消息完成(三段合一条),不拆多条 - 深度推演无 sequential-thinking skill(插件内嵌)可用时降级为回复内分点推演并注明工具降级原因 - 澄清前探索在沙箱禁网时以 `rg` + 文件阅读完成,不依赖 web_search - 落盘失败(沙箱 read-only)→ 向用户说明并请其自行保存内容 - 独立会话模式轻量,不强制 `update_plan` ## Red Flags - "推荐很明显,替用户选了吧" → 不得自代;沉默与挂起不是同意,已有明确决定也不重问 - "背景我都懂,直接开问吧" → 披露先行:三段披露是第一题的前置,不可跳过 - "一次多问几个效率高" → 一次一题 - "这个事实问用户最快" → 环境能答的自己查 - "上游还没定,先把下游问了" → 按决策依赖排序 - "澄清完顺手把代码写了" → HARD-GATE,走出口 1 - "共识达成,自动落盘个笔记" → 三出口是提议制,用户没选就不落盘 - "被引用时也走一遍三出口" → 被引用模式的终点是把控制权还给引用方