其他
在 Spec Kit 功能规格存在未明确决策点时,用最多…
适用于已有 Spec Kit 功能规格、但行为/数据/交互/非功能/边界等仍有歧义,需要在计划前澄清并同步更新 spec 的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 58/100 ×0.15
适用场景
在 Spec Kit 功能规格存在未明确特定
解决思路
- 开始前读取非空 `$ARGUMENTS`,并在后续澄清流程中必须考虑它。
- 澄清前检查项目根目录是否存在 `.specify/extensions.yml`;若存在则读取并查找 `hooks.before_clarify` 下条目;若不存在或无 hooks 注册则静默跳过。
- 若 `.specify/extensions.yml` 无法解析或无效,不要静默跳过:告诉用户该文件无法读取(包含 parser error),未检查任何 hooks(包括 mandatory `optional: false` hooks),然后继续正常流程。
- 过滤 `hooks.before_clarify` 中 `enabled` 明确为 `false` 的 hook;无 `enabled` 字段默认视为启用。
- 对剩余 hook 不要解释或评估 `condition`:无 `condition`、null 或空值视为可执行;有非空 `condition` 则跳过,把条件评估留给 HookExecutor 实现。
- 构造 hook 命令调用时,将 command name 中的点 `.` 替换为连字符 `-`,例如 `speckit.git.commit` → `/speckit-git-commit`。
- 对可执行前置 hook 按 `optional` 输出:`optional: true` 输出 Extension Hooks 块(含 extension、command、description、prompt、To execute);`optional: false` 输出 Automatic Pre-Hook 块(含 extension、Executing、`EXECUTE_COMMAND: {command}`),且必须实际调用 hook 并等待完成后再进入 Outline;运行方式可为 `/skill:speckit-...` 或 `$speckit-...`。
- 澄清总目标:检测并减少当前 feature spec 中的歧义或缺失决策点,并直接把澄清记录到 spec 文件。
- 注意澄清工作流应在调用 `/speckit-plan` 前运行并完成;若用户明确跳过澄清(如探索性 spike),可继续,但必须警告下游返工风险增加。
- 从 repo root 运行一次 `.specify/scripts/bash/check-prerequisites.sh --json --paths-only`(组合 `--json --paths-only` / `-Json -PathsOnly`)。
- 解析该命令的最小 JSON payload 字段:`FEATURE_DIR`、`FEATURE_SPEC`;可选捕获 `IMPL_PLAN`、`TASKS` 供未来链式流程。
- 若 JSON 解析失败,中止并让用户重新运行 `/speckit-specify` 或验证 feature branch 环境。
- 对于 args 中单引号如「I'm Groot」,使用转义语法 `'I'\''m Groot'`,或改用双引号 `"I'm Groot"`。
- 如果存在 `.specify/memory/constitution.md`,加载它获取项目原则和治理约束。
- 加载当前 spec 文件,并按 taxonomy 做结构化歧义与覆盖扫描;每个类别标记 `Clear` / `Partial` / `Missing`,生成内部 coverage map 用于优先级排序(若不会提问则不要输出原始 map)。
- Functional Scope & Behavior 扫描:核心用户目标与成功标准;显式 out-of-scope 声明;用户角色 / personas 区分。
- Domain & Data Model 扫描:实体、属性、关系;身份与唯一性规则;生命周期 / 状态转换;数据量 / 规模假设。
- Interaction & UX Flow 扫描:关键用户旅程 / 序列;错误 / 空 / 加载状态;可访问性或本地化说明。
- Non-Functional Quality Attributes 扫描:性能(延迟、吞吐目标);可扩展性(水平/垂直、限制);可靠性与可用性(uptime、恢复期望);可观测性(日志、指标、追踪信号);安全与隐私(authN/Z、数据保护、威胁假设);合规 / 监管约束(若有)。
- Integration & External Dependencies 扫描:外部服务 / API 及失败模式;数据导入 / 导出格式;协议 / 版本假设。
- Edge Cases & Failure Handling 扫描:负面场景;限流 / 节流;冲突解决(如并发编辑)。
- Constraints & Tradeoffs 扫描:技术约束(语言、存储、托管);显式权衡或被拒绝的替代方案。
- Terminology & Consistency 扫描:规范术语表;避免的同义词 / 弃用术语。
- Completion Signals 扫描:验收标准可测试性;可衡量的 Definition of Done 风格指标。
- Misc / Placeholders 扫描:TODO 标记 / 未解决决策;缺乏量化的模糊形容词(如 robust、intuitive)。
- 对每个 `Partial` 或 `Missing` 类别添加候选问题机会,除非:澄清不会实质改变实现或验证策略;或该项专门关于实现方法、技术栈比较、任务拆解(在内部记录)。
- 内部生成按优先级排序的候选澄清问题队列,最多 5 个;不要一次全部输出。
- 整个会话最多问 5 个问题。
- 每个问题必须能用短多选(2–5 个不同且互斥选项)回答,或一词 / 短语答案回答,并明确限制「Answer in <=5 words」。
- 只包含答案会实质影响架构、数据建模、任务拆解、测试设计、UX 行为、运维就绪或合规验证的问题。
- 确保类别覆盖平衡:先覆盖最高影响未解决类别;避免在高影响领域(如安全态势)未解决时问两个低影响问题。
- 排除已回答、琐碎风格偏好或计划级执行细节(除非阻塞正确性)。
- 优先选择能减少下游返工风险或防止验收测试错位的澄清。
- 若超过 5 个类别未解决,按 (Impact * Uncertainty) 启发式选择前 5 个。
- 顺序提问循环中一次只展示恰好一个问题。
- 问题写作质量:以 `**Question:**` 开头,后跟完整疑问句并以 `?` 结尾;`?` 前文本必须能独立理解。
- 绝不用主题标签、章节标题或 requirement id 作为问题本身;例如 `Acceptance device/runtime matrix (FR-023)` 无效。
- `?` 后唯一允许后缀是可选括号内的 requirement/question id:格式 `**Question:** <interrogative>?` 或 `**Question:** <interrogative>? (FR-023)`;id 不得在 `?` 前,也不得单独或加主题标签作为整个提示。
- 问题行后立即添加一句通俗的「Why it matters」(说明对验收或发布的风险),然后才给推荐 / 选项。
- 使用日常措辞;只有同句定义时才引入术语;自检:不懂 Spec Kit 的读者必须能仅凭 Question 行回答;简洁可以,隐晦标签不行。
- 多选问题:分析所有选项,基于项目类型最佳实践、类似实现常见模式、风险降低(安全、性能、可维护性)、与 spec 中明确目标 / 约束对齐,确定最合适选项。
- 多选问题:在顶部显眼展示推荐,格式 `**Recommended:** Option [X] - <reasoning>`,理由 1–2 句。
- 多选问题:用 Markdown 表格渲染所有选项(Option / Description),必要时添加 D/E 最多到 5,以及 `Short` 自由短答选项(<=5 words,若适合)。
- 多选问题:表格后添加:`You can reply with the option letter (e.g., "A"), accept the recommendation by saying "yes" or "recommended", or provide your own short answer.`
- 短答问题:基于最佳实践和上下文提供建议答案,格式 `**Suggested:** <your proposed answer> - <brief reasoning>`。
- 短答问题:输出 `Format: Short answer (<=5 words). You can accept the suggestion by saying "yes" or "suggested", or provide your own answer.`
- 用户回答后:若回复 `yes`、`recommended` 或 `suggested`,使用此前推荐 / 建议作为答案。
- 否则验证答案映射到一个选项或符合 <=5 词约束。
- 若答案歧义,快速请求消歧(仍算同一问题,不推进)。
- 满意后记录到工作内存(尚不写磁盘),进入下一排队问题。
- 停止提问条件:所有关键歧义提前解决(剩余排队不必要)、用户信号完成(`done`、`good`、`no more`)、或达到 5 个问题。
- 永不提前透露未来排队问题。
- 若开始时无有效问题,立即报告无关键歧义。
- 每个接受的答案后增量集成:维护内存中的 spec 表示(开始时加载一次)加原始文件内容。
- 本会话第一个集成答案:确保存在 `## Clarifications` 部分;若缺失,按 spec 模板创建在最高层上下文 / 概览部分之后。
- 在 `## Clarifications` 下创建(若不存在)`### Session YYYY-MM-DD` 子标题为今天。
- 接受后立即追加 bullet:`- Q: <question> → A: <final answer>`。
- 然后立即将澄清应用到最合适部分:功能歧义 → 更新或添加 Functional Requirements bullet。
- 用户交互 / actor 区分 → 更新 User Stories 或 Actors 子节(若存在),澄清 role、constraint、scenario。
- 数据形状 / 实体 → 更新 Data Model(添加字段、类型、关系),保持顺序;简洁注明新增约束。
- 非功能约束 → 在 Success Criteria > Measurable Outcomes 添加 / 修改可衡量标准,将模糊形容词转为 metric 或 explicit target。
- 边缘情况 / 负面流程 → 在 Edge Cases / Error Handling 下添加新 bullet(或创建该子节,若模板有占位)。
- 术语冲突 → 跨 spec 规范化术语;必要时保留原始,仅一次添加 `(formerly referred to as "X")`。
- 若澄清使早先模糊陈述无效,替换该陈述而非重复;不留过时矛盾文本。
- 每次集成后保存 spec 文件(原子覆盖),以减少上下文丢失风险。
- 保持格式:不重排无关部分;保持 heading hierarchy 完整。
- 保持每个插入澄清最小且可测试,避免叙事漂移。
- 验证(每次写入后加最终通过):Clarifications session 每个接受答案恰好一条 bullet,无重复。
- 验证:总提问(接受)问题 ≤ 5。
- 验证:更新部分无残留模糊占位符(新答案意在解决的)。
- 验证:无早先矛盾陈述残留;扫描并移除现已无效的替代选择。
- 验证:Markdown 结构有效;仅允许新 headings:`## Clarifications`、`### Session YYYY-MM-DD`。
- 验证:术语一致性:所有更新部分使用同一 canonical term。
- 将更新后的 spec 写回 `FEATURE_SPEC`。
- 重新验证 Spec Quality Checklist:检查 `FEATURE_DIR/checklists/requirements.md` 是否存在;若不存在静默跳过。
- 若 checklist 存在:读取该文件。
- 识别所有 GitHub task-list checkbox 行:匹配 `- [ ]`、`- [x]`、`- [X]`(大小写不敏感,容忍嵌套项前导空白),在代码围栏之外;忽略其他内容(标题、注释、非 checkbox bullet、metadata)。
- 对每个 checkbox 行记录当前 marker 状态和 item text 到 before-snapshot 列表。
- 针对更新后的 spec(step 7 保存版本)重新评估每个 checkbox 项。
- 对每个 checkbox 项,仅当 checked/unchecked 状态实际变化时更新:现在通过且未勾选 → `[ ]` 改 `[x]`;现在失败且已勾选 → `[x]`/`[X]` 改 `[ ]`;未变则保持 marker 原样(保留现有大小写避免外观 diff)。
- 保存更新后的 checklist 文件。只切换状态变化的 checkbox 行的 `[ ]`/`[x]` marker 部分;其他内容(标题、metadata、注释、行序、空白)保持不变以避免噪声 diff。
- 比较 before-snapshot 与当前状态,计算三列表:Newly passing、Regressions、Still unchecked。
- 记录 before/after pass counts as checked/total checkbox items(如 `12/16 → 15/16 items passing`)。
- 行为规则:若未发现有意义歧义或所有潜在问题低影响,回复 `No critical ambiguities detected worth formal clarification.` 并建议继续。
- 行为规则:若 spec 文件缺失,让用户先运行 `/speckit-specify`;不要在此创建新 spec。
- 行为规则:永不超过 5 个总提问数;单个问题的澄清重试不算新问题。
- 行为规则:避免推测性 tech stack 问题,除非缺失会阻塞功能清晰性。
- 行为规则:尊重用户提前终止信号(`stop`、`done`、`proceed`)。
- 行为规则:若因全覆盖未提问,输出紧凑 coverage summary(所有类别 `Clear`),然后建议推进。
- 行为规则:若配额达到但仍有未解决高影响类别,明确在 Deferred 下标记并给理由。
- 行为规则:用 `$ARGUMENTS` 作为优先级排序上下文。
- 强制后置执行钩子:完成前检查 `.specify/extensions.yml` 是否存在;若不存在或 `hooks.after_clarify` 无注册,跳到 Completion Report。
- 若存在,读取并查找 `hooks.after_clarify` 下条目。
- 若后置 YAML 无法解析或无效,不静默跳过:告知用户无法读取(包含 parser error),未检查 hooks(包括 mandatory `optional: false` 的),然后继续 Completion Report。
- 后置钩子同样过滤 `enabled` 明确为 `false` 的 hook;无 `enabled` 默认启用。
- 后置钩子同样不要解释 / 评估 `condition`:无 `condition` 或 null/empty 可执行;有非空 `condition` 则跳过,交给 HookExecutor 实现。
- 构造后置命令调用时将 hook command name 中的点替换为连字符,例如 `speckit.git.commit` → `/speckit-git-commit`。
- 对可执行后置 hook:`optional: false` 必须输出 `## Extension Hooks` 块,含 `**Automatic Hook**: {extension}`、`Executing: `/{command}``、`EXECUTE_COMMAND: {command}`,并实际调用等待完成;`optional: true` 输出含 extension、command、description、prompt、To execute 的块。
- Completion Report:报告完成(提问循环结束或提前终止)时包含提问并回答数量。
- Completion Report:包含更新 spec 路径。
- Completion Report:包含触及 sections 列表。
- Completion Report:Spec quality checklist 状态(若重新验证):显示 before/after 通过数(如 `12/16 → 15/16 items passing`),列出状态变化项(新勾选和回归);若有未勾选项列为需关注领域。
- Completion Report:Coverage summary 表,每个 taxonomy 类别状态:Resolved(之前 Partial/Missing 且已处理)、Deferred(超出问题配额,或剩余项专门是实现方法、技术栈比较、任务拆解)、Clear(已充分)、Outstanding(仍 Partial/Missing 但低影响)。
- Completion Report:若存在 Outstanding 或 Deferred,建议继续 `/speckit-plan` 还是稍后 post-plan 再运行 `/speckit-clarify`。
- Completion Report:建议下一步命令。
- Done When:spec 歧义已识别且澄清集成到 spec 文件。
- Done When:spec quality checklist 已针对更新 spec 重新验证(若 `FEATURE_DIR/checklists/requirements.md` 存在)。
- Done When:Extension hooks 已根据 Mandatory Post-Execution Hooks 规则分派或跳过。
- Done When:向用户报告完成,含问题数、触及 sections、checklist 状态、coverage summary。
适用边界 · 注意事项
- 项目不是 spec-kit 结构、缺少 `.specify/` 目录,或当前没有功能 spec 文件。
- 用户明确表示跳过澄清,或处于探索性 spike 阶段;继续会保留但需警告下游返工风险增加。
- 规格已完全清晰、没有关键歧义,或问题只涉及实现方法、技术栈比较、任务拆解等低影响事项。