claudekit / tools / ponytail
[ Plugin · Development ]

Ponytail

Makes your AI agent think like the laziest senior dev in the room. Before writing code the agent stops at the first rung that holds — does this need to exist, is it already in the codebase, does the stdlib do it — and never cuts validation, error handling, security, or accessibility.

DietrichGebert/ponytail ·updated
$ /plugin marketplace add DietrichGebert/ponytail copy

An open-source plugin by Dietrich Gebert (DietrichGebert/ponytail).

What it does

You ask for a date picker. Your agent installs flatpickr, writes a wrapper component, adds a stylesheet, and starts a discussion about timezones. The browser already ships one.

<!-- ponytail: browser has one -->
<input type="date">

“You know him. Long ponytail. Oval glasses. Has been at the company longer than the version control. You show him fifty lines; he looks at them, says nothing, and replaces them with one.” Ponytail puts him inside your AI agent.

The point is not token count. From the README: “The rule was never ‘fewest tokens.’ It is: write only what the task needs, and never cut validation, error handling, security, or accessibility. The code ends up small because it is necessary, not golfed.”

What you can do

examples/ holds real model output, verbatim from benchmark runs — the same task answered by the same model (Claude Haiku 4.5) with and without the skill.

ExampleWithout (LOC)With (LOC)
Email Validation753
Debounce11610
CSV Sum203
Countdown Timer2679
Rate Limiting12810

Asked to deep clone an object, the bare agent reaches for npm install lodash and cloneDeep, or the “classic hack” of JSON.parse(JSON.stringify(original)). With ponytail:

// ponytail: structuredClone does this
const copy = structuredClone(original);

These are not hand-written — reproduce them with npx promptfoo@latest eval -c benchmarks/promptfooconfig.yaml.

Grounded in the DietrichGebert/ponytail README and examples/README.md.

Key features

  • The seven-rung ladder

    “Before writing code, the agent stops at the first rung that holds”:

    1. Does this need to exist? → no: skip it (YAGNI)
    2. Already in this codebase? → reuse it, don’t rewrite
    3. Stdlib does it? → use it
    4. Native platform feature? → use it
    5. Installed dependency? → use it
    6. One line? → one line
    7. Only then: the minimum that works

    “The ladder runs after it understands the problem, not instead of it: it reads the code the change touches and traces the real flow before picking a rung. Lazy about the solution, never about reading.”

  • Lazy, not negligent

    Trust-boundary validation, data-loss handling, security, and accessibility stay. On the adversarial safety tier ponytail holds 100% while a bare “YAGNI + one-liners” prompt drops to 95%.

  • Four intensity levels

    /ponytail lite | full | ultra | off sets the intensity or turns it off; no argument reports the current level. No config file is required — an optional ~/.config/ponytail/config.json or the PONYTAIL_DEFAULT_MODE env var can set the default.

  • Six commands

    CommandWhat it does
    /ponytail [lite | full | ultra | off]Set the intensity, or turn it off
    /ponytail-reviewReview the current diff for over-engineering, hands back a delete-list
    /ponytail-auditAudit the whole repo, not just the diff
    /ponytail-debtHarvest the ponytail: shortcuts you’ve deferred into a ledger
    /ponytail-gainShow the measured impact scoreboard from the benchmark
    /ponytail-helpQuick reference for the commands above
  • A benchmark you can reproduce

    benchmarks/ ships the runner and the write-ups. The headline measurement is “a headless Claude Code session editing tiangolo’s full-stack-fastapi-template (a real FastAPI + React repo), scored on the git diff it leaves behind.”

    vs no-skill baselineLOCtokenscosttimesafe
    ponytail-54%-22%-20%-27%100%
    caveman (terse-prose control)-20%+7%+3%+2%100%
    “YAGNI + one-liners” prompt-33%-14%-21%-30%95%
  • Around 20 agents

    Claude Code, Codex, GitHub Copilot CLI, Gemini CLI, OpenCode, Hermes Agent, Devin CLI, Qoder, pi, Swival, CodeWhale, OpenClaw and more. Commands “need a skill-capable host”; instruction-only adapters get the always-on ruleset without them.

Setup

Add the marketplace, then install. “You have to send two separate prompts for the install to work.”

/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

