Getting Started
Upgrade Guide
Refresh the Atomic Spec CLI and pull the latest framework files into existing projects without losing customizations.
You have Atomic Spec installed in one or more projects and want to refresh them with the latest framework files (knowledge stations, subagents, templates, slash commands, scripts).
Quick Reference
| What to Upgrade | Command | When to Use |
|---|---|---|
| The PyPI CLI | uv tool install atomic-spec --force | Get the latest atomicspec CLI binary |
| Framework files in a project (PyPI path) | atomicspec init --here --force --ai <agent> | Refresh templates, commands, scripts |
| Framework files in a project (clone path) | ./init-project.sh /path/to/project --ai <agent> (re-run) | Alternative if you cloned the repo |
| The Atomic Spec source clone | git pull origin main inside your Atomic-Spec/ checkout | Keep the source tree current before re-running init-project.sh |
What Changed in v0.2.0?
v0.2 closes the “AI silently picks structural defaults” gap. Fully backwards compatible — v0.1.x registries merge cleanly without any migration script.
- Hardened
/atomicspec.clarify— extends the v0.1 ambiguity scan with three new phases: architectural lurkers (scoped by app type), trigger-driven probes (declarative keyword table at.specify/knowledge/triggers.yaml), and compliance probes (GDPR / PCI / HIPAA / COPPA / SOC 2 with two-step Y/N/Unsure gates). Lite mode (~5 min, 7 questions, default) or Detailed (~15 min, ~22 questions). - Pre-plan interview gate —
/atomicspec.planPhase 0 now checksinterview_completedin the registry. If null, surfaces a three-option AskUserQuestion (run clarify / proceed with assumed defaults / cancel) instead of an abort wall. - Reverse-traceability exit gate — new Phase 10 in
/atomicspec.implement. Compares every changed file againsttraceability.md; flags orphans (files no task referenced). Catches the “Docker without asking” failure mode after the fact. Warn-only by default in v0.2.0; promoted to enforce-by-default in v0.2.1. - Registry schema bumped 3 → 4 — 12 new fields covering payment, email, domain primitives (money / id / time), integrations (webhook ingress, outbound HTTP), compliance, deployment target, search, scheduling, i18n, file storage, job durability. Plus a
_provenanceblock tracking how each decision was made (human / accepted_recommendation / manifest_scan / unknown_legacy). - Directive 7 (Project Defaults Registry) clause amendment — now explicitly covers any structural choice that pervades the codebase (containerization, deployment target, monorepo layout, framework choice, cross-cutting infrastructure, domain primitives, auth model, observability stack, CI/CD platform). The “Docker-without-asking” failure mode is now a Directive 7 violation, not an unspecified blind spot. Eight directives stays eight — clause amendment, not a new directive.
- Two new subagents:
backend/metering-engineer(entitlement schemas, two-phase enforcement, AI token controls) andux/interaction-patterns(state-machine templates, hide-vs-disable RBAC, limit-threshold UI surfacing). - Governance / pattern split — 7 Knowledge Stations (05, 06, 07, 08, 09, 10, 15) gained cross-reference headers pointing at the matching subagent for code-level patterns. Full content migration deferred to v0.2.1 (cross-refs work today).
Migration note
No action required for v0.1.x projects. New interview_completed field defaults to null; /atomicspec.clarify is advertised (soft nudge from specify) but does NOT block — only blocks at /atomicspec.plan Phase 0 if the registry is genuinely uninterviewed. New registry fields default to null and fill in as features hit them.
What Changed in v0.1.1?
- PyPI release:
atomicspecis now installable viauv tool install atomic-spec - Auto-publish pipeline: pushing a
v*tag builds 34 per-agent template zips and uploads to PyPI via Trusted Publishing cursor-agentaccepted alongsidecursoras an agent key- Tech-stack gate tightened:
check-prerequisitesnow rejects unfilled[placeholder]values instead of silently passing - Registry template de-duplicated:
target_platform:andmobile:sections no longer appear twice - Registry-absent gate added:
check-prerequisites --check-gatesnow fails ifspecs/_defaults/registry.yamlis missing (escape hatch:ATOMIC_SPEC_NO_REGISTRY=1). Direct users to the new/atomicspec.registrycommand to create it from project manifests. - New
/atomicspec.registrycommand: discovers defaults frompackage.json,pyproject.toml,Cargo.toml,go.mod, Docker/CI configs, etc., batches HITL confirmation, and writesregistry.yaml+changelog.mdatomically. /atomicspec.implementPhase 9 (Registry Sync on Exit): every completed implementation now scans for new project-wide patterns (tenancy filtering, error envelope format, structured logging, etc.) and prompts the user to add them to the registry. Satisfies Directive 7 “Protocol — On Exit” at feature level. Only exception to Context Pinning — scoped to Phase 9 only.
Migration note for projects without a registry
If you upgrade a project that was initialized before v0.1.1 and doesn’t have specs/_defaults/registry.yaml, the first /atomicspec.tasks or /atomicspec.implement run will now fail the gate with a clear instruction. Two options:
- Recommended: run
/atomicspec.registryonce to discover your existing defaults from manifests and confirm them. - Quick escape:
export ATOMIC_SPEC_NO_REGISTRY=1(bash) or$env:ATOMIC_SPEC_NO_REGISTRY='1'(PowerShell) to proceed with graceful degradation for this session. Decisions will be feature-specific until you run/atomicspec.registryor/atomicspec.planPhase 0.9 populates the registry.
Part 1: Refresh the source
If you installed via PyPI, upgrade the CLI:
uv tool install atomic-spec --force
If you cloned the repo instead, pull the latest version:
cd /path/to/Atomic-Spec
git pull origin main
Part 2: Re-initialize the project
Option A — PyPI CLI (recommended)
Run inside your project directory:
atomicspec init --here --force --ai claude
Replace claude with your AI assistant. See Supported AI Agents for the full list.
Option B — Clone path
Run the initializer from your local clone against the existing project:
# macOS / Linux / WSL
./init-project.sh /path/to/existing/project --ai claude
# Windows PowerShell
.\init-project.ps1 -TargetPath "D:\path\to\existing\project" -AIAgent "claude"
[!WARNING] Re-initialization replaces
.specify/,templates/,memory/, andscripts/inside the target project. If you customized any of those files, commit them to git first, then reconcile after the upgrade.
What gets updated vs. what stays safe
Updated by re-init
- ✅ Slash command files (
.claude/commands/,.github/prompts/, etc.) - ✅ Scripts (
.specify/scripts/) - ✅ Templates (
.specify/templates/) - ✅ Memory files (
.specify/memory/) — ⚠️ see warnings below
Never touched by re-init
- ✅ Your specifications (
specs/001-my-feature/spec.md, etc.) - ✅ Your implementation plans and tasks (
specs/001-my-feature/plan.md,specs/001-my-feature/tasks/,specs/001-my-feature/index.md,specs/001-my-feature/traceability.md, etc.) - ✅ Your source code
- ✅ Your git history
The specs/ directory is excluded from template packages and is never overwritten.
Understanding the --force flag
Without --force, the CLI warns you and asks for confirmation:
Warning: Current directory is not empty (25 items)
Template files will be merged with existing content and may overwrite existing files
Proceed? [y/N]
With --force, it skips the confirmation and proceeds immediately. Your specs/ directory is always safe — --force only affects template files (commands, scripts, templates, memory).
⚠️ Important Warnings
1. Constitution file will be overwritten
Known issue: atomicspec init --here --force currently overwrites .specify/memory/constitution.md with the default template, erasing any customizations you made.
Workaround:
# 1. Back up your constitution before upgrading
cp .specify/memory/constitution.md .specify/memory/constitution-backup.md
# 2. Run the upgrade
atomicspec init --here --force --ai claude
# 3. Restore your customized constitution
mv .specify/memory/constitution-backup.md .specify/memory/constitution.md
Or use git to restore it:
# After upgrade, restore from git history
git restore .specify/memory/constitution.md
2. Custom template modifications
If you customized any templates in .specify/templates/, the upgrade will overwrite them. Back them up first:
# Back up custom templates
cp -r .specify/templates .specify/templates-backup
# After upgrade, merge your changes back manually
3. Duplicate slash commands (IDE-based agents)
Some IDE-based agents (like Kilo Code, Windsurf) may show duplicate slash commands after upgrading — both old and new versions appear.
Solution: Manually delete the old command files from your agent’s folder.
Example for Kilo Code:
cd .kilocode/rules/
ls -la
rm atomicspec.specify-old.md
rm atomicspec.plan-v1.md
Restart your IDE to refresh the command list.
Common Scenarios
Scenario 1: “I just want new slash commands”
# Refresh the CLI
uv tool install atomic-spec --force
# Update project files
atomicspec init --here --force --ai claude
# Restore your constitution if customized
git restore .specify/memory/constitution.md
Scenario 2: “I customized templates and constitution”
# 1. Back up customizations
cp .specify/memory/constitution.md /tmp/constitution-backup.md
cp -r .specify/templates /tmp/templates-backup
# 2. Refresh the CLI
uv tool install atomic-spec --force
# 3. Update the project
atomicspec init --here --force --ai claude
# 4. Restore customizations
mv /tmp/constitution-backup.md .specify/memory/constitution.md
# Manually merge template changes if needed
Scenario 3: “I see duplicate slash commands in my IDE”
This happens with IDE-based agents (Kilo Code, Windsurf, Roo Code, etc.).
cd .kilocode/rules/
ls -la
rm atomicspec.old-command-name.md
Then restart your IDE.
Scenario 4: “I’m working on a project without Git”
If you initialized your project with --no-git, you can still upgrade:
cp .specify/memory/constitution.md /tmp/constitution-backup.md
atomicspec init --here --force --ai claude --no-git
mv /tmp/constitution-backup.md .specify/memory/constitution.md
The --no-git flag skips git initialization but doesn’t affect file updates.
Using --no-git
The --no-git flag tells Atomic Spec to skip git repository initialization. Use when:
- You manage version control differently (Mercurial, SVN, etc.)
- Your project is part of a larger monorepo with existing git setup
- You’re experimenting and don’t want version control yet
During initial setup:
atomicspec init my-project --ai claude --no-git
During upgrade:
atomicspec init --here --force --ai claude --no-git
What --no-git does NOT do
- Does NOT prevent file updates
- Does NOT skip slash command installation
- Does NOT affect template merging
It only skips running git init and creating the initial commit.
Working without Git
If you use --no-git, you’ll need to manage feature directories manually by setting SPECIFY_FEATURE before using planning commands:
# Bash/Zsh
export SPECIFY_FEATURE="001-my-feature"
# PowerShell
$env:SPECIFY_FEATURE = "001-my-feature"
Without git, Atomic Spec can’t detect your current branch name to determine the active feature. The environment variable provides that context manually.
Troubleshooting
”Slash commands not showing up after upgrade”
Cause: Agent didn’t reload command files.
Fix:
-
Restart your IDE/editor completely (not just reload window)
-
For CLI-based agents, verify files exist:
ls -la .claude/commands/ # Claude Code ls -la .gemini/commands/ # Gemini ls -la .cursor/commands/ # Cursor -
Check agent-specific setup:
- Codex requires
CODEX_HOMEenvironment variable - Some agents need workspace restart or cache clearing
- Codex requires
”I lost my constitution customizations”
# If you committed before upgrading
git restore .specify/memory/constitution.md
# If you backed up manually
cp /tmp/constitution-backup.md .specify/memory/constitution.md
Prevention: Always commit or back up constitution.md before upgrading.
”CLI upgrade doesn’t seem to work"
# List installed uv tools
uv tool list
# Reinstall if missing
uv tool uninstall atomic-spec
uv tool install atomic-spec
# Verify executable path
which atomicspec # macOS/Linux
where.exe atomicspec # Windows
"Do I need to run atomicspec every time I open my project?”
No. You only run atomicspec init once per project (or when upgrading).
Once you’ve run atomicspec init, slash commands (/atomicspec.specify, /atomicspec.plan, etc.) are permanently installed in your project’s agent folder (.claude/, .github/prompts/, etc.). Your AI assistant reads these files directly — no need to run atomicspec again.
If your agent isn’t recognizing slash commands:
- Verify command files exist (see above)
- Restart your IDE/editor completely
- Check you’re in the correct directory where you ran
atomicspec init
Version Compatibility
Atomic Spec follows semantic versioning. The CLI and project files are designed to be compatible within the same major version.
Best practice: Keep the CLI and project files in sync by upgrading both together during major version changes.
Next Steps
After upgrading:
- Test new slash commands: Run
/atomicspec.constitutionor another command to verify everything works - Review release notes: Check Atomic Spec Releases for new features and breaking changes
- Update workflows: If new commands were added, update your team’s development workflows
- Check documentation: Visit the Atomic Spec repository for updated guides