SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor · Actualizado 2026-08-25

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

Descubre cómo Ponytail hace que un agente elija el cambio mínimo, qué incluyen sus reglas, qué muestran sus benchmarks y cómo copiar la idea hoy.

Qué es Ponytail

Ponytail es un conjunto de reglas que hace que un agente de programació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 incluye un entorno de ejecución propio y no ejecuta nada. Es texto que se incorpora a las instrucciones del agente, empaquetado 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 del 1 de agosto de 2026 es v4.8.4, publicada el 29 de junio de 2026, y la página de releases muestra diez tags entre el 14 y el 29 de junio. Un proyecto que avanza a ese ritmo habrá cambiado cuando leas esto, así que fija un tag antes de construir nada sobre él.

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

El núcleo de Ponytail es una escala 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 lo vas a necesitar). Si la respuesta es no, omítelo.
  2. ¿Ya existe en este código? Reutiliza el helper o el patrón que ya está presente.
  3. ¿La biblioteca estándar lo hace? Úsala.
  4. ¿Una función nativa de la plataforma lo cubre? Úsala.
  5. ¿Una dependencia ya instalada lo resuelve? Úsala.
  6. ¿Puede ser una sola línea? Hazlo en una sola línea.
  7. Sólo entonces, escribe el código mínimo que funcione.

El orden es lo que hace el trabajo, 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 escala le obliga a comprobar primero el nivel 4, y el nivel 4 indica que el navegador ya tiene <input type="date">. Las notas de referencia del proyecto documentan exactamente este caso: un selector de fechas que ocupaba 404 líneas sin esta regla pasó a ocupar 23 líneas con ella, porque el agente recurrió al input nativo en lugar de crear un componente. Un selector de colores pasó de 287 líneas a 23 por el mismo motivo. El nivel 2 es el que falla silenciosamente, porque un agente que no puede ver el helper que ya existe escribirá tranquilamente un segundo, y un mapa consultable de tu código está pensado para cerrar esa brecha.

Aquí, ser perezoso 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 entender el problema antes de decidir, validar las entradas en los límites de confianza, gestionar los errores para evitar la pérdida de datos, y ocuparse de la seguridad, la accesibilidad y todo lo que se haya solicitado expresamente. También pide una comprobación pequeña y ejecutable por cada parte de lógica no trivial. La regla reduce la invención. No reduce la corrección.

Lo que incluye realmente el repositorio

  • AGENTS.md, el conjunto de reglas permanente, que resume toda la idea en un solo archivo que puede leer en cinco minutos.
  • skills/ponytail/SKILL.md, la definición de la skill, con una sugerencia 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 skills.
  • hooks/, benchmarks/, examples/ y scripts/.

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

Los hosts compatibles con skills también obtienen 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 del benchmark. Los hosts que sólo 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 en su lugar una instalación mediante plugin, y 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 tanto, las instrucciones que guían al agente pueden cambiar entre sesiones sin que usted lo controle. 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 siguiente turno, el modelo vuelve a leerlo como contexto, junto con cada archivo que abrió para generarlo. Por tanto, un cambio de 500 líneas afecta a todos los turnos posteriores de la sesión, no sólo al turno que lo generó. 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 salida del propio agente y queda menos espacio para el código real. Gestionar la ventana de contexto de un agente de programación trata precisamente de mantener esto bajo control.

Los tokens se facturan tanto al introducirlos como al generarlos. Por eso un diff que ocupa la mitad cuesta menos dos veces: una cuando se escribe y otra en cada turno que lo vuelve a leer. Que ese ahorro aparezca o no en la factura depende de cómo pague el servicio, porque una suscripción Pro o Max plana absorbe los tokens adicionales, mientras que la facturación de la API por token cobra cada uno de ellos. Si controla el coste en una instalación autoalojada, el archivo de instrucciones es una palanca que no cuesta nada aplicar. 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 leerlos 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 más de lo necesario no sólo 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 puede pasar horas desarrollando una decisión incorrecta 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 sólo en los prompts individuales. Una regla del archivo que se carga siempre se aplica al turno 200. Una regla que escribió en el chat se aplica al turno 3. También se aplica a la segunda sesión que inicie en el mismo equipo, porque esa sesión lee el archivo confirmado, pero no hereda nada de lo que escribió en la primera, incluso cuando las dos sesiones pueden enviarse mensajes.

Las dependencias nuevas son el otro coste silencioso. El nivel 5 indica que 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 desde ese repositorio.

