plan-0-v2-constitution

plan-0-v2-constitution is a skill for Claude Code from jakkaj/tools. It costs 44 tokens per session (5,981 once invoked), scanned A, original, MIT.

A workflow for creating or updating a project's constitution and related rules, idioms, and architecture documents. These documents define how the project is governed, built, and maintained.

In plain words
What is it for?
Use it before planning begins to establish or revise project rules, record architectural boundaries, and keep the supporting documentation aligned.
Why use it?
It gives planning work a shared set of project principles and preserves marked user-written guidance when the documents are refreshed.

Skill for Claude Code

Written for Claude Code: $ARGUMENTS substitution. Also seen: reads .claude/ paths; mentions subagents.

Good fit Use it before planning begins to establish or revise project rules, record architectural boundaries, and keep the supporting documentation aligned.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/jakkaj/tools/plan-0-v2-constitution
View source ↗ jakkaj/tools
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add jakkaj/tools --skill plan-0-v2-constitution
Clone the repo
git clone --depth 1 https://github.com/jakkaj/tools

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for plan-0-v2-constitution

README.md
[![agentmods](https://agentmods.dev/badge/skills/jakkaj/tools/plan-0-v2-constitution.svg)](https://agentmods.dev/skills/jakkaj/tools/plan-0-v2-constitution)
Your own site
<a href="https://agentmods.dev/skills/jakkaj/tools/plan-0-v2-constitution"><img src="https://agentmods.dev/badge/skills/jakkaj/tools/plan-0-v2-constitution.svg" alt="Measured on agentmods" height="20"></a>
Per session 44 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,981 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00044 $0.05981
Opus 5 $0.00022 $0.02991
Sonnet 5 $0.00009 $0.01196
Haiku 4.5 $0.00004 $0.00598

Measured 8d ago against content hash 48e7dfa0daf0, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

plan-0-v2-constitution scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/SDD/plan-0-v2-constitution/SKILL.md · 471 lines

How it starts

The opening of the file, as written. The whole thing — 471 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Please deep think / ultrathink as this is a complex task.

plan-0-constitution (alias: phase-0-constitution)

Re-entrancy Support: This command is now re-entrant and will intelligently preserve user customizations when updating existing constitution files. Mark your custom content with <!-- USER CONTENT START --> and <!-- USER CONTENT END --> for guaranteed preservation across updates.

The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding (if not empty).

User input:

$ARGUMENTS

You are updating the project doctrine files in `docs/project-rules/`:
- `docs/project-rules/constitution.md`  (Constitution – guiding principles and governance)
- `docs/project-rules/rules.md`         (Rules – normative MUST/SHOULD statements)
- `docs/project-rules/idioms.md`        (Idioms – recurring patterns and examples)
- `docs/project-rules/architecture.md`  (Architecture – structure, boundaries, interaction contracts)

If any document uses placeholder tokens like `[ALL_CAPS_IDENTIFIER]`, your responsibility is to gather the values, fill or intentionally defer them, and keep all three files mutually consistent. Downstream templates or command prompts may reference these files; when they exist, update them last so they reflect the newly agreed doctrine.

--------------------------------
## Execution Flow (deterministic)
1) Resolve repository paths and detect mode
   - If your environment supplies a repository metadata helper (e.g., a prerequisites script defined in command front matter), run it once and parse the returned JSON. Otherwise derive values from the current working directory.
   - Set constants:
     CONST = `docs/project-rules/constitution.md`
     RULES = `docs/project-rules/rules.md`
     IDIOMS = `docs/project-rules/idioms.md`
     ARCH  = `docs/project-rules/architecture.md`
     TMPL  = `templates/`  # Optional helper content if present
   - Ensure parent directories exist; create them atomically when missing.

   **Domain Detection** (additive — skip if no domains present):
   - Check if `docs/domains/registry.md` exists → read all registered domains
   - Check if `docs/domains/domain-map.md` exists → read the domain architecture diagram
   - If domains directory exists but no registry → read `docs/domains/*/domain.md` files directly
   - If NO domain infrastructure exists: note "Domain system not yet initialized" — do NOT auto-create domain files (use `/plan-v2-extract-domain` when ready)
   - Store domain context for use in Steps 4 and 6 (governance and architecture sections)

   **Re-entrancy Detection**:
   - Check if any of CONST, RULES, IDIOMS, ARCH already exist
   - If ANY exist: **UPDATE MODE** - Will preserve user customizations
   - If NONE exist: **CREATE MODE** - Will create fresh documents
   - Display mode to user: "🔄 Updating existing constitution..." or "✨ Creating new constitution..."

2) Launch parallel context gatherers

