Ponytail plugin

A plugin and skill that makes the agent write minimal code: reuse, stdlib and native platform features come first

  • 179,572 ★ on the repository
  • Last commit
  • MIT
Plugin

Extended access

Why this level

  • Plugins install Node.js lifecycle hooks
  • May add a statusLine entry to ~/.claude/settings.json
All reasons and checks

dietrichgebert/ponytail

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add plugins/ponytail

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Plugins install Node.js lifecycle hooks
  • May add a statusLine entry to ~/.claude/settings.json

This is third-party code. Review the repository files before installing.

What it does

Before writing code the agent climbs a ladder of questions: does this need to exist, is it already in the codebase, the standard library, the platform or an installed dependency, will one line do. Only then does it write the minimum that works. Trust-boundary validation, data-loss handling, security and accessibility are never cut. Modes lite, full and ultra switch via /ponytail, and there are skills for review, audit and tech debt.

Who it is for. Developers annoyed when the agent pulls in extra dependencies and wrappers where a native element would do.

Good fit when

  • The agent regularly overbuilds and adds libraries
  • You want smaller diffs and cheaper sessions
  • You need a code review focused on excess

Not a fit when

  • The task is not about code: the skill targets coding only
  • You use a reasoning model that spends thinking tokens on the rules: on GPT-5.5 costs went up

Example request

Add a date picker to the booking form, /ponytail full

Limitations

Plugin hooks for Claude Code, Codex and Cursor need node on PATH. The published numbers come from Haiku 4.5 on 12 tasks: about 54% less code on average, near zero where code is already minimal. In Cursor subagents run without the rules.

How to disable. Turn it off with /ponytail off. To uninstall, first run node scripts/uninstall.js, then /plugin remove ponytail in Claude Code or codex plugin remove ponytail.

FAQ

How do I set the default mode?

With PONYTAIL_DEFAULT_MODE set to lite, full, ultra or off, or a defaultMode field in ~/.config/ponytail/config.json.

Will code safety suffer?

Per the README validation, error handling, security and accessibility are never cut, and ponytail scored 100% on the safety tier.

How is Ponytail different from other coding plugins?

Ponytail changes how the agent thinks and adds no commands or agents: before writing code the agent checks whether it is needed, whether the codebase, stdlib or a dependency already solves it. Only a minimal change is written.

How do I install Ponytail for OpenCode and other agents?

For Claude Code run /plugin marketplace add DietrichGebert/ponytail and /plugin install ponytail@ponytail. It also works with Codex, Copilot, OpenCode, Gemini CLI, Cursor, Windsurf, Cline and Amp; steps per agent are in the install block.

Discussion

No questions or reviews yet.

Plugins

A Claude Code and Codex plugin with skills for code research, tests, refactoring and independent review of finished changes

PluginExtended access450Repository stars
Editors’ pick

A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review

PluginExtended access307.8KRepository stars

A plugin marketplace and installer for the full dev loop: task selection, review, cleanup, PRs and releases

PluginBroad access1KRepository stars

MiniCode is a compact TypeScript terminal coding agent like Claude Code: tool loop, TUI, skills, MCP and sub-agents, built for study and tinkering

CLIBroad access1.2KRepository stars

Nine review skills for coding agents: dead code, hallucinations, dependency security, resilience and contract drift

PluginExtended access14Repository stars

A mirror of Lauren Tan's pstack set from Cursor: over 50 skills, the poteto-mode with 23 playbooks and 24 principles for strict agent work on code

SkillBroad access3.1KRepository stars

README in short

The README frames the idea of a lazy senior developer and gives a benchmark on a real FastAPI and React repo, correcting earlier inflated numbers. Installation is covered for Claude Code, Codex, Copilot CLI, OpenCode, Gemini CLI, Antigravity, Hermes, Devin, Cursor and more, with rule files for other agents. Settings, subagent injection and full removal are documented. MIT license.

README badge

Original SKILL.md

---
name: ponytail
description: >
  Forces the laziest solution that actually works, simplest, shortest, most
  minimal. Channels a senior dev who has seen everything: question whether the
  task needs to exist at all (YAGNI), reach for the standard library before
  custom code, native platform features before dependencies, one line before
  fifty. Supports intensity levels: lite, full (default), ultra. Use on ANY
  coding task: writing, adding, refactoring, fixing, reviewing, or designing
  code, and choosing libraries or dependencies. Also use whenever the user
  says "ponytail", "be lazy", "lazy mode", "simplest solution", "minimal
  solution", "yagni", "do less", or "shortest path", or complains about
  over-engineering, bloat, boilerplate, or unnecessary dependencies. Do NOT
  use for non-coding requests (general knowledge, prose, translation,
  summaries, recipes).
argument-hint: "[lite|full|ultra]"
license: MIT
---

# Ponytail

You are a lazy senior developer. Lazy means efficient, not careless. You have
seen every over-engineered codebase and been paged at 3am for one. The best
code is the code never written.

## Persistence

ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if
unsure. Off only: "stop ponytail" / "normal mode". Default: **full**.
Switch: `/ponytail lite|full|ultra`.

## The ladder

Stop at the first rung that holds:

1. **Does this need to exist at all?** Speculative need = skip it, say so in one line. (YAGNI)
2. **Already in this codebase?** A helper, util, type, or pattern that already lives here → reuse it. Look before you write; re-implementing what's a few files over is the most common slop.
3. **Stdlib does it?** Use it.
4. **Native platform feature covers it?** `<input type="date">` over a picker lib, CSS over JS, DB constraint over app code.
5. **Already-installed dependency solves it?** Use it. Never add a new one for what a few lines can do.
6. **Can it be one line?** One line.
7. **Only then:** the minimum code that works.

The ladder is a reflex, not a research project — but it runs *after* you
understand the problem, not instead of it. Read the task and the code it
touches first, trace the real flow end to end, then climb. Two rungs work →
take the higher one and move on. The first lazy solution that works is the
right one — once you actually know what the change has to touch.

**Bug fix = root cause, not symptom.** A report names a symptom. Before you
edit, grep every caller of the function you're about to touch. The lazy fix IS
the root-cause fix: one guard in the shared function is a smaller diff than a
guard in every caller — and patching only the path the ticket names leaves
every sibling caller still broken. Fix it once, where all callers route through.

## Rules

- No unrequested abstractions: no interface with one implementation, no factory for one product, no config for a value that never changes.
- No boilerplate, no scaffolding "for later", later can scaffold for itself.
- Deletion over addition. Boring over clever, clever is what someone decodes at 3am.

Report a problem

Foxx AIPonytail
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.