docs/guides/evolving-specs.md
Existing projects need two separate maintenance loops:
specs/ artifacts
aligned with the code and product behavior you intend to ship.Use the upgrade workflow when you need newer Spec Kit project files. Use one of the artifact persistence models below when requirements or implementation insights change an existing project.
For the conceptual model definitions, see Spec Persistence Models.
Use flow-forward when each feature directory should remain a historical record.
When you add another feature or make a substantial follow-up change, create a
new feature spec through your installed /speckit.specify command and continue
through the standard flow:
/speckit.specify to create a new feature directory under specs/./speckit.plan to define the implementation approach./speckit.tasks to derive the work breakdown./speckit.implement and review the resulting code and artifact diffs.The previous feature directory remains intact for audit, comparison, or explaining how the project reached its current state. Use clear feature names or cross-links when a new directory supersedes or extends earlier work.
Use living spec when spec.md is the contract and plan.md and tasks.md are
derived from it.
When intended behavior changes, revise the existing spec.md first. Then
regenerate or manually revise downstream artifacts so they match the updated
spec:
spec.md with /speckit.clarify or an explicit edit./speckit.plan or revise plan.md so the technical approach matches
the revised spec./speckit.tasks or revise tasks.md so implementation work matches
the revised plan./speckit.analyze before implementation resumes to catch gaps between
the spec, plan, and tasks./speckit.implement, then review the code and artifact diffs together.Preserve important implementation rationale before replacing derived artifacts. If a plan or task list contains decisions that still matter, carry them forward explicitly.
Use flow-back when implementation discoveries are allowed to reshape the artifact set.
In this model, the first useful edit can happen wherever the insight lands:
spec.md, plan.md, tasks.md, or the implementation. After the change, bring
the artifact set back into alignment:
/speckit.analyze to check for gaps across spec.md, plan.md, and
tasks.md.Flow-back is flexible, but it requires discipline. Do not leave a lower-level
change in tasks.md or code if spec.md still says something different and the
spec is meant to remain trustworthy.
Before refreshing Spec Kit project files with the terminal command
specify init --here --force --integration <your-agent>, protect any
project-specific material that lives outside specs/, especially
.specify/memory/constitution.md and customized files under
.specify/templates/ or .specify/scripts/. Use <your-agent> for the AI
coding agent integration used by the target project.
Your specs/ directory is not part of the template package, but shared project
files can be overwritten by a forced refresh.