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.
Check ETL step files for outdated coding patterns and offer to fix them.
$ npx skills add owid/etl --skill check-outdated-practices -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install owid/etl check-outdated-practices --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/owid/etl.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/check-outdated-practices .claude/skills/check-outdated-practices && 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 "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .claude/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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/owid/etl/tree/master/.claude/skills/check-outdated-practicesType 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 owid/etl --skill check-outdated-practices -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install owid/etl check-outdated-practices --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/owid/etl.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/check-outdated-practices .agents/skills/check-outdated-practices && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .agents/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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 owid/etl --skill check-outdated-practices -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install owid/etl check-outdated-practices --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/owid/etl.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/check-outdated-practices .cursor/skills/check-outdated-practices && 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 "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .cursor/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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/owid/etl.git --path .claude/skills/check-outdated-practices--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 owid/etl --skill check-outdated-practices -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install owid/etl check-outdated-practices --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/owid/etl.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/check-outdated-practices .gemini/skills/check-outdated-practices && 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 "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .gemini/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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 owid/etl check-outdated-practicesInstalls 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 owid/etl --skill check-outdated-practices -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/owid/etl.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/check-outdated-practices .github/skills/check-outdated-practices && 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 "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .github/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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 owid/etl --skill check-outdated-practices -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install owid/etl check-outdated-practices --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/owid/etl.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/check-outdated-practices .opencode/skills/check-outdated-practices && 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 "check-outdated-practices" agent skill from https://github.com/owid/etl/tree/master/.claude/skills/check-outdated-practices into .opencode/skills/check-outdated-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-outdated-practices", 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.
check-outdated-practicesCheck ETL step files for outdated coding patterns and offer to fix them.
Check Outdated Practices is an agent skill from owid/etl. Check ETL step files for outdated coding patterns and offer to fix them. Use when user mentions outdated practices, legacy code patterns, modernizing steps, or wants to check code quality of ETL steps.
Its SKILL.md is about 840 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 Data pipelines and ETL, Legacy modernization and Code quality. The repository describes itself as: A compute graph for loading and transforming OWID's data. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit bf5dc8e. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
makeFrom 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.
Check Outdated Practices loads about 841 tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 371 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 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.
The full file from owid/etl at commit bf5dc8e, republished under its MIT licence (© owid). 371 words, ~841 tokens.
.claude/skills/check-outdated-practices/SKILL.md (or your agent's skills folder).Scan ETL step files for outdated coding patterns and offer to fix them.
The canonical list of outdated patterns, their scopes, severities, and messages is defined in the VSCode extension at vscode_extensions/detect-outdated-practices/src/extension.ts. Always read this file first to get the current patterns. Do not assume you know the patterns — the extension is the single source of truth and may be updated independently.
Each pattern in the extension has:
pattern: regex to detect the outdated practicemessage: describes what's wrong and what the modern replacement isseverity: warning levelscope: which file paths the pattern applies to (e.g., snapshots/**, etl/steps/data/**)By default, check the files involved in the current task (e.g., the steps being updated). If the user provides explicit paths or asks for a broader scan, use those instead.
Accept any of:
etl/steps/data/garden/wb/2026-03-25/poverty_projections.pywb/2026-03-25/poverty_projectionsetl/steps/data/garden/wb/2026-03-25/*.pyall — scan all non-archived steps (slow)When applying fixes, keep these notes in mind:
paths.regions.harmonize_names(tb): country_col, countries_file, and excluded_countries_file are all inferred by default — it assumes the column is "country", uses the step's .countries.json, and (when the file exists) the step's .excluded_countries.json. So a call that passes only those three defaults collapses to paths.regions.harmonize_names(tb); only pass an argument when you're overriding the default. The fallbacks come from the Regions instance PathFinder builds (self.countries_file / self.excluded_countries_file in etl/helpers.py, defaulted inside harmonize_names) — excluded_countries_file is wired only when the .excluded_countries.json is present, so dropping it is behavior-preserving exactly when the file exists. Preserve any non-default kwargs (warn_on_unused_countries, make_missing_countries_nan, etc.).make check (or let the code-quality-fixer agent handle it). In particular, don't leave extra blank lines between imports — follow the project's import style (no blank lines within import groups, one blank line between standard library and third-party groups).vscode_extensions/detect-outdated-practices/src/extension.ts to get the current pattern listscope field| File | Issue | Line |
|------|-------|------|
| snapshots/wb/.../file.py | <message from extension> | 29 |message field and show a summary of changes© owid, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/check-outdated-practices of owid/etl.
Open the folder on GitHubat commit bf5dc8e
Check Outdated Practices 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 |
|---|---|---|---|---|---|---|
| Check Outdated Practices this skillowid/etl | 158 | — | ~841 | Automated safety check: Pass | MIT | |
| Code Refactoring Workflowluongnv89/claude-howto | 42k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Experiment Iterative CoderEvoScientist/EvoSkills | 475 | 3 repos | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| 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 | |
| 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.
EvoScientist/EvoSkills
Iterative code refinement through plan → code → evaluate → refine cycles.
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.
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.
trailofbits/skills
Steers C++ code toward C++20, C++23 and C++26 idioms such as smart pointers, concepts, std::expected and std::print, with a security focus.
owid/etl
Find every OWID surface that references a chart, indicator, MDIM, or explorer — articles (links vs embeds), explorers, narrative charts, data insights, static viz, key-chart slots, MDIM views.
owid/etl
Add a scatter view (with GDP per capita on x) to existing OWID charts via the admin API, mirroring the admin UI's "Add scatter type" defaults, then retire the old standalone "X vs.
owid/etl
Add new survey question codes (e.g. An agent skill from owid/etl.
owid/etl
Build or refresh an OWID static visualization end to end — resolve what data it needs from an old static viz image, an indicator, or a grapher chart; check both the ETL catalog and the producer's…
owid/etl
Propose redirects from (soon-to-sunset) grapher charts to the matching views of published MDIMs.
owid/etl
Take (soon-to-sunset) OWID explorers to redirected MDIMs, end to end.
Categories
Check ETL step files for outdated coding patterns and offer to fix them. Check Outdated Practices is an agent skill from owid/etl. Check ETL step files for outdated coding patterns and offer to fix them.
Check Outdated Practices fits situations like: user mentions outdated practices; legacy code patterns; modernizing steps; wants to check code quality of ETL steps.
Run `npx skills add owid/etl --skill check-outdated-practices -a claude-code`. Or copy the skill folder (.claude/skills/check-outdated-practices in owid/etl) into .claude/skills/check-outdated-practices in your project. Claude Code loads it when a task matches its description.
Run `npx skills add owid/etl --skill check-outdated-practices -a codex`. Or copy the skill folder (.claude/skills/check-outdated-practices in owid/etl) into .agents/skills/check-outdated-practices 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 owid/etl --skill check-outdated-practices -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/check-outdated-practices, .gemini/skills/check-outdated-practices, .github/skills/check-outdated-practices and .opencode/skills/check-outdated-practices in your project.
Going by SKILL.md and its folder, Check Outdated Practices needs the command-line tools its instructions call (make).
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 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.
Check Outdated Practices is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 841 tokens (SKILL.md is roughly 3.4k 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 Check Outdated Practices: Code Refactoring Workflow (luongnv89/claude-howto, 42k stars), Experiment Iterative Coder (EvoScientist/EvoSkills, 475 stars), Modern JavaScript Patterns (wshobson/agents, 40k stars) and Fowler-Style Refactoring (lhfer/claude-howto-zh-cn, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
owid (a GitHub organization) maintains it in owid/etl, which has 158 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 8, 2026.
Source: owid/etl on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.