**IMPORTANT**: Use **parallel subagent gatherers** for faster doctrine loading.

**Strategy**: Launch 4 parallel subagents (single message with 4 Task tool calls) to gather doctrine context concurrently.

**Subagent 1: Doctrine Loader (Re-entrancy Aware)**
"Load existing doctrine files and categorize content for preservation.

**Tasks**:
- For each of CONST, RULES, IDIOMS, ARCH:
  * If file exists:
    - Read fully and extract version number, [PLACEHOLDER] tokens, section headings, TODOs
    - Identify sections marked with `<!-- USER CONTENT START -->` and `<!-- USER CONTENT END -->`
    - Categorize each section as: 'generated' (safe to update), 'custom' (must preserve), or 'mixed' (needs merge)
    - Extract any filled placeholder values that replaced `[ALL_CAPS_TOKENS]`
    - Note custom sections not in standard template
  * If missing: Note for creation with minimal outline

**Categorization Rules**:
- Content between USER CONTENT markers = 'custom'
- Standard template sections without modifications = 'generated'
- Standard sections with significant user additions = 'mixed'
- Entirely new user-added sections = 'custom'

**Output**: JSON with {file_path, exists, version, placeholders[], headings[], todos[],
  sections[{name, type, content, preserve}], custom_additions[], filled_values{}}

**Return**: Results for all 4 files with preservation metadata."

**Subagent 2: Context Gatherer**
"Gather project governance and quality inputs from documentation.

**Priority order**: $ARGUMENTS > README.md > CONTRIBUTING.md > other handbooks

**Extract**:
- Guiding principles and values
- Quality/verification strategy and testing philosophy
- Delivery practices and governance rules
- Record source for each value (argument, README, etc.)

**Output**: JSON with {principles[], quality_strategy, delivery_practices, governance, sources{}}
Flag unknowns as 'UNKNOWN: <reason>' for TODO handling."

**Subagent 3: Template Scanner**
"Inventory templates and commands that reference doctrine.

**Scan**:
- skills/**/SKILL.md (and any `.claude/commands/*.md`) for references to constitution, rules, idioms, architecture
- templates/ directory for similar references

**Output**: JSON with {file_path, references_to[], link_format, expected_paths[]}
Note any hardcoded paths or placeholders that need updating."

**Subagent 4: Version Analyzer**
"Determine semantic version bump.

**Given**:
- Current versions from Subagent 1
- Changes from Subagent 2 ($ARGUMENTS and context)

**Apply rules**:
- MAJOR: Breaking changes to principles or governance
- MINOR: New principles/sections or materially expanded guidance
- PATCH: Clarifications or formatting adjustments

**Output**: JSON with {current_version, new_version, bump_type, rationale}
Include amendment date as ISO 8601."

**Wait for All Gatherers**: Block until all 4 subagents complete.

3) Synthesize gathered context and prepare merge strategy
   - Merge outputs from all 4 subagents into unified doctrine view
   - Conflict resolution: $ARGUMENTS > explicit docs > inferred > UNKNOWN
   - Build complete placeholder mapping: [TOKEN] → {value, source, confidence}
   - Validate version bump against actual changes detected
   - Create TODO list for any UNKNOWN values: "TODO(<FIELD>): <reason pending>"

   **Re-entrancy Merge Strategy** (if UPDATE MODE):
   - For each file, prepare merge plan:
     * Sections marked 'custom' → PRESERVE entirely
     * Sections marked 'generated' → UPDATE with new content
     * Sections marked 'mixed' → MERGE: Keep user additions, update framework
   - Preserve all filled placeholder values from existing files
   - Keep user-added sections not in template
   - Maintain existing TODOs that are still unresolved
   - Track what will change for user confirmation

   - Prepare inputs for Step 4 constitution drafting:
     * All placeholder values (filled or deferred, preferring existing)
     * Validated principles and practices (merging existing with new)
     * Quality strategy with tools/approaches
     * Template dependency map for Step 7 propagation
     * Final version number and Sync Impact Report data
     * Merge strategy per file with preservation instructions

