test-driven-development
Ajuda seu agente a escrever código baseado em testes. É útil para garantir que o código funcione corretamente, corrigir bugs e provar que as mudanças são válidas.
O que ela faz
Essa ferramenta ajuda a criar código de forma mais confiável. Ela funciona escrevendo um teste que falha primeiro, depois escrevendo o código mínimo para fazer o teste passar, e por fim, limpando o código.
Quando usar
- ✓Ao criar uma nova funcionalidade.
- ✓Ao corrigir um erro.
- ✓Ao modificar um código que já existe.
Exemplo do que pedir para a IA
“Escreva um teste para a função que calcula o fatorial e depois implemente a função.”
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
Primeiro, você escreve um teste que sabe que vai falhar. Depois, cria o código mais simples possível para que esse teste passe. Por fim, você revisa e melhora o código, garantindo que os testes continuem passando.
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 addyosmani/agent-skills --skill test-driven-developmentOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/test-driven-development/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.
Desenvolvimento Guiado por Testes
Visão Geral
Escreva um teste que falha antes de escrever o código que o faz passar. Para correções de bugs, reproduza o bug com um teste antes de tentar corrigi-lo. Testes são provas — "parece certo" não é feito. Uma base de código com bons testes é um superpoder para um agente de IA; uma base de código sem testes é um passivo.
Quando Usar
- Implementando qualquer nova lógica ou comportamento
- Corrigindo qualquer bug (o Padrão Prove-It)
- Modificando funcionalidade existente
- Adicionando tratamento de casos extremos
- Qualquer alteração que possa quebrar o comportamento existente
Quando NÃO usar: Mudanças puramente de configuração, atualizações de documentação ou mudanças de conteúdo estático que não tenham impacto comportamental.
Relacionado: Para mudanças baseadas em navegador, combine TDD com verificação em tempo de execução usando Chrome DevTools MCP — veja a seção Testes de Navegador abaixo.
Descubra a Stack Primeiro
O ciclo TDD é universal; os comandos não são. Antes de escrever o primeiro teste, descubra como este repositório testa e use seus comandos para cada etapa RED, GREEN e de verificação:
- Linguagem e sistema de build —
package.json,pom.xml/build.gradle,pyproject.toml,go.mod,Cargo.toml,Gemfile, umMakefile - Wrappers registrados — prefira
./gradlew,./mvnw,make test, ou um script de repositório em vez de ferramentas instaladas globalmente - Framework de teste e configuração — e como ele executa um único teste focado versus o conjunto completo
- Convenções existentes — onde os testes residem, como os arquivos são nomeados, quais padrões os testes vizinhos seguem
- Comandos documentados — README, CONTRIBUTING e fluxos de trabalho de CI mostram os comandos que realmente controlam as mesclagens
Execute o comando de teste focado do repositório durante o loop e seu comando de conjunto completo antes da conclusão. Nunca assuma um padrão como npm test — um projeto Gradle, Cargo ou pytest tem seu próprio equivalente.
Os exemplos abaixo usam TypeScript para ilustração; o fluxo de trabalho é idêntico em qualquer linguagem depois que você descobrir as ferramentas próprias do projeto.
O Ciclo TDD
RED GREEN REFACTOR
Write a test Write minimal code Clean up the
that fails ──→ to make it pass ──→ implementation ──→ (repeat)
│ │ │
▼ ▼ ▼
Test FAILS Test PASSES Tests still PASS
Etapa 1: RED — Escreva um Teste que Falha
Escreva o teste primeiro. Ele deve falhar. Um teste que passa imediatamente não prova nada.
// RED: This test fails because createTask doesn't exist yet
describe('TaskService', () => {
it('creates a task with title and default status', async () => {
const task = await taskService.createTask({ title: 'Buy groceries' });
expect(task.id).toBeDefined();
expect(task.title).toBe('Buy groceries');
expect(task.status).toBe('pending');
expect(task.createdAt).toBeInstanceOf(Date);
});
});
Etapa 2: GREEN — Faça Passar
Escreva o código mínimo para fazer o teste passar. Não exagere na engenharia:
// GREEN: Minimal implementation
export async function createTask(input: { title: string }): Promise<Task> {
const task = {
id: generateId(),
title: input.title,
status: 'pending' as const,
createdAt: new Date(),
};
await db.tasks.insert(task);
return task;
}
Etapa 3: REFACTOR — Limpe
Com os testes verdes, melhore o código sem alterar o comportamento:
- Extraia lógica compartilhada
- Melhore a nomenclatura
- Remova duplicação
- Otimize se necessário
Execute os testes após cada etapa de refatoração para confirmar que nada quebrou.
O Padrão Prove-It (Correções de Bugs)
Quando um bug é relatado, não comece tentando corrigi-lo. Comece escrevendo um teste que o reproduza.
Bug report arrives
│
▼
Write a test that demonstrates the bug
│
▼
Test FAILS (confirming the bug exists)
│
▼
Implement the fix
│
▼
Test PASSES (proving the fix works)
│
▼
Run full test suite (no regressions)
Exemplo:
// Bug: "Completar uma tarefa não atualiza o timestamp completedAt"
// Etapa 1: Escreva o teste de reprodução (ele deve FALHAR)
it('define completedAt quando a tarefa é completada', async () => {
const task = await taskService.createTask({ title: 'Test' });
const completed = await taskService.completeTask(task.id);
expect(completed.status).toBe('completed');
expect(completed.completedAt).toBeInstanceOf(Date); // Isso falha → bug confirmado
});
// Etapa 2: Corrija o bug
…
Perguntas frequentes
O que é o ciclo 'Vermelho-Verde-Refatorar'?
É o processo: 1. Escrever um teste que falha (Vermelho). 2. Escrever o código mínimo para o teste passar (Verde). 3. Melhorar o código sem quebrar os testes (Refatorar).
Como isso ajuda a corrigir bugs?
Você escreve um teste que mostra o erro exato. Se o teste falhar, você sabe que o bug existe. Depois, corrige o código e o teste deve passar, provando que o erro foi corrigido.
Quando NÃO devo usar essa ferramenta?
Não use para mudanças simples como atualizar documentação ou configurações que não afetam como o programa funciona.
Detalhes
Descrição original do autor
Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality. Use when asked to add tests to a function, fix a bug in it or change its behavior, even when the code is pasted inline and the request
repo: addyosmani/agent-skills
Popularidade
- Estrelas no GitHub
- 107 mil
- Posição no ranking
- #363
- Licença
- MIT
- Atualizada em
- 13/10/2026
Comentários
- …
Mais skills deste repositório
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
browser-testing-with-devtools
Ajuda seu agente a testar código diretamente em navegadores reais. É útil para verificar como algo funciona no ambiente onde será usado, encontrando erros e problemas de performance.
addyosmani/agent-skills
ci-cd-and-automation
Ensina seu agente de IA a automatizar tarefas repetitivas e colocar projetos no ar e cuidar da infraestrutura.
addyosmani/agent-skills
code-review-and-quality
Realiza revisões de código detalhadas em várias frentes. É útil antes de juntar novas mudanças para garantir a qualidade e evitar problemas futuros.
addyosmani/agent-skills
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