Agent skill

Refactor Safely

by techygarg in techygarg/lattice

Restructure existing code safely without changing externally observable behavior.

MITAuto-check passedDevelopment

Install Refactor Safely

skills CLI
$ npx skills add techygarg/lattice --skill refactor-safely -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install techygarg/lattice refactor-safely --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/techygarg/lattice.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/refactor-safely .claude/skills/refactor-safely && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
refactor-safely
GitHub stars
198
Token cost
~3.3k tokens
SKILL.md length
1,665 words
Files
1
Skills in repo
33
Repo updated
First seen
Licence
MIT

At a glance

Restructure existing code safely without changing externally observable behavior.

  • Works in 8 steps: Establish Refactor Context → Define Preservation Boundaries → Propose High-Level Structural Plan → …
  • The user says refactor this
  • SKILL.md covers Required Skills and Workflow
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Refactor Safely is an agent skill from techygarg/lattice. Restructure existing code safely without changing externally observable behavior. Composes context, design, architecture, code quality, and testing guardrails into a characterization-first refactoring workflow. Use when the user says 'refactor this', 'clean this up', 'untangle this module', 'move this to the right layer', 'simplify this code', or 'improve this structure'.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Refactoring and Code quality. The repository describes itself as: Install engineering discipline into any AI coding assistant. Composable skills for design, implementation, review, and team standards. Better process, not just better prompts. The licence is MIT.

When your agent uses it

  • The user says refactor this
  • Untangle this module
  • Move this to the right layer
  • Simplify this code

Example prompts

  • “refactor this”
  • “clean this up”
  • “untangle this module”
  • “/refactor-safely”

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Establish Refactor Context
  2. Define Preservation Boundaries
  3. Propose High-Level Structural Plan
  4. Add Characterization Protection First
  5. Choose Refactor Strategy and Pacing
  6. Refactor in Small Green Steps
  7. Verify Preservation and Structural Improvement
  8. Capture Decisions and Remaining Debt

What it can do on your machine

Read from SKILL.md and the folder at commit 4d6c35f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Refactor Safely loads about 3.3k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 1,665 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from techygarg/lattice at commit 4d6c35f, republished under its MIT licence (© techygarg). 1,665 words, ~3,259 tokens.

