Como o Ponytail decide não escrever código? A escada de 7 perguntas explicada

O Ponytail é uma Agent Skill open source de minimalismo, criada e mantida por Dietrich Gebert no repositório DietrichGebert/ponytail, que faz o agente pensar como o dev sênior mais preguiçoso da sala. Antes de escrever a primeira linha, ele sobe uma escada de 7 perguntas (YAGNI, código que já existe no projeto, stdlib, recurso nativo da plataforma, dependência instalada, cabe em uma linha, o mínimo que funciona) e para no primeiro degrau que resolve a tarefa. Instalar o Ponytail no Claude Code leva dois comandos de plugin, e o benchmark oficial aponta cerca de 54% menos código em média
Fala aí, beleza? Tu pede uma função nova pro agente e ele te responde que aquilo não precisa existir
Parece má vontade, mas não é
Esse comportamento tem nome: Ponytail, um conjunto de regras de minimalismo open source que tu pluga no agente (no Claude Code ele entra como Agent Skill, e os outros agentes têm o caminho de instalação deles). A recusa não é preguiça aleatória, é uma escada de 7 perguntas que roda ANTES da primeira linha de código, e ela para no primeiro degrau que já resolve a tarefa
Bora entender o critério por trás das respostas mais curtas?
O que é o Ponytail e de onde vem essa escada
O Ponytail é um conjunto de regras de minimalismo para agentes de IA, distribuído como Agent Skill no Claude Code e com caminho próprio de instalação em Codex, Copilot CLI, Gemini e Grok, além de um pacote npm
A ideia é simples e meio provocativa: fazer o agente pensar como o desenvolvedor sênior mais preguiçoso da sala (e isso é bom!). O lema do projeto resume tudo, o melhor código é o que você nunca escreveu
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 48min
Ele vive no repositório DietrichGebert/ponytail, sob licença MIT
E onde moram as regras? No arquivo skills/ponytail/SKILL.md, dentro do próprio repo. É lá que a escada de decisão está descrita, degrau por degrau
Se você já viu o que uma coleção de skills faz com o comportamento do agente, o conceito é o mesmo que rola no Superpowers do Claude Code: não é um modelo diferente, é instrução diferente chegando no mesmo modelo
Um ponto que muita gente entende errado, então vou parar aqui pra deixar claro
A escada roda DEPOIS que o agente entende o problema, não no lugar de entender o problema. A regra é explícita nisso. Primeiro compreensão da tarefa, depois a decisão de minimalismo… a ordem importa MUITO
Os 7 degraus, um a um: como o agente decide em cada parada
A escada tem 7 degraus, na ordem abaixo, e o agente para no primeiro que resolver a tarefa
Repara que a ordem não é aleatória: ela vai do "não faz nada" até o "faz o mínimo", passando por todas as formas de aproveitar código que já existe no meio do caminho
1. Isso precisa existir?
O primeiro degrau é o YAGNI clássico: se a coisa não precisa existir, pula
É o degrau mais brutal da escada, porque ele questiona a existência da tarefa e não a implementação dela. Nenhuma linha escrita é sempre a linha mais barata de manter
O erro comum deste passo: o agente sem skill adora antecipar. Você pede um leitor de arquivo e volta uma camada de abstração com interface, factory e três parâmetros de configuração que ninguém pediu
2. Já existe neste projeto?
Segundo degrau: reutiliza, não reescreve
Se o projeto já tem um helper, um utilitário, uma função que faz aquilo, o trabalho acabou. É importação, não implementação
Este degrau vem antes de stdlib e de biblioteca porque o código do próprio projeto é o que carrega as convenções da casa
O erro comum deste passo: reescrever um helper que já está lá, geralmente com um nome parecido, e o projeto ficar com duas versões do mesmo formatador de data pra sempre
3. A stdlib já faz isso?
Terceiro degrau: se a biblioteca padrão da linguagem resolve, usa a biblioteca padrão
Stdlib é código que já está instalado, já está testado por muita gente e não vira dependência nova no seu package.json ou no seu requirements
O erro comum deste passo: importar uma lib inteira pra fazer algo que a linguagem entrega nativo. Aquele pacote de 3 funções que entra no projeto e nunca mais sai
4. Existe recurso nativo da plataforma?
Quarto degrau: antes de escrever, olha pra plataforma onde o código vai rodar
Se o navegador, o runtime ou o próprio ambiente já entrega o comportamento, a implementação vira configuração