4) Draft **docs/project-rules/constitution.md** (re-entrancy aware)
   **For CREATE MODE**:
   - Replace every placeholder. Standard sections:
     * Header with Title, Version, Ratification date, Last amended date
     * **Guiding Principles** – concise MUST/SHOULD statements with rationale
     * **Quality & Verification Strategy** – document how the team proves changes safe (tests, analysis, reviews). Highlight preferred tools per language when known; keep wording inclusive (examples are optional callouts).
     * **Delivery Practices** – planning cadence, documentation expectations, definition of done
     * **Governance** – amendment procedure, review cadence, compliance tracking
     * **Domain Governance** (include if domains detected OR project wants domain-based organization) –
       - Every source file belongs to a domain (or is uncategorized legacy)
       - Cross-domain imports use contracts only — no reaching into another domain’s internals
       - Domain boundaries are enforced by code review and plan structure
       - New domains are formalized via `/plan-v2-extract-domain` before code changes
       - Domain registry (`docs/domains/registry.md`) is the authoritative index
       - Domain map (`docs/domains/domain-map.md`) must stay current with contract edges
       - Business → infrastructure dependency: always allowed
       - Infrastructure → business dependency: never allowed
       - Business → business dependency: only via contracts
       - If no domains exist yet, note: "Domain governance applies once domains are established via `/plan-v2-extract-domain`"

   **For UPDATE MODE**:
   - Preserve all sections marked as 'custom' from Step 3 analysis
   - Update 'generated' sections with new framework content
   - For 'mixed' sections: Keep user additions, update framework parts
   - Maintain filled placeholder values from existing file
   - Add new standard sections if missing, mark with `<!-- NEWLY ADDED -->`
   - Keep user's custom sections even if not in template
   - Update version number appropriately (PATCH for clarifications, MINOR for new sections, MAJOR for breaking changes)

   - Prepend a **Sync Impact Report** HTML comment summarizing:
     * Mode: CREATE or UPDATE
     * Version bump: old → new with rationale
     * Sections preserved vs updated
     * Custom content retained
     * New sections added
     * Outstanding TODOs
     * Supporting docs/templates update status

