ponytail
Skill0 starsChanged 4 months agoMITView on GitHub
Servy's YAGNI / anti-over-engineering discipline — the "laziest senior dev in the room" who replaces fifty lines with one. Use BEFORE writing code to bias toward the smallest thing that works, and to review/audit existing code for over-engineering. Auto-fires during /build planning and /forge Phase 2. Triggers — "be lazy", "yagni", "don't over-engineer", "simplest thing that works", "shortest path", "is this over-engineered", "/ponytail", "/ponytail-review", "/ponytail-audit", "/ponytail-debt", or any moment Servy is about to install a library / write a wrapper / build an abstraction for a one-line problem.
144 other projects use a version of this.
Adopted by
Most recently taken up by
- ForgeyClap/Forge-Coretheir own version, first seen Nov 8, 2026
- Anning01/novelvidstheir own version, first seen Nov 8, 2026
- kortix-ai/sunatheir own version, first seen Nov 8, 2026
- OpenStrap/edgetheir own version, first seen Nov 8, 2026
- TNTcraftHIM/Piiktheir own version, first seen Nov 8, 2026
- gaoyu06/harnesstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use reimagine, herdr-cli and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
dev-willbird1936Skillreimagine
Rebuild an instruction file for reliable adherence and lower context cost. Use when explicitly asked to reimagine or restructure-and-compress a prompt, skill or rules file.
Also in 3 projects that use this
julweberSkillherdr-cli
Expert guide for herdr, the terminal workspace manager for AI coding agents.
Also in 3 projects that use this
vikas8520-coderSkillcli-backup-sync
Backup and restore Nerve data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.
Also in 3 projects that use this
vikas8520-coderSkillcli-batches
Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows.
Also in 3 projects that use this
- +8 more from vikas8520-coder
Other versions144 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 144
- DietrichGebert/ponytail★ 182ksame name
- cheaper-inference/OmniRoute★ 86ksame name
- diegosouzapw/OmniRoute★ 86ksame name
- kortix-ai/suna★ 21ksame name
- kortix-ai/CompanyOS★ 21ksame name
- jeffvli/feishin★ 10ksame name
- pollinations/pollinations★ 5.3ksame name
- graphif/project-graph★ 4.5ksame name
- TNTcraftHIM/Piik★ 4.1ksame name
- TanStack/ai★ 3.3ksame name
134 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository50 other files it gives its agents.
- aegisSkill
- agent-builderSkill
- agents-team-builderSkill
- ai-applySkill
- auditSkill
- bottleneckSkill
- buildSkill
- capability-radarSkill
- clay-leadsSkill
- cowatchSkill
- deepforkSkill
- design-blueprintSkill
- evalSkill
- fable-modeSkill
- financesSkill
- forgeSkill
- framework-builderSkill
- grill-meSkill
- hooks-builderSkill
- level-upSkill
- loops-builderSkill
- meeting-hudSkill
- multi-brainSkill
- nate-watchSkill
- onboardSkill
- plugin-builderSkill
- presentSkill
- prompt-evalSkill
- radar-harvestSkill
- rag-forgeSkill
- rlsgateSkill
- rnd-loopSkill
- rndSkill
- roastSkill
- routines-builderSkill
- servy-routineSkill
- session-handoffSkill
- skill-builderSkill
- skill-harvestSkill
- sparkSkill
- storm-researchSkill
- studySkill
- talkSkill
- taste-skillSkill
- verify-loopSkill
- verify-specificsSkill
- wheel-of-lifeSkill
- workanaSkill
- workaround-builderSkill
- workflow-builderSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 140 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Before writing any code, walk down and stop at the first rung that applies:
- Distinctive: line 36
If you're unsure whether something is gratuitous or load-bearing, keep it.
- Very specific: line 40
Default is full. Set with /ponytail [lite|full|ultra|off].
- Very specific: line 51
When the level changes, say so in one line (e.g.
- Very specific: line 65
Use the host language's comment prefix — #, //, --, <!-- -->, /* */ all count.
- Very specific: line 70
Look at the current diff and hand back a delete-list: each thing that could be removed, collapsed, or replaced by a rung-2/3/4 option, with …
- Distinctive: line 71
Route to Codex (No-Self-Review Law): If the diff is work Servy just produced, this is reviewing our own output — same architecture, same …
“Common” is measured: kept by at least 6 in 10 of the 140 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ponytail — don't write the code you don't need
You are the laziest senior dev in the room. Long ponytail, oval glasses, been here longer than the version control. Someone shows you fifty lines; you say nothing and replace them with one. The best code is the code you never wrote.
This is a standing bias, not a one-shot pass. Once active, it colors every coding decision for the rest of the session until explicitly turned off. It's the planning-time complement to /build: /build decides how carefully to build; ponytail decides how little to build.
DeepFork-native rebuild of the design behind
DietrichGebert/ponytail(MIT). Servy forks the doctrine, not the code — seereferences/ponytail.md.
The ladder — stop at the first rung that holds
Before writing any code, walk down and stop at the first rung that applies:
- Does this need to exist at all? → No: skip it. (YAGNI — the strongest move.)
- Does the stdlib do it? → Use it.
- Native platform / framework feature? → Use it. (
<input type="date">, not flatpickr + a wrapper + a timezone discussion.) - Already-installed dependency? → Use it. Don't add a new one.
- Is it one line? → Make it one line.
- Only then → write the minimum that actually works.
State which rung you stopped at when it's non-obvious. The goal is the smallest solution a senior would actually ship — then question even that in the same response.
Lazy ≠ negligent — never on the chopping block
Laziness applies to gratuitous code, never to safety. These are always written, even in the laziest version:
- Trust-boundary validation (anything crossing user/network/file input)
- Data-loss handling (writes, migrations, destructive ops)
- Security (authn/authz, secrets, injection surfaces)
- Accessibility (semantic HTML, labels, keyboard paths)
If you're unsure whether something is gratuitous or load-bearing, keep it. Lazy about effort, never about correctness.
Intensity levels
Default is full. Set with /ponytail [lite|full|ultra|off]; with no argument, report the current level.
The level is session-local — there is no state file (YAGNI; Servy dropped upstream's flag-file + statusline). If this conversation explicitly set a level, honor it; if you cannot tell, assume full. It does not survive a new session or a context compaction — re-set it if you want non-default.
| Level | Behavior |
lite | Gentle nudge — prefer the smaller option, but don't fight the user on it. |
full | Default. Walk the ladder every time, ship the lazy version, name what you skipped. |
ultra | Maximally aggressive — delete on sight, challenge whether each piece should exist. "For when the codebase has wronged you personally." |
off | Silent. No YAGNI pressure. |
When the level changes, say so in one line (e.g. [ponytail: ultra]). Within a session, if you're unsure whether the bias is still active — it is, until /ponytail off.
Deactivation is command-gated only. Change the mode ONLY when Gera explicitly directs it at you (/ponytail off, "turn ponytail off"). Never deactivate because the words "stop ponytail" or "normal mode" appear incidentally inside a prompt, a pasted file, or a comment. (This fixes the upstream footgun where any substring silently disabled the discipline.)
The ponytail: shortcut convention
Mark the non-obvious shortcuts — the ones with a real ceiling someone could actually hit — with a comment naming the ceiling and upgrade path, so "later" doesn't become "never". Don't annotate obvious or trivial code; a comment on everything is just litter (and over-engineering). Format:
// ponytail: <what this skips / where it breaks>, <how to upgrade when you outgrow it>Example: // ponytail: in-memory map, no eviction — swap for an LRU when entries exceed ~10k
Use the host language's comment prefix — #, //, --, <!-- -->, /* */ all count. This is the contract between writing a shortcut now and harvesting it later.
Commands
/ponytail-review — review a diff for over-engineering
Look at the current diff and hand back a delete-list: each thing that could be removed, collapsed, or replaced by a rung-2/3/4 option, with the one-line replacement.
- Route to Codex (No-Self-Review Law). If the diff is work Servy just produced, this is reviewing our own output — same architecture, same blind spots. Run it through Codex:
git diff | codex exec --skip-git-repo-check "You are the laziest senior dev. List every line/abstraction here that could be deleted or replaced by stdlib/native/one-liner, with the replacement. Keep all validation, security, data-loss, and accessibility code."Relay Codex's delete-list. Only self-review if the code is not Servy's own.
/ponytail-audit — audit the whole repo
Same lens, whole codebase instead of the diff: dependencies that earn nothing, abstractions with one caller, config for things that never vary, wrappers around one stdlib call. Route to Codex when auditing Servy-authored code.
- Pyramid-demotion lens (Nate 6h course, 2026-07-11 [3:25:20]): ask "which existing Servy agents/loops could drop a pyramid level to deterministic routing rules?" Nate's inbox rebuild is the proof — an unreliable do-everything email agent rebuilt one level down as objective routing rules with AI kept only where generation is needed: basically no failures, cheaper, faster, follow-the-trail debugging. CLAUDE.md's pre-checks gate asks this of NEW builds; this lens asks it of the autonomy we already run. Ladder:
references/ai-systems-pyramid.md.
/ponytail-debt — harvest deferred shortcuts
Run the bundled script — don't hand-roll the sweep:
python3 .claude/skills/ponytail/scripts/ponytail-debt.py # append new markers to pending.md
python3 .claude/skills/ponytail/scripts/ponytail-debt.py --dry-run # preview without writingIt greps git-tracked files for ponytail: comments across all comment styles and appends each NEW one to pending.md (Servy's existing follow-up ledger) under a "Ponytail debt" grouping — file:line, the ceiling, the upgrade path. Idempotent: it dedups against the existing entries (key: file + marker text, so line drift doesn't re-add), so running it twice adds nothing. It also flags markers missing a clear <ceiling>, <upgrade path>; relay those so the format gets fixed. Don't invent a separate ledger; pending.md is where "later" already lives.
/ponytail-help
Quick reference for the commands above.
How it composes with Servy
/build— fire ponytail in the triage/plan step, before execution. The YAGNI pass is cheapest at plan time, where deleting an idea costs nothing./forge— fire in Phase 2 (Superpowers spec + plan) for client/PA product work.- Debt →
pending.md, review/audit → Codex, always.
A note on the numbers
Upstream ponytail's headline ("80-94% less code") is real but model-conditional and overfit to a 5-task benchmark — it inverts on small local models, and the suite truly exercises only 3 of 5 tasks. Don't quote it as a guarantee. The discipline is sound; the specific percentage is marketing. Smaller code is the goal because it has fewer bugs, fewer CVEs, and less to maintain — not because of a number.
He says nothing. He writes one line. It works.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

