Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec.
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Check for extension hooks (before clarification):
.specify/extensions.yml exists in the project root.hooks.before_clarify keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Outline.
.specify/extensions.yml does not exist, skip silentlyGoal: Detect and reduce ambiguity or missing decision points in the active feature specification and record the clarifications directly in the spec file.
Note: This clarification workflow is expected to run (and be completed) BEFORE invoking /speckit.plan. If the user explicitly states they are skipping clarification (e.g., exploratory spike), you may proceed, but must warn that downstream rework risk increases.
Execution steps:
Run .specify/scripts/powershell/check-prerequisites.ps1 -Json -PathsOnly from repo root once (combined --json --paths-only mode / -Json -PathsOnly). Parse minimal JSON payload fields:
FEATURE_DIRFEATURE_SPECIMPL_PLAN, TASKS for future chained flows.)/speckit.specify or verify feature branch environment.Load the current spec file. Perform a structured ambiguity & coverage scan using this taxonomy. For each category, mark status: Clear / Partial / Missing. Produce an internal coverage map used for prioritization (do not output raw map unless no questions will be asked).
Functional Scope & Behavior:
Domain & Data Model:
Interaction & UX Flow:
Non-Functional Quality Attributes:
Integration & External Dependencies:
Edge Cases & Failure Handling:
Constraints & Tradeoffs:
Terminology & Consistency:
Completion Signals:
Misc / Placeholders:
For each category with Partial or Missing status, add a candidate question opportunity unless:
Generate (internally) a prioritized queue of candidate clarification questions (maximum 5). Do NOT output them all at once. Apply these constraints:
Sequential questioning loop (interactive):
Present EXACTLY ONE question at a time.
For multiple‑choice questions:
**Recommended:** Option [X] - <reasoning>| Option | Description |
|---|---|
| A | <Option A description> |
| B | <Option B description> |
| C | <Option C description> (add D/E as needed up to 5) |
| Short | Provide a different short answer (<=5 words) (Include only if free-form alternative is appropriate) |
You can reply with the option letter (e.g., "A"), accept the recommendation by saying "yes" or "recommended", or provide your own short answer.For short‑answer style (no meaningful discrete options):
**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.After the user answers:
Stop asking further questions when:
Integration after EACH accepted answer (incremental update approach):
## Clarifications section exists (create it just after the highest-level contextual/overview section per the spec template if missing).### Session YYYY-MM-DD subheading for today.- Q: <question> → A: <final answer>.(formerly referred to as "X") once.Validation (performed after EACH write plus final pass):
## Clarifications, ### Session YYYY-MM-DD.Write the updated spec back to FEATURE_SPEC.
Report completion (after questioning loop ends or early termination):
/speckit.plan or run /speckit.clarify again later post-plan.Behavior rules:
/speckit.specify first (do not create a new spec here).Context for prioritization: $ARGUMENTS
Check for extension hooks (after clarification):
Check if .specify/extensions.yml exists in the project root.
hooks.after_clarify keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
.specify/extensions.yml does not exist, skip silentlyNever reveal future queued questions in advance.
If no valid questions exist at start, immediately report no critical ambiguities.