speckit-constitution
Create or update the project constitution at .specify/memory/constitution.md by collecting governance principles, filling template placeholders, versioning with semver, and propagating changes to dependent templates and agent config files. Use when setting up initial project governance, amending principles, or syncing constitution changes across spec/plan/tasks templates.
Best use case
speckit-constitution is best used when you need a repeatable AI agent workflow instead of a one-off prompt. It is especially useful for teams working in multi. Create or update the project constitution at .specify/memory/constitution.md by collecting governance principles, filling template placeholders, versioning with semver, and propagating changes to dependent templates and agent config files. Use when setting up initial project governance, amending principles, or syncing constitution changes across spec/plan/tasks templates.
Create or update the project constitution at .specify/memory/constitution.md by collecting governance principles, filling template placeholders, versioning with semver, and propagating changes to dependent templates and agent config files. Use when setting up initial project governance, amending principles, or syncing constitution changes across spec/plan/tasks templates.
Users should expect a more consistent workflow output, faster repeated execution, and less time spent rewriting prompts from scratch.
Practical example
Example input
Use the "speckit-constitution" skill to help with this workflow task. Context: Create or update the project constitution at .specify/memory/constitution.md by collecting governance principles, filling template placeholders, versioning with semver, and propagating changes to dependent templates and agent config files. Use when setting up initial project governance, amending principles, or syncing constitution changes across spec/plan/tasks templates.
Example output
A structured workflow result with clearer steps, more consistent formatting, and an output that is easier to reuse in the next run.
When to use this skill
- Use this skill when you want a reusable workflow rather than writing the same prompt again and again.
When not to use this skill
- Do not use this when you only need a one-off answer and do not need a reusable workflow.
- Do not use it if you cannot install or maintain the related files, repository context, or supporting tools.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/speckit-constitution/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How speckit-constitution Compares
| Feature / Agent | speckit-constitution | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create or update the project constitution at .specify/memory/constitution.md by collecting governance principles, filling template placeholders, versioning with semver, and propagating changes to dependent templates and agent config files. Use when setting up initial project governance, amending principles, or syncing constitution changes across spec/plan/tasks templates.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Spec Kit Constitution Skill
## When to Use
- Initial project setup or when governance principles need updates.
- If the project has not yet run `specify init`, use **speckit-install** to install the CLI first, then **speckit-initial** to initialize the project.
## Inputs
- User-provided principles or amendments.
- Existing `.specify/memory/constitution.md` and templates.
If the request is missing or ambiguous, ask focused questions before proceeding.
## Workflow
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]`.
**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.
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).
- Review runtime prompts/agents for outdated references and align with updated principles:
- `.claude/commands/speckit.*.md`
- `.codex/prompts/speckit.*.md`
- `.gemini/commands/speckit.*.toml`
- `.github/prompts/speckit.*.prompt.md`
- `.github/agents/speckit.*.agent.md`
- `skills/speckit-*/SKILL.md`
- 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(<FIELD_NAME>): 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.
## Outputs
- Updated `.specify/memory/constitution.md` (with Sync Impact Report comment)
- Any updated templates or runtime guidance files required to stay consistent with the constitution
## Next Steps
After updating the constitution:
- **Specify** new features with speckit-specify.Related Skills
speckit-taskstoissues
Convert tasks.md entries into GitHub issues in the matching remote repository using gh issue create, preserving task IDs for traceability. Use when the user wants to create GitHub issues from an existing tasks.md, needs issue tracking for implementation tasks, or wants to sync task progress with GitHub project boards.
speckit-tasks
Generate a dependency-ordered tasks.md organized by user story, with phased execution (Setup, Foundational, User Stories, Polish), parallel markers, and strict checklist format (checkbox, TaskID, Story label, file path). Use when the implementation plan is ready and the user needs an executable task breakdown before coding.
speckit-specify
Create or update a feature specification from a natural language description by generating a branch, filling the spec template with user stories, functional requirements, success criteria, and running quality validation. Use when the user provides a feature idea and needs a structured, technology-agnostic spec ready for planning.
speckit-plan
Generate a technical implementation plan from a feature spec by filling the plan template, resolving unknowns via research, producing data-model.md, API contracts, and quickstart.md artifacts. Use when the feature spec is ready and the user needs architecture decisions, data models, API schemas, or a structured plan before task generation.
speckit-install
Install the Specify CLI on the host machine (uv tool install or uvx one-time); supports multiple OS, persistent or one-time install, and corporate or restricted-network environments. Use when the user says "install Spec Kit", "install Specify CLI", or "specify command not found".
speckit-initial
Run `specify init` in the current or target directory to bootstrap a Spec Kit project (pull .specify/ and slash commands); supports multiple AI agents and --script sh/ps. Use when the user says "initialize Spec Kit project", "specify init", or "set up Spec Kit in this repo".
speckit-implement
Execute the implementation plan by processing tasks from tasks.md phase-by-phase, following TDD order, respecting task dependencies and parallel markers, setting up ignore files, and marking completed tasks. Use when the plan and tasks are ready and the user wants to begin coding, or when resuming implementation after a pause.
speckit-clarify
Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec.
speckit-checklist
Generate a requirements-quality checklist ('unit tests for English') that validates completeness, clarity, consistency, and measurability of spec/plan/tasks artifacts. Use when the user needs a quality gate before implementation, wants to audit requirement coverage, or needs domain-specific checklists (UX, API, security, performance).
speckit-analyze
Perform a read-only cross-artifact consistency analysis across spec.md, plan.md, and tasks.md, detecting duplications, ambiguities, coverage gaps, and constitution violations with severity ratings. Use when the user has all three artifacts and needs a quality check before implementation, or wants to identify inconsistencies across specifications.
speckit-check
Run `specify check` to verify that Spec Kit required tools (git, claude, gemini, code, cursor-agent, windsurf, qwen, opencode, codex, shai, qoder, etc.) are installed and available; interpret results and suggest next steps. Use when the user says "check Spec Kit environment", "specify not working", or "slash commands not showing".
speckit-baseline
Generate a technology-agnostic feature specification by analyzing existing source code, extracting user stories, functional requirements, and acceptance criteria from code patterns. Use when the user needs to document an existing or legacy codebase, create a spec before refactoring, or reverse-engineer requirements from source files.