Project Constitution Management
Overview
You are updating the project constitution at .specify/memory/constitution.md (or .specify/.specify/memory/constitution.md if the user's structure differs). This file is a TEMPLATE containing placeholder tokens in square brackets (e.g. [PROJECT_NAME], [PRINCIPLE_1_NAME]). Your job is to (a) collect/derive concrete values, (b) fill the template precisely, and (c) propagate any amendments across dependent artifacts.
Note: If the constitution file does not exist yet, it should have been initialized from a template during project setup. If it's missing, copy the template first (check .specify/templates/constitution-template.md).
Execution Flow
Load the existing constitution.
- Identify every placeholder token of the form
[ALL_CAPS_IDENTIFIER].
- IMPORTANT: The user might require less or more principles than the ones used in the template. If a number is specified, respect that - follow the general template. You will update the doc accordingly.
Collect/derive values for placeholders:
- If user input (conversation) supplies a value, use it.
- Otherwise infer from existing repo context (README, docs, prior constitution versions if embedded).
- For governance dates:
RATIFICATION_DATE is the original adoption date (if unknown ask or mark TODO), LAST_AMENDED_DATE is today if changes are made, otherwise keep previous.
CONSTITUTION_VERSION must increment according to semantic versioning rules:
- MAJOR: Backward incompatible governance/principle removals or redefinitions.
- MINOR: New principle/section added or materially expanded guidance.
- PATCH: Clarifications, wording, typo fixes, non-semantic refinements.
- If version bump type ambiguous, propose reasoning before finalizing.
Draft the updated constitution content:
- Replace every placeholder with concrete text (no bracketed tokens left except intentionally retained template slots that the project has chosen not to define yet—explicitly justify any left).
- Preserve heading hierarchy and comments can be removed once replaced unless they still add clarifying guidance.
- Ensure each Principle section: succinct name line, paragraph (or bullet list) capturing non‑negotiable rules, explicit rationale if not obvious.
- Ensure Governance section lists amendment procedure, versioning policy, and compliance review expectations.
Consistency propagation checklist:
- Check if
.specify/templates/plan-template.md, .specify/templates/spec-template.md, and any other templates align with the updated constitution.
- Update runtime guidance docs (e.g.,
README.md, docs/quickstart.md) if they reference changed principles.
Produce a Sync Impact Report (prepend as an HTML comment at top of the constitution file after update):
- Version change: old → new
- List of modified principles (old title → new title if renamed)
- Added/Removed sections
- Templates requiring updates (✅ updated / ⚠ pending) with file paths
- Follow-up TODOs.
Validation before final output:
- No remaining unexplained bracket tokens.
- Version line matches report.
- Dates ISO format YYYY-MM-DD.
- Principles are declarative, testable, and free of vague language ("should" → replace with MUST/SHOULD rationale where appropriate).
Write the completed constitution back to the file (overwrite).
Output a final summary:
- New version and bump rationale.
- Any files flagged for manual follow-up.
- Suggested commit message (e.g.,
docs: amend constitution to vX.Y.Z (principle additions + governance update)).
Formatting & Style Requirements
- Use Markdown headings exactly as in the template.
- Wrap long rationale lines to keep readability (<100 chars ideally).
- Keep a single blank line between sections.
- Avoid trailing whitespace.
- If critical info missing, insert
TODO(<FIELD_NAME>): explanation and include in the Sync Impact Report.
1---2name: project-constitution3description: Manage the project's core principles and ensuring alignment. Create or update the project constitution from interactive or provided principle inputs.4---56# Project Constitution Management78## Overview910You are updating the project constitution at `.specify/memory/constitution.md` (or `.specify/.specify/memory/constitution.md` if the user's structure differs). This file is a TEMPLATE containing placeholder tokens in square brackets (e.g. `[PROJECT_NAME]`, `[PRINCIPLE_1_NAME]`). Your job is to (a) collect/derive concrete values, (b) fill the template precisely, and (c) propagate any amendments across dependent artifacts.1112**Note**: If the constitution file does not exist yet, it should have been initialized from a template during project setup. If it's missing, copy the template first (check `.specify/templates/constitution-template.md`).1314## Execution Flow15161. **Load the existing constitution**.17 * Identify every placeholder token of the form `[ALL_CAPS_IDENTIFIER]`.18 * **IMPORTANT**: The user might require less or more principles than the ones used in the template. If a number is specified, respect that - follow the general template. You will update the doc accordingly.19202. **Collect/derive values for placeholders**:21 * If user input (conversation) supplies a value, use it.22 * Otherwise infer from existing repo context (README, docs, prior constitution versions if embedded).23 * For governance dates: `RATIFICATION_DATE` is the original adoption date (if unknown ask or mark TODO), `LAST_AMENDED_DATE` is today if changes are made, otherwise keep previous.24 * `CONSTITUTION_VERSION` must increment according to semantic versioning rules:25 * MAJOR: Backward incompatible governance/principle removals or redefinitions.26 * MINOR: New principle/section added or materially expanded guidance.27 * PATCH: Clarifications, wording, typo fixes, non-semantic refinements.28 * If version bump type ambiguous, propose reasoning before finalizing.29303. **Draft the updated constitution content**:31 * Replace every placeholder with concrete text (no bracketed tokens left except intentionally retained template slots that the project has chosen not to define yet—explicitly justify any left).32 * Preserve heading hierarchy and comments can be removed once replaced unless they still add clarifying guidance.33 * Ensure each Principle section: succinct name line, paragraph (or bullet list) capturing non‑negotiable rules, explicit rationale if not obvious.34 * Ensure Governance section lists amendment procedure, versioning policy, and compliance review expectations.35364. **Consistency propagation checklist**:37 * Check if `.specify/templates/plan-template.md`, `.specify/templates/spec-template.md`, and any other templates align with the updated constitution.38 * Update runtime guidance docs (e.g., `README.md`, `docs/quickstart.md`) if they reference changed principles.39405. **Produce a Sync Impact Report** (prepend as an HTML comment at top of the constitution file after update):41 * Version change: old → new42 * List of modified principles (old title → new title if renamed)43 * Added/Removed sections44 * Templates requiring updates (✅ updated / ⚠ pending) with file paths45 * Follow-up TODOs.46476. **Validation before final output**:48 * No remaining unexplained bracket tokens.49 * Version line matches report.50 * Dates ISO format YYYY-MM-DD.51 * Principles are declarative, testable, and free of vague language ("should" → replace with MUST/SHOULD rationale where appropriate).52537. **Write the completed constitution** back to the file (overwrite).54558. **Output a final summary**:56 * New version and bump rationale.57 * Any files flagged for manual follow-up.58 * Suggested commit message (e.g., `docs: amend constitution to vX.Y.Z (principle additions + governance update)`).5960## Formatting & Style Requirements6162* Use Markdown headings exactly as in the template.63* Wrap long rationale lines to keep readability (<100 chars ideally).64* Keep a single blank line between sections.65* Avoid trailing whitespace.66* If critical info missing, insert `TODO(<FIELD_NAME>): explanation` and include in the Sync Impact Report.