User Input
$ARGUMENTS
Outline
$ARGUMENTS is the user's input 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.
Gather context. Read
specs/constitution.mdif it exists (this is an update, not a fresh write). Skim repo context —README.md, top-level docs, project metadata (pyproject.toml,package.json, etc.) — to ground the constitution in reality.Create if missing.
specs/constitution.mdshould be initialized fromassets/constitution-template.mdduring project setup. If it's missing, copy the template first.Update
specs/constitution.mdwith these sections:- Project name & purpose — one-line identity + the problem it solves.
- Guiding principles — 3–7 short, opinionated principles that shape design and trade-offs.
- Non-negotiable rules — hard constraints (security, compliance, compatibility, deployment targets) downstream specs/plans must respect.
- Out of scope — things the project explicitly will not do, to prevent scope drift.
Guidelines: merge user input with existing content, preserving prior rules unless explicitly overridden; keep it terse — every line should be actionable by
/speckit:specify,/speckit:plan,/speckit:tasks; mark genuine unknowns as[NEEDS CLARIFICATION: <question>]rather than inventing constraints; no implementation details, file structures, or task lists — those belong inplan.mdandtasks.md.Report the path to
specs/constitution.mdand a brief summary of what changed (or "created" if new).