Skip to content
Back to skills

Careful Refactor

ASecurity

Improve code structure without changing observable behavior. Use the Mikado method: one atomic step at a time, with test verification after every step. ---

  • 8 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 26, 2026
code-qualityrefactoringgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add SeongwoongCho/adaptive-harness --skill careful-refactor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Careful Refactor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Careful Refactor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/seongwoongcho-careful-refactor/badge)](https://www.skillsdirectory.com/skills/seongwoongcho-careful-refactor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Careful Refactor Skill

Improve code structure without changing observable behavior. Use the Mikado method: one atomic step at a time, with test verification after every step.

---

## Steps

### Phase 0: Establish Safe Starting Point

1. **Run the full test suite**
   - All tests must pass before any refactoring begins
   - If tests are failing: STOP — do not refactor on a broken baseline. Report the failures.
   - Record: `Baseline: [N] tests passing`

2. **Confirm clean git state**
   - Run `git status` to check if working tree is clean
   - If uncommitted changes exist: note them — they are not part of this refactor

---

### Phase 1: Characterize

3. **Understand the code to be refactored**
   - Read the target file(s) completely
   - Identify: inputs, outputs, side effects, and invariants that must be preserved
   - Note any implicit contracts (error conditions, ordering dependencies, global state mutations)

4. **Map all call sites**
   - Grep for every function/class/variable being renamed or moved
   - List all files that will need updating if the interface changes

5. **Assess test coverage**
   - Identify which behaviors of the target code are covered by existing tests
   - For any uncovered behaviors: write characterization tests
     - Characterization tests document current behavior — they capture reality, not spec
     - Run them to confirm they pass (they must pass on the current code)

---

### Phase 2: Plan the Mikado Graph

6. **Define the target structure**
   - Describe what the code should look like after refactoring
   - Keep the target realistic — this is one refactoring session, not a full rewrite

7. **Break into atomic steps**
   - Each step must: be independently reversible, leave the codebase passing all tests, and change only one structural concern
   - Order from least risky to most risky
   - Example steps: extract function, rename variable, move function to module, inline constant, split class

8. **Document the plan and rollback**
   - Write out each step with its success criterion and its rollback command
   - Write the complete rollback sequence (reverse order of all steps)

---

### Phase 3: Execute (one step at a time)

9. **For each step in the plan:**

   a. Announce: "Applying step [N]: [description]"

   b. Apply the change using Edit (one file at a time)

   c. Run the full test suite immediately

   d. If all tests pass:
      - Record: "Step [N] complete. [N] tests passing."
      - Proceed to the next step

   e. If any test fails:
      - Do NOT proceed
      - Revert the change: `git checkout -- [file]` or manually restore
      - Run the test suite again to confirm baseline is restored
      - Re-examine: is the characterization complete? Was a dependency missed?
      - Either adjust the plan and retry, or stop and report

10. **Run the full test suite every 3 steps** — even if nothing seems wrong

---

### Phase 4: Verify Behavior Preservation

11. **Run the full test suite** — all original tests must pass

12. **Run characterization tests** — all must pass (current behavior unchanged)

13. **Review the diff**
    - Run `git diff --stat` to review the scope
    - Confirm: only structural changes, no logic changes, no new behaviors added

---

### Phase 5: Cleanup

14. **Remove redundant characterization tests**
    - If a characterization test duplicates an existing test, remove it
    - Keep the better-named, better-structured one

15. **Remove temporary refactoring scaffolding**
    - Any helper code introduced only to facilitate the refactor should be removed

16. **Final build check**
    - Run the build — no compilation errors

17. **Cleanup check**
    - Grep modified files for: `console.log`, `debugger`, `TODO`, `HACK`

18. **Report**
    - Files changed: [N]
    - Tests: [N] passing
    - Structure improved: [one sentence per major improvement]
    - Deferred: any planned steps that were not executed (with reason)

Files in this skill

  • contract.yaml3.2 KB
  • skill.md3.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…