5) Align **Rules & Idioms** (re-entrancy aware)
   **For UPDATE MODE**:
   - Apply same preservation strategy as constitution
   - Keep user's custom rules and examples
   - Update framework rules while preserving additions
   - Merge testing section carefully to keep project-specific policies

   - Write/update `rules.md` with enforceable statements ("MUST", "SHOULD") covering:
     * Source control hygiene and branching
     * Coding standards, naming, formatting
     * **Testing/verification expectations** (detailed guidance below)
     * Tooling or automation requirements (linters, CI, coverage, static analysis)

   - **Testing Section Requirements** (expand with TAD philosophy):
     The testing section in `rules.md` MUST include comprehensive guidance on:

     **1. Testing Philosophy**
     - Tests as executable documentation (TAD principles)
     - Quality over coverage: tests must "pay rent" via comprehension value
     - When to write tests vs when to skip them
     - Smart application of TDD (test-first when it adds value, not dogmatically)

     **2. Test Quality Standards**
     - Every test MUST explain **why it exists** (business/bug/regression reason)
     - Every test MUST document the **contract** it asserts (plain-English invariants)
     - Every test MUST include **usage notes** (how to call the API, gotchas)
     - Every test MUST describe its **quality contribution** (what failures it catches)
     - Every test SHOULD include a **worked example** (inputs/outputs summary)
     - Tests MUST use clear naming (Given-When-Then or equivalent behavioral format)

     **3. Scratch → Promote Workflow** (TAD approach)
     - Probe tests MAY be written in `tests/scratch/` for fast exploration/iteration
     - `tests/scratch/` MUST be excluded from CI (via .gitignore or CI config)
     - Tests MUST be promoted from scratch/ only if they add durable value
     - **Promotion heuristic**: Keep if Critical path, Opaque behavior, Regression-prone, or Edge case
     - Promoted tests MUST move to `tests/unit/` or `tests/integration/`
     - Promoted tests MUST include complete Test Doc comment blocks (5 required fields)
     - Non-valuable scratch tests MUST be deleted (keep learning notes in PR/log)

     **4. Test-Driven Development (TDD) Guidance**
     - TDD (test-first) SHOULD be used for: complex logic, algorithms, APIs, critical paths
     - TDD MAY be skipped for: simple operations, config changes, trivial wrappers
     - When using TDD, follow RED-GREEN-REFACTOR cycles
     - Tests written first MUST document expected behavior clearly
     - Avoid dogmatic TDD; apply when it adds value to design process

     **5. Test Reliability & Quality**
     - Tests MUST NOT use network calls (use fixtures/mocks for external dependencies)
     - Tests MUST NOT use sleep/timers (use time mocking if needed)
     - Tests MUST be deterministic (no flaky tests tolerated in main suite)
     - Tests SHOULD be reasonably fast to maintain quick feedback loops
     - Performance requirements (timing, resource limits) will be specified in the spec when needed

     **6. Test Organization**
     - `tests/scratch/` – fast probes, excluded from CI, temporary exploration
     - `tests/unit/` – isolated component tests with Test Doc blocks
     - `tests/integration/` – multi-component tests with Test Doc blocks
     - `tests/e2e/` or `tests/acceptance/` – full-system tests (if applicable)
     - `tests/fixtures/` – shared test data, realistic examples preferred

     **7. Mock Usage Policy**
     - Follow project-specific mock policy (Avoid | Targeted | Liberal - set in the spec's clarify pass, `/the-flow 1b`)
     - When mocking, document WHY the real dependency isn't used
     - Prefer real data/fixtures over mocks when practical
     - Mocks SHOULD be simple and behavior-focused, not implementation-focused

     **8. Test Documentation Format**
     Include language-appropriate Test Doc block format examples:

     ```typescript
     test('given_iso_date_when_parsing_then_returns_normalized_cents', () => {
       /*
       Test Doc:
       - Why: Prevent regression from #482 where AUD rounding truncated cents
       - Contract: parseInvoice returns {totalCents:number, date:ZonedDate} with exact cent accuracy
       - Usage Notes: Supply currency code; parser defaults to strict mode (throws on unknown fields)
       - Quality Contribution: Catches rounding/locale drift and date-TZ bugs; documents required fields
       - Worked Example: "1,234.56 AUD" → totalCents=123456; "2025-10-11+10:00" → ZonedDate(Australia/Brisbane)
       */
       // Arrange-Act-Assert with clear phases
     });
     ```

     ```python
     def test_given_iso_date_when_parsing_then_returns_normalized_cents():
         """
         Test Doc:
         - Why: Regression guard for rounding bug (#482)
         - Contract: Returns total_cents:int and timezone-aware datetime with exact cents
         - Usage Notes: Pass currency='AUD'; strict=True raises on unknown fields
         - Quality Contribution: Prevents silent money loss; showcases canonical call pattern
         - Worked Example: "1,234.56 AUD" -> 123_456; "2025-10-11+10:00" -> aware datetime
         """
         # Arrange-Act-Assert with clear phases
     ```

     **9. Complexity-First Estimation Policy (REQUIRED)**

     The constitution MUST enforce a **no-time policy** for all estimates and planning:

     - **Prohibition**: Never output or imply time, duration, or ETA in any form (hours, minutes, days, "quick", "fast", "soon", deadlines, etc.)
     - **Replacement**: All effort quantification MUST use the **Complexity Score (CS 1-5)** system
     - **Scoring rubric**: Compute points (0-2 each) for 6 factors, sum to CS:
       * **Surface Area (S)**: Files/modules touched; breadth of change (0=one file, 1=multiple files, 2=many files/cross-cutting)
       * **Integration Breadth (I)**: External libs/services/APIs/tooling (0=internal only, 1=one external, 2=multiple externals/unstable API)
       * **Data & State (D)**: Schema changes, migrations, concurrency (0=none, 1=minor tweaks, 2=non-trivial migration/concurrency)
       * **Novelty & Ambiguity (N)**: Requirements clarity, research needed (0=well-specified, 1=some ambiguity, 2=unclear specs/significant discovery)
       * **Non-Functional Constraints (F)**: Performance, security, compliance (0=standard gates, 1=moderate constraints, 2=strict/critical constraints)
       * **Testing & Rollout (T)**: Test depth, flags, staged rollout (0=unit only, 1=integration/e2e, 2=flags/staged rollout/backward compat)
     - **Mapping**: Total points P (0-12) maps to CS:
       * CS-1 (0-2): Trivial - isolated tweak, no new deps, unit test touchups
       * CS-2 (3-4): Small - few files, familiar code, maybe one internal integration
       * CS-3 (5-7): Medium - multiple modules, small migration or stable external API, integration tests
       * CS-4 (8-9): Large - cross-component, new dependency/service, meaningful migration, rollout plan
       * CS-5 (10-12): Epic - architectural change/new service, high uncertainty, phased rollout with flags

     **Mandatory output fields** wherever planning or reporting occurs:
     ```json
     {
       "complexity": {
         "score": 3,
         "label": "medium",
         "breakdown": {"surface": 1, "integration": 1, "data_state": 1, "novelty": 1, "nfr": 0, "testing_rollout": 1},
         "confidence": 0.75
       },
       "assumptions": ["Spec is final"],
       "dependencies": ["Payments service schema v2"],
       "risks": ["Downstream consumer expectations"],
       "phases": ["Design notes", "Implementation", "Tests", "Flagged rollout"]
     }
     ```

     **Enforcement rules**:
     - For CS ≥ 4, MUST include staged rollout, feature flags, and rollback plan in phases
     - Prefer complexity idioms: "scope", "risk", "breadth", "unknowns" over any time language
     - If uncertainty is high, ask clarifying questions and reflect in Novelty (N) + lower confidence
     - Self-check: If time words appear in drafts, replace with complexity reasoning or remove

     **Calibration examples** (include in idioms.md):
     - Rename a constant used in one file: S=0, I=0, D=0, N=0, F=0, T=0 → **CS-1 (trivial)**
     - Add new endpoint using existing service: S=1, I=1, D=1, N=1, F=0, T=1 → P=5 → **CS-3 (medium)**
     - Introduce new service with schema migration and staged rollout: S=2, I=2, D=2, N=2, F=1, T=2 → P=11 → **CS-5 (epic)**

   - Write `idioms.md` with illustrative patterns, directory conventions, and language-specific examples when relevant.
   - Keep references to the constitution explicit (e.g., link sections or quote identifiers). If any area is not yet defined, leave a TODO entry mirroring the constitution.

6) Maintain **architecture.md** (re-entrancy aware)
   **For UPDATE MODE**:
   - Preserve user's architectural decisions and custom diagrams
   - Update framework structure while keeping project-specific sections
   - Maintain technology stack choices and integration details
   - Keep custom anti-patterns and project-specific checklists

   - Capture/update the system's high-level structure: modules, services, layers, data flows, integration points.
   - Define boundaries and contracts (who may call whom, allowed dependencies, deployment targets).
   - **Domain Integration** (if domains detected): Reference `docs/domains/domain-map.md` for the authoritative domain architecture diagram. Architecture boundaries should align with domain boundaries. Document how domain contracts map to system-level interfaces.
   - Document technology-agnostic rules first; add stack-specific notes in dedicated subsections (e.g., "Example: Node service" / "Example: C# backend").
   - Track anti-patterns and reviewer checklists that should remain stable across implementations.

