--- name: spec-kit-clarify description: Use when an existing Spec Kit `spec.md` has high-impact ambiguity (for example `[NEEDS CLARIFICATION]`, unresolved scope decisions, or unquantified requirements) that must be resolved before `spec-kit-plan`. --- # Spec Kit Clarify Resolve high-impact ambiguity in the active feature specification before planning. ## When to Use - `spec.md` already exists but has high-impact uncertainty. - You see unresolved placeholders (for example `[NEEDS CLARIFICATION]`, TODOs, or conflicting statements). - Ambiguity could materially change architecture, data model, testing, UX behavior, operations, or compliance expectations. ## When Not to Use - No feature spec exists yet (`spec-kit-specify` first). - Work is design decomposition (`spec-kit-plan`) or task generation (`spec-kit-tasks`). - You only need read-only consistency analysis (`spec-kit-analyze`). - You are reconciling broader cross-artifact drift (`spec-kit-reconcile`). ## Router Fit - Primary route from `spec-kit` after `spec-kit-specify` and before `spec-kit-plan` when ambiguity is still blocking. ## Key Rules - Ask exactly one question at a time. - Ask at most 5 accepted questions per run. - Every question must materially influence architecture, data model, testing, UX, operations, or compliance. - Integrate each accepted answer into `spec.md` immediately. ## Workflow ```dot digraph clarify_workflow { rankdir=TB; node [fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9]; start [label="Invoke spec-kit-clarify", shape=doublecircle]; resolve_paths [label="Resolve FEATURE_SPEC path", shape=box]; has_spec [label="spec.md exists?", shape=diamond]; stop_specify [label="STOP: run spec-kit-specify first", shape=octagon, style=filled, fillcolor=red, fontcolor=white]; scan_taxonomy [label="Scan with clarification taxonomy", shape=box]; has_high_impact [label="High-impact ambiguity remains?", shape=diamond]; report_none [label="Report no critical ambiguity", shape=box]; build_queue [label="Build and rank up to 5 questions", shape=box]; ask_loop [label="Ask one question at a time\n(recommend/suggest, disambiguate if needed)", shape=box]; integrate [label="Integrate accepted answer into spec.md", shape=box]; validate [label="Validate update and consistency", shape=box]; continue_gate [label="Continue loop?", shape=diamond]; final_report [label="Report touched sections, coverage, next step", shape=box]; done [label="Clarify complete", shape=doublecircle]; start -> resolve_paths; resolve_paths -> has_spec; has_spec -> stop_specify [label="no"]; has_spec -> scan_taxonomy [label="yes"]; scan_taxonomy -> has_high_impact; has_high_impact -> report_none [label="no"]; report_none -> done; has_high_impact -> build_queue [label="yes"]; build_queue -> ask_loop; ask_loop -> integrate; integrate -> validate; validate -> continue_gate; continue_gate -> ask_loop [label="yes"]; continue_gate -> final_report [label="no"]; final_report -> done; } ``` 1. Resolve active spec path: - Run `scripts/check-prerequisites.sh --paths-only --json`. - Read `FEATURE_SPEC` from the JSON payload. - If `FEATURE_SPEC` is missing, stop and direct the user to `spec-kit-specify`. 2. Build an internal ambiguity coverage map from `spec.md`: - Use `assets/clarification-taxonomy.md` as the required category checklist. - Score each category as `Clear`, `Partial`, or `Missing`. - Create candidate questions only for `Partial` or `Missing` categories where clarification changes implementation or validation outcomes. 3. Prioritize up to 5 candidate questions: - Rank by `Impact * Uncertainty`. - Exclude already-answered items, stylistic preferences, and low-impact plan-level details. - Ensure each question is answerable by either: - multiple choice with 2-5 mutually exclusive options, or - short answer constrained to `<=5 words`. 4. Run the interactive one-question loop: - Follow the workflow chart above for branching and stop conditions. - Ask exactly one question at a time. - For multiple-choice questions, provide a recommendation and an options table. - For short-answer questions, provide a suggested answer and enforce `<=5 words`. - Accept `yes`, `recommended`, or `suggested` as confirmation of the current recommendation. - Use disambiguation follow-ups when needed without consuming a new question slot. 5. Integrate each accepted answer immediately: - Ensure `## Clarifications` exists. - Ensure a session heading exists: `### Session YYYY-MM-DD`. - Append: `- Q: → A: `. - Update the most relevant section(s) inline: - functional behavior, - user stories/actors, - data model, - non-functional metrics, - edge/error handling, - terminology normalization. - Replace superseded contradictory statements instead of duplicating. - Save `FEATURE_SPEC` after each accepted answer. 6. Validate after each write and on final pass: - Exactly one clarification bullet per accepted answer. - Accepted questions count is `<=5`. - No contradiction remains for resolved decisions. - No unresolved vague placeholder remains for resolved items. - Only these new headings are introduced: `## Clarifications`, `### Session YYYY-MM-DD`. - Canonical terminology is consistent across modified sections. 7. Report completion: - Questions asked and answered. - Updated `FEATURE_SPEC` path. - Sections touched. - Coverage summary by category with status: - `Resolved` - `Deferred` - `Clear` - `Outstanding` - Next-step recommendation: proceed to `spec-kit-plan` or run clarify again later. ## Behavior Rules - If no high-impact ambiguity exists, respond: `No critical ambiguities detected worth formal clarification.` and suggest proceeding. - Never exceed 5 accepted questions (disambiguation retries do not count as new questions). - Respect early termination signals: `stop`, `done`, `proceed`. - Avoid speculative tech-stack questions unless their absence blocks functional correctness. - If quota is reached with unresolved high-impact items, mark them as `Deferred` with rationale. ## Output - Updated `spec.md` with embedded clarification history - Summary of asked/answered questions, touched sections, and unresolved/deferred areas ## Common Mistakes - **Low-impact questions.** Never ask about cosmetic or stylistic details. Every question must materially affect architecture, data model, testing, UX, operations, or compliance. - **Asking multiple questions at once.** Ask one question at a time. Batching questions overwhelms the user and produces shallow answers. - **Not updating spec inline.** Each accepted answer must be applied to the relevant spec sections immediately. Never defer updates to a later pass. - **Redundant clarifications.** Check existing spec content and prior clarification sessions before asking. Do not re-ask what is already resolved. ## References - `assets/clarification-taxonomy.md` - `references/spec-kit-workflow.dot` for overall context of how the clarification fits into the Spec Kit process. - `scripts/check-prerequisites.sh` - `https://github.com/github/spec-kit/blob/9111699cd27879e3e6301651a03e502ecb6dd65d/templates/commands/clarify.md`