Qué dicen las propias cifras de referencia de Ponytail

El proyecto publica dos conjuntos de resultados y difieren mucho entre sí. Ambos son cifras publicadas por el propio proyecto. Ninguna procede de 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 una sola respuesta procede de un modelo básico que responde a un conjunto pequeño de prompts con y sin la regla. Son 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 modifica full-stack-fastapi-template de tiangolo, un repositorio real de FastAPI y React, mediante doce tickets de funcionalidades, con cuatro ejecuciones por ticket en Haiku 4.5. La evaluación se basa en el git diff resultante.

Consulte la segunda columna. El resultado agéntico usa 54 por ciento menos líneas de código, cuesta 20 por ciento menos y tarda 27 por ciento menos tiempo de reloj, frente a 93 por ciento y 74 por ciento para las mismas medidas en la configuración de una sola respuesta. El README explica claramente el motivo: la referencia de una sola respuesta es un modelo básico que «responde con varias opciones y comentarios», algo fácil de superar. Cuando se compara con un agente real que realiza trabajo real, la mejora se reduce. También sigue siendo real, y ese es el dato más útil.

Hay una salvedad que reconoce el propio proyecto, y es la que determina si esto le resulta útil. El ahorro es mayor cuando existe una tendencia real a sobredimensionar la solución, y se aproxima a cero en el código que ya era mínimo. Doce tickets en un único repositorio de Python y TypeScript no permiten predecir el comportamiento en su repositorio. Si esta cifra es importante para usted, ejecute la comparación con sus propios tickets, con la regla y sin ella, y cuente las líneas usted mismo.

El patrón que puedes copiar hoy sin instalar nada

La escalera es texto, así que no necesitas el plugin 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 analizarse 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 requiere dos líneas de trabajo y resuelve una cuestión que, de otro modo, costaría una ronda de revisión. Indica al siguiente lector que la versión sencilla fue una decisión y especifica la condición bajo la que esa decisión deja de ser válida. Sin él, un revisor no puede distinguir una simplificación deliberada de algo que el agente olvidó, por lo que tiene que preguntar.

Dónde colocas el bloque importa tanto como lo que dice. Un archivo que el agente carga en cada ejecución influye en todas ellas, incluidas las que no supervisas. 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. En un monorepo debe estar en más de un archivo versionado, porque un AGENTS.md por paquete mantiene breves las reglas de cada directorio, en lugar de obligar al agente a leer las convenciones de todo el árbol en cada ejecución. La ubicación no es una garantía, sin embargo, y conviene saber por qué un agente pasa por alto una regla que ya ha cargado antes de concluir que la escalera necesita una redacción más estricta.

Cuando la regla deja de ser adecuada

La escalera está ajustada para trabajar en una base de código existente, donde normalmente es posible reutilizar componentes 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, así que el agente llega siempre al nivel 7. También se adapta mal cuando realmente se necesita una abstracción. Si está a punto de añadir el cuarto uso del mismo bloque copiado, la opción de «diff más corto» le entrega una quinta copia.

El nivel ultra pondrá en duda sus requisitos. Para eso existe ese 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 es la propia solicitud de funcionalidad.

Ningún bloque de instrucciones evita interpretar mal el problema. El primer elemento del propio conjunto de reglas consiste en entender 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 equivocada sigue siendo una corrección incorrecta, y ahora es una corrección incorrecta pequeña que resulta fácil de aprobar.

El resumen honesto 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, entre ellos Claude Code, Codex, OpenCode, Gemini y varios más que se indican en el README. Los editores que leen archivos de reglas pero no cargan skills, como Cursor, Windsurf, Cline y Copilot, toman el ruleset 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 sólo cuando se activa una skill.

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

No. El ruleset lo indica directamente. Su lista de aspectos sobre 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 exige una comprobación pequeña y ejecutable para cada pieza 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 instalarlo, la causa es otra instrucción de su propia configuración que tiene mayor prioridad que esta. Lea el archivo que el agente carga en último lugar.

¿Son fiables las cifras publicadas de velocidad y coste?

Son mediciones del propio proyecto, publicadas junto con su método, y deben interpretarse como tales. Las cifras de una sola ejecución comparan el resultado 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 de Claude Code sin interfaz en un repositorio con 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 su 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.

¿Tengo que instalar algo para obtener el beneficio?

No. La ladder es texto. Pegar un bloque equivalente en el archivo de instrucciones que su 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 vía 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 evito que un agente sin supervisión construya demasiado durante la noche?

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