Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes...
npx skills add jbaruch/spec-kit-skills --skill "speckit-00-constitution"
Install specific skill from multi-skill repository
# Description
Create or update project governance principles and constitution
# SKILL.md
name: speckit-00-constitution
description: Create or update project governance principles and constitution
Spec-Kit Constitution
Create or update the project constitution at .specify/memory/constitution.md. This file defines the governing principles, constraints, and governance rules for specification-driven development.
Scope - What Constitution Contains
MUST contain:
- Project governance principles (high-level, technology-agnostic)
- Non-negotiable development rules
- Quality standards and expectations
- Amendment procedures and versioning policy
- Compliance review expectations
MUST NOT contain:
- Technology stack (languages, frameworks, databases) - belongs in /speckit-03-plan
- Implementation details - belongs in /speckit-03-plan
- Specific tools or versions - belongs in /speckit-03-plan
- API designs or data models - belongs in /speckit-03-plan
The constitution defines the "laws" of the project. The plan defines how to implement features within those laws.
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Prerequisites Check
-
Check if constitution template exists:
bash cat .specify/memory/constitution.md 2>/dev/null || echo "NO_CONSTITUTION" -
If file doesn't exist, copy from skill references:
- Read the constitution template from this skill's
references/constitution-template.md - Create
.specify/memory/constitution.mdwith the template
Execution Flow
- 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 fewer or more principles than the template. Adapt accordingly.
-
Collect/derive values for placeholders:
- If user input supplies a value, use it.
- Otherwise infer from existing repo context (README, docs, prior constitution versions).
- For governance dates:
RATIFICATION_DATEis the original adoption date (if unknown, ask or mark TODO)LAST_AMENDED_DATEis today if changes are made
-
CONSTITUTION_VERSIONmust increment according to semantic versioning:- 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
-
Draft the updated constitution content:
- Replace every placeholder with concrete text (no bracketed tokens left)
- Preserve heading hierarchy
- Ensure each Principle section has: succinct name, paragraph or bullet list capturing non-negotiable rules, explicit rationale
-
Ensure Governance section lists amendment procedure, versioning policy, and compliance review expectations
-
Consistency propagation (validate against templates if they exist):
- Check
.specify/templates/plan-template.mdfor constitution alignment - Check
.specify/templates/spec-template.mdfor scope/requirements alignment -
Check
.specify/templates/tasks-template.mdfor task categorization alignment -
Produce a Sync Impact Report (prepend as HTML comment at top of constitution file):
- Version change: old -> new
- List of modified principles
- Added/removed sections
- Templates requiring updates
-
Follow-up TODOs if any placeholders deferred
-
Validation before final output:
- No remaining unexplained bracket tokens
- Version line matches report
- Dates in ISO format YYYY-MM-DD
-
Principles are declarative, testable, and free of vague language
-
Phase Separation Validation (REQUIRED):
Before writing, scan the draft constitution for technology-specific content that belongs in /speckit-03-plan:
Check for violations - constitution MUST NOT mention:
- Programming languages (Python, JavaScript, TypeScript, Go, Rust, Java, C#, etc.)
- Frameworks (React, Django, Express, Spring, Rails, FastAPI, etc.)
- Databases (PostgreSQL, MySQL, MongoDB, SQLite, Redis, etc.)
- Infrastructure (Docker, Kubernetes, AWS, GCP, Azure, etc.)
- Specific libraries or packages
- Version numbers of tools
- File extensions tied to languages (.py, .js, .ts, etc.)
- API specifications (REST, GraphQL, gRPC)
If violations found:
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ PHASE SEPARATION VIOLATION DETECTED โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Constitution contains technology-specific content: โ
โ - [list each violation] โ
โ โ
โ Technology decisions belong in /speckit-03-plan, not here. โ
โ Constitution must be technology-agnostic to survive tech โ
โ stack changes. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ACTION: Removing technology references and generalizing... โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Auto-fix: Rewrite the violating sections to be technology-agnostic:
- "Use Python" โ "Use appropriate language for the domain"
- "Store in PostgreSQL" โ "Use persistent storage"
- "Deploy with Docker" โ "Use containerization when appropriate"
Re-validate after fixes until no violations remain.
-
Write the completed constitution back to
.specify/memory/constitution.md -
Output final summary to the user with:
- New version and bump rationale
- Any files flagged for manual follow-up
- Suggested commit message
Formatting Requirements
- Use Markdown headings exactly as in the template
- Wrap long rationale lines for readability (<100 chars)
- Keep a single blank line between sections
- Avoid trailing whitespace
Next Steps
After creating the constitution, you can:
- Run /speckit-01-specify to create a feature specification
The constitution will be loaded and validated by all other speckit skills.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.