Refactor — Multi-Target Refactoring Orchestrator
SkillDocs & knowledgeMulti-target refactoring orchestrator. Use when: cleaning up messy code/docs, simplifying code, restructuring documents, batch cleanup. Not for: new features (use feature-dev), bug fixes (use bug-fix), code understanding (use code-explore). Output: refactored code/docs + review gate.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Refactor — Multi-Target Refactoring Orchestrator skill
What this skill tells your AI
The instructions your AI receives, as published by sd0xdev/sd0x-harness in skills/refactor/SKILL.md and read by ahel’s review.
Trigger
- Keywords: refactor, cleanup, clean up, simplify code, restructure, tidy up, reduce complexity, batch refactor
- zh-TW: 重構, 整理, 清理, 簡化
When NOT to Use
| Scenario | Alternative |
|---|---|
| New feature development | /feature-dev |
| Bug fix | /bug-fix |
| Code understanding | /code-explore |
| Doc review only | /codex-review-doc |
| Single file simplify (known target) | /simplify directly |
| Remove AI artifacts (known doc) | /de-ai-flavor directly |
Prohibited Actions
❌ git add | git commit | git push — per @rules/git-workflow.md
budget:token_budget150000</budget:token_budget>
Arguments
| Flag | Default | Description |
|---|---|---|
--target <path> | — | Specific file or directory (repo-relative) |
--auto | — | Auto-detect targets using inline metrics |
--max-targets N | 10 | Maximum targets per run |
--mode reference-stability | — | Narrow pointer-conversion pass (see § Reference-Stability Targets). Requires explicit --target files — repeat the flag for multiple files (--target a.md --target b.js, ≤ 5); incompatible with --auto |
Workflow
Phase 0: Target Detection → Phase 2: Incremental Refactor Loop → Phase 3: Report
(Phase 1: reserved for v2 — parallel exploration)
Phase 0: Target Detection & Planning
--mode reference-stability Branch (checked first)
When this mode is passed, Phase 0 takes this branch and bypasses the generic pipeline
below entirely — no AI-artifact heuristic, no refactor-catalog classification, and no v2
type skip (the mode accepts any maintained text file its transformation table covers: docs,
code, tests, instruction surfaces — a *.test.js target is valid here even though the
generic path skips test files as v2). In code and test files, only comment and
documentation regions are conversion candidates: executable strings, assertion
expectations, fixtures, snapshots, generated content, and ordinary data are never touched —
that is INV-005's boundary, and it is what makes skipping the behavioral gate sound (an
eligible prose-only comment cannot change runtime behavior — tool-consumed directives and
pragmas such as lint/type-checker directives or source-map metadata are not eligible
regions, since comments can carry machine semantics; anything that could change behavior is
out of this mode's reach):
- Validate each
--targetpath (same path-safety rules as below) - Enumerate: more than 5 files (after resolving any directory) →
[REFACTOR_BLOCKED] <target>: reference-stability accepts at most 5 enumerated files - Reject
--auto:[REFACTOR_BLOCKED] --auto: incompatible with reference-stability - Determine each file's review plane (doc vs code) for step 3 of the mode's loop
- Proceed to § Reference-Stability Targets — never to the generic code/doc paths
--target Mode
-
Validate path (per
references/target-detection.md):- Reject absolute paths (starts with
/) - Reject
..traversal - Reject symlink escape (resolved path outside repo root)
- Reject non-existent files
- On rejection:
[REFACTOR_BLOCKED] <path>: <reason>
- Reject absolute paths (starts with
-
Detect file type:
- Use extension mapping from
references/target-detection.md - For
.mdfiles: run AI artifact heuristic (scan for tool names, boilerplate, etc.; 3+ matches →doc-ai, else →doc-structure) - v2 types (config/shell/test): log
[REFACTOR_SKIPPED] {target}: type not yet dispatched (v2)and skip
- Use extension mapping from
-
Classify refactor types from
references/refactor-catalog.md(R01-R09 for v1)
--auto Mode
-
(Optional) Baseline: Run
/project-auditto capture health score -
Scan repo for candidate files (code + doc)
-
Score each candidate:
score = 0.40 × complexity + 0.35 × change_frequency + 0.25 × isolationcomplexity:wc -l <file>normalized 0-1change_frequency:git log --oneline -- <file> | wc -lnormalized 0-1isolation:1 - (import_count / max_import_count)
-
Sort descending, take top
--max-targets(default 10) -
Classify each target's file type and refactor types
Phase 2: Incremental Refactor Loop
Process each target in priority order. Budget: max --max-targets targets per run.
Code Targets
FOR EACH code target:
1. /verify fast → capture baseline exit code
IF baseline exit ≠ 0:
[REFACTOR_SKIPPED] {target}: baseline failing, cannot verify preservation
CONTINUE
2. /simplify {target}
3. /verify fast → capture post-refactor exit code
4. Behavioral gate (per references/behavioral-gate.md):
IF BEHAVIOR_CHANGED (0→non-0):
[REFACTOR_SKIPPED] {target}: behavioral regression detected
CONTINUE
IF NO_TESTS (all steps skipped):
⚠️ NO_TESTS: behavioral preservation not verified (advisory, continue)
5. /codex-review-fast (auto-loop, max 3 rounds)
IF still blocked:
[REFACTOR_BLOCKED] {target}: review not passing after max rounds
CONTINUE
6. /precommit-fast (lint + test gate, per CLAUDE.md required flow)
IF ⛔ FAIL:
[REFACTOR_BLOCKED] {target}: precommit not passing
CONTINUE
7. Mark as committable
Doc Targets
Doc targets bypass the behavioral gate entirely — docs have no executable tests.
FOR EACH doc target:
1. Classify: AI artifact heuristic
IF doc-ai (3+ matches): dispatch /de-ai-flavor {target}
ELSE (doc-structure): dispatch /doc-refactor {target}
2. /codex-review-doc (auto-loop, max 3 rounds)
IF still blocked:
[REFACTOR_BLOCKED] {target}: review not passing after max rounds
CONTINUE
3. Mark as committable
Reference-Stability Targets (--mode reference-stability)
A narrow pointer-conversion pass, typically dispatched as the bounded adjustment for an
ATTENTION_DIFFUSION / REFERENCE_DRIFT stall (@skills/codex-code-review/references/loop-diagnostics.md
§ Attention-Diffusion Subtypes and the Banking Sequence). Its contract is deliberately tighter
than the generic doc/code paths above:
| Rule | Detail |
|---|---|
| Targets | At most 5 explicitly enumerated files, --target only — never --auto; a directory target only after it resolves to ≤ 5 named files |
| Unit | The file is the blast-radius unit: each target gets one complete pass over its eligible regions (comments/doc prose — never executable strings, assertions, fixtures, snapshots, or data); the per-file eligible-pointer count is measured and reported before editing, not capped |
| Transformation | Homogeneous only: replace bare path:line pointers with path § heading (docs), path + symbol/function (code), path + named test case (tests), or path + flag/config key (instruction surfaces). A numeric hint survives only as "around line N" paired with a semantic anchor — never the sole locator (@rules/docs-writing.md § Durable References) |
| Forbidden | Unrelated prose cleanup, restructuring, renaming, or de-AI-flavor riding along. A file whose pointers need per-pointer factual reinterpretation is not a stabilization pass — reclassify (DOC_TOO_LONG / UNVERIFIED_CLAIM) or split by section |
| Exempt content | Point-in-time records (requests, ADRs, review logs), review evidence, scope proofs, and generated report formats keep exact file:line — never "updated" |
| Gate | Edits re-open the plane; this mode's internal review/precommit are evidence, never the outer terminal verdict. The outer gate is still owed on the whole change afterwards |
| Git | This mode performs no mutating git operation and creates no checkpoint/stash; it may suggest the user create a stash/WIP branch first — advisory prose, never a step |
FOR EACH reference-stability target (≤ 5):
1. Measure: count eligible bare path:line pointers (comment/doc regions only), report per file
2. Convert: homogeneous anchor transformation only
3. /codex-review-doc or /codex-review-fast per file type (auto-loop, max 3 rounds)
4. Mark as converted — outer whole-change gate still owed
v2 Targets
FOR EACH v2 target (config/shell/test):
[REFACTOR_SKIPPED] {target}: type not yet dispatched (v2)
CONTINUE
Phase 3: Report & Handoff
Per-Target Result Table
Output per references/output-template.md:
| # | Target | Type | Action | Gate | Result |
|---|--------|------|--------|------|--------|
Delta Report (--auto only)
If Phase 0 captured /project-audit baseline:
- Run
/project-auditagain - Compare dimension scores (before vs after)
- Output delta table
User Handoff
Generic refactors: list committable files. Suggest /smart-commit --execute (no auto-commit per @rules/git-workflow.md).
Reference-stability mode has its own handoff — no commit suggestion. Report each target as
converted with its pointer count, state that the outer whole-change gate remains owed,
and return control. /smart-commit --execute may be offered only after that outer pass is
noted (the banking sequence in @skills/codex-code-review/references/loop-diagnostics.md
§ Attention-Diffusion Subtypes and the Banking Sequence); calling converted files
"committable" here would offer the commit before the pass.
Review Loop
⚠️ Per @rules/auto-loop.md: fix → re-review → ... → ✅ Pass
| After editing... | Immediately run |
|---|---|
| Code files | /codex-review-fast |
| Doc files | /codex-review-doc |
Verification Checklist
Generic refactors:
- All code targets passed behavioral gate (
/verify fastPRESERVED) - All targets reviewed (
/codex-review-fastor/codex-review-doc) - Skip log complete for all skipped/blocked targets
- No
git add/commit/pushexecuted
Reference-stability mode (the behavioral gate does not apply — the mode runs no /simplify):
- Eligible-pointer counts (comment/doc regions only) measured and reported per file before editing
- Every change is a homogeneous anchor conversion inside an eligible region; no executable strings, assertions, fixtures, snapshots or data touched; no unrelated edits
- Exempt content (records, review evidence, scope proofs, report formats) untouched
- Each target reviewed per its plane (
/codex-review-fastor/codex-review-doc) - No mutating git operation; no checkpoint/stash created
- Handoff states the outer whole-change gate is still owed — no commit suggestion
Examples
/refactor --target src/utils.ts # Refactor single code file
/refactor --target docs/guide.md # Refactor single doc file
/refactor --target src/ # Refactor all code in directory
/refactor --auto # Auto-detect up to 10 targets
/refactor --auto --max-targets 5 # Auto with budget cap
/refactor --mode reference-stability --target docs/features/<feature>/2-tech-spec.md --target scripts/lib/<module>.js
# Pointer conversion only; handoff reports
# "converted; outer gate owed" — no commit suggestion
Signals
- GitHub stars
- 188
- Forks
- 24
- Last commit
- Sep 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
refactor-sd0xdev- Source
- github.com/sd0xdev/sd0x-harness