Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Refactor

ASecurity

Restructure existing code without changing its behavior — extract, rename, inline, split, deduplicate, reshape — with tests holding behavior fixed before and after. Scoped to structure only: no new features, no bug fixes, no behavior changes. Use when the user says "refactor", "clean up the structure", "extract this", "split this file", "untangle", or "restructure".

84 stars
0 votes
0 copies
1 views
Added 9/24/2026
ai-agentsgobashcode-review

Security Analysis

A100/100

Scanned 9/24/2026

$npx -y skills add genai-io/san --skill refactor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Refactor?

Add the live security badge to your README — it updates automatically with every re-scan.

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

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

Download with Pro
Files
SKILL.md
---
name: refactor
description: >-
  Restructure existing code without changing its behavior — extract, rename,
  inline, split, deduplicate, reshape — with tests holding behavior fixed before
  and after. Scoped to structure only: no new features, no bug fixes, no behavior
  changes. Use when the user says "refactor", "clean up the structure",
  "extract this", "split this file", "untangle", or "restructure".
allowed-tools:
  - Bash
  - Read
  - Glob
  - Grep
  - Edit
  - Agent
argument-hint: "[target file or symbol]"
---

# Refactor: restructure without changing behavior

A refactor changes the *shape* of code, never what it *does*. The one rule that
makes it safe: behavior is pinned by tests before you touch anything, and the
same tests stay green after. If behavior needs to change, that is not a refactor
— stop and treat it as a feature or a fix.

## Phase 1: Pin the behavior

Before restructuring, make the current behavior observable and guarded.

1. Find the tests that cover the code you intend to move. Run them and confirm
   they pass. This green run is your baseline — write it down.
2. If the code is not covered, **add characterization tests first**: tests that
   capture what the code does *today* (not what it should do), enough to catch a
   behavior change. Get them green against the current code before you refactor.
3. If you cannot get the behavior under test at all, say so and stop — an
   unguarded refactor is a rewrite in disguise, and you would have no way to know
   you broke something.

## Phase 2: Restructure in small steps

Make one structural move at a time, and keep the tests green between moves.

- Each step is a single transformation — extract a function, rename a symbol,
  inline a variable, split a file, unify duplicated blocks — not a pile of them.
- Run the tests after each step. If they go red, the last step changed behavior;
  undo it and make a smaller move.
- Change structure only. No new parameters "while you're in there", no bug fixes,
  no renamed behavior. If you spot a bug, note it for a separate `code-review`
  pass — do not fix it inside the refactor.
- Match the conventions already in the code; a refactor should look like it was
  always there.

## Phase 3: Verify behavior is unchanged

- Run the full test suite. It must be as green as your Phase 1 baseline — same
  tests passing, none skipped to get there.
- Confirm the public interface callers depend on is unchanged, or if it changed,
  that every call site was updated in the same pass.
- The diff should contain *only* structural change. Every hunk traces to the
  restructuring goal; if a hunk changes behavior, it does not belong here.

Report what you restructured and confirm the baseline tests still pass.

Attribution

genai-iogenai-io
View sourceSee grades on GitHubMore from genai-io →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698461 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →