Ponytail
Guides coding agents to reuse what already exists and write the smallest implementation that preserves safety boundaries.
- Source repo
- DietrichGebert/ponytail
- Stars
- ★ 185k
- Last updated
- 8d ago
- License
- MIT
- Primary language
- JavaScript
- FA score
- 50/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A Claude Code or Codex user adding a feature who wants the agent to check existing project code, standard-library facilities, and native browser controls before introducing a dependency.
- Not a fit if
- Users on heavy-thinking models like GPT-5.5 who care about cost and latency
- Hosts that only load instruction files and cannot install skills or hooks
- Source review
- 50/100 · Major gaps
What does this agent do, and when should you use it?
Ponytail is a ruleset and plugin for coding agents that aims to reduce unnecessary implementation, rather than merely shorten responses. Before coding, it directs an agent to consider whether the work should exist, whether the codebase already has it, and whether the standard library, native platform, or an installed dependency can handle it. The repository documents plugin or rule-file integrations for hosts including Claude Code, Codex, GitHub Copilot CLI, OpenCode, and Gemini CLI. Skill-capable hosts can expose mode switching, diff review, repository audit, and deferred-work ledger commands, while instruction-only adapters load the always-on ruleset. Its documented benchmark uses headless Claude Code sessions on a real FastAPI and React repository and scores the resulting git diff for lines of code, tokens, cost, time, and safety checks.
After the agent has read the affected code and traced the actual flow, Ponytail applies a ladder: whether the change needs to exist, existing codebase functionality, the standard library, native platform features, installed dependencies, one line, then the minimum implementation. It explicitly keeps trust-boundary validation, data-loss handling, security, and accessibility out of scope for removal. The Claude Code and Codex plugins use two small Node.js lifecycle hooks; after Codex installation, users review and trust them in /hooks, then begin a new thread. /ponytail sets lite, full, ultra, or off modes; /ponytail-review returns a delete-list for the current diff, /ponytail-audit examines the repository, /ponytail-debt gathers deferred ponytail: items, and /ponytail-gain shows the benchmark scoreboard. When active, the documented ruleset can also be injected into subagents created through the Agent tool, with PONYTAIL_SUBAGENT_MATCHER available to filter agent_type values.
- A Claude Code or Codex user adding a feature who wants the agent to check existing project code, standard-library facilities, and native browser controls before introducing a dependency.
- An engineer reviewing a current git diff who wants /ponytail-review to return a concrete delete-list for over-engineered changes.
- A maintainer of an established codebase who wants /ponytail-audit to look beyond the current diff for unnecessary implementation.
- A developer using Cursor, Windsurf, Cline, or GitHub Copilot Chat who can copy the corresponding repository rule file for always-on guidance.
- A user on a skill-capable host working through a difficult change who wants to raise the ruleset to /ponytail ultra or temporarily disable it with off.
How do you install or deploy this agent?
For Codex, ensure node is on the non-interactive shell PATH, then run:
codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytailStart codex, open /hooks to review and trust its two lifecycle hooks, and start a new thread. No additional credential requirement is documented. For instruction-only adoption, copy the matching host rule file; the repository identifies corresponding files for Cursor, Windsurf, Cline, Copilot, Kiro, and Qoder, as well as AGENTS.md where applicable.
How do you use this agent?
In a new Codex thread, invoke a skill such as @ponytail-review. Use /ponytail lite, /ponytail full, /ponytail ultra, or /ponytail off to change intensity; with no argument it reports the active level. The documented default is full, and new-session defaults can be set with PONYTAIL_DEFAULT_MODE or defaultMode in ~/.config/ponytail/config.json. To restrict ruleset injection into subagents, set PONYTAIL_SUBAGENT_MATCHER to a case-insensitive regular expression matched against agent_type.
What are this agent's strengths and limitations?
- Uses a concrete decision ladder that prioritizes skipping work, reuse, standard-library facilities, and native platform features instead of simply asking for terse code.
- Offers both always-on rule files and plugin/skill workflows across multiple documented hosts, including Claude Code, Codex, Copilot CLI, OpenCode, and Gemini CLI.
- Provides actionable engineering commands: a current-diff delete-list, whole-repository audit, deferred-shortcut ledger, and benchmark scoreboard.
- Its agentic benchmark is based on a real FastAPI and React repository and git diffs, and the README explicitly describes the limitation of its older single-shot benchmark.
- Always-on activation for the Claude Code and Codex plugins depends on two Node.js lifecycle hooks, and node must be on the non-interactive shell PATH; otherwise the skills work but automatic activation stays quiet.
- Host capabilities vary: some documented integrations load only instructions, while mode switching and commands require a skill-capable host.
- The reported measurements come from 12 feature tasks with Haiku 4.5, n=4, in one FastAPI and React repository, so they are not evidence of the same outcome across all models or codebases.
- The README notes that models which spend substantial thinking tokens deliberating the ladder, including GPT-5.5, can see cost and latency move in the opposite direction.
How does this agent compare with similar options?
Ponytail distinguishes itself from caveman: the README describes caveman as shrinking how the agent speaks while leaving code byte-for-byte unchanged, whereas Ponytail targets the amount of code built. Its benchmark also includes a “YAGNI + one-liners” prompt; the README reports 95% in a separate adversarial safety tier for that arm, versus 100% for Ponytail, the no-skill baseline, and caveman.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Ponytail This agent | 50 · Major gaps | Agent plugin / skillFree + model costs | ★ 185k | 8d ago | JavaScript | Codex · Claude Code |
| cc-tree Radial Tree Explorer | 67 · Some gaps | — | ★ 84 | 1d ago | Python | Claude Code |
| Elephant-Goldfish Model (EGM) | 75 · Good | Agent plugin / skillFree + model costs | ★ 12k | today | Python | Codex · Claude Code |
| FableCodex | 82 · Good | Agent plugin / skillFree + model costs | ★ 439 | 3mo ago | Python | Codex |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence: Plugin injects instructions via lifecycle hooks, requiring user authorization (e.g., Codex requires reviewing hooks); config file and env vars control modes; no sensitive data handling or external network requests observed; few dependencies but no dependency audit; uninstall script and rollback mechanism (e.g., plugin uninstall); source attribution clear (author and repo). Deductions: least privilege not explicitly stated, user confirmation only partial, data flow transparency limited, sensitive data handling not mentioned, dependency security not audited, external effects not explicit, rollback only partial, source attribution clear but unverified.
Evidence: Tests cover edge cases like missing events and systemPrompt; dependencies include Node.js and Python but version ranges not specified; failure messages appear in tests but not systematic. Deductions: dependency availability not fully ensured, failure messages not comprehensive.
Evidence: Supports multiple agents (Claude Code, Codex, etc.) with clear install instructions and commands; capability boundaries defined via modes (lite/full/ultra) and commands (review, audit, etc.); trigger precision via skill descriptions and commands; environment fit considers different agent configs. Deductions: some adapters are instruction-only, limited functionality.
Evidence: Clear directory structure and docs; detailed install notes; naming stable (commands and skills consistent); examples and FAQ present; known limitations mentioned in README; MIT license explicit; version number exists but no changelog; maintenance responsibility by author but not explicit. Deductions: versioning changelog missing, maintenance responsibility not explicit.
Evidence: Output usability via commands and skills; marginal value in reducing code; cost-benefit claimed via benchmarks. Deductions: benchmarks not independently verified, cost-benefit data may be overstated.
Evidence: README references benchmark reports and issues; but raw data or independent verification not provided; facts and inferences mixed. Deductions: claim traceability insufficient, cross-source corroboration lacking, fact-inference separation unclear.
- Benchmark claims of code reduction and cost savings are not independently verified and may be overstated.
- Dependency security not audited; recommend checking for vulnerabilities.
- Plugin injects instructions via lifecycle hooks; ensure user authorization and review.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
This one cleans up the band. On Team, Enterprise and managed machines the warning on your first prompt is gone, and the band shows your model and session name again. In VS Code it stays on one line, other plugins' commands no longer print under ponytail's name, and the noisy "duplicate?" hint is gone. What's Changed * fix(band): show the level again after /clear and /resume by @timofeevAV in https://github.com/DietrichGebert/ponytail/pull/1161 …View on GitHub ↗ -
Release notes excerpt
Ponytail 5.3.2 brings your old sessions to the board. /ponytail band import reads your past Claude Code sessions once and adds them with their cost, agent time and tokens, so you can compare them with today's. The board also shows which model each session used. What's Changed * feat(band): past sessions and the model on the board by @DietrichGebert in https://github.com/DietrichGebert/ponytail/pull/1152 * chore: release v5.3.2 by @DietrichGebert in https://github.com/DietrichGebert/ponytail/pull/1153 …View on GitHub ↗ -
Release notes excerpt
Ponytail 5.3.1 fixes the band from 5.3. Other mods above the Claude Code prompt now show below the band instead of disappearing, and on Windows the band finds its files without HOME and writes the task ledger and board without mkdir. Thanks to @AllDmeat and @mohofo7 for the fixes, and to @tomkor and @1410822048 for the reports. What's Changed * fix(band): stack other mods' bands below ours instead of replacing them by @AllDmeat in https://github.com/DietrichGebert/ponytail/pull/1146 …View on GitHub ↗