Refactor deep
Iterative refactoring of the feature-branch diff (full project when no diff exists) — runs `/optimus:refactor` in a fresh subagent context per iteration, applies fixes, runs tests, bisects failures, and continues until convergence or the iteration cap (default 8, hard cap 20). Supports `testability` or `guidelines` focus to prioritize finding categories. Fixes are applied automatically without per-change approval; for a single supervised pass, use /optimus:refactor. Creates a git checkpoint commit after each iteration (skip with --no-commit). Requires a test command in .claude/CLAUDE.md. Use for thorough guideline alignment or testability cleanup before /optimus:unit-test.From its SKILL.md
npx -y skills add oprogramadorreal/optimus-claude --skill refactor-deepAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- skips confirmationTells the agent to proceed without asking first, 3 times: "Fixes are applied automatically at each iteration without per-change approval" and 2 more.
- runs commandsInstructs the agent to run 5 commands, including `echo $CLAUDE_PLUGIN_ROOT` and 4 more.
SKILL.md
10.8 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
Project Refactor (Deep)
Orchestrate /optimus:refactor in an iterative cleanup loop. Each iteration runs in a fresh subagent context. All state lives in .claude/refactor-deep-progress.json. The orchestrator dispatches subagents, parses their structured output, and uses the harness_common.cli helper to apply fixes, run tests, bisect failures, and decide termination.
Step 1: Parse Arguments and Guard Against Re-entry
Re-entry guard
If your invocation prompt body already contains HARNESS_MODE_INLINE, stop immediately with: "Deep mode cannot run inside deep mode."
Parse invocation arguments
Extract from the user's arguments:
--resumeflag (present/absent)--no-commitflag (present/absent)--yesflag (present/absent) — auto-confirm the Step 3 prompt; required when invoked underclaude -por any other non-interactive session that cannot answerAskUserQuestion.--max-iterations N(optional, default 8, hard cap 20)- Focus keyword:
testabilityorguidelines(the same detection rules as/optimus:refactor) — match only standalone unquoted tokens, case-insensitive; keywords inside quotes stay in the scope text; if both keywords appear as standalone tokens, use the first one and warn: "Multiple focus keywords detected — using '[first]'. Run separate passes for each focus." --allow-red-baselineflag (present/absent) — proceed even if the Step 4 pre-loop baseline finds the suite already failing- Everything else → scope text (an existing path scopes the refactor to that path; other text is recorded as intent only and does not filter). With no path scope, iteration 1 covers the feature-branch diff when one exists, otherwise the full project; scope then widens per iteration only to files with active findings and newly modified files.
Examples:
/optimus:refactor-deep→ feature-branch diff (full project when no diff exists), 8 iterations, balanced focus/optimus:refactor-deep testability→ focus on testability barriers/optimus:refactor-deep guidelines src/backend→ guidelines focus, scoped to an existing path/optimus:refactor-deep --max-iterations 12→ 12 iterations/optimus:refactor-deep --resume→ continue from existing progress file/optimus:refactor-deep --no-commit→ skip per-iteration checkpoint commitsclaude -p "/optimus:refactor-deep --yes testability"→ headless / CI usage; skips the Step 3 confirmation prompt
Step 2: Pre-flight Checks
Plugin root
Resolve plugin_root (the absolute path to the installed plugin) and keep it for every CLI call and subagent dispatch below — the env var does not persist across separate Bash tool calls and reads empty on some platforms (notably Windows):
- Run
echo $CLAUDE_PLUGIN_ROOTvia Bash. If it is non-empty and<value>/scripts/harness_commonexists (test -d), use it. - Otherwise derive the root from the "Base directory for this skill:" line in your invocation context — strip the trailing
/skills/...segment (this skill's own directory) — and use it if<derived>/scripts/harness_commonexists. - If neither candidate contains
scripts/harness_common, stop: "Cannot resolve plugin root — ensure optimus-claude is installed via the Claude Code plugin system."
Wherever the steps below (and orchestrator-loop-*.md) write $CLAUDE_PLUGIN_ROOT, use this resolved plugin_root; if echo $CLAUDE_PLUGIN_ROOT was empty, substitute the absolute path literally.
Documentation prerequisites
Read $CLAUDE_PLUGIN_ROOT/skills/init/references/prerequisite-check.md and apply the prerequisite check. If .claude/CLAUDE.md is missing, stop: "Deep mode requires /optimus:init to set up project context first."
Test command
Read .claude/CLAUDE.md and capture the documented test command verbatim — store the exact string (e.g. npm test, pytest) as test_command. If none is documented, stop and recommend /optimus:init to set one up first. You pass this captured command to init in Step 4 via --test-command; init can also parse .claude/CLAUDE.md itself, but its parser is stricter than a human read, so passing the command you just read avoids a spurious "No test command found" failure on a command the CLI can't parse.
Git state
On a fresh (non---resume) run, refuse to proceed if the working tree has uncommitted changes unless --no-commit is passed. On --resume, the existing progress file's _snapshot.pre_head is the recovery anchor.
Step 3: User Confirmation
Skip this step entirely when --resume is given, or when --yes is given (headless / CI: the caller has pre-approved the run).
Warn the user with:
Deep refactor runs up to [N] iterative refactor passes. Each iteration spawns a fresh subagent — credit and time consumption multiplies with iteration count. Fixes are applied automatically at each iteration without per-change approval. Low test coverage increases the chance of undetected breakage; consider running
/optimus:unit-testfirst to strengthen the safety net. Press Esc twice to interrupt — state is saved per-iteration; resume with/optimus:refactor-deep --resume.Test command:
[test command]Focus:[focus or "balanced"]Mid-iteration interrupts may leave the working tree inconsistent; clean iterations are fully recoverable via
--resume.
Use AskUserQuestion — header "Deep refactor", question "Proceed with deep refactor?":
- Proceed — "Run iterative refactor until clean (max [N] iterations)"
- Cancel — "Don't run deep mode"
If the user selects Cancel, stop.
Step 4: Initialize or Resume Progress
Read $CLAUDE_PLUGIN_ROOT/references/harness-init-resume.md and apply its shared init/resume semantics — the resume invocation and cap raising, init error recovery (a prior run is discarded by re-invoking init with --force), --no-commit persistence, and .done.json archival — with these parameters:
<progress-path>=.claude/refactor-deep-progress.json<cap-flag>=--max-iterations
On fresh run
PYTHONPATH="$CLAUDE_PLUGIN_ROOT/scripts" python -m harness_common.cli init \
--skill refactor \
--max-iterations [N] \
--test-command "<test_command>" \
[--focus testability | --focus guidelines] \
[--scope "<scope>"] \
[--no-commit] \
--progress-file ".claude/refactor-deep-progress.json" \
--project-dir "."
If --focus is supplied with anything other than testability or guidelines, the CLI rejects it.
Establish a green baseline
Skip on --resume only when the prior run completed at least one iteration — then the baseline already ran and its calibrated timeout is persisted. Check the progress file's single iteration.completed field (a targeted read — do not load the findings array into context): if it is 0, the prior run never entered the loop (it stopped at baseline-red, or was interrupted at or before the first iteration), and resume never re-checks the baseline — run the command below after resume (green required, or --allow-red per the user) before entering the loop. On a fresh run, after init succeeds, verify the suite is green before the loop:
PYTHONPATH="$CLAUDE_PLUGIN_ROOT/scripts" python -m harness_common.cli baseline \
--progress-file ".claude/refactor-deep-progress.json" \
[--allow-red]
baseline runs the test command once and calibrates the per-iteration timeout from how long it takes (so a slow suite, re-run repeatedly during bisection, doesn't spuriously time out). It prints baseline-green (continue) or, on a failing suite, baseline-red with a non-zero exit. On baseline-red, stop and show the user the failing tests — a red starting tree makes bisection blame the iteration's fixes and revert good work. Tell the user to fix the failing tests, or to accept the red baseline by re-running with --allow-red-baseline; either way the run continues via --resume, which re-establishes the baseline per the skip rule above. The CLI's own failure message says to pass --allow-red — that is its internal flag, not a skill argument; the skill-level flag is --allow-red-baseline. Pass --allow-red only when the user supplied --allow-red-baseline (proceed without a green safety net; the timeout is left at its default).
Step 5: Run the Iteration Loop
Read $CLAUDE_PLUGIN_ROOT/references/orchestrator-loop-single.md and follow its 8-step per-iteration body, with these parameters:
<base-skill>=refactor<progress-path>=.claude/refactor-deep-progress.json<max>= the iteration cap from Step 1
When dispatching the refactor subagent, include the focus keyword in the prompt body if one was set:
... Phase: refactor
Focus: <testability|guidelines>
...
The base skill reads config.focus from the progress file (the CLI's init recorded it there) and applies the finding-cap weighting accordingly — but echoing the focus into the dispatch prompt makes the intent visible to anyone reading the run trace.
Step 6: Final Report
PYTHONPATH="$CLAUDE_PLUGIN_ROOT/scripts" python -m harness_common.cli final-report \
--progress-file ".claude/refactor-deep-progress.json" \
--archive
This prints the cumulative report; archival semantics, including the diminishing-returns soft-exit exception, are in the loop reference's "After the loop" section.
Important
User approval recorded at Step 3 stands for the entire loop — fixes are applied without per-change confirmation. Recommend /optimus:commit next, followed by /optimus:pr once the branch is ready. Tell the user: Tip: stay in this conversation when running /optimus:commit and /optimus:pr so the implementation context is captured. Other downstream skills (/optimus:code-review, /optimus:unit-test) should still run in fresh conversations.
Tip
If the project has low test coverage and you suspect testability barriers are blocking better coverage, run with testability focus first; then re-run with guidelines focus (in a fresh conversation) to align style and convention violations once tests are in place.