| description | Create or update project constitution from interactive or provided principle inputs. | |||||||
|---|---|---|---|---|---|---|---|---|
| handoffs |
|
$ARGUMENTS
Consider user input before proceeding (if not empty).
-
Load
.specify/memory/constitution.md. Identify all[PLACEHOLDER]tokens. Respect user's desired principle count. -
Collect values: From user input, repo context, or inference. Version: semver (MAJOR=breaking, MINOR=additions, PATCH=clarifications). LAST_AMENDED_DATE=today if changes made.
-
Draft: Replace all placeholders with concrete text. Each principle: name + non-negotiable rules + rationale. Governance: amendment procedure + versioning + compliance expectations.
-
Propagate: Check alignment with plan-template.md, spec-template.md, tasks-template.md, commands/*.md. Update references if needed.
-
Sync Report: Add HTML comment at top: version change, modified/added/removed sections, templates needing updates.
-
Validate: No unexplained brackets, version matches report, dates ISO, principles are declarative+testable (MUST/SHOULD not vague "should").
-
Write to
.specify/memory/constitution.md. -
Report: Version + bump rationale, files needing follow-up, suggested commit message.
- Use exact template heading hierarchy
- Single blank line between sections
- If partial updates: still validate and version-decide
- Missing info: insert
TODO(<FIELD>): explanation - Always operate on existing file, never create new template