Reference / Commands
solomonar uninstall
Remove the Solomonar framework, catalog extensions, and runtime adapters from one checkout with solomonar uninstall, keeping project extensions, decisions, notes, and task history.
On this page
Removes the Solomonar installation from the checkout you run it in, or the one -C names: the framework core, every installed catalog extension, the runtime adapter files, the generated part of AGENTS.md, the framework line in docs/README.md, and .solomonar/manifest.json. It plans from the manifest alone and removes only files the manifest records as written by the CLI and still unchanged. An edited file stops the command until you decide about it.
It is not extension removal and not binary removal:
- To remove one extension and keep the framework, use
extension remove. The core cannot be removed that way;uninstallis the only command that removes it, together with everything else. uninstallleaves thesolomonarexecutable, its Homebrew package, runtime applications such as Claude Code, and user-wide configuration in place. Remove the executable afterwards, if you no longer need it, as described in Install the CLI.
When to use it
When a project stops using Solomonar, or before installing it again from scratch. Run it in each checkout you want cleaned up; other worktrees are not changed.
Who runs it
You, from your terminal. Review and commit the removal yourself; agents do not uninstall projects.
Synopsis
solomonar uninstall [--keep <path>]... [--overwrite <path>]... [-y|--yes] [--dry-run] [--json]
Flags
| Flag | Meaning |
|---|---|
--keep |
Leave one conflicting file in place, no longer managed; one path per flag. |
--overwrite |
Remove one edited managed file anyway; one path per flag. For AGENTS.md, remove the framework part and keep your project notes. |
-y, --yes |
Accept the plan without the confirmation prompt. Required without a terminal and with --json. It never resolves a conflict. |
--dry-run |
Run every check, print the plan, and write nothing. |
A path passed to --keep or --overwrite must be a conflict of this plan; another path exits 2 with invalid_value. The global flags work as for every command.
What is removed and what stays
| Path | uninstall |
|---|---|
docs/solomonar/ core files and installed catalog extensions, including older layouts such as docs/solomonar/skills/go/ |
Removed when unchanged; an edited file is a conflict. |
Runtime adapter files: the .claude/, .agents/, .codex/, and .github/ stubs, and a CLAUDE.md the CLI created |
Removed when unchanged; other files in those directories stay. |
AGENTS.md |
The framework part above ## Project notes is removed. Your notes stay byte for byte; the file is deleted only when the notes section is still the empty template. |
docs/README.md |
Only the line - `docs/solomonar/`: framework rules, roles, and skills in ## Documents is removed. A changed entry stays and is reported for you to review. |
.solomonar/manifest.json |
Removed last. |
Project extensions in docs/solomonar/extensions/<name>/ |
Kept, with every file in them. Only their adapter stubs and AGENTS.md lines go. |
docs/decisions.md, docs/stack.md, docs/architecture.md, specifications, work specs, reports, prototypes |
Kept. Decisions stay as history, also those that name removed paths. |
The registry refs/heads/workflow-state with every task, task branches, other worktrees, .git, .jj |
Kept and never read. |
Directories left empty are removed, including docs/solomonar/ and .solomonar/. The top-level docs, .claude, .codex, .agents, and .github directories stay.
Because your notes, decisions, and other documents stay, the project can still mention Solomonar after uninstall. The command warns about the references it knows of, such as a kept CLAUDE.md that still imports @AGENTS.md; the rest is yours to edit.
Examples
These examples come from a run of the 0.2.0 build in the fictional ledger project, initialized for Claude Code and Codex with the go extension, the money project extension activated, one planned task, and a project note in AGENTS.md; paths are shortened to /work/ledger.
Preview the removal first; --dry-run writes nothing:
solomonar uninstall --dry-run
Plan
remove .agents/skills/go/SKILL.md
remove .agents/skills/prototype/SKILL.md
...
remove .codex/agents/spec-reviewer.toml
update AGENTS.md managed part removed; project notes kept
remove CLAUDE.md
update docs/README.md framework index line removed
remove docs/solomonar/agents/adversarial-reviewer.md
...
remove docs/solomonar/extensions/go/rules/go/testing.md
skip docs/solomonar/extensions/money project extension; source kept
remove docs/solomonar/report.md
...
remove docs/solomonar/skills/work-spec/template.md
remove .solomonar/manifest.json
Would uninstall solomonar from /work/ledger
2 files updated, 47 removed, 1 skipped
In a terminal, uninstall shows the grouped plan on stderr and asks before it writes. Answering n prints Cancelled; nothing was written. and exits 0:
solomonar uninstall
Plan
framework 0.3.2
update AGENTS.md managed part removed; project notes kept
update docs/README.md framework index line removed
remove docs/solomonar/agents/ (6 roles)
remove docs/solomonar/report.md
remove docs/solomonar/reviewer.md
remove docs/solomonar/rules.md
remove docs/solomonar/skills/prototype/ (SKILL.md, template.md)
remove docs/solomonar/skills/solomonar/ (SKILL.md)
remove docs/solomonar/skills/spec/ (SKILL.md, template.md)
remove docs/solomonar/skills/work-spec/ (SKILL.md, template.md)
extensions
remove docs/solomonar/extensions/go/ (6 files)
skip docs/solomonar/extensions/money project extension; source kept
runtime claude
remove .claude/agents/ (6 role stubs: 5 core, 1 extension)
remove .claude/skills/ (5 skill stubs: 4 core, 1 extension)
remove CLAUDE.md
runtime codex
remove .agents/skills/ (5 skill stubs: 4 core, 1 extension; solomonar/agents/openai.yaml)
remove .codex/agents/ (6 role stubs: 5 core, 1 extension)
manifest
remove .solomonar/manifest.json
Proceed? [Y/n]
Without a terminal, pass --yes. With --json, --yes is required as well.
A conflict
You edited docs/solomonar/rules.md. The plan lists every file and the conflict on stdout, and nothing is written (exit 4):
solomonar uninstall --yes
Plan
remove .agents/skills/go/SKILL.md
...
conflict docs/solomonar/rules.md modified since installation (manifest sha256 differs)
...
remove .solomonar/manifest.json
error: uninstall found 1 conflict (file_conflict)
check: no planned file conflicts with the project's files
found: 1 conflict: docs/solomonar/rules.md
fix: rerun with --keep <path> to keep the project's file, or --overwrite <path> to remove it
nothing was written
Decide whether you still need the edit, then choose per file. --keep leaves the file in place, no longer managed:
solomonar uninstall --keep docs/solomonar/rules.md --yes
Uninstalled solomonar from /work/ledger
2 files updated, 46 removed, 1 kept, 1 skipped
kept: AGENTS.md, docs/README.md, docs/solomonar/extensions/money, docs/solomonar/rules.md
The registry (refs/heads/workflow-state) and other worktrees are unchanged.
Next:
1. Review the removal with git status, then commit it.
warning: docs/solomonar/rules.md is kept and no longer managed; remove it by hand if unneeded
--overwrite docs/solomonar/rules.md deletes the edited file instead, and the result reads 2 files updated, 47 removed, 1 skipped. If AGENTS.md has lost its ## Project notes heading, --overwrite AGENTS.md is refused so that your notes are never discarded: restore the heading, or keep the file.
A file that became a symlink, directory, or other non-regular file is never followed or removed; keep it with --keep and remove it by hand. A record outside the paths uninstall removes can only be kept.
After the removal
uninstall never stages or commits. In the example, git status shows 46 deleted files and 3 modified ones: AGENTS.md, docs/README.md, and the kept docs/solomonar/rules.md. What is left in the working tree is project content:
AGENTS.md
docs/README.md
docs/decisions.md
docs/solomonar/extensions/money/extension.json
docs/solomonar/extensions/money/money.md
docs/solomonar/rules.md
docs/stack.md
go.mod
AGENTS.md now holds only the notes section:
## Project notes
<!-- Project-owned instructions; preserved by framework upgrades. Keep this heading unchanged. -->
Use integer cents.
The task history is untouched: the registry tip is the same commit, and solomonar task show still reads it:
ID STATUS STAGE OWNER NEXT
W-001 planned - - -
registry refs/heads/workflow-state @ ff93418 · 2026-10-24T18:26:44Z
Running uninstall again finds no manifest and does nothing, with exit 0:
No Solomonar manifest; nothing to uninstall automatically.
Known references
A CLAUDE.md that you wrote before init is not managed and stays. When it still imports @AGENTS.md, uninstall warns, with --dry-run and on success:
warning: CLAUDE.md still imports @AGENTS.md, which uninstall removes; edit it by hand
A customized framework entry in docs/README.md is skipped with the same manual_reference warning code. Other mentions of Solomonar in your documents are not searched for.
JSON
--json --yes prints one envelope; files holds every plan line and preserved the kept paths and the registry:
{
"ok": true,
"command": "uninstall",
"data": {
"project": "/work/ledger",
"files": [
{
"path": ".agents/skills/go/SKILL.md",
"action": "remove",
"owner": "runtime:codex"
},
...
],
"preserved": [
"AGENTS.md",
"docs/README.md",
"docs/solomonar/extensions/money",
"refs/heads/workflow-state"
],
"next": [
"Review the removal with git status, then commit it."
]
},
"warnings": []
}
The absent-manifest no-op has "already_absent": true and empty files, preserved, and next.
Install again
solomonar init after uninstall reuses the retained registry, the project notes, and the project extension sources; reactivate a project extension with extension add <name>. init never rewrites an existing docs/README.md, so the removed framework index line does not come back; add it by hand if you want it.
Errors
| Code | Exit | Meaning |
|---|---|---|
invalid_value |
2 | A --keep or --overwrite path is not a conflict of this plan, or --overwrite cannot resolve it. |
interactive_required |
2 | No terminal, or --json, and no --yes. |
cli_outdated |
3 | A newer release wrote the project; install a newer solomonar. |
file_conflict |
4 | An edited or unsafe managed file or manifest, a record outside the removal paths, a hook entry, or a file that changed after the plan was shown; nothing is written. |
manifest_invalid |
1 | .solomonar/manifest.json cannot be decoded; inspect it, never edit it by hand. |
A project whose manifest records a runtime hook entry cannot be uninstalled automatically: neither flag resolves that conflict until hook entry removal ships with the planned guard hooks. The current releases install no hook entries.
A handled failure or an interruption restores every file this run changed, and the command ends with nothing was written. If restoring itself fails, the error lists the paths under found: not restored: …, and the last line reads rollback incomplete; recover the paths named above; restore them, for example with git restore, then rerun. There is no recovery after a forced kill or power loss during the removal.