Ponytail: How to Make AI Coding Agents Write Less Code
Ponytail tells AI coding agents to stop at the smallest change that works. See wetin e ships, its own benchmark numbers, and how to copy the rule today.
Wetin Ponytail be
Ponytail na rule set wey make AI coding agent write less code. The project describe itself for one line: "E make your AI agent think like the laziest senior dev for the room. The best code na the code wey you never write." MIT license cover am. E no get runtime of im own, and nothing for inside am dey execute. Na text wey enter the agent instructions. Dem package am as skill for hosts wey dey load skills, and as plain rule files for hosts wey no dey load skills.
The repository na DietrichGebert/ponytail. Dem create am on 12 June 2026, and e pass 90,000 stars by 1 August 2026. The latest tagged release on 1 August 2026 na v4.8.4. Dem publish am on 29 June 2026, and the releases page list ten tags between 14 and 29 June alone. Project wey dey move at that speed fit don change by the time you read this. So pin one tag before you build anything on top of am.
The idea before the tool: make you stop for the first rung wey hold
The main idea for Ponytail na decision ladder. Agent go climb am before e write anything, then e stop for the first rung wey hold.
- E need to exist at all? This na YAGNI (you no go need am). If answer na no, skip am.
- E already dey for this codebase? Reuse the helper or pattern wey already dey there.
- Standard library fit do am? Use am.
- Native platform feature fit handle am? Use am.
- Any dependency wey dem don install fit solve am? Use am.
- E fit be one line? Make am one line.
- Na only after that, write the minimum code wey go work.
Na the order dey do the work, no be any single rung. If you ask agent for date picker, e go write date picker, because na that you tell am to do. The ladder make am check rung 4 first, and rung 4 talk say browser already get <input type="date">. The project's own benchmark notes show this exact case: date picker wey reach 404 lines without the rule come be 23 lines with am, because agent use the native input instead of building component. Colour picker drop from 287 lines to 23 for the same reason.
For here, lazy no mean careless, and the ruleset talk am directly. The "never lazy about" list cover understanding the problem before deciding, input validation for trust boundaries, error handling wey prevent data loss, security, accessibility, and anything wey you ask for by name. E also ask for one small runnable check for every piece of non-trivial logic. The rule reduce invention. E no reduce correctness.
Wetin repository actually dey ship
AGENTS.md, the always-on ruleset, wey na the whole idea inside one file wey you fit read within five minutes.skills/ponytail/SKILL.md, the skill definition, with argument hint oflite,fullorultra.- Rule files inside editor-specific directories like
.cursor/rules/and.windsurf/rules/, for hosts wey dey read rules but no dey load skills. hooks/,benchmarks/,examples/andscripts/.
The intensity argument dey change how strongly the rule go push. lite dey build wetin you ask for and name one lazier option for one line. full na the default and e dey enforce the ladder. ultra na the YAGNI extremist setting: e prefer make you delete instead of add, and e go argue with the requirement itself.
Hosts wey fit use skills also get slash commands. /ponytail dey set the level, /ponytail-review dey check diff for over-engineering, /ponytail-audit dey check whole repository, /ponytail-debt dey collect the shortcuts wey you postpone, and /ponytail-gain dey print the benchmark scorecard. Hosts wey only dey read rule files get the ruleset without commands.
If you wan read the source before you trust am, clone the tag instead of the branch:
git clone --depth 1 --branch v4.8.4 https://github.com/DietrichGebert/ponytail.gitFor Claude Code, the project document plugin installation instead, and these two lines na exactly as dem document am on 1 August 2026:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytailThe plugin path dey follow the default branch instead of a tag, so the instructions wey dey guide your agent fit change under you between sessions. Na the trade-off you accept for the convenience of an update command.
Why lazy agent dey cheaper for VPS
The diff wey agent write no dey comot from conversation. For next turn, model go read am again as context, together with every file wey e open to produce am. So, 500 line change go affect every later turn for the session, no be only the turn wey produce am. Na why runaway refactor dey make agent feel slower and less smart as session dey continue: window dey fill with agent own output, so the space wey remain for your actual code dey reduce. The whole matter for managing coding agent context window na to keep this under control.
Dem dey bill tokens wey enter and tokens wey comot, so diff wey be half the size go cheaper two times: first when agent write am, and again for every turn wey read am again. Whether this saving go show for your bill depend on how you dey pay, because flat Pro or Max subscription go absorb the extra tokens, while per-token API billing go charge you for every one of dem. If you dey monitor bill for self-hosted setup, instruction file na lever wey no cost anything to use. Controlling wetin AI agent dey cost you start with output volume, and how coding agent dey spend im tokens explain why re-reading matter pass wetin people expect.
Human still dey read the diff. 400 line change wey suppose be 20 lines go use the reviewer's attention, and attention na the resource wey dey finish first. Nobody go review the fourth long diff of the day with the same care wey dem give the first one, so over-building no just waste time. E dey quietly reduce the quality of the review wey suppose catch the mistakes.
For server, the risk dey different because agent often dey run when nobody dey watch am. Agent wey dey work for tmux session or on a timer fit spend hours building on bad decision before you see am. Na the practical risk for running coding agent on VPS, and na why people wey dey do loop engineering dey put plenty care for standing instructions instead of individual prompts. Rule wey dey always-on file go apply for turn 200. Rule wey you type for chat go apply for turn 3.
New dependencies na the other quiet cost. Rung 5 talk say make you use wetin don install. Every package wey agent add by im own choice na something you go patch later, and something wey go end up inside every container image wey you build from that repository.
Wetin Ponytail own benchmark numbers talk
The project publish two sets of results, and dem dey disagree with each other by wide margin. Na the project own published figures be both of dem. No one be independent test.
The data behind this chart
[
{
"label": "Lines of code",
"single_shot_pct": 93,
"agentic_pct": 54
},
{
"label": "Cost per run",
"single_shot_pct": 63,
"agentic_pct": 20
},
{
"label": "Wall clock time",
"single_shot_pct": 74,
"agentic_pct": 27
}
]The single shot column come from bare model wey answer small set of prompts with and without the rule. Dem take the results as medians across repeated runs dated 13 and 17 June 2026. The agentic column come from headless Claude Code session wey edit tiangolo's full-stack-fastapi-template, wey be real FastAPI and React repository, across twelve feature tickets with four runs each on Haiku 4.5. Dem score am based on the git diff wey remain.
Read the second column. The agentic result get 54 percent fewer lines of code, 20 percent lower cost, and 27 percent less wall clock time. For the same measures, the single shot setup get 93 percent and 74 percent. The README talk honestly about why: the single shot baseline na bare model wey "answers with several options plus commentary", and that one easy to beat. When you measure against real agent wey dey do real work, the gain reduce. E still remain real, and na that be the more useful fact.
One caveat come from the project itself, and na that one decide whether this go help you. The saving biggest for places wey genuine over-build trap dey, and e nearly zero for code wey already minimal. Twelve tickets for one Python and TypeScript repository no fit predict your own repository. If the number matter to you, run the comparison for your own tickets, with and without the rule, then count the lines yourself.
Pattern wey you fit copy today without installing anything
The ladder na text, so you no need the plugin to use the idea. Paste block like this inside the instruction file wey your agent already dey read, whether na AGENTS.md, CLAUDE.md or your editor rules file.
## Before you write code
Climb this list in order. Stop at the first line that applies.
1. Does this need to exist? If not, say so and stop.
2. Does this repo already have it? Reuse the helper.
3. Does the standard library do it? Use it.
4. Does the platform do it natively? Use it.
5. Does an installed dependency do it? Use it.
6. Can it be one line? Write one line.
7. Otherwise write the minimum that works.
Never take the shortcut on: reading the code before changing it, validating
input that crosses a trust boundary, error handling that would otherwise lose
data, security, accessibility, or anything I asked for by name.
Do not add an abstraction I did not ask for. Do not add a dependency without
saying why in one line. Prefer deleting code to adding it.
Mark a deliberate simplification with a comment naming its ceiling and the
upgrade path.That last rule deserve make e stand alone. Ponytail convention na comment wey tool name tag am:
# ponytail: global lock, per-account locks if throughput mattersThe comment na two lines of work, and e settle question wey fit otherwise take one review cycle. E tell the next reader say the simple version na deliberate decision, and e name the condition wey go make that decision stop to apply. Without am, reviewer no fit know whether na considered shortcut or something wey agent forget, so dem go need ask.
Where you put the block matter as much as wetin e talk. File wey agent load for every run go guide every run, including the ones wey you no dey watch. That difference na the subject of writing an AGENTS.md wey your agent go actually follow, and na why this pattern belong inside committed file instead of your shell history.
Wey the rule no longer fit
This ladder na mainly tune for feature work inside codebase wey already dey exist, where reuse normally dey available and normally correct. E no fit greenfield project well, because rung 2 get nothing to reuse and rung 5 get nothing installed, so the agent go fall reach rung 7 every time. E also no fit well for the time wey you truly need the abstraction. If you dey about add the fourth caller of the same copied block, "shortest diff" go give you fifth copy.
The ultra level go challenge your requirements. Na wetin the level dey for, and na real cost when you don already make the decision and you want make the work happen. Use full for normal work, and use ultra when you suspect say the feature request na the actual problem.
No instruction block fit save you from wrong understanding of the problem. The ruleset first item na to understand the code before you decide, and na the expensive part wey the text no fit do for you. Minimal diff for wrong function still na wrong fix, and now e be small wrong fix wey easy to approve.
The honest summary be say Ponytail na carefully written prompt, wey dem distribute well, with numbers attached. Nothing inside am require the plugin. Wetin the project give you na say person write the list properly, test am against real repository, and publish the method beside the result.
FAQ
Ponytail dey work with agents wey no be Claude Code?
Yes. E dey ship as skill for hosts wey dey load skills, and Claude Code, Codex, OpenCode, Gemini plus some others wey README name dey inside this list. Editors wey dey read rule files but no dey load skills, like Cursor, Windsurf, Cline and Copilot, dey take the always-on ruleset from the matching rules directory, but dem no get slash commands. The text dey the same for both cases. The real difference na whether your host dey keep that text for context on every turn, or only when skill trigger.
Published speed and cost numbers fit trust?
Na the project own measurements dem be. Dem publish am together with the method wey dem use, so na like that you suppose read am. The single shot figures compare against bare model wey reply with options and commentary. The README itself mark this as weak baseline. The agentic figures come from headless Claude Code session for one FastAPI and React repository, twelve tickets, and four runs each, with Haiku 4.5. Those numbers dey valid for that setup. Dem no be forecast for your codebase, because the project still talk say the saving dey fall near zero for code wey already minimal.
I need install anything before I fit get the benefit?
No. The ladder na text. If you paste equivalent block inside the instruction file wey your agent already dey read, you go get most of the effect. The plugin give you maintained wording, intensity levels, review commands and update path. To try the copied block first na the rung 1 answer to whether the install need exist at all.
How I fit stop unattended agent from over-building overnight?
Put the rule inside the always-on instruction file instead of chat message. That way, e go apply for turn 200 of long run, no be only for turn 3. Then limit the damage separately: give the agent checkout wey e fit spoil instead of your only copy, and require human diff review before anything merge. Minimal diff rule reduce how much you need read. E no decide wetin go land, and e no suppose.