diff --git a/memory/constitution_update_checklist.md b/memory/constitution_update_checklist.md deleted file mode 100644 index 7f15d7f..0000000 --- a/memory/constitution_update_checklist.md +++ /dev/null @@ -1,85 +0,0 @@ -# Constitution Update Checklist - -When amending the constitution (`/memory/constitution.md`), ensure all dependent documents are updated to maintain consistency. - -## Templates to Update - -### When adding/modifying ANY article: -- [ ] `/templates/plan-template.md` - Update Constitution Check section -- [ ] `/templates/spec-template.md` - Update if requirements/scope affected -- [ ] `/templates/tasks-template.md` - Update if new task types needed -- [ ] `/.claude/commands/plan.md` - Update if planning process changes -- [ ] `/.claude/commands/tasks.md` - Update if task generation affected -- [ ] `/CLAUDE.md` - Update runtime development guidelines - -### Article-specific updates: - -#### Article I (Library-First): -- [ ] Ensure templates emphasize library creation -- [ ] Update CLI command examples -- [ ] Add llms.txt documentation requirements - -#### Article II (CLI Interface): -- [ ] Update CLI flag requirements in templates -- [ ] Add text I/O protocol reminders - -#### Article III (Test-First): -- [ ] Update test order in all templates -- [ ] Emphasize TDD requirements -- [ ] Add test approval gates - -#### Article IV (Integration Testing): -- [ ] List integration test triggers -- [ ] Update test type priorities -- [ ] Add real dependency requirements - -#### Article V (Observability): -- [ ] Add logging requirements to templates -- [ ] Include multi-tier log streaming -- [ ] Update performance monitoring sections - -#### Article VI (Versioning): -- [ ] Add version increment reminders -- [ ] Include breaking change procedures -- [ ] Update migration requirements - -#### Article VII (Simplicity): -- [ ] Update project count limits -- [ ] Add pattern prohibition examples -- [ ] Include YAGNI reminders - -## Validation Steps - -1. **Before committing constitution changes:** - - [ ] All templates reference new requirements - - [ ] Examples updated to match new rules - - [ ] No contradictions between documents - -2. **After updating templates:** - - [ ] Run through a sample implementation plan - - [ ] Verify all constitution requirements addressed - - [ ] Check that templates are self-contained (readable without constitution) - -3. **Version tracking:** - - [ ] Update constitution version number - - [ ] Note version in template footers - - [ ] Add amendment to constitution history - -## Common Misses - -Watch for these often-forgotten updates: -- Command documentation (`/commands/*.md`) -- Checklist items in templates -- Example code/commands -- Domain-specific variations (web vs mobile vs CLI) -- Cross-references between documents - -## Template Sync Status - -Last sync check: 2025-07-16 -- Constitution version: 2.1.1 -- Templates aligned: ❌ (missing versioning, observability details) - ---- - -*This checklist ensures the constitution's principles are consistently applied across all project documentation.* \ No newline at end of file diff --git a/templates/commands/constitution.md b/templates/commands/constitution.md new file mode 100644 index 0000000..d63f478 --- /dev/null +++ b/templates/commands/constitution.md @@ -0,0 +1,68 @@ +--- +description: Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync. +# (No scripts section: constitution edits are manual authoring assisted by the agent) +--- + +You are updating the project constitution at `.specify/memory/constitution.md`. 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. + +Follow this execution flow: + +1. Load the existing constitution template at `.specify/memory/constitution.md`. + - Identify every placeholder token of the form `[ALL_CAPS_IDENTIFIER]`. + - List them in a table with columns: Placeholder | Description In Comments (if present) | Current Value (if any) | Required? + +2. 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. + +3. 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. + +4. Consistency propagation checklist (convert prior checklist into active validations): + - Read `.specify/templates/plan-template.md` and ensure any "Constitution Check" or rules align with updated principles. + - Read `.specify/templates/spec-template.md` for scope/requirements alignment—update if constitution adds/removes mandatory sections or constraints. + - Read `.specify/templates/tasks-template.md` and ensure task categorization reflects new or removed principle-driven task types (e.g., observability, versioning, testing discipline). + - Read each command file in `.specify/templates/commands/*.md` (including this one) to verify no outdated references (agent-specific names like CLAUDE only) remain when generic guidance is required. + - Read any runtime guidance docs (e.g., `README.md`, `docs/quickstart.md`, or agent-specific guidance files if present). Update references to principles changed. + +5. 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 sections + - Removed sections + - Templates requiring updates (✅ updated / ⚠ pending) with file paths + - Follow-up TODOs if any placeholders intentionally deferred. + +6. 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). + +7. Write the completed constitution back to `.specify/memory/constitution.md` (overwrite). + +8. Output a final summary to the user with: + - 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 (do not demote/promote levels). +- Wrap long rationale lines to keep readability (<100 chars ideally) but do not hard enforce with awkward breaks. +- Keep a single blank line between sections. +- Avoid trailing whitespace. + +If the user supplies partial updates (e.g., only one principle revision), still perform validation and version decision steps. + +If critical info missing (e.g., ratification date truly unknown), insert `TODO(): explanation` and include in the Sync Impact Report under deferred items. + +Do not create a new template; always operate on the existing `.specify/memory/constitution.md` file.