From code-foundations
Guides safe refactoring using Code Complete's fix-first-then-refactor discipline: separates bug fixes from refactoring, enforces small-change rigor, and helps decide between refactor, rewrite, or fix-only.
How this skill is triggered — by the user, by Claude, or both
Slash command
/code-foundations:cc-refactoring-guidanceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Refactoring is behavior-preserving change to *working* code. Three rules govern it:
Refactoring is behavior-preserving change to working code. Three rules govern it:
| Rule | Value | Source |
|---|---|---|
| Small-change error rate | Peaks at 1–5 lines | Weinberg 1983 |
| First-attempt success | <50% for any change | Yourdon 1986b |
| Review effect on 1-line changes | 55% → 2% error rate | Freedman and Weinberg 1982 |
Shared thresholds (routine length, parameters, cohesion): Read(${CLAUDE_PLUGIN_ROOT}/references/cc-foundations.md). The full 40-item refactoring checklist: Read(${CLAUDE_SKILL_DIR}/checklists.md).
Definitions:
Refactor toward something, not just away from bad code. Find the best examples of the target pattern in this codebase, the module's conventions, and how similar refactorings were structured; match the existing pattern exactly, or — if none exists — be deliberate about the precedent you're setting. Full gate: Read(${CLAUDE_PLUGIN_ROOT}/references/pattern-reuse-gate.md).
Guide the refactoring decision and the safe process.
When production is down: fix only — no refactoring or cleanup — deploy, then refactor as a separate activity when stable. Combining the two raises complexity and error likelihood.
Refactor vs rewrite:
Safe process (priority order):
If tests fail after a refactoring: don't debug extensively — back out the change, take a smaller step, and reconsider whether you understood the code.
When prerequisites are missing:
Skill(code-foundations:welc-legacy-code) and write characterization tests first; if impossible, document expected behavior, write a manual test script, and increase review rigor.Transform code smells into clean code while preserving all observable behavior (same tests pass before and after): setup/takedown smell → encapsulated interface; tramp data → direct access or restructure; duplicated code → extracted routine; speculative "design ahead" code → remove it. Behavior changes are fixing, not refactoring — fix first.
If you mixed fix and refactor in one commit:
git reset --soft HEAD~1, separate the changes, re-commit properly.If you skipped review on a small change:
Fixing a violation post-commit still costs less than the bugs it would otherwise cause.
| After | Next |
|---|---|
| Refactoring complete | Skill(code-foundations:cc-control-flow-quality) |
| Structure changed | Skill(code-foundations:cc-routine-and-class-design) |
| Reviewing a refactoring | Skill(code-foundations:aposd-reviewing-module-design) |
npx claudepluginhub ryanthedev/code-foundationsEnforces rigid pre-refactor checklist: read existing code, verify covering tests pass, state goal clearly, validate non-ego motivation, plan smallest first step. Use before restructures, renames, or cleanups.
Identifies code smells, assesses refactoring risk, and builds incremental execution plans with rollback strategies. Activates on refactoring, code cleanup, tech debt, or duplication reduction requests.
Applies disciplined refactoring in small, verifiable steps to improve code structure without changing behavior: extract functions, rename, move code.