Skip to content

/reset

Removes files installed by /optimus:init and /optimus:permissions from the project. Compares each file against plugin templates and classifies as unmodified, likely generated, or user-modified. Always asks before deleting. Git-tracked files are noted as recoverable. Tests are

shell
$ npx -y skills add oprogramadorreal/optimus-claude --skill reset --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/reset
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Removes files installed by /optimus:init and /optimus:permissions from the project. Compares each file against plugin templates and classifies as unmodified, likely generated, or user-modified. Always asks before deleting. Git-tracked files are noted as recoverable. Tests are

SKILL.md

reset.SKILL.md
description: Removes files installed by /optimus:init and /optimus:permissions from the project. Compares each file against plugin templates and classifies as unmodified, likely generated, or user-modified. Always asks before deleting. Git-tracked files are noted as recoverable. Tests are never touched. Monorepo and multi-repo aware. Use for clean reinstall or to stop using optimus.
disable-model-invocation: true

Reset — Remove optimus-generated files

Remove files installed by `/optimus:init` and `/optimus:permissions`. Does NOT uninstall the plugin itself — it only removes files from the project.

Safety Rules

Two boundaries the steps below cannot express, and that override anything else this skill does:

  • **NEVER** touch test files, test directories, or test configuration — even if `/optimus:unit-test` created them
  • **NEVER** touch anything outside `.claude/`, subproject `CLAUDE.md`, subproject `docs/`, and workspace-root `CLAUDE.md`

`.claude/settings.json` is never deleted outright — Step 4 removes optimus entries surgically and keeps user content.

Step 1 — Detect and inventory

If the current directory has no `.git/` directory, read `$CLAUDE_PLUGIN_ROOT/skills/init/references/multi-repo-detection.md` and apply it; in a multi-repo workspace, process each child repo independently and also check for a workspace-root `CLAUDE.md` (local-only). Otherwise it is a single repo — possibly a monorepo whose subprojects have their own init-installed `CLAUDE.md` and `docs/` files.

Inventory optimus-managed files, listing only what exists:

  • `.claude/CLAUDE.md`, `.claude/.optimus-version`, `.claude/settings.json`
  • `.claude/docs/{coding-guidelines,testing,styling,architecture,skill-writing-guidelines}.md`
  • `.claude/hooks/format-*` — the plugin's template hooks, any custom `format-<language>.sh` from init's unsupported-stack fallback, and the legacy `format-python.py` installed by optimus <= 3.5.0
  • `.claude/hooks/restrict-paths.sh`
  • `.claude/agents/{code-simplifier,test-guardian}.md` (legacy — installed by older optimus versions)
  • Monorepo: subproject `CLAUDE.md` and `docs/{coding-guidelines,testing,styling,architecture}.md` (subproject `coding-guidelines.md` exists only when init found the subproject's conventions differ from root — classify it via the near-exact-pair rule below)
  • Multi-repo: the above per child repo, plus the workspace-root `CLAUDE.md`

If no optimus files are found anywhere → say "Nothing to reset — no optimus files found" and stop. If `.claude/.optimus-version` is missing, warn that the project may not have been initialized by optimus, but proceed.

Step 2 — Classify each file

For each file, check git tracking with `git ls-files --error-unmatch <file>` (tracked → recoverable via `git checkout`).

Classify with shell comparison — do not read file bodies into context:

**Verbatim templates.** The template is the same-named file in the plugin: `format-*` hooks → `$CLAUDE_PLUGIN_ROOT/skills/init/templates/hooks/`, `restrict-paths.sh` → `$CLAUDE_PLUGIN_ROOT/skills/permissions/templates/hooks/`, legacy `.claude/agents/*.md` → `$CLAUDE_PLUGIN_ROOT/agents/`. Run `cmp -s <file> <template>`: identical → `UNMODIFIED`, else `MODIFIED`. A custom `format-<language>.sh` with no same-named template is `LIKELY_GENERATED` if it follows the shell-hook pattern (shebang, JSON stdin parsed into a file-path variable, file-extension guard, formatter invocation), else `MODIFIED`. **Retired templates:** `format-python.py` (replaced by `format-python.sh` in 3.5.1) has no template left to compare against — classify it `LIKELY_GENERATED` on the strength of its name alone, never `MODIFIED`. Reporting a retired plugin file as a user edit recommends keeping a hook that cannot run, and Step 4 then keeps its settings entry too, because the rule there only removes entries whose hook file is gone.

**Near-exact pair** — `docs/coding-guidelines.md` and `docs/skill-writing-guidelines.md`: line 1 carries init's `[PROJECT NAME]` substitution; the rest is verbatim from the same-named file under `$CLAUDE_PLUGIN_ROOT/skills/init/templates/docs/`. Run `tail -n +2 <file> | diff -q - <(tail -n +2 <template>)`: identical → `UNMODIFIED`, else `MODIFIED`.

**Generated docs** — content is filled in by init, so compare structure against the plugin's own templates at runtime (all under `$CLAUDE_PLUGIN_ROOT/skills/init/templates/`):

  • CLAUDE.md files: compare line 1 (`head -n 1`) against the template's line-1 HTML comment. Root `.claude/CLAUDE.md` matches `single-project-claude.md` or `monorepo-claude.md`; subproject `CLAUDE.md` → `subproject-claude.md`; workspace-root `CLAUDE.md` → `multi-repo-claude.md`.
  • `docs/testing.md`, `docs/styling.md`, `docs/architecture.md`: compare `##` headings against the same-named template under `templates/docs/`. For testing.md and styling.md the headings must match in order: `diff <(grep '^## ' <file>) <(grep '^## ' <template>)`. For architecture.md, init deletes the template's HTML-comment-marked conditional sections per project type, so require only that the file's `##` headings are an in-order subset of the template's headings. Pre-3.0 installs used three architecture.md template variants — also classify as LIKELY_GENERATED when the headings are an in-order subset of one of the 2.x sets: code-only (`Overview`, `Directory Map`, `Data Flow`, `Key Patterns`, `Dependencies Between Modules`), skill-authoring (`Overview`, `Directory Map`, `Skill Organization`, `Agent Boundaries`, `Reference Hierarchy`, `Orchestration Patterns`), or hybrid (`Overview`, `Directory Map`, `Code Architecture`, `Skill Architecture`).

Structure matches → `LIKELY_GENERATED`; otherwise → `MODIFIED`.

**Always:** `.claude/.optimus-version` → `UNMODIFIED` (pure tracking file). `.claude/settings.json` → `COMPLEX` (surgical handling in Step 4).

Summary: `UNMODIFIED` (exact template match), `LIKELY_GENERATED` (optimus structure, init-filled content), `MODIFIED` (user edits — or template drift

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withoptimus

Primes your project for peak Claude Code performance

Get the whole plugin, auto-invoked
Stats
66
Stars
0
Views
12
Forks
Active
Maintenance
Python
Language
MIT
License
3d ago
Last commit
6mo ago
Created

Repo: oprogramadorreal/optimus-claude

Other skills on optimus.