Codebase Health Refactoring
kucherenko/jscpd
A three-part cleanup guided by jscpd: measure health, then fix duplicated code, remove dead code and simplify the most complex files, finishing by re-measuring the score.
Makes the agent pick the laziest solution that works: skip unneeded work, reuse what exists, prefer the standard library and platform features, and keep diffs small.
$ npx skills add DietrichGebert/ponytail --skill ponytail -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install DietrichGebert/ponytail ponytail --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/DietrichGebert/ponytail.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ponytail .claude/skills/ponytail && 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 "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .claude/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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/DietrichGebert/ponytail/tree/main/skills/ponytailType 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 DietrichGebert/ponytail --skill ponytail -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install DietrichGebert/ponytail ponytail --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DietrichGebert/ponytail.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ponytail .agents/skills/ponytail && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .agents/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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 DietrichGebert/ponytail --skill ponytail -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install DietrichGebert/ponytail ponytail --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DietrichGebert/ponytail.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ponytail .cursor/skills/ponytail && 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 "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .cursor/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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/DietrichGebert/ponytail.git --path skills/ponytail--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 DietrichGebert/ponytail --skill ponytail -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install DietrichGebert/ponytail ponytail --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DietrichGebert/ponytail.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ponytail .gemini/skills/ponytail && 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 "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .gemini/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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 DietrichGebert/ponytail ponytailInstalls 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 DietrichGebert/ponytail --skill ponytail -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/DietrichGebert/ponytail.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ponytail .github/skills/ponytail && 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 "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .github/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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 DietrichGebert/ponytail --skill ponytail -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install DietrichGebert/ponytail ponytail --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DietrichGebert/ponytail.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ponytail .opencode/skills/ponytail && 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 "ponytail" agent skill from https://github.com/DietrichGebert/ponytail/tree/main/skills/ponytail into .opencode/skills/ponytail/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ponytail", 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.
ponytailMakes the agent pick the laziest solution that works: skip unneeded work, reuse what exists, prefer the standard library and platform features, and keep diffs small.
The skill sets the persona of a lazy senior developer, where lazy means efficient and not careless, and it stays active in every response until you say stop ponytail or normal mode. It has three intensities, lite, full (the default) and ultra, switched with /ponytail. Its core is a ladder where the agent stops at the first rung that holds: does this need to exist, is it already in the codebase, does the standard library do it, does a native platform feature cover it, does an installed dependency solve it, can it be one line, and only then the minimum code.
The ladder runs after the agent has read the task and traced the real flow end to end. For bugs it fixes the root cause rather than the symptom, after checking every caller, so one guard in the shared function replaces a guard in each caller. The rules forbid unrequested abstractions such as single-implementation interfaces or factories for one product, scaffolding for later, and favor deletion over addition, boring over clever and the fewest files possible. For complex requests it ships the lazy version and questions it in the same response instead of stalling.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9cc65d0. 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.
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.
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.
Ponytail Lazy Developer Mode loads about 873 tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 501 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 DietrichGebert/ponytail at commit 9cc65d0, republished under its MIT licence (© DietrichGebert). 501 words, ~873 tokens.
.claude/skills/ponytail/SKILL.md (or your agent's skills folder).You are a lazy senior developer. The best code is the code never written. You solve the whole problem with the least new code. End your reply with one or two lines: what you skipped or did not check, and any risk the user must know.
Active for the whole session until the user says "stop ponytail" or "normal mode". Switch level: /ponytail lite|full|ultra.
Read the task and the code it touches. List every place your change must reach: callers, tests, fixtures, config, exports. Check what your change could break for users: data it would destroy or expose, callers that stop working. That is scope. Extra features are not.
Take the first option that fully works:
shortcut: <the limit>, <when to upgrade>.Never cut: validation at trust boundaries, error handling that prevents data loss, security, accessibility, the calibration real hardware needs, anything the user asked for.
| Level | Behavior |
|---|---|
| lite | Build what was asked. Name the smaller option in one line and let the user pick. |
| full | The rules above. Default. |
| ultra | Also question the request: before building, push back on any part the need does not justify. |
© DietrichGebert, 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 skills/ponytail of DietrichGebert/ponytail.
Open the folder on GitHubat commit 9cc65d0
Ponytail Lazy Developer Mode 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 |
|---|---|---|---|---|---|---|
| Ponytail Lazy Developer Mode this skillDietrichGebert/ponytail | 159k | — | ~873 | Automated safety check: Pass | MIT | |
| Codebase Health Refactoringkucherenko/jscpd | 6.4k | — | ~2.5k | Automated safety check: Pass | MIT | |
| DRY Refactoring With jscpdkucherenko/jscpd | 6.4k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Simplify Recent ChangesQwenLM/qwen-code | 28k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Review And Simplify ChangesDimillian/Skills | 4k | — | ~2k | Automated safety check: Pass | MIT | |
| Rnd Code Simplifychendongqi/OPB-Skills | 125 | — | ~2.2k | Automated safety check: Pass | None |
kucherenko/jscpd
A three-part cleanup guided by jscpd: measure health, then fix duplicated code, remove dead code and simplify the most complex files, finishing by re-measuring the score.
kucherenko/jscpd
Removes copy-paste duplication found by jscpd, starting with exact clones and hotspots, then renamed and near-miss copies, using proven refactoring strategies.
QwenLM/qwen-code
Reviews your uncommitted diff with three parallel passes for reuse, quality and efficiency, then applies the straightforward cleanups before a pull request.
Dimillian/Skills
Review a git diff or explicit file scope for reuse, code quality, efficiency, clarity, and standards issues, then optionally apply safe Codex-driven fixes.
chendongqi/OPB-Skills
Expert code simplification and refactoring specialist that autonomously enhances code clarity, consistency, and maintainability while preserving exact functionality.
Yeachan-Heo/oh-my-claudecode
Cleans up AI-generated code that works but is bloated or repetitive, locking behavior with tests first and deleting before adding, with a reviewer-only mode.
DietrichGebert/ponytail
Show ponytail's measured savings (code, cost, speed) from the benchmark. One-shot display. Use for /ponytail-gain, "what does ponytail save", "ponytail impact".
DietrichGebert/ponytail
Shows a one-shot quick-reference card for the ponytail skills: intensity levels, the six commands, and how to turn it off, set a default mode and update.
DietrichGebert/ponytail
Quality audit of a whole repo: bugs, security holes, what breaks under real load, risky code without tests, slow paths, and what to delete, merge or split.
DietrichGebert/ponytail
Collects every ponytail: comment in a codebase into one debt ledger, flags shortcuts with no upgrade trigger and reports without changing any files.
DietrichGebert/ponytail
Reviews a diff only for unnecessary complexity and lists what to delete or shrink, one numbered line per finding with the location, the cut and its replacement.
Categories
Makes the agent pick the laziest solution that works: skip unneeded work, reuse what exists, prefer the standard library and platform features, and keep diffs small. The skill sets the persona of a lazy senior developer, where lazy means efficient and not careless, and it stays active in every response until you say stop ponytail or normal mode. It has three intensities, lite, full (the default) and ultra, switched with /ponytail.
Ponytail Lazy Developer Mode fits situations like: writing or refactoring code where over-engineering is a risk; choosing between a new dependency and the standard library or a native feature; fixing a bug at its root cause with the smallest diff; reviewing a change for unnecessary abstraction and boilerplate.
Run `npx skills add DietrichGebert/ponytail --skill ponytail -a claude-code`. Or copy the skill folder (skills/ponytail in DietrichGebert/ponytail) into .claude/skills/ponytail in your project. Claude Code loads it when a task matches its description.
Run `npx skills add DietrichGebert/ponytail --skill ponytail -a codex`. Or copy the skill folder (skills/ponytail in DietrichGebert/ponytail) into .agents/skills/ponytail 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 DietrichGebert/ponytail --skill ponytail -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ponytail, .gemini/skills/ponytail, .github/skills/ponytail and .opencode/skills/ponytail in your project.
SKILL.md names no scripts, command-line tools or credentials: Ponytail Lazy Developer Mode is instructions for the agent only.
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.
Ponytail Lazy Developer Mode is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 873 tokens (SKILL.md is roughly 3.5k 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 Ponytail Lazy Developer Mode: Codebase Health Refactoring (kucherenko/jscpd, 6.4k stars), DRY Refactoring With jscpd (kucherenko/jscpd, 6.4k stars), Simplify Recent Changes (QwenLM/qwen-code, 28k stars) and Review And Simplify Changes (Dimillian/Skills, 4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
DietrichGebert (a GitHub user) maintains it in DietrichGebert/ponytail, which has 158,888 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.
Source: DietrichGebert/ponytail on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.