The same two commands work in the Claude Code Desktop app’s Code tab, or use the + button next to the prompt box → PluginsAdd plugin.

Then set the level or review what you have:

/ponytail ultra
/ponytail-review

For Codex, install and then “open /hooks, review and trust its two lifecycle hooks, and start a new thread.”

codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail

OpenCode takes it in opencode.json:

{ "plugin": ["@dietrichgebert/ponytail"] }

Notes

  • node must be on your PATH — “The Claude Code and Codex plugins run two tiny Node.js lifecycle hooks… (note for Nix/nvm users: it must be on the non-interactive shell’s PATH). If it isn’t, the skills still work, the always-on activation just stays quiet instead of erroring on every prompt”
  • Send the install commands separately — pasting both at once does not install
  • Read the numbers with their setup — -54% is the mean across 12 feature tasks (Haiku 4.5, n=4). “It reaches 94% where an agent over-builds (a date picker) and is near zero where the code is already minimal”
  • Cost can go the other way on some models — “Lower cost and latency are a side effect on the models that follow the ladder; a terse reasoning model that spends thinking tokens deliberating the rungs can go the other way (on GPT-5.5 it does)”
  • The author retracted the earlier headline figure — the original single-shot benchmark reported 80-94%; issue #126 pointed out the bare-model baseline pads its answer with prose and options, so the agentic numbers above are “the corrected, defensible version”
  • Pairs with cavemancaveman shrinks the prose, ponytail shrinks the build. The caveman control numbers above come from ponytail’s own benchmark
  • No config file needed — install and it works
  • License — “MIT. The shortest license that works.”
§ 6

See also

same category · curated
[01]
[Tool] Paseo · Run any coding agent from your phone, desktop, or terminal. Self-hosted, multi-provider, open source. A local daemon runs the agents on your machine and every client — desktop, mobile, web, CLI — connects to it, with the native mobile app at full feature parity with desktop.
tool · claudekit.io / tools / paseo
[02]
[Tool] Orca · Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. It runs each agent in an isolated git worktree, lets you compare outputs side by side, and merge the ones you want. Works with Claude Code, Codex, Grok, and 30+ CLI agents. Available on desktop and mobile.
tool · claudekit.io / tools / orca
[03]
[Skill] Matt Pocock's Skills · Skills For Real Engineers. Straight from Matt Pocock's .claude directory. 20+ agent skills for real engineering — not vibe coding — covering alignment (grilling), specs, TDD, code review, bug diagnosis, and architecture. Install as an editable fork via skills.sh or as a read-only plugin bundle.
tool · claudekit.io / tools / mattpocock-skills
§ 7

Frequently Asked Questions

frequently asked
§ 7.1
What is Ponytail?
A plugin that "makes your AI agent think like the laziest senior dev in the room." Before writing code, the agent walks a seven-rung ladder and stops at the first rung that holds, so it reuses what already exists instead of building it again.
§ 7.2
How do I install it?
Run `/plugin marketplace add DietrichGebert/ponytail` and then `/plugin install ponytail@ponytail`. The README is explicit: "You have to send two separate prompts for the install to work."
§ 7.3
Does shorter code mean it skips validation or security?
No. "Lazy, not negligent: trust-boundary validation, data-loss handling, security, and accessibility are never on the chopping block." On the separate adversarial safety tier ponytail scores 100%, the same as the no-skill baseline.
§ 7.4
How much less code does it actually write?
-54% against the no-skill baseline, measured on a headless Claude Code session editing tiangolo's full-stack-fastapi-template across twelve feature tickets (Haiku 4.5, n=4). It reaches 94% where an agent over-builds and is near zero where the code is already minimal.
§ 7.5
Which agents does it work with?
Around 20, including Claude Code, Codex, GitHub Copilot CLI, Gemini CLI, OpenCode, Hermes Agent, Devin CLI, Qoder, and pi. "The instruction-only adapters (Cursor, Windsurf, Cline, Copilot, Kiro, Antigravity) load the always-on ruleset without the commands."
§ 7.6
Can I use it with caveman?
"Yes, and you should. Caveman shrinks what the agent says; ponytail shrinks what it builds. Different halves, no overlap: caveman leaves code byte-for-byte exact, ponytail stays out of the prose."