VPS Hostinger para seu sistema
10% OFF extraVPS com SSD NVMe e backups semanais. O cupom MATHEUSHORADECODAR é aplicado automaticamente pelo link.
Ver planos com 10% OFF →O erro comum deste passo: recriar na unha um comportamento que a plataforma já dá de graça, e ainda por cima com menos casos de borda cobertos que a versão nativa
5. Existe dependência já instalada que resolve?
Quinto degrau: dependência JÁ instalada, se liga na palavra
Não é convite pra instalar biblioteca nova. É olhar o que já está no projeto e perceber que aquele pacote que entrou por outro motivo também resolve esse
O erro comum deste passo: adicionar uma dependência nova pra um problema que uma dependência existente já cobria, aumentando a superfície de atualização do projeto sem necessidade
6. Cabe em uma linha?
Sexto degrau: se cabe em uma linha, então é uma linha
Aqui a escada já aceitou que precisa escrever algo. A pergunta passa a ser sobre tamanho, não sobre existência
O erro comum deste passo: transformar uma expressão de uma linha em função com nome, docstring, teste e arquivo próprio… aquela cerimônia toda pra algo que era um filter
7. Só então: o mínimo que funciona
Sétimo e último degrau: escreve o mínimo que funciona
Mínimo não é gambiarra, é ausência de coisa não pedida. Sem parâmetro extra "pro caso de", sem hook de extensão que ninguém vai plugar, sem generalização preventiva
O erro comum deste passo: confundir mínimo com incompleto. Tem coisa que a escada não corta nunca, e é exatamente disso que fala a próxima seção
Onde a escada corta mais e o que ela nunca corta
O ganho não é distribuído por igual entre os degraus
Segundo a análise da escada, o degrau 1 (YAGNI, isso precisa existir?) e o degrau 3 (a stdlib já faz isso?) respondem pela maior fatia da redução de código observada
Faz sentido, né? Um mata a tarefa inteira, o outro troca uma implementação inteira por uma chamada que já vem junto com a linguagem. Os degraus do meio afinam, esses dois amputam
Agora o outro lado, que é o que separa minimalismo de irresponsabilidade
O Ponytail tem carve-outs explícitos, coisas que nunca entram na conta do corte em nome de escrever menos código:
- validação em fronteira de confiança
- tratamento de perda de dados
- segurança
- acessibilidade
- comportamento explicitamente pedido pelo usuário
Esse último é o mais prático no dia a dia: se você pediu, não é excesso. A escada corta o que o agente inventou por conta própria, não o teu requisito
Na prática isso te dá uma régua boa de leitura das respostas. Resposta curta em CRUD, helper e formatação: provavelmente a escada trabalhando. Resposta curta em validação de entrada externa ou em algo que você pediu com todas as letras: aí é hora de desconfiar e cobrar
O que a escada muda na prática: os números do benchmark
O benchmark oficial do projeto reporta uma redução média de código de cerca de 54%, medida em 12 tarefas de feature, com o modelo Haiku 4.5 e n=4 execuções por tarefa
E tem uma variação enorme dentro dessa média: chega a 94% de redução onde o agente exagera na construção, e fica perto de zero onde o código já era mínimo
Além do volume de código, o README reporta ganhos de custo e tempo medidos em sessões reais do Claude Code editando um repositório open source de verdade:
| Métrica | Resultado oficial | Como foi medido |
|---|---|---|
| Volume de código | ~54% menos em média | 12 tarefas de feature, Haiku 4.5, n=4 por tarefa |
| Teto por tarefa | até 94% menos | tarefas em que o agente exagera na construção |
| Piso por tarefa | perto de zero | tarefas em que o código já era mínimo |
| Custo | ~20% mais barato | sessões reais de Claude Code, repo FastAPI + React |
| Tempo | ~27% mais rápido | sessões reais de Claude Code, repo FastAPI + React |

