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.
Generates tests that capture current behavior of existing code before refactoring.
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gustavscirulis/snapgrid characterization-test-generator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .claude/skills/characterization-test-generator && rm -rf skills-srcUse ~/.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/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .claude/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gustavscirulis/snapgrid characterization-test-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .agents/skills/characterization-test-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .agents/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gustavscirulis/snapgrid characterization-test-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .cursor/skills/characterization-test-generator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .cursor/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gustavscirulis/snapgrid.git --path .claude/skills/skills/testing/characterization-test-generator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gustavscirulis/snapgrid characterization-test-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .gemini/skills/characterization-test-generator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .gemini/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gustavscirulis/snapgrid characterization-test-generatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .github/skills/characterization-test-generator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .github/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gustavscirulis/snapgrid characterization-test-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gustavscirulis/snapgrid.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/skills/testing/characterization-test-generator .opencode/skills/characterization-test-generator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "characterization-test-generator" agent skill from https://github.com/gustavscirulis/snapgrid/tree/main/.claude/skills/skills/testing/characterization-test-generator into .opencode/skills/characterization-test-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "characterization-test-generator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
characterization-test-generatorGenerates tests that capture current behavior of existing code before refactoring.
Characterization Test Generator is an agent skill from gustavscirulis/snapgrid. Generates tests that capture current behavior of existing code before refactoring. Use when you need a safety net before AI-assisted refactoring or modifying legacy code.
Its SKILL.md is about 2k 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 Legacy modernization. The repository describes itself as: SnapGrid is an open-source Mac app for collecting, organizing, and analyzing UI screenshots. It uses AI to automatically detect UI components and patterns, making it a powerful…
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit eb7eaf4. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepBashAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
xcodebuildFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Characterization Test Generator loads about 2k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 425 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestionAutomated 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.
Its licence (Custom licence) doesn't allow us to republish the file, so here is its outline and opening line. It has 425 words (~1,972 tokens).
“Generate tests that document what existing code actually does — not what it should do. These tests capture current behavior so you can refactor with confidence, especially when using AI to modify code.”
Just SKILL.md in .claude/skills/skills/testing/characterization-test-generator of gustavscirulis/snapgrid.
Open the folder on GitHubat commit eb7eaf4
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in gustavscirulis/snapgrid, which our catalogue first saw on October 7, 2026.
Characterization Test Generator 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Characterization Test Generator this skillgustavscirulis/snapgrid | 117 | 1 repos | ~2k | Automated safety check: Notes | Custom licence | |
| Code Refactoring Workflowluongnv89/claude-howto | 42k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Modern JavaScript Patternswshobson/agents | 40k | 12 repos | ~548 | Automated safety check: Pass | MIT | |
| Fowler-Style Refactoringlhfer/claude-howto-zh-cn | 2.3k | — | ~156 | Automated safety check: Pass | MIT | |
| Extract Command from Git::Libruby-git/ruby-git | 1.8k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Refactoring Skill (Vietnamese)luongnv89/claude-howto | 42k | — | ~3.1k | Automated safety check: Pass | MIT |
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.
wshobson/agents
Covers ES6+ syntax and functional patterns for refactoring older JavaScript: async/await, destructuring, spread, modules, generators and data pipelines.
lhfer/claude-howto-zh-cn
基于 Martin Fowler 方法论做系统化重构。Use when users ask to refactor code, improve structure, reduce technical debt, clean up legacy code, or improve maintainability.
ruby-git/ruby-git
Migrates a direct command call in Ruby Git's Git::Lib to a Git::Commands class, as part of a Strangler Fig redesign, with a plan, legacy tests and a pull request.
luongnv89/claude-howto
Vietnamese edition of a systematic refactoring skill based on Martin Fowler's book, working in approved phases with small, test-backed changes.
Jeffallan/claude-skills
Plans incremental migrations of aging systems with the strangler fig pattern, using dependency maps, rollback plans, characterization tests and gradual traffic shifts.
gustavscirulis/snapgrid
Design and implement microinteractions, motion design, transitions, and user feedback patterns.
gustavscirulis/snapgrid
Generates an Apple-compliant account deletion flow with multi-step confirmation UI, optional data export, configurable grace period, Keychain cleanup, and server-side deletion request.
gustavscirulis/snapgrid
AlarmKit integration for scheduling alarms and timers with custom UI, Live Activities, and snooze support.
gustavscirulis/snapgrid
Interpret app metrics and make data-driven decisions. An agent skill from gustavscirulis/snapgrid.
gustavscirulis/snapgrid
Generates protocol-based analytics infrastructure with swappable providers (TelemetryDeck, Firebase, Mixpanel).
gustavscirulis/snapgrid
Generates an in-app announcement banner system with remote configuration, scheduling, deep link actions, and dismiss tracking.
Categories
Generates tests that capture current behavior of existing code before refactoring. Characterization Test Generator is an agent skill from gustavscirulis/snapgrid. Generates tests that capture current behavior of existing code before refactoring.
Characterization Test Generator fits situations like: you need a safety net before AI-assisted refactoring; modifying legacy code.
Run `npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a claude-code`. Or copy the skill folder (.claude/skills/skills/testing/characterization-test-generator in gustavscirulis/snapgrid) into .claude/skills/characterization-test-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a codex`. Or copy the skill folder (.claude/skills/skills/testing/characterization-test-generator in gustavscirulis/snapgrid) into .agents/skills/characterization-test-generator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gustavscirulis/snapgrid --skill characterization-test-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/characterization-test-generator, .gemini/skills/characterization-test-generator, .github/skills/characterization-test-generator and .opencode/skills/characterization-test-generator in your project.
Going by SKILL.md and its folder, Characterization Test Generator needs the command-line tools its instructions call (xcodebuild). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion.
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.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Characterization Test Generator has a licence file (the repository's licence) that doesn't match a standard licence. Read it on GitHub before reusing the skill.
About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Characterization Test Generator: Code Refactoring Workflow (luongnv89/claude-howto, 42k stars), Modern JavaScript Patterns (wshobson/agents, 40k stars), Fowler-Style Refactoring (lhfer/claude-howto-zh-cn, 2.3k stars) and Extract Command from Git::Lib (ruby-git/ruby-git, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gustavscirulis (a GitHub user) maintains it in gustavscirulis/snapgrid, which has 117 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on April 30, 2026.
Source: gustavscirulis/snapgrid on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.