7) Propagate doctrine into helpers (if any)
   - For each file under `templates/` or command/skill directories (e.g. `skills/`, `.claude/commands/`) that references the constitution or rules, ensure links remain correct and language stays stack-neutral.
   - Where downstream workflows expect gates (e.g., "confirm plan aligns with rules"), keep the gate but phrase it generically.
   - Do not invent new templates; update only those already present.

8) Validate before writing
   - No document retains unresolved `[PLACEHOLDER]` tokens.
   - Version bumps and dates follow ISO `YYYY-MM-DD`.
   - Principles and rules are actionable, not vague aspirations.
   - Architecture doc reflects the latest agreed structure without contradicting Rules or Constitution.
   - Templates/commands (when touched) remain idempotent and reference the canonical paths exactly.

   **For UPDATE MODE - User Confirmation**:
   - Display summary of proposed changes:
     * "Will preserve: X custom sections, Y user values"
     * "Will update: Z framework sections"
     * "Will add: N new sections"
   - Show diff preview of significant changes
   - Ask: "Proceed with update? (backups will be created)"
   - If user declines, abort with no changes

9) Write files with intelligent merge
   **For CREATE MODE**:
   - Write CONST, RULES, IDIOMS, and ARCH with fresh content
   - Mark sections that users can customize with `<!-- USER CONTENT START -->` and `<!-- USER CONTENT END -->`

   **For UPDATE MODE**:
   - For each file, apply merge strategy from Step 3:
     * Preserve sections marked 'custom' completely
     * Update sections marked 'generated' with new content
     * Intelligently merge 'mixed' sections (keep user content, update framework)
   - Add protective markers around user content for future runs
   - Validate no user content was lost in the merge
   - Create backup of original files before writing (stored in `.constitution-backup/`)

   **For both modes**:
   - Apply the minimal set of edits needed for any templates or helper commands
   - Preserve contributor-authored content outside the edited blocks
   - Ensure all files remain internally consistent

