User Input
$ARGUMENTS
Outline
$ARGUMENTS is the feature description from the triggering message — assume it's available even if the placeholder appears literally above. Don't ask the user to repeat it unless they provided an empty command.
Load context. Read
specs/constitution.md(principles, non-negotiables, out-of-scope) and run/speckit:constitution without specific principlesautomatically first, if the file is missing.Create
<feature_directory>underspecs/, named<NNN>-<short-name>:<NNN>— 3-digit zero-padded sequence, one greater than the highest existing prefix inspecs/(start at001if none).<short-name>— 2–4 words, lowercase, hyphen-separated, derived from the feature description.
Write
specs/feature.jsonwith the feature directory path:{ "feature_directory": "<feature_directory>" }Create the spec based on
assets/spec-template.md, stored in<feature_directory>/spec.mdwith these sections:- Overview — what the feature is and why it matters.
- User scenarios — primary flows and edge cases.
- Functional requirements — numbered, each independently testable.
- Success criteria — observable, measurable outcomes.
Guidelines: make informed defaults for unspecified details, marking genuine unknowns as
[NEEDS CLARIFICATION: <question>]; focus on what and why — implementation details belong inplan.md; do not write code, choose a tech stack, or start implementation here.Report the path to
<feature_directory>/spec.mdand a one-line summary.