Slash Command

/clarify

Install
1
Install the plugin
$
npx claudepluginhub ysicing/code-pilot

Want just this command?

Add to a custom plugin, then install with one command.

Description

通过提出最多5个高度针对性的澄清问题识别当前功能规范中未充分说明的领域,并将答案编码回规范

Namespace
spec-kit/
Command Content

用户输入

$ARGUMENTS

在继续之前,您必须考虑用户输入(如果不为空)。

概要

目标:检测并减少活跃功能规范中的模糊性或缺失的决策点,并将澄清内容直接记录在规范文件中。

注意:澄清工作流预计在调用 /spec-kit:plan 之前运行(并完成)。如果用户明确表示跳过澄清(例如探索性 spike),您可以继续,但必须警告下游返工风险增加。

执行步骤:

  1. 从 repo 根目录运行一次 $HOME/.claude/scripts/specify/check-prerequisites.sh --json --paths-only(组合 --json --paths-only 模式 / -Json -PathsOnly)。解析最小 JSON 负载字段:

    • FEATURE_DIR
    • FEATURE_SPEC
    • (可选捕获 IMPL_PLANTASKS 用于未来链式流。)
    • 如果 JSON 解析失败,中止并指示用户重新运行 /spec-kit:specify 或验证 feature branch 环境。
    • 对于参数中的单引号,例如 "I'm Groot",使用转义语法:例如 'I'''m Groot'(或者尽可能使用双引号:"I'm Groot")。
  2. 加载当前规范文件。使用此分类法执行结构化的模糊性和覆盖范围扫描。对于每个类别,标记状态:清晰 / 部分 / 缺失。生成用于优先级排序的内部覆盖范围映射(除非没有问题要提出,否则不输出原始映射)。

    功能范围与行为:

    • 核心用户目标和成功标准
    • 明确的超出范围声明
    • 用户角色 / 角色差异

    域和数据模型:

    • 实体、属性、关系
    • 身份和唯一性规则
    • 生命周期/状态转换
    • 数据量 / 规模假设

    交互与 UX 流:

    • 关键用户旅程 / 序列
    • 错误/空/加载状态
    • 无障碍或本地化注意事项

    非功能质量属性:

    • 性能(延迟、吞吐量目标)
    • 可扩展性(水平/垂直、限制)
    • 可靠性和可用性(正常运行时间、恢复期望)
    • 可观测性(日志、指标、追踪信号)
    • 安全性与隐私性(authN/Z、数据保护、威胁假设)
    • 合规性 / 监管约束(如果有)

    集成与外部依赖:

    • 外部服务/API 和故障模式
    • 数据导入/导出格式
    • 协议/版本控制假设

    边界情况与故障处理:

    • 负面场景
    • 速率限制 / 限流
    • 冲突解决(例如并发编辑)

    约束与权衡:

    • 技术约束(语言、存储、托管)
    • 明确的权衡或拒绝的替代方案

    术语与一致性:

    • 规范术语表
    • 避免的同义词 / 已弃用的术语

    完成信号:

    • 验收标准可测试性
    • 可测量的完成定义风格指标

    杂项 / 占位符:

    • TODO 标记 / 未解决的决策
    • 模糊的形容词("稳健"、"直观"),缺乏量化

    对于状态为部分或缺失的每个类别,添加候选问题机会,除非:

    • 澄清不会显著改变实现或验证策略
    • 信息更适合推迟到规划阶段(内部注明)
  3. 生成(内部)优先排序的候选澄清问题队列(最多 5 个)。不要立即全部输出。应用这些约束:

    • 整个会话中最多 10 个总问题。
    • 每个问题必须回答为以下任一种形式:
      • 一个简短的多选择选项(2–5 个不同的、互斥的选项),或
      • 一个单词 / 短语答案(明确约束:"在 <=5 个字内回答")。
    • 仅包括答案显著影响架构、数据建模、任务分解、测试设计、UX 行为、运营准备就绪或合规性验证的问题。
    • 确保类别覆盖平衡:尝试首先涵盖最高影响未解决的类别;避免在单个高影响区域(例如安全态势)未解决时提出两个低影响问题。
    • 排除已回答的问题、琐碎的风格偏好或计划级执行详情(除非阻止正确性)。
    • 倾向于澄清以减少下游返工风险或防止不对齐的验收测试。
    • 如果超过 5 个类别仍未解决,使用(影响 * 不确定性)启发式选择前 5 个。
  4. 顺序提问循环(交互式):

    • 一次显示恰好一个问题。

    • 对于多选问题:

      • 分析所有选项并根据以下条件确定最合适的选项
        • 项目类型的最佳实践
        • 类似实现中的常见模式
        • 风险降低(安全性、性能、可维护性)
        • 与规范中可见的任何明确项目目标或约束的一致性
      • 在顶部清晰显示您的推荐选项,并附上清晰的推理(1-2 句解释为什么这是最佳选择)。
      • 格式为:**推荐:** 选项 [X] - <推理>
      • 然后将所有选项呈现为 Markdown 表格:
      选项描述
      A<选项 A 描述>
      B<选项 B 描述>
      C<选项 C 描述>(根据需要添加 D/E,最多 5 个)
      短答案提供不同的短答案 (<=5 个字) (仅在自由形式替代合适时包含)
      • 在表格之后,添加:您可以用选项字母回复(例如"A"),通过说"yes"或"recommended"接受推荐,或提供您自己的短答案。
    • 对于短答案风格(没有有意义的离散选项):

      • 基于最佳实践和背景提供您的建议答案
      • 格式为:**建议:** <您的建议答案> - <简要推理>
      • 然后输出:格式:短答案 (<=5 个字)。您可以通过说"yes"或"suggested"接受建议,或提供您自己的答案。
    • 用户回答后:

      • 如果用户用"yes"、"recommended"或"suggested"回复,使用您之前陈述的推荐/建议作为答案。
      • 否则,验证答案是否映射到一个选项或符合 <=5 字约束。
      • 如果模糊,要求快速澄清(计数仍属于同一问题;不要进行)。
      • 一旦令人满意,将其记录在工作内存中(暂不写入磁盘)并移动到下一个排队问题。
    • 停止提问时机:

      • 所有关键歧义早期解决(剩余排队项目变得不必要),或
      • 用户表示完成("done"、"good"、"no more"),或
      • 您达到 5 个提出的问题。
    • 不要提前透露未来排队的问题。

    • 如果开始时不存在有效问题,立即报告没有关键歧义。

  5. 每次接受答案后集成(增量更新方法):

    • 维护规范的内存中表示(在开始时加载一次)加上原始文件内容。
    • 对于本会话中的第一个集成答案:
      • 确保存在 ## 澄清 部分(如果缺少,则在规范模板中按最高级别上下文/概述部分后创建)。
      • 在其下,为今天创建(如果不存在)### 会话 YYYY-MM-DD 子标题。
    • 在接受后立即追加一个项目行:- Q: <问题> → A: <最终答案>
    • 然后立即将澄清应用到最合适的部分:
      • 功能模糊性 → 在功能需求中更新或添加一个项目。
      • 用户交互 / 角色区分 → 用澄清的角色、约束或场景更新用户故事或角色子部分(如果存在)。
      • 数据形状 / 实体 → 更新数据模型(添加字段、类型、关系),保留排序;简洁地记录添加的约束。
      • 非功能约束 → 在非功能 / 质量属性部分添加/修改可测量标准(将模糊形容词转换为度量或明确目标)。
      • 边界情况 / 负面流 → 在边界情况 / 错误处理下添加新项目(或如果模板提供占位符,则创建此类子部分)。
      • 术语冲突 → 在规范中标准化术语;仅在必要时保留原始,添加一次 (以前称为"X")
    • 如果澄清使早期模糊陈述无效,替换该陈述而不是重复;不留过时矛盾文本。
    • 在每次集成后保存规范文件以最小化背景丧失风险(原子覆盖)。
    • 保留格式:不重新排序无关部分;保持标题层次完整。
    • 保持每个插入的澄清最小化和可测试(避免叙述漂移)。
  6. 验证(在每次写入后及最终检查后执行):

    • 澄清会话包含每个接受答案恰好一个项目(无重复)。
    • 总提出(接受)问题 ≤ 5。
    • 更新的部分不包含新答案应该解决的挥之不去的模糊占位符。
    • 没有矛盾的早期陈述仍然存在(扫描现在无效的替代选择被移除)。
    • Markdown 结构有效;仅允许的新标题:## 澄清### 会话 YYYY-MM-DD
    • 术语一致性:在所有更新部分中使用相同的规范术语。
  7. 将更新的规范写回到 FEATURE_SPEC

  8. 报告完成(提问循环结束或早期终止后):

    • 提出和回答的问题数量。
    • 更新规范的路径。
    • 触及的部分(列出名称)。
    • 覆盖范围摘要表,列出每个分类类别及状态:已解决(之前是部分/缺失且已处理)、延迟(超出问题配额或更适合规划)、清晰(已充分)、未解决(仍然是部分/缺失但低影响)。
    • 如果有任何未解决或延迟,建议是继续进行 /spec-kit:plan 还是在计划后期重新运行 /spec-kit:clarify
    • 建议的下一条命令。

行为规则:

  • 如果没有发现有意义的歧义(或所有潜在问题都是低影响的),响应:"未检测到值得正式澄清的关键歧义。"并建议继续。
  • 如果规范文件丢失,指示用户首先运行 /spec-kit:specify(不要在此处创建新规范)。
  • 永远不要超过 5 个总提出的问题(对单个问题的澄清重试不计为新问题)。
  • 避免投机性技术堆栈问题,除非缺乏会阻止功能清晰度。
  • 尊重用户早期终止信号("stop"、"done"、"proceed")。
  • 如果由于完全覆盖而没有问题被提出,输出紧凑的覆盖范围摘要(所有类别清晰)然后建议进行。
  • 如果配额因未解决的高影响类别而用尽,明确在延迟下标记它们及理由。

优先级背景:$ARGUMENTS

Stats
Stars35
Forks0
Last CommitDec 8, 2025
Actions

Other plugins with /clarify