presets/constitution-sync/README.md
An opt-in preset that restores /constitution's ability to propagate amended guidance into your
project's own templates and command files. After you update the constitution, it aligns
plan-template.md, spec-template.md, tasks-template.md, project-local command files, and
guidance docs so they reflect the current principles.
This propagation used to be built into /constitution; it was dropped when the command moved to the
preset model. Installing this preset opts you back into it: you get the guidance materialized into
reviewed, committed artifacts instead of relying on runtime resolution alone.
What you're opting into. Propagation was removed deliberately — it duplicates the constitution as the source of truth and can fight the composition stack (materialized edits get shadowed or clobbered on the next recompose). This preset knowingly reintroduces that behavior, and those tradeoffs, for teams that want it. Read the caveats before installing.
For most projects the default composable stack is the recommended approach, and at organization scale it is usually the stronger governance model. Runtime resolution keeps the live constitution as the single source of truth (nothing to re-sync, so nothing drifts), and the stack composes the entire Spec Kit ecosystem — not just the SDD commands, but every command, template, script and extension — with explicit priority levels, strategies, and independent versioning. It is a capability, not automatic governance: a core team authors its own organizational presets and extensions, then owns, versions, and audits that policy in one place and rolls it across many repositories, instead of scattering frozen, per-repo copies no central team can see. This preset is a supported escape hatch for teams whose workflow depends on reviewing materialized artifacts directly — useful as a bridge, though for org-wide policy the better long-term path is usually a versioned preset a core team maintains.
Ships a single wrap-strategy override of speckit.constitution. It composes on top of the
current core command (via {CORE_TEMPLATE}), so it stays forward-compatible with core changes, and
appends a propagation pass that, after the constitution is written:
plan/spec/tasks-template.md in .specify/templates/ with the updated principles..specify/memory/constitution.md with the files it touched.plan, tasks, and analyze still read the live
constitution every run; this preset adds materialized copies on top — it does not replace the
source of truth..specify/templates/ scaffolds and command files that
are not managed by a preset/extension.Install it only if your team treats the materialized templates and commands as
reviewed, committed artifacts — for example, if plan-template.md's Constitution Check is
read in PRs as "here are our current gates" and is expected to track the constitution.
If you rely on the default runtime-resolution model, you do not need this preset: the live constitution is already the single source of truth and there is nothing to sync.
The preset resolution stack is how Spec Kit composes templates and commands going forward: they are layered, package-owned artifacts recomposed on demand, not frozen files you edit in place. Propagation is the opposite idea — it materializes guidance into files and freezes it. That tension is the main thing to understand before installing:
Materialized copies can drift. Anything propagated is a snapshot; if you amend the
constitution and do not re-run /constitution, the copies fall out of sync. The default runtime
model has no drift because it reads the live constitution every run.
Edits to composed files do not survive reconciliation. If the rest of your SDD flow is
preset/extension-managed, the commands it materializes (speckit.plan, speckit.specify,
speckit.tasks, speckit.analyze, speckit.implement, …) are recomputed from the stack. Any
guidance propagated into them is clobbered the next time the stack reconciles — on
specify integration use <key> / switch, specify integration upgrade, or any preset/extension
install or remove. The same applies to templates owned by another preset/extension. This is why
the preset restricts itself to project-local files; propagation is reliable only for
artifacts you own outright.
A pre-filled Constitution Check can bias /plan. Materializing concrete gates into
plan-template.md replaces the runtime pointer, so the first /plan pass may anchor on the
frozen text. Keep the pointer unless you specifically want committed gates.
Bottom line: this preset fits projects whose governed templates and commands are project-local
artifacts they review, with the rest of the SDD flow on the plain bundled core. If your
plan/specify/tasks/analyze commands or templates come from other presets or extensions,
prefer the default runtime-resolution model.
# constitution-sync is a bundled preset — no download needed
specify preset add constitution-sync
# Test from local directory
specify preset add --dev ./presets/constitution-sync
# Verify the wrapped command resolves
specify preset resolve speckit.constitution
# Remove when done
specify preset remove constitution-sync
To move back to runtime resolution, reset each materialized ## Constitution Check section in
.specify/templates/plan-template.md to the pointer:
## Constitution Check
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
[Gates determined based on constitution file]
Then remove this preset. See docs/upgrade.md for details.
MIT