Skip to content

ponytail (Dietrich Gebert)

This is a tool reference

What a tool or project is, who makes it, and what it is for, whether someone else wrote it or I did. Everything I have learned about it lives elsewhere and links back here.

ponytail1 is a ruleset that tells an agent to reach for the smallest thing that already exists before it writes anything. It ships as a skill plus a per-harness plugin, and covers around twenty agents, opencode amongst them.

Author Dietrich Gebert
Licence MIT
Distribution npm, as @dietrichgebert/ponytail, plus plugin marketplaces per harness
Source github.com/DietrichGebert/ponytail
Version read v4.10.0, commit e3ba2aa, 2026-09-21

The ladder

The whole idea is one ordered list, and the agent stops at the first rung that holds: does this need to exist at all, is it already in this codebase, does the standard library do it, is it a native platform feature, is it in an installed dependency, does it fit on one line, and only then write the minimum that works.

The ordering is the content. A generic instruction to keep things small leaves the agent to decide what small means, whilst the ladder says which cheap option to exhaust first, and reuse sits above writing on it. It runs after the agent has understood the problem, which is the guard against the obvious failure mode: lazy about the solution, never about reading the code the change touches.

Validation at trust boundaries, data-loss handling, security and accessibility are named as never cuttable. That is what separates it from a prompt that just asks for fewer lines, and the repository's own benchmark is where the difference shows.

Relation to caveman

The two are easy to confuse because both make things shorter. They do not compress the same thing: caveman is about the prose an agent writes back to me, ponytail is about the code it leaves in the repository. ponytail's own benchmark uses caveman as the control arm for exactly that reason.

See also my thoughts on how I would adopt ponytail.

The following pages link to this page: