Ponytail: getting the agent to write less, without cutting what matters
DietrichGebert/ponytail · 145,811★ · 7,814 forks
Everything worth knowing about DietrichGebert/ponytail: a set of rules, skills, and adapters that push coding agents toward the minimal solution that meets the requirement.
What Ponytail is
Ponytail is a plugin and a collection of instructions for coding agents. Its deliberately cartoonish image is that of a senior developer who replaces fifty lines with one; its technical goal is to stop the agent from building unnecessary functions, abstractions, or dependencies.
It should not be confused with a context compressor or a model. It is a behavior layer: it gets injected as persistent rules or as a skill depending on the environment. The official site sums it up as “the least code that works”; the README spells out a decision ladder and safety boundaries.
The origin: a simple rule turned into a multi-platform distribution
GitHub records the repository’s creation on June 12, 2026. The author’s account credits the npm package to Dietrich Gebert, though their GitHub profile lists no bio or company. Two days later, on June 14, the repository already appeared on Hacker News.
The project’s narrative starts from a tension familiar in AI-assisted coding: an agent may reach for a library, a component, and a configuration layer when the browser, the standard library, or existing code already solves the problem. The README’s example contrasts a date picker with the native <input type="date"> element.

The project does not turn line reduction into a blind rule. The README was corrected after issue #126 challenged an early comparison against a non-agentic model response: the current documentation now presents that earlier result as a per-task maximum, not a general average. That’s a useful signal that its figures are the project’s own measurements, not an independent study.
Philosophy and principles
Ponytail’s ladder, documented in AGENTS.md and the README, is walked through after understanding the task and the affected flow:
- Does it need to be built at all? If not, it’s dropped under YAGNI.
- Does it already exist in the codebase? Reuse it.
- Does the standard library offer it? Use that.
- Is there a native platform function? Prefer it.
- Is there already an installed dependency that solves it? Lean on it.
- Does it fit on one line? Leave it on one line.
- Only then is the minimal necessary implementation written.

The boundary matters as much as the ladder. The instructions exclude from simplification any validation at trust boundaries, error handling that prevents data loss, security, accessibility, and anything explicitly requested. For non-trivial logic it requires a small executable check; a simplification that accepts a known limitation can be annotated with ponytail: and a path to improve it. So “lazy” means reducing maintenance, not stripping guarantees.

How it works
The repository maintains a single source of rules and adapters for different hosts. On hosts with plugins, hooks load the active mode and can inject the instructions before each turn; on instructions-only adapters, the appropriate rules file is copied over. The README declares compatibility with twenty agents and lists, among others, Claude Code, Codex, Copilot CLI, OpenCode, Gemini CLI, Pi, Hermes Agent, Devin CLI, OpenClaw, Qoder, and Swival.
The available modes are lite, full, ultra, and off. The default mode is full. Besides the main skill, there are commands to review a diff, audit a repository, log deferred technical debt, show benchmark results, and ask for help.
The repository includes a reproducible benchmark. According to its README, it compares Claude Code sessions over full-stack-fastapi-template, with twelve feature tasks and four repetitions using Haiku 4.5. It reports an average of 54% fewer lines, 22% fewer tokens, 20% lower cost, and 27% less time, with all the safety checks in its set passing. These are results published by Ponytail; no independent reproduction was found in this investigation. The README itself warns that models that are very concise in their reasoning can reverse the savings.

Official and semi-official status
Ponytail offers installation instructions through the plugin mechanisms of Claude Code, Codex, GitHub Copilot CLI, Gemini CLI, Devin CLI, and Hermes Agent, plus npm distribution for OpenCode and Pi. The fact that the package can be installed through those mechanisms means technical compatibility and distribution from their interfaces; on its own, it does not amount to a certification of the methodology, nor to an editorial endorsement from Anthropic, OpenAI, GitHub, Google, or Nous Research.
The Hermes integration was added in pull request #78: it registers pre_llm_call, skills under the ponytail: namespace, and slash commands. Version v4.8.4 also declares native plugin support for Hermes and Devin CLI. No official-standard designation or vendor marketplace listing granting any other formal status was found; in practice it is a heavily distributed de facto project within the “agent skill” pattern.
The ecosystem
Distributions and project components
@dietrichgebert/ponytail: npm package for OpenCode and Pi. The most recent published version found is4.8.4; npm recorded 9,488 downloads between July 29 and August 4, 2026, and 36,886 between July 6 and August 4. These are package downloads, not unique installs.ponytail-mcp: MCP server included sincev4.8.0; it serves the rule set to MCP-compatible agents.benchmarks/: the project’s own harness and results for measuring lines, tokens, cost, time, and safety checks..openclaw/skills/: a package generated fromskills/; the README says to regenerate it withnode scripts/build-openclaw-skills.jsbefore publishing its six skills to ClawHub.
A query of the author’s public repositories returned three: the main one, DietrichGebert/DietrichGebert, and DietrichGebert/maxfelker.com. No additional public sibling repository dedicated to Ponytail was identified.
Derivatives, forks, and community ports
The forks API returned mostly copies with unchanged descriptions. Among the derivatives that do present themselves as an adaptation or extension are:
warp-svg/ponytail-gilfoyle: a reinterpretation voiced like Gilfoyle that claims to keep the YAGNI ladder and the safety boundaries; 7 stars.pavnxet/Mimocode-ponytail: a derivative described as a senior-developer mode for agents; 3 stars.robertbarclayy/NWBZPWNR: a fork that claims to take Ponytail to the extreme; 3 stars.wilfgrainger/cave-pony: a declared combination of Ponytail andJuliusBrussee/caveman; the search result retrieved confirms the relationship, but a complete star count could not be found to cite.
The main repository includes maintained translations of its README into Spanish (README.es.md) and Korean (README.ko.md). No independent, non-English community translation that could be claimed as a separate port was found.
Repo numbers
Measured: August 6, 2026, GitHub and npm APIs.
| Metric | Value |
|---|---|
| Stars | 97,059 |
| Forks | 5,332 |
| Real subscribers | 235 |
| Commits | 206 |
| Open issues per API | 157 |
| Main language | JavaScript |
| License | MIT |
| Created | June 12, 2026 |
Last push to main found | July 15, 2026 |
| Latest release | v4.8.4, June 29, 2026 |

The 206-commit count comes from the last page indicated by the API’s pagination header. The top contributors retrieved by contribution count were DietrichGebert (107), Lakshya77089 (10), ousamabenyounes (8), followed by dhedhialy, hamza-ali-shahjahan, and salaamdev (4 each).
The API returns watchers_count as a duplicate of stars; that’s why subscribers_count is reported as real subscribers. open_issues_count can mix issues and open pull requests, so it does not necessarily equate to issues exclusively. The API response shows updated_at as August 6, 2026; it is transcribed as API metadata, without inferring activity beyond the last push found.
How to contribute
No CONTRIBUTING.md or formal fork-and-pull-request guide was found. There are development instructions in the README: after modifying compact rules, node scripts/check-rule-copies.js and npm test are run; when changing an OpenClaw skill, it is regenerated with node scripts/build-openclaw-skills.js.
Pull request #491 illustrates the checks used in a contribution: rule-copy verification, version verification, Node tests, npm test, and git diff --check. That is evidence of development practices, not a published contribution template.
Quick usage guide
Installation and first run
- Claude Code: send
/plugin marketplace add DietrichGebert/ponytailand/plugin install ponytail@ponytailas separate messages. The README stresses that these must be two distinct messages. It requiresnodeon thePATH; without it, the skills remain available but persistent activation is silently disabled. - Codex: run
codex plugin marketplace add DietrichGebert/ponytailandcodex plugin add ponytail@ponytail; then opencodex, review and authorize the two hooks in/hooks, and start a new thread. Installation also covers the desktop app after a restart. - OpenCode: add
{ "plugin": ["@dietrichgebert/ponytail"] }toopencode.json. As an alternative from a local copy, use{ "plugin": ["./.opencode/plugins/ponytail.mjs"] }. - Hermes Agent: run
hermes plugins install DietrichGebert/ponytail --enableand restart Hermes.

