ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
O que ela faz
Esta ferramenta revisa um código que você escreveu para encontrar possíveis problemas. Ela verifica se a lógica está correta, se é segura, se funciona bem com muitos usuários, se tem testes adequados, se é rápida e se não tem código desnecessário.
Quando usar
- ✓Antes de enviar seu código para ser revisado por outra pessoa.
- ✓Quando você quer ter certeza de que seu código não vai quebrar o sistema.
- ✓Se você acha que seu código pode estar complicado demais.
Exemplo do que pedir para a IA
“Revise este código, por favor.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta lê o código que você mudou e o código relacionado a ele. Ela pensa como um desenvolvedor experiente para encontrar erros, problemas de segurança, lentidão ou código que pode ser removido.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add DietrichGebert/ponytail --skill ponytail-reviewOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/DietrichGebert/ponytail/main/skills/ponytail-review/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Revise a mudança como o desenvolvedor sênior que será acionado se algo quebrar. Ordem de importância: correto, seguro, aguenta sob carga, testado, rápido, enxuto. Enxuto ainda importa: cada linha extra precisa ser lida, testada e corrigida depois. Este é um relatório que o usuário solicitou, então entregue-o por completo.
1. Entenda primeiro
- Revise o que o usuário nomeia: alterações não commitadas ou preparadas, um branch, um link de PR, ou arquivos. Nada nomeado: as alterações não commitadas, ou o último commit se não houver nenhum.
- Leia o diff, depois o código que ele toca: chamadores de cada função alterada, as funções que ela chama, os testes, o README.
- Trace o fluxo real: onde os dados entram, o que é armazenado, o que sai.
- Uma mudança pode quebrar código que ela não toca. Quando uma assinatura, valor de retorno ou comportamento muda, use grep em todos os chamadores.
- Encontre a carga esperada no repositório (README, configuração de deploy): uma pessoa executando um script, ou muitos usuários e processos ao mesmo tempo. Julgue a escala contra isso, e diga qual carga você assumiu.
2. Procure por
- Bug: resultado incorreto, crash, caso de borda perdido (vazio, zero, último item, arredondamento, fusos horários), um chamador quebrado pela mudança, uma correção aplicada em um chamador enquanto a função compartilhada permanece quebrada.
- Risco: falhas de segurança (injeção, aleatoriedade fraca, segredos, falta de verificações na entrada de usuários), perda de dados (erros ignorados, escritas na ordem errada, sem transação).
- Escala: bom para um usuário, errado para muitos: corridas de verificar-depois-escrever, o mesmo trabalho feito por cada processo, memória ou listas que só crescem, uma consulta por item, O(n^2) em entrada grande, estado por processo que precisa ser compartilhado.
- Teste ausente: lógica nova arriscada (um branch, um parser, dinheiro, segurança, escritas de dados, uma correção de bug) sem um teste que falhe quando quebrar. Um bom teste, não cobertura.
- Velocidade: grandes lentidões são problemas. Pequenas vitórias (trabalho repetido em um loop quente) são sugestões; algum software conta cada milissegundo.
- Enxuto: código que não deveria existir ou deveria ser menor.
- deletar: código morto, opções não usadas, recursos especulativos
- reutilizar: o repositório já tem este helper (nomeie o caminho)
- stdlib / nativo: a biblioteca padrão ou plataforma já faz isso; uma nova dependência para algumas linhas
- yagni: abstração com uma implementação, configuração que ninguém define
- mesclar: quase cópias que precisam mudar juntas
- dividir: uma função fazendo vários trabalhos não relacionados, tornando-a difícil de ler ou testar. Divida por trabalho, nunca por contagem de linhas, e nunca em helpers que existem apenas para encurtar uma função.
3. Verifique antes de reportar
- Cada descoberta precisa de um caso concreto: "esta entrada ou situação leva a este resultado incorreto". Sem caso, sem descoberta.
- Releia as linhas e confirme: o chamador existe, o valor pode realmente estar vazio, o código realmente não é usado.
- Um atalho marcado com um comentário
shortcut:(ou mais antigoponytail:) que nomeia seu limite é uma decisão, não uma descoberta, a menos que a carga esperada já o ultrapasse. - Proponha a menor correção que funcione. Prefira correções que deletam código. Nunca adicione camadas, frameworks ou configurações que o problema não precisa.
- Sem gosto de estilo, sem "considere", sem preocupações vagas.
4. Saída
Inglês muito simples: frases curtas, palavras do dia a dia. Explique um termo técnico na primeira vez que o usar. O leitor pode nunca ter visto este código.
Comece com What this change does: em duas ou três frases.
Em seguida, as descobertas em três grupos, pule grupos vazios:
- Precisa corrigir: bug, segurança, perda de dados, quebra na carga esperada.
- Deveria corrigir: código arriscado sem teste, lentidão real, duplicação, uma função que mistura trabalhos, código que não deveria existir.
- Bom ter: pequenas melhorias de velocidade, formas mais curtas.
Numere as descobertas em todos os grupos, para que o usuário possa dizer "corrija 2 e 5". Cada descoberta tem todas as quatro partes, cada uma com uma ou duas frases curtas:
- Pedidos chegam no dia errado (
billing/close_day.py:L40-52)- O que é: À meia-noite, este job fecha o dia e fatura todos os pedidos daquele dia.
- Problema: Ele pega "hoje" do relógio do servidor, que roda em UTC. Um pedido feito às 00:30 em Berlim é faturado no dia anterior.
- Correção: Calcule o dia uma vez no fuso horário da loja:
datetime.now(ZoneInfo("Europe/Berlin")).date(). Uma linha, nada mais muda. - Se ignorarmos: Pedidos atrasados mostram a data errada, e o financeiro os corrige manualmente.
Termine com:
Verdict: Ship.ouVerdict: fix 1 and 3 first.
Perguntas frequentes
O que significa 'leigo'?
Leigo é alguém que não tem conhecimento técnico ou experiência em uma área específica, como programação.
O que é 'código'?
Código é um conjunto de instruções que um computador entende para realizar uma tarefa.
O que é um 'bug'?
Um bug é um erro no código que faz com que o programa não funcione como esperado.
Detalhes
Descrição original do autor
Quality review of a change: is the logic right, is it safe, does it hold under real load, is risky code tested, is it fast enough, and is every line needed. Reads the connected code, not only the diff. Each finding is explained in plain English. Use for "review this", "code review", "review the last commit", "review my PR", "is this over-engineered", /ponytail-review.
repo: DietrichGebert/ponytail
Popularidade
- Estrelas no GitHub
- 164 mil
- Posição no ranking
- #338
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-debt
Lista todos os atalhos de código ('shortcut:') deixados para depois. Ajuda a ver o que ainda precisa ser corrigido no projeto.
DietrichGebert/ponytail
ponytail-gain
Mostra a economia de código, custo e velocidade obtida com otimizações. Útil para entender o impacto das melhorias feitas.
DietrichGebert/ponytail
ponytail-help
Fornece um guia rápido sobre como usar as ferramentas e comandos. Ajuda a entender as funcionalidades disponíveis.
DietrichGebert/ponytail
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC