SSD Nodes Learn 8GB de RAM — $66/año
Guías Matt ConnorPor Matt Connor · Actualizado 2026-08-02

Ponytail: reglas para que tu agente escriba menos código

Ponytail impone el cambio mínimo válido a tu agente de código. Revisa qué incluye, sus benchmarks y cómo copiar hoy la regla en tus instrucciones.

Qué es Ponytail

Ponytail es un conjunto de reglas que hace que un agente de codificación con IA escriba menos código. El proyecto se describe en una línea: "Hace que tu agente de IA piense como el desarrollador sénior más perezoso de la sala. El mejor código es el código que nunca escribiste". Tiene licencia MIT. No tiene un tiempo de ejecución propio y no ejecuta nada. Es texto que se incorpora a las instrucciones del agente. Se distribuye como una skill para los hosts que cargan skills y como archivos de reglas simples para los hosts que no las cargan.

El repositorio es DietrichGebert/ponytail. Se creó el 12 de junio de 2026 y superó las 90,000 estrellas el 1 de agosto de 2026. La versión etiquetada más reciente al 1 de agosto de 2026 es v4.8.4, publicada el 29 de junio de 2026. La página de releases muestra diez etiquetas solo entre el 14 y el 29 de junio. Un proyecto que avanza a ese ritmo habrá cambiado cuando lo leas. Fija una etiqueta antes de construir algo sobre él.

La idea antes de la herramienta: detenerse en el primer nivel válido

El núcleo de Ponytail es una cadena de decisiones. El agente la recorre antes de escribir nada y se detiene en el primer nivel que sea válido.

  1. ¿Es necesario que esto exista? Esto es YAGNI (no vas a necesitarlo). Si la respuesta es no, omítelo.
  2. ¿Ya existe en este código base? Reutiliza el helper o el patrón que ya existe.
  3. ¿La biblioteca estándar lo hace? Úsala.
  4. ¿Una función nativa de la plataforma lo cubre? Úsala.
  5. ¿Una dependencia ya instalada resuelve el problema? Úsala.
  6. ¿Puede ser una sola línea? Hazlo en una sola línea.
  7. Solo entonces, escribe el código mínimo que funcione.

El orden es lo importante, no un nivel concreto. Si se pide a un agente un selector de fechas, escribirá un selector de fechas, porque eso es lo que se le indicó. La cadena le obliga a comprobar primero el nivel 4, y el nivel 4 indica que el navegador ya proporciona <input type="date">. Las notas de referencia del proyecto describen exactamente este caso: un selector de fechas que tenía 404 líneas sin esta regla pasó a tener 23 líneas con ella, porque el agente eligió el campo de entrada nativo en lugar de crear un componente. Un selector de colores pasó de 287 líneas a 23 por el mismo motivo.

Ser perezoso aquí no significa ser descuidado, y el conjunto de reglas lo indica directamente. Su lista de aspectos en los que "nunca hay que ser perezoso" incluye comprender el problema antes de decidir, validar las entradas en los límites de confianza, gestionar los errores para evitar la pérdida de datos, la seguridad, la accesibilidad y todo lo solicitado explícitamente. También pide una comprobación pequeña y ejecutable para cada parte de lógica no trivial. La regla reduce la invención. No reduce la corrección.

Qué contiene realmente el repositorio

  • AGENTS.md, el conjunto de reglas siempre activo, que concentra toda la idea en un archivo que puede leer en cinco minutos.
  • skills/ponytail/SKILL.md, la definición de la habilidad, con una indicación de argumento de lite, full o ultra.
  • Archivos de reglas en directorios específicos del editor, como .cursor/rules/ y .windsurf/rules/, para hosts que leen reglas pero no cargan habilidades.
  • hooks/, benchmarks/, examples/ y scripts/.

El argumento de intensidad cambia la fuerza con la que se aplica la regla. lite genera lo que solicitó y menciona una opción más permisiva en una línea. full es el valor predeterminado y aplica la progresión. ultra es la configuración extremista de YAGNI: prefiere eliminar antes que añadir y cuestiona incluso el requisito.

