agentsclimarketplace

Refactoring

Skill SWEStash/swe-workflow-skills/skills/refactoring

A comprehensive SWE workflow, encoded. Might be useful to you too.

Install
npx -y skills add SWEStash/swe-workflow-skills --skill refactoring

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Systematic code improvement via design principles, smell detection, and safe transformation patterns. Triggers: refactor this, clean this up, simplify this code, reduce complexity, extract this, this code is messy, tech debt, improve this code, code smell, rename, extract function, dead code.

SKILL.md

4.5 KB, as published. Nobody here has run it

Refactoring

Guide safe, incremental code improvements that preserve behavior while enhancing design. Refactoring is disciplined — every change is small, tested, and reversible.

Core Rule

Never change behavior and structure in the same step. Either you're adding a feature (behavior change) or you're refactoring (structure change). Mixing them creates bugs that are hard to trace.

Workflow

Step 1: Ensure Test Coverage

Before refactoring anything, verify that tests exist for the behavior you're about to restructure. If tests are missing:

  1. Write characterization tests that document current behavior (even if the behavior has quirks)
  2. Run them and confirm they pass
  3. Only then begin refactoring

If the user resists writing tests first, explain: refactoring without tests is not refactoring, it's rewriting with hope.

Step 2: Identify Smells

Read the code and identify code smells. Prioritize by impact — don't try to fix everything at once. The most common smells, roughly ordered by severity:

  1. Long function (>30 lines) → Extract method
  2. Duplicated logic → Extract and share
  3. Deep nesting (>3 levels) → Early returns, extract method
  4. Long parameter list (>4 params) → Introduce parameter object
  5. Feature envy → Move method to the class it uses most
  6. Primitive obsession → Introduce domain types
  7. Shotgun surgery → Consolidate related logic
  8. Divergent change → Split class by responsibility

See references/transformations.md for the complete catalog of safe transformations.

Step 3: Plan the Sequence

Order refactoring steps so that each step:

  • Is small enough to verify easily
  • Keeps all tests green
  • Makes the next step easier

A good sequence often looks like:

  1. Rename for clarity (cheapest, highest readability impact)
  2. Extract helpers to reduce function length
  3. Consolidate duplicates using the extracted helpers
  4. Move methods to better homes
  5. Simplify interfaces

Step 4: Execute — One Step at a Time

For each transformation:

  1. Explain what you're about to do and why
  2. Apply the single transformation
  3. Run tests and confirm green
  4. Show the diff to the user

If tests break, undo immediately. A failing test after refactoring means the transformation changed behavior — that's a bug, not a test to fix.

Step 5: Review the Result

After completing the planned sequence:

  • Compare before/after: Is the intent clearer? Is the code simpler?
  • Run the full test suite
  • Check that no public API changed (unless that was the goal)
  • Look for any new smells introduced by the refactoring

Principles Applied

  • DRY: Eliminate duplication discovered during refactoring
  • KISS: Every transformation should make the code simpler, not more abstract
  • SRP: Each extracted function/class should have one reason to change
  • YAGNI: Don't introduce abstractions for hypothetical future needs during refactoring
  • Functional Independence: Refactoring should reduce coupling, not increase it
  • Boy Scout Rule: Leave the code cleaner than you found it — every refactoring session should improve the surrounding code slightly, not just the target. Small cleanups (renaming, removing dead code) near the area you're working in compound over time.
  • Kent Beck's 4 Rules of Simple Design: After refactoring, the code should: (1) pass all tests, (2) reveal intention clearly, (3) contain no duplication, (4) use the fewest classes and methods needed. Apply these as a checklist during Step 5 review.

Cross-Skill References

  • technical-debt-review — use to identify which areas are worth refactoring at a strategic level before starting
  • dependency-impact-analysis — use before refactoring a shared component or public interface to understand blast radius
  • code-slop-cleanup — most slop cleanup is a micro-refactor: use that skill for the pre-PR diff-scoped pass (removal-only, judged against file conventions); use this one when the cleanup turns structural (extract, move, re-abstract). They chain naturally: strip slop first, then refactor what remains

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.