| name | constitution |
| description | Create or update the project constitution (principles, non-negotiables, out-of-scope). |
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.md if 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.md should be initialized from assets/constitution-template.md during project setup. If it's missing, copy the template first.
-
Update specs/constitution.md with 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 in plan.md and tasks.md.
-
Report the path to specs/constitution.md and a brief summary of what changed (or "created" if new).