Common workflows
- To set the intensity, use
/ponytail full,/ponytail lite,/ponytail ultra, or/ponytail off; with no argument it reports the current level. - To review the current working diff for over-engineering, invoke
/ponytail-review; the result is a list of proposed removals or simplifications. - To inspect an entire repository rather than a single diff, invoke
/ponytail-audit. - To keep track of deliberate shortcuts, use
/ponytail-debt: it collects theponytail:annotations into a log./ponytail-gainshows the impact marker from the project’s own benchmarks.

In Codex, the README states that skills are invoked with @, for example @ponytail-review. In Copilot CLI the plugin’s namespace changes the examples to /ponytail:ponytail ultra and /ponytail:ponytail-review.
Essential configuration
PONYTAIL_DEFAULT_MODE: environment variable that setslite,full,ultra, orofffor new sessions.~/.config/ponytail/config.json: a persistent alternative with thedefaultModefield; on Windows it’s%APPDATA%\ponytail\config.json.PONYTAIL_SUBAGENT_MATCHER: an unanchored, case-insensitive regular expression to limit injection into subagents byagent_type.opencode.json: the entry point for the package or the local adapter in OpenCode.AGENTS.mdor the adapter’s rules file: the migration path for Cursor, Windsurf, Cline, Kiro, Copilot Chat, Aider, Zed, and other hosts without a full plugin.
Common pitfalls and fixes
- Hooks don’t fire in Claude Code or Codex: check that
nodeis available on thePATHof the non-interactive shell; the README explicitly cites Nix and nvm environments. The skills don’t depend on the hook working. - OpenCode only recognizes Ponytail inside the cloned copy: issue #97 documents this case. The current README recommends the
@dietrichgebert/ponytailpackage or an absolute path to the.mjsfile if a copy is shared across projects; a./-prefixed path resolves relative to the project’sopencode.json. - The mode doesn’t persist, or the configuration gets overwritten: there’s an open pull request, #696, to stop mode writes from overwriting other data. It’s worth keeping a backup of the configuration file when combining several tools.
- Too much context in subagents: issue #597 estimates roughly 1,300 tokens per
full-mode injection; limit the types withPONYTAIL_SUBAGENT_MATCHERor disable the mode when subagents are search-only. - Incomplete uninstall: run
node scripts/uninstall.jsbefore removing the plugin. The README explains that it clears external state and its own status-line entry, but it should not be run after the plugin’s files have already been deleted.
Integrations and migration
ponytail-mcp makes it possible to serve the rules to agents over MCP. For OpenClaw, clawhub install ponytail installs the skill; without ClawHub, the README says to copy .openclaw/skills/ponytail to ~/.openclaw/skills/. On instructions-only adapters, migration is done by copying the corresponding file, for example .cursor/rules/, .windsurf/rules/, .clinerules/, .github/copilot-instructions.md, or AGENTS.md.
The documented coexistence with JuliusBrussee/caveman is complementary according to the README: Caveman reduces the agent’s prose, while Ponytail aims to reduce the code. That is a claim by the project, not proof of universal interoperability.
How the community received it
The retrievable reception is mixed and specific:
- The Hacker News thread 48527946, submitted by mellosouls on June 14, got 98 points and 17 comments. Neywiny said they wanted to try it because their local models tended to add exactly the kind of code the skill tries to avoid. kamphey found the basic heuristics useful for speeding up simple edits and deletions. Those are individual experiences and expectations, not performance measurements.
- In the same thread, wiradikusuma objected that a senior developer weighs context: a native picker may work in one case, but another may need more. donatj argued the repository could be reduced to a short rule and much less integration code. These objections line up with the main practical risk: confusing minimalism with a lack of understanding of the product.
- In thread 48588755, a conversation about skepticism toward token-reduction tools, Zababa noted that Ponytail and similar projects didn’t use generalized benchmarks like SWE-Bench Pro and worried about silent model degradation. That’s a criticism attributed to that user; no external evaluation confirming it was found. The README does partially respond with its own agentic benchmark and acknowledges the bias in the earlier comparison.
- Issue #65, with 16 comments, asks for a comparison against SWE-Bench Pro and Terminal Bench 2.1. The open proposal #432, with 9 comments, praises the heuristic but warns that an agent could invent functions or variables just to write less; that warning belongs to the author of that proposal, not proof that Ponytail actually does it.
Searches were attempted on Reddit, X, Product Hunt, YouTube videos, and article search engines. In this run, Reddit returned HTML results with no identifiable threads, X required a session to retrieve useful content, Product Hunt offered no verifiable listing, and YouTube results didn’t allow individually validating title, channel, and view count. Therefore, no reviews, launches, or figures are attributed to those platforms. No verifiable mentions were found on Dev.to, Hashnode, podcasts, newsletters, or awesome-* lists either.
Ponytail versus other proposals
| Proposal | Verifiable overlap | Verifiable difference |
|---|---|---|
JuliusBrussee/caveman | Ponytail’s README cites it as prose control and documents joint use. | Ponytail aims to affect what code gets built; the README states that Caveman leaves the code unchanged. |
anshaneja5/scalpel | Its retrieved description presents it as a skill for agents and explicitly compares itself against Ponytail’s benchmark. | It claims to beat Ponytail’s benchmark; its methodology could not be found, so that claim isn’t an independent result. |
rtk-ai/rtk | A Hacker News discussion groups them as tools that alter agent behavior or token use. | The source found isn’t enough to assert functional equivalence; the comparison comes from a user critique, not an architectural one. |
Use cases and who this repository can help
- People reviewing agent changes in existing codebases can use the ladder to check reuse, the standard library, and native capabilities first, before opening a new abstraction or adding a dependency.
- Teams using Claude Code, Codex, Copilot CLI, OpenCode, or Hermes can turn on persistent mode and use
/ponytail-reviewas a dedicated over-engineering check before merging a diff. - Maintainers with small, repetitive tasks can use
/ponytail-auditto find accidental complexity and/ponytail-debtto log accepted shortcuts without pretending they’re final solutions. - Those working with subagents can pair the pattern with
PONYTAIL_SUBAGENT_MATCHERto decide which workers receive the rule. That’s especially relevant when the cost of repeating the instructions is visible in sessions with many subagents. - Projects with security, accessibility, validation, or hardware requirements should treat Ponytail as a review aid, not as authorization to cut controls: those areas are explicitly outside its simplification policy.
Resources
- Repository: https://github.com/DietrichGebert/ponytail
- Site and docs: https://ponytail.dev/
- Installation and portability guide: https://github.com/DietrichGebert/ponytail#install and https://github.com/DietrichGebert/ponytail/blob/main/docs/agent-portability.md
- Official skills and rules: https://github.com/DietrichGebert/ponytail/tree/main/skills and https://github.com/DietrichGebert/ponytail/blob/main/AGENTS.md
- Official MCP and benchmarks: https://github.com/DietrichGebert/ponytail/tree/main/ponytail-mcp and https://github.com/DietrichGebert/ponytail/tree/main/benchmarks
- npm package: https://www.npmjs.com/package/@dietrichgebert/ponytail
- Releases and changes: https://github.com/DietrichGebert/ponytail/releases
- Discussions and critiques: https://news.ycombinator.com/item?id=48527946, https://news.ycombinator.com/item?id=48588755, https://github.com/DietrichGebert/ponytail/issues/65, https://github.com/DietrichGebert/ponytail/issues/97
- Community: no official link to Discord or another community forum was found in the sources consulted.
Note: this article combines Ponytail’s README, AGENTS.md, its documentation files and releases, its official site, the GitHub API, the npm API, and Hacker News, all consulted on August 6, 2026. Metrics and vendor interfaces change over time.
Comments