Interviews the operator to produce a project-identity CONSTITUTION.md (Mission / Stakeholders / Vocabulary / Prohibitions / Compliance gates / Anti-goals / Boundaries / Escalation / Language / Lifecycle phase). Trigger for 'set up the constitution', 'define project identity', 'who is this project for', 'what does this project never do', 'amend the constitution'. Not for AI-behaviour rules — those live in CANONICAL.md / AGENTS.md. Not for spec governance; use /ai-governance instead.
Scanned 5/27/2026
Install via CLI
openskills install arcasilesgroup/ai-engineering---
name: ai-constitution
description: Interviews the operator to produce a project-identity CONSTITUTION.md (Mission / Stakeholders / Vocabulary / Prohibitions / Compliance gates / Anti-goals / Boundaries / Escalation / Language / Lifecycle phase). Trigger for 'set up the constitution', 'define project identity', 'who is this project for', 'what does this project never do', 'amend the constitution'. Not for AI-behaviour rules — those live in CANONICAL.md / AGENTS.md. Not for spec governance; use /ai-governance instead.
effort: mid
argument-hint: "[generate|update|amend]"
model_tier: sonnet
mirror_family: antigravity-skills
generated_by: ai-eng sync
canonical_source: .claude/skills/ai-constitution/SKILL.md
edit_policy: generated-do-not-edit
---
# Constitution
## Quick start
```
/ai-constitution generate # interview + write CONSTITUTION.md from scratch
/ai-constitution update # change a single section (Mission, Prohibitions, etc.)
/ai-constitution amend # formal amendment with version bump + audit event
```
## Workflow
Apply §10.6 (SDD) — every CONSTITUTION.md write is traceable to a spec
decision (D-131-04 anchored this rewrite). Apply §10.4 (DRY) — project
identity lives ONCE in CONSTITUTION.md; AI-behaviour content lives in
CANONICAL.md. The two never overlap.
1. **Auto-detect** — read `.ai-engineering/manifest.yml`, package files
(`pyproject.toml` / `package.json` / `Cargo.toml`) to seed the
interview with project name, stack, version.
2. **Read existing** — if `CONSTITUTION.md` exists, load it and show
the operator the diff BEFORE any overwrite. NEVER overwrite without
diff + explicit confirm (R-131-03 mitigation).
3. **Interview the 10 sections** — see "Interview" below.
4. **Write** — emit `CONSTITUTION.md` using the 10-section skeleton.
Refuse to write any header from
`tools/skill_lint/checks/md_mirror.py:FORBIDDEN_CONSTITUTION_HEADERS`
(those are AI-behaviour headers; CONSTITUTION owns project identity
only).
5. **Rotate** — when `update` or `amend` replaces operator-authored
content, copy the pre-write body to
`.ai-engineering/specs/_history-constitution-<YYYY-MM-DD>.md` so
the prior identity is recoverable.
6. **Verify + record** — run `python -m skill_lint --check` after the
write to confirm CONSTITUTION.md passes the md_mirror sweep. Emit a
`constitution_updated` audit event to
`.ai-engineering/state/framework-events.ndjson`.
## Interview
| Section | Question |
|---------|----------|
| Mission | What does this project do, and what does it never do? |
| Stakeholders | Who relies on this project? Who pays the cost when it breaks? |
| Vocabulary | What domain terms must every contributor use precisely? |
| Prohibitions | What must the AI / contributors NEVER do? |
| Compliance gates | What pipelines / audits / certifications gate releases? |
| Anti-goals | What use cases are explicitly out of scope (and why)? |
| Boundaries | Which surfaces are framework-owned vs team-owned? |
| Escalation | Who is paged when prohibitions / gates fail? |
| Language | Project natural language for docs / commits. |
| Lifecycle phase | greenfield · stabilising · mature · sunset. |
## Examples
### Example 1 — first install, no prior CONSTITUTION
User: "set up the constitution for this project"
```
/ai-constitution generate
```
Interviews the 10 sections, seeds defaults from `manifest.yml`, writes
`CONSTITUTION.md` v1.0.0 with the ratified date stamped. Emits one
`constitution_updated` audit event.
### Example 2 — formal amendment with version bump
User: "amend the constitution to add 'no LLM-generated production
secrets' to prohibitions"
```
/ai-constitution amend
```
Loads the existing body, presents the diff for the Prohibitions
section, applies the amendment, bumps the minor version, records the
amendment row in the governance footer, rotates the pre-amendment
body into `_history-constitution-<date>.md`.
## Integration
Called by: `ai-eng install` (governance phase), `/ai-start` (cold-load
identity context). Reads: `manifest.yml`, package files, existing
`CONSTITUTION.md`, `decision-store.json`. Writes: `CONSTITUTION.md`,
`_history-constitution-<date>.md` (when rotating). Audited by:
`tools/skill_lint/checks/md_mirror.py:check_constitution_clean` (any
AI-behaviour header rejects the write). Consumed by: every skill at
Step 0. See also: `/ai-governance` (compliance against the
constitution), CANONICAL.md (AI-behaviour layer — never written by
this skill).
$ARGUMENTS
No comments yet. Be the first to comment!