Download SKILL.mdSave it as .claude/skills/refactor-safely/SKILL.md (or your agent's skills folder).
name
refactor-safely
description
Restructure existing code safely without changing externally observable behavior. Composes context, design, architecture, code quality, and testing guardrails into a characterization-first refactoring workflow. Use when the user says 'refactor this', 'clean this up', 'untangle this module', 'move this to the right layer', 'simplify this code', or 'improve this structure'.

Refactor Safely

Required Skills

Load these skills based on refactor scope (see Steps 3, 5, 6 for conditional use):

  1. framework:knowledge-priming -- Load project context so the refactor grounds in the real codebase. (always)
  2. framework:context-anchoring -- Find and load the feature's context doc; capture approved plans and decisions in it. (always)
  3. framework:learning-harvest -- Load prior operational learnings at session start; harvest new ones at session end. (always)
  4. framework:collaborative-judgment -- Surface trade-offs in structure, seams, and migration sequence instead of silently assuming. (always)
  5. framework:clean-code -- Readability, responsibility boundaries, local craft. (always)
  6. framework:test-quality -- Characterization tests and the safety net. (always)
  7. framework:design-first -- Target-structure planning for significant structural changes. (conditional: Step 3)
  8. framework:architecture -- Layer placement and dependency direction. (conditional: responsibilities move across layers in Steps 5/6)
  9. framework:domain-driven-design -- Aggregate boundaries and domain behavior. (conditional: domain rules move or sharpen in Step 6)
  10. framework:secure-coding -- Trust bounds, authorization, sensitive data handling. (conditional: security-sensitive code touched in Step 6)

Workflow

Step 1: Establish Refactor Context

Start from the current pain, not from a preferred abstraction.

  • Identify the target area: a module, service, aggregate, endpoint path, or subsystem.
  • Clarify why the refactor is needed: mixed responsibilities, duplication, wrong-layer logic, coupling, poor testability, or unreadable control flow.
  • Clarify what the user expects to improve: simpler structure, correct layer placement, smaller units, clearer domain behavior, easier testing, or safer extension points.
  • Run framework:learning-harvest Load behavior. Focus hint: "refactoring session — focus: structural health, quality signals".
  • Run framework:context-anchoring Document Discovery to check for an existing context doc covering the affected feature/module:
    • Found → Load behavior. Honor every logged decision and constraint as an active commitment while planning the refactor. The doc already contains an approved refactor plan (preservation boundaries + target structure) → confirm it still matches the user's intent, then resume at Step 4 unless the user wants to revisit the plan first.
    • Not found → Proceed from the conversation and the current code. Do not block planning on a missing context doc.

End the step by summarizing the intent in one sentence:

"Refactor X to improve Y while preserving Z."

STOP: If you cannot state both the improvement target and the preservation target that clearly, continue clarifying with the user before planning any changes.

Persistence check:

  • Refactor is substantial, risky, or likely to span multiple sessions → ask whether the user wants to persist an approved plan.
  • A relevant context doc already exists and the user wants persistence → use it and update it.
  • No relevant doc exists and the user wants persistence → propose creating one; confirm the doc name per framework:context-anchoring, then use it as the source of truth for the approved plan.
  • The user declines persistence, or the refactor is small and local → continue in non-persistent mode. Approval gates still apply; the plan simply stays in-session.
Step 2: Define Preservation Boundaries

Refactoring changes structure, not behavior. Make the preservation contract explicit before proposing any structural edits.

List the behaviors that must remain unchanged:

  • Public API contracts and response shapes
  • Domain invariants and state transitions
  • Persistence semantics and side effects
  • Event emission and integration behavior
  • Authorization and security posture
  • Error behavior wherever externally visible
  • Performance or operational characteristics, if part of the current contract

Also list explicit out-of-scope changes:

  • New features
  • Schema changes
  • Contract changes
  • Intentional behavior changes
  • Unrelated cleanup outside the approved area

If the desired outcome requires changing preserved behavior, stop and discuss what the task actually is — a bug fix (/bug-fix), a feature change (/design-blueprint), or a broader redesign. STOP: Never proceed as a refactor after making one of those determinations.

Step 3: Propose High-Level Structural Plan

Zero Refactor Rule: make no structural code changes until the user approves both the target structure and the transition plan.

For small refactors the plan may be brief. For larger ones, use framework:design-first selectively:

  • Start at Level 2 (Components) to define target responsibilities and boundaries.
  • Use Level 3 (Interactions) when data flow or dependency direction will change.
  • Use Level 4 (Contracts) when internal interfaces or seams need to be formalized.
  • Skip Level 1 (Capabilities) unless the user-facing scope is actually changing.

Present:

  • Current structural problems -- what is wrong with the current shape
  • Target structure -- which components, classes, and functions should exist after the refactor
  • Movement plan -- what logic moves where
  • Preservation boundaries -- what will stay behaviorally unchanged
  • Out-of-scope items -- what will not be changed in this pass

End the step with an explicit gate:

"Does this refactor plan look correct? Should I proceed to Step 4: characterization tests?"

STOP: Do not write any refactoring code until the user explicitly approves this plan.

If persistence is enabled, use framework:context-anchoring Enrich to capture the approved preservation boundaries, target structure, movement plan, and out-of-scope items. STOP: When persistence is enabled, do not proceed to Step 4 until the approved plan is written.

Step 4: Add Characterization Protection First

Before changing any structure, lock in current behavior with tests.

  • Identify existing tests that already protect preserved behavior.
  • Strengthen existing tests that are too implementation-coupled or too vague to serve as guardrails.
  • Add characterization tests for important behaviors that are currently implicit.
  • Prefer the lowest-level test that faithfully captures each preserved behavior without missing important integration effects.
  • Characterization tests must describe the current observable behavior, not the intended refactored shape.
  • Apply framework:test-quality inline while writing them.
  • Run the safety net where the environment allows. If tests cannot be executed here, say so explicitly — the safety net then counts as unverified, and the stopping rule below applies.

Stopping rule:

  • An important preserved behavior is not protected by tests → pause and make that gap explicit before refactoring.
  • STOP: Do not start structural edits without a believable safety net unless the user explicitly accepts the risk.
  • Green characterization tests are the baseline for the refactor. Anything red before the first structural change must be resolved first, or the task re-scoped.

End the step with an explicit gate:

"Characterization tests in place and passing. Ready to discuss refactor strategy and pacing?"

STOP: Do not proceed to strategy selection until the safety net is verified green — or the user has explicitly accepted an unverified safety net per the stopping rule above.

Show full SKILL.md (656 more words)Show less
Step 5: Choose Refactor Strategy and Pacing

With the high-level plan approved and the safety net green, choose the implementation approach.

Preferred strategies:

  • Extract and redirect -- extract focused units, route callers gradually.
  • Introduce seam, then migrate -- add an interface or boundary, then move behavior behind it.
  • Move behavior inward -- shift business rules from outer layers into the appropriate inner layer per framework:architecture.
  • Split and collapse -- separate unrelated responsibilities, then remove the old mixed path.

Ask the user to choose a pacing mode:

"How would you like to review the refactor?"

  1. Slice-by-slice (recommended) -- refactor one safe slice at a time, pausing after each slice. Best for risky legacy code.
  2. Layer-by-layer -- complete the refactor for one structural layer or concern, then pause for review. Best for broader architectural cleanup.
  3. Full autonomy -- execute the approved refactor end-to-end and present the complete result at the end. Best for tightly scoped, low-risk refactors. (Still pause immediately if any slice reveals the approved plan unsafe or invalid — see the Deviation Rule in Step 6.)

Default to slice-by-slice when the user expresses no preference.

Step 6: Refactor in Small Green Steps

Implement only within the approved preservation boundaries and the approved target structure.

For each slice:

  1. Make one structural improvement from the approved plan.
  2. Re-run the relevant characterization tests.
    • Any characterization test goes red → stop immediately. Do not start the next slice. Fix the regression or revert the slice before continuing.
  3. Apply the applicable atom Self-Validation Checklists.
  4. Run the applicable Active Anti-Pattern Scans.
  5. Fix violations before presenting the slice.
  6. Collect judgment calls for the slice via framework:collaborative-judgment and surface them before presenting the slice's code. Do not interrupt mid-slice unless the approved plan becomes unsafe or invalid.

Always apply:

  • framework:clean-code -- better boundaries, simpler control flow, smaller focused units, clearer naming.
  • framework:test-quality -- maintain strong characterization tests and nearby supporting tests.

Conditionally apply:

  • Responsibilities move across layers or dependency direction changes → apply framework:architecture.
  • Business rules, aggregates, value objects, or domain behavior move or sharpen → apply framework:domain-driven-design.
  • Trust boundaries, authorization, validation, queries, or sensitive data handling are touched → apply framework:secure-coding.

Deviation rule: if the implementation reveals the approved plan incomplete, unsafe, or requiring changes to preserved behavior → STOP: pause immediately and discuss before continuing.

Step 7: Verify Preservation and Structural Improvement

The refactor succeeds only if both are true:

  1. Behavior preserved
  2. Structure measurably better

Verify preservation:

  • Characterization tests still pass.
  • No unintended outward behavior changed.
  • Preserved contracts remain intact.
  • Security posture not weakened.

Verify structural improvement:

  • Responsibilities clearer.
  • Dependency direction improved, or at least no worse.
  • Duplication or entanglement reduced.
  • Testability and readability improved.
  • Old paths and temporary scaffolding removed once migration is complete.

When reporting completion, be explicit about both sides:

  • What behavior was preserved and how it was verified.
  • What structural improvement was achieved.
  • What was intentionally deferred to a later refactor.
Step 8: Capture Decisions and Remaining Debt

Use framework:context-anchoring Enrich to preserve the important parts of the refactor:

  • Refactor scope: what area changed.
  • Preservation boundaries: what was explicitly kept stable.
  • Target structure: what shape was approved.
  • Strategy chosen: why this migration path was selected over the alternatives.
  • Key files changed: path + role in the doc's Key Files table (skip a path already listed).
  • Deferred debt: what remains and why it was intentionally left for later.

No context doc exists and the refactor involved non-trivial structural reasoning → suggest creating one so the decisions are not lost across sessions.

Harvest learnings: run framework:learning-harvest Harvest behavior. Session context: "refactoring session — structural restructuring and debt resolution". Synthesize and propose cross-cutting patterns from this session — structural debt that accumulated, migration strategies that worked, characterization test gaps discovered. The user confirms what enters the document. STOP: run this before recommending /review below.

After the refactor is complete, recommend /review when the change:

  • touches multiple layers
  • changes domain boundaries
  • changes security-sensitive code
  • leaves temporary migration scaffolding behind
  • is large enough that an independent quality pass would add confidence

© techygarg, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/refactor-safely of techygarg/lattice.

Open the folder on GitHubat commit 4d6c35f

Compare with similar skills

Refactor Safely next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Refactor Safely compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Refactor Safely this skilltechygarg/lattice198—~3.3kAutomated safety check: PassMIT
Systematic Code Refactoringluongnv89/claude-howto42k—~3kAutomated safety check: PassMIT
Dignified Python Standardsdocling-project/docling68k—~1.5kAutomated safety check: PassApache-2.0
Clean Code GuardamElnagdy/guard-skills1.3k2 repos~4.3kAutomated safety check: PassMIT
Code Refactoring Workflowluongnv89/claude-howto42k—~3.1kAutomated safety check: PassMIT
Maintainable Code for iPolloWorkDevin-AXIS/iPolloWork6.7k—~2.7kAutomated safety check: PassCustom licence

Similar skills

  • Systematic Code Refactoring

    luongnv89/claude-howto

    Guides refactoring in phases based on Martin Fowler's method: research, test coverage check, planning and small tested steps, with your approval at each phase.

    42k GitHub stars~3k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Dignified Python Standards

    docling-project/docling

    Applies opinionated production Python conventions chosen by the project's Python version: modern type syntax, pathlib, explicit checks and interface guidance.

    68k GitHub stars~1.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Clean Code Guard

    amElnagdy/guard-skills

    Reviews generated or changed production code against Clean Code, SOLID, DRY, KISS, YAGNI and LLM-specific failure modes before it ships, in any language.

    1.3k GitHub starsUsed in 2 repos~4.3k tokens
    DevelopmentAuto-check passed
  • Code Refactoring Workflow

    luongnv89/claude-howto

    Guides systematic, test-backed refactoring in the style of Martin Fowler, moving through research, planning and small incremental changes with your approval at each phase.

    42k GitHub stars~3.1k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • A code-change gate for the iPolloWork repository: search and reuse first, keep one source of truth, justify every new file or dependency, and audit the change.

    6.7k GitHub stars~2.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Tech Debt Analyzer

    ailabs-393/ai-labs-claude-skills

    This skill should be used when analyzing technical debt in a codebase, documenting code quality issues, creating technical debt registers, or assessing code maintainability.

    454 GitHub starsUsed in 2 repos~3.9k tokens
    DevelopmentAuto-check passed

More from techygarg/lattice

All 33 skills in this repo
  • Architecture Compass

    techygarg/lattice

    Architectural thinking partner for an existing repository — scans the codebase, conducts a structured interview, agrees on current architectural state and recommended direction, and produces a…

    198 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed
  • Lattice Init

    techygarg/lattice

    Guided setup and upgrade-check experience for Lattice projects -- scans the repository, detects existing configuration and outdated conventions, suggests refiners and available upgrades in priority…

    198 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Skill Align

    techygarg/lattice

    Audit and fix all Lattice documentation, README, docs/, PROJECT.md, GitHub issue templates, and CLAUDE.md to ensure they are fully aligned with the current skill inventory.

    198 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Skill Validate

    techygarg/lattice

    Validate any Lattice SKILL.md against all tier conventions — atoms, molecules, and refiners.

    198 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Architecture Refiner

    techygarg/lattice

    Facilitate a structured conversation to define architecture principles for a repository.

    198 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Clean Code Refiner

    techygarg/lattice

    Facilitate a structured conversation to define clean code principles for a repository.

    198 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Refactor Safely

What does Refactor Safely do?

Restructure existing code safely without changing externally observable behavior. Refactor Safely is an agent skill from techygarg/lattice. Restructure existing code safely without changing externally observable behavior.

When should I use Refactor Safely?

Refactor Safely fits situations like: the user says refactor this; untangle this module; move this to the right layer; simplify this code.

How do I install Refactor Safely in Claude Code?

Run `npx skills add techygarg/lattice --skill refactor-safely -a claude-code`. Or copy the skill folder (skills/refactor-safely in techygarg/lattice) into .claude/skills/refactor-safely in your project. Claude Code loads it when a task matches its description.

How do I install Refactor Safely in Codex?

Run `npx skills add techygarg/lattice --skill refactor-safely -a codex`. Or copy the skill folder (skills/refactor-safely in techygarg/lattice) into .agents/skills/refactor-safely in your project. Codex loads it when a task matches its description.

Can I use Refactor Safely in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add techygarg/lattice --skill refactor-safely -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/refactor-safely, .gemini/skills/refactor-safely, .github/skills/refactor-safely and .opencode/skills/refactor-safely in your project.

What does Refactor Safely need to run?

SKILL.md names no scripts, command-line tools or credentials: Refactor Safely is instructions for the agent only.

Does Refactor Safely access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Refactor Safely safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Refactor Safely use?

Refactor Safely is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Refactor Safely use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Refactor Safely?

Skills that share tags, products or a category with Refactor Safely: Systematic Code Refactoring (luongnv89/claude-howto, 42k stars), Dignified Python Standards (docling-project/docling, 68k stars), Clean Code Guard (amElnagdy/guard-skills, 1.3k stars) and Code Refactoring Workflow (luongnv89/claude-howto, 42k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Refactor Safely?

techygarg (a GitHub user) maintains it in techygarg/lattice, which has 198 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 6, 2026.

Source: techygarg/lattice on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.