Los hosts compatibles con habilidades también reciben comandos slash. /ponytail establece el nivel, /ponytail-review comprueba si un diff presenta sobreingeniería, /ponytail-audit comprueba un repositorio completo, /ponytail-debt recopila los atajos que aplazó y /ponytail-gain muestra la tabla de resultados de referencia. Los hosts que solo leen archivos de reglas reciben el conjunto de reglas sin comandos.

Para leer el código fuente antes de confiar en él, clone el tag en lugar de la rama:

git clone --depth 1 --branch v4.8.4 https://github.com/DietrichGebert/ponytail.git

En Claude Code, el proyecto documenta una instalación mediante plugin. Estas dos líneas corresponden a la documentación del 1 de agosto de 2026:

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

La ruta del plugin sigue la rama predeterminada en lugar de un tag. Por eso, las instrucciones que dirigen al agente pueden cambiar entre sesiones. Ese es el coste de aceptar la comodidad de un comando de actualización.

Por qué un agente poco activo cuesta menos en un VPS

El diff que escribe un agente no sale de la conversación. En el turno siguiente, el modelo vuelve a leerlo como contexto, junto con cada archivo que abrió para producirlo. Por tanto, un cambio de 500 líneas consume recursos en todos los turnos posteriores de la sesión, no solo en el turno que lo produjo. Por eso una refactorización descontrolada hace que el agente parezca más lento y menos preciso a medida que avanza la sesión: la ventana se llena con la propia salida del agente y queda menos espacio para el código real. Controlar esto es el objetivo de gestionar la ventana de contexto de un agente de programación.

Los tokens se facturan tanto al introducirlos como al generarlos. Por eso un diff que tiene la mitad de tamaño cuesta menos dos veces: una cuando se escribe y otra en cada turno que lo vuelve a leer. Si supervisa la factura en una configuración autohospedada, el archivo de instrucciones es un mecanismo que no cuesta nada activar. Controlar cuánto le cuesta un agente de IA empieza por el volumen de salida, y cómo gasta sus tokens un agente de programación explica por qué volver a leer el contenido importa más de lo que suele esperarse.

Una persona todavía tiene que leer el diff. Un cambio de 400 líneas que debería haber tenido 20 líneas consume la atención de quien revisa, y la atención es el recurso que se agota primero. Nadie revisa el cuarto diff largo del día con el mismo cuidado que el primero. Por tanto, construir de más no solo desperdicia tiempo. También reduce de forma silenciosa la calidad de la revisión que debe detectar los errores.

En un servidor, las consecuencias son distintas porque el agente suele ejecutarse sin supervisión. Un agente que trabaja en una sesión de tmux o mediante un temporizador tiene horas para basarse en una mala decisión antes de que usted la vea. Ese es el riesgo práctico de ejecutar un agente de programación en un VPS, y por eso quienes practican ingeniería de bucles dedican tanta atención a las instrucciones permanentes en lugar de centrarse en prompts individuales. Una regla del archivo que siempre está activo se aplica al turno 200. Una regla que escribió en el chat se aplica al turno 3.

Las dependencias nuevas son el otro coste silencioso. El nivel 5 indica que se debe usar lo que ya está instalado. Cada paquete que un agente añade por iniciativa propia es algo que tendrá que actualizar más adelante y que terminará incluido en cada imagen de contenedor que construya a partir de ese repositorio.

Lo que indican las cifras del propio benchmark de Ponytail

El proyecto publica dos conjuntos de resultados que difieren ampliamente. Ambos son cifras publicadas por el propio proyecto. Ninguno es una prueba independiente.

ChartPonytail's published reduction vs baseline, percent, Haiku
The data behind this chart
[
  {
    "label": "Lines of code",
    "single_shot_pct": 93,
    "agentic_pct": 54
  },
  {
    "label": "Cost per run",
    "single_shot_pct": 63,
    "agentic_pct": 20
  },
  {
    "label": "Wall clock time",
    "single_shot_pct": 74,
    "agentic_pct": 27
  }
]

La columna de respuesta única procede de un modelo sin más contexto que responde a un conjunto pequeño de prompts, con y sin la regla, usando las medianas de ejecuciones repetidas fechadas el 13 y el 17 de junio de 2026. La columna agéntica procede de una sesión sin interfaz de Claude Code que edita full-stack-fastapi-template de tiangolo, un repositorio real de FastAPI y React, a través de doce tickets de funcionalidades, con cuatro ejecuciones en cada uno usando Haiku 4.5. La evaluación se basa en el diff de git resultante.

Lee la segunda columna. El resultado agéntico produce 54 por ciento menos líneas de código, cuesta 20 por ciento menos y tarda 27 por ciento menos tiempo de ejecución, frente a 93 por ciento y 74 por ciento para las mismas medidas en la configuración de respuesta única. El README explica claramente el motivo: la línea base de respuesta única es un modelo sin más contexto que «responde con varias opciones y comentarios», algo fácil de superar. Al comparar con un agente real que realiza trabajo real, la ventaja se reduce. También sigue siendo real, y ese es el dato más útil.

Hay una salvedad del propio proyecto, y es la que determina si esto te resulta útil. El ahorro es mayor cuando existe una verdadera tendencia a sobredimensionar la solución y casi nulo en el código que ya era mínimo. Doce tickets en un repositorio de Python y TypeScript no permiten predecir el comportamiento en tu repositorio. Si esta cifra es importante para ti, ejecuta la comparación con tus propios tickets, con y sin la regla, y cuenta las líneas tú mismo.

El patrón que puedes copiar hoy sin instalar nada

La escalera es texto, por lo que no necesitas el complemento para usar la idea. Pega un bloque como este en el archivo de instrucciones que tu agente ya lee, ya sea AGENTS.md, CLAUDE.md o el archivo de reglas de tu editor.

## Before you write code

Climb this list in order. Stop at the first line that applies.

1. Does this need to exist? If not, say so and stop.
2. Does this repo already have it? Reuse the helper.
3. Does the standard library do it? Use it.
4. Does the platform do it natively? Use it.
5. Does an installed dependency do it? Use it.
6. Can it be one line? Write one line.
7. Otherwise write the minimum that works.

Never take the shortcut on: reading the code before changing it, validating
input that crosses a trust boundary, error handling that would otherwise lose
data, security, accessibility, or anything I asked for by name.

Do not add an abstraction I did not ask for. Do not add a dependency without
saying why in one line. Prefer deleting code to adding it.

Mark a deliberate simplification with a comment naming its ceiling and the
upgrade path.

Esa última regla merece considerarse por separado. La convención de Ponytail consiste en un comentario etiquetado con el nombre de la herramienta:

# ponytail: global lock, per-account locks if throughput matters

El comentario ocupa dos líneas de trabajo y resuelve una cuestión que, de otro modo, consumiría un ciclo de revisión. Indica al siguiente lector que la versión simple fue una decisión y especifica la condición en la que esa decisión deja de ser válida. Sin él, un revisor no puede distinguir entre un atajo deliberado y algo que el agente olvidó, por lo que tiene que preguntar.

La ubicación del bloque es tan importante como su contenido. Un archivo que el agente carga en cada ejecución condiciona todas las ejecuciones, incluidas las que no estás supervisando. Esa diferencia es el tema de escribir un AGENTS.md que tu agente realmente siga, y es la razón por la que este patrón debe estar en un archivo versionado en lugar de en el historial de tu shell.

Cuando la regla deja de ser adecuada

La escala está ajustada para trabajar en una base de código existente, donde normalmente es posible reutilizar código y hacerlo suele ser correcto. Se adapta mal a un proyecto nuevo, porque el nivel 2 no tiene nada que reutilizar y el nivel 5 no tiene nada instalado. Por eso, el agente llega al nivel 7 en todos los casos. También se adapta mal cuando realmente se necesita la abstracción. Si está a punto de añadir el cuarto usuario del mismo bloque copiado, la opción de «diff más corto» le proporciona una quinta copia.