Crie sistemas com IA para vender
Prompts, modelos e checklists para criar e publicar seu sistema com IA e preparar a oferta para o primeiro cliente.
Quero o e-book gratuito Receba o livro e os bônus no seu e-mail.E aqui vem a parte mais interessante da história, que é justamente a que sumiu do hype
O número que viralizou foi o 94%. A manchete original falava em 80% a 94% de redução… só que essa medição vinha de uma baseline com falha
Um contribuidor apontou o problema. O mantenedor refez a medição como execução agêntica real e publicou o número corrigido, que é MENOR: os ~54% de média
O 94% continua existindo, mas mudou de papel: virou o teto por tarefa, não a média
Pra mim isso vale mais que o benchmark em si. Projeto que republica número pra baixo depois de contestação é sinal de saúde, e é por isso que eu evito repetir os números mais agressivos que circulam por aí em blog de terceiro: se não bate com o README oficial, não entra
Como instalar o Ponytail e ver a escada rodando
Antes de começar, se liga: a instalação MUDA conforme o agente. No Claude Code são dois comandos de plugin, nos outros cada um tem o seu
- Adicione o marketplace do Ponytail
No Claude Code, roda:
/plugin marketplace add DietrichGebert/ponytail
O erro comum deste passo: pular direto pra instalação. Sem o marketplace adicionado, o nome do plugin não resolve
- Instale o plugin no Claude Code
/plugin install ponytail@ponytail
O erro comum deste passo: escrever só ponytail no lugar de ponytail@ponytail. O formato é nome do plugin arroba nome do marketplace
- Se o teu agente não é o Claude Code, usa o comando dele
O Ponytail não é exclusivo do Claude Code, cada agente tem o seu próprio caminho de instalação:
– Codex: codex plugin marketplace add DietrichGebert/ponytail e depois codex plugin add ponytail@ponytail – Copilot CLI: copilot plugin marketplace add DietrichGebert/ponytail e depois copilot plugin install ponytail@ponytail – Gemini: gemini extensions install https://github.com/DietrichGebert/ponytail – Grok: grok plugin install DietrichGebert/ponytail --trust – npm: pacote @dietrichgebert/ponytail
O erro comum deste passo: copiar o comando de barra do Claude Code no terminal de outro agente. Não é o mesmo comando e não vai rodar
- Rode uma tarefa pequena e compare a saída
Pega algo que o agente costuma inflar (um formatador, uma função utilitária, um parser besta) e compara a resposta com o que ele te dava antes
O erro comum deste passo: testar numa feature grande logo de cara. Em tarefa grande tem variável demais no meio pra você atribuir a diferença à escada
E se quiser ler as regras na fonte, o arquivo é o skills/ponytail/SKILL.md do repositório
Vale adotar a escada no seu fluxo?
Na minha leitura, o valor do Ponytail está no critério, não no número de manchete
Os ~54% são um dado honesto de um benchmark que já foi corrigido uma vez. Legal ter, mas o que muda o teu dia é a escada em si: 7 perguntas que empurram o agente pra reutilizar antes de criar
E olha que massa: isso é replicável mesmo sem instalar nada. Dá pra rodar a escada como checklist mental antes de pedir código: isso precisa existir? já existe aqui? a stdlib faz? a plataforma faz? tem lib instalada que resolve? cabe em uma linha?
Seis perguntas antes do prompt já cortam boa parte da construção desnecessária, e essa lógica funciona até pra quem quer usar o Claude sem programar, porque o raciocínio é sobre escopo, não sobre sintaxe
Próximo passo que eu sugiro: abre o SKILL.md no repositório e lê os 7 degraus, ou instala e compara a saída do agente numa tarefa pequena
Depois me conta se o teu agente ficou mais preguiçoso do jeito bom =)
até o próximo post!
Perguntas frequentes
Como instalar o Ponytail no Claude Code?
São dois comandos de plugin: primeiro /plugin marketplace add DietrichGebert/ponytail, depois /plugin install ponytail@ponytail. Depois disso as regras da escada de 7 perguntas já entram no agente.
O Ponytail funciona em outros agentes além do Claude Code?
Sim, não é exclusivo do Claude Code. Tem caminho de instalação pra Codex, Copilot CLI, Gemini e Grok, cada um com seu próprio comando, além de um pacote npm (@dietrichgebert/ponytail) pra quem quer integrar direto.
Quanto código o Ponytail realmente economiza na prática?
O número oficial atual é uma redução média de cerca de 54%, medida em 12 tarefas de feature com o modelo Haiku 4.5 (n=4 execuções por tarefa). Em sessões reais de Claude Code sobre um repositório FastAPI + React, o ganho também aparece em custo (~20% mais barato) e tempo (~27% mais rápido).
O 94% de redução do Ponytail que viralizou é real?
Aquele número veio de uma baseline com falha. Um contribuidor apontou o problema, o mantenedor refez a medição como execução agêntica real e o valor corrigido caiu pra ~54% de média, com 94% virando o teto observado numa tarefa específica, não a média geral.
O Ponytail corta validação e segurança pra economizar linhas de código?
Não. O Ponytail tem carve-outs explícitos que nunca entram na conta do corte: validação em fronteira de confiança, tratamento de perda de dados, segurança, acessibilidade e qualquer comportamento que você pediu explicitamente. A escada mexe no que o agente inventaria sozinho, não no teu requisito.
O Ponytail é gratuito e open source?
É. O projeto é distribuído sob licença MIT e o código fica aberto no repositório DietrichGebert/ponytail.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 30min
Blog | Mais populares
Ponytail lite, full, ultra ou off: qual nível usar em cada tarefa?
Ponytail lite, full, ultra ou off: veja o que muda em cada nível da régua de código mínimo e qual ativar em cada tarefa do dia a dia com Claude Code.
Ponytail ou suas próprias regras no AGENTS.md: qual a diferença na prática?
Ponytail vs AGENTS.md: entenda a diferença entre o ruleset YAGNI pronto e suas próprias regras, e quando vale trocar ou só copiar a escada de decisão.
Por que o Ponytail devolve um input nativo quando você pede um date picker?
Ponytail date picker: veja por que o ruleset troca bibliotecas externas pelo input nativo do navegador e reduz o código de 404 para 23 linhas no benchmark.