10) Final summary (stdout)
   **For CREATE MODE**:
   - Report: "✨ Created new constitution and doctrine files"
   - Include version 1.0.0 and creation date
   - List all created files

   **For UPDATE MODE**:
   - Report: "🔄 Updated constitution and doctrine files"
   - Show version change: old → new with bump rationale
   - List what was preserved vs updated:
     * "Preserved: N custom sections, M filled values"
     * "Updated: X framework sections"
     * "Added: Y new sections"
   - If backups created, note location: `.constitution-backup/`

   **For both modes**:
   - List all modified paths with change type
   - Mention outstanding TODOs or follow-up owners if doctrine remains incomplete
   - Provide appropriate commit message:
     * CREATE: `docs: establish project constitution and doctrine files`
     * UPDATE: `docs: update constitution v{old} → v{new} while preserving customizations`

--------------------------------
## Synchronized doctrine (authoritative excerpts to enforce)

The following **must** be enforced across Constitution -> Rules & Idioms -> Plan/Tasks/Implementation:

1) **Documented Quality Strategy**
   - Capture how the team proves software is safe to release (automated tests, manual smoke tests, static analysis, runtime monitors).
   - Encourage technology-specific examples, but keep the core policy portable across stacks.

2) **Repeatable Tooling & Environments**
   - Specify required automation (CI jobs, linters, formatters, build scripts) and how contributors run them locally.
   - Note any cross-platform considerations (macOS, Linux, Windows/WSL).

3) **Coding & Review Standards**
   - Define expectations for naming, style, documentation, and code review checklists.
   - State how decisions trace back to the constitution (e.g., principle IDs or links).

4) **Architecture Guardrails**
   - Describe boundaries between major components, allowed dependencies, and integration hooks.
   - Include anti-patterns reviewers should watch for and escalation paths when architecture evolves.

5) **Domain Boundaries** (when domain system is active)
   - Cross-domain imports MUST use contracts (public interfaces) only.
   - Each plan phase should primarily target one domain.
   - Domain creation must be formalized before implementation begins.
   - Domain map must be updated when domain relationships change.
   - Business domains may depend on infrastructure; never the reverse.

6) **Change Governance**
   - Clarify who approves doctrine updates, how often reviews occur, and what evidence is required for compliance.

--------------------------------
## Acceptance Criteria (for this command)
- `docs/project-rules/constitution.md` is fully populated, versioned, and includes a Sync Impact Report.
- `docs/project-rules/{rules.md, idioms.md, architecture.md}` exist (or are created/updated) and reflect the same doctrine without contradictory guidance.
- **For UPDATE MODE**: All user customizations are preserved, no content is lost.
- **For CREATE MODE**: Files include protective markers for future customizations.
- Backups are created before updates (stored in `.constitution-backup/` with timestamp).
- No document retains unresolved placeholders; dates and versions adhere to the rules above.
- Any touched templates or command prompts reference the canonical doctrine paths and remain stack-neutral.
- If domains are detected, constitution includes Domain Governance section with cross-domain dependency rules.
- If domains are NOT detected, constitution works without domain references (domain governance is additive, not required).
- Final summary surfaces version bump, updated paths, preserved content metrics, and outstanding TODO follow-ups.
- User is shown preview and asked for confirmation before applying updates in UPDATE MODE.

--------------------------------
## Formatting & Style
- Use Markdown headings exactly as in templates; keep one blank line between sections; avoid trailing whitespace.
- Wrap rationale lines for readability (<100 chars where practical).
- Deterministic edits; idempotent if run twice without new inputs.

Read the full file on GitHub · 471 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 471 lines · 44 tokens per session scan A 48e7dfa0daf0

Subscribe to this mod's changes

plan-0-v2-constitution is a skill published in the GitHub repository jakkaj/tools (5 stars, last pushed 22d ago), licensed MIT. It adds 44 tokens to every session and 5,981 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens

next-partial-prefetching-adoption

Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…

vercel/next.js · 103 tokens

chronicle

Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…

microsoft/vscode · 72 tokens