El nivel ultra cuestionará sus requisitos. Para eso existe el nivel, y supone un coste real cuando ya ha tomado la decisión y quiere que se implemente el trabajo. Use full para el trabajo habitual y recurra a ultra cuando sospeche que el problema está en la solicitud de funcionalidad.

Ningún bloque de instrucciones evita interpretar mal el problema. El primer punto del propio conjunto de reglas es comprender el código antes de decidir, y esa es la parte costosa que el texto no puede hacer por usted. Un diff mínimo en la función incorrecta sigue siendo una corrección incorrecta. Además, ahora es una corrección incorrecta pequeña y fácil de aprobar.

El resumen sincero es que Ponytail es un prompt cuidadosamente redactado, bien distribuido y con números asociados. Nada de esto requiere el plugin. Lo que aporta el proyecto es que alguien redactó correctamente la lista, la probó en un repositorio real y publicó el método junto con el resultado.

FAQ

¿Ponytail funciona con agentes distintos de Claude Code?

Sí. Se distribuye como una skill para hosts que cargan skills, una lista que incluye Claude Code, Codex, OpenCode, Gemini y varios otros indicados en el README. Los editores que leen archivos de reglas, pero no cargan skills, como Cursor, Windsurf, Cline y Copilot, toman el conjunto de reglas siempre activo del directorio de reglas correspondiente y no reciben comandos slash. El texto es el mismo en ambos casos. La diferencia real es si el host mantiene ese texto en el contexto en cada turno o solo cuando se activa una skill.

¿Un agente perezoso omitirá las pruebas, la validación o la seguridad?

No. El conjunto de reglas lo indica directamente. Su lista de aspectos en los que «nunca debe ser perezoso» incluye la validación de entradas en los límites de confianza, el manejo de errores que evita la pérdida de datos, la seguridad y la accesibilidad. También solicita una comprobación pequeña y ejecutable para cada parte de lógica no trivial. La regla elimina la estructura inventada: abstracciones que nadie solicitó y dependencias que nadie necesitaba. Si el agente empieza a omitir pruebas después de instalarla, la causa es otra instrucción de tu propia configuración que tiene prioridad sobre esta. Lee el último archivo que carga el agente.

¿Son fiables las cifras publicadas de velocidad y coste?

Son las mediciones del propio proyecto, publicadas junto con su método, y deben interpretarse de ese modo. Las cifras de una sola ejecución comparan con un modelo básico que responde con opciones y comentarios. El propio README indica que es una referencia débil. Las cifras agénticas proceden de una sesión sin interfaz de Claude Code sobre un repositorio de FastAPI y React, con doce tickets y cuatro ejecuciones por ticket, usando Haiku 4.5. Son cifras válidas para esa configuración. No son una previsión para tu base de código, porque el proyecto también indica que el ahorro se aproxima a cero en código que ya era mínimo.

¿Necesito instalar algo para obtener el beneficio?

No. La escalera consiste en texto, y pegar un bloque equivalente en el archivo de instrucciones que tu agente ya lee proporciona la mayor parte del efecto. El plugin ofrece el texto mantenido, los niveles de intensidad, los comandos de revisión y una ruta de actualización. Probar primero el bloque copiado es la respuesta de rung 1 a la pregunta de si la instalación debe existir.

¿Cómo impido que un agente desatendido construya demasiado durante la noche?

Coloca la regla en el archivo de instrucciones siempre activo en lugar de incluirla en un mensaje de chat. Así se aplicará en el turno 200 de una ejecución larga y no solo en el turno 3. Después, limita el daño por separado: proporciona al agente un checkout que pueda estropear en lugar de tu única copia y exige una revisión humana del diff antes de fusionar cualquier cambio. Una regla de diff mínimo reduce la cantidad que debes leer. No decide qué se incorpora, ni debe hacerlo.