Conteudo detalhado
π¦ O que e uma skill no Claude Code
Uma skill e um pacote de instrucoes e ferramentas que muda o comportamento do Claude Code para uma tarefa especifica. Em vez de explicar o mesmo processo todo dia ("antes de codar, escreva um teste"), voce empacota essa logica numa skill e o agente carrega ela quando precisar.
Tecnicamente, uma skill e um diretorio com um arquivo SKILL.md (frontmatter YAML + corpo markdown) que descreve quando ativar e como agir. Pode incluir slash commands, sub-agents, hooks, e referencias a outras skills.
βοΈ Tres formas de invocar uma skill
-
β’
Slash command explicito: usuario digita
/grill-meou/tddβ invocacao deliberada. -
β’
Trigger automatico: o agente le a description da skill e ativa quando o pedido bate (ex: "vamos refatorar isso" ->
/improve-codebase-architecture). -
β’
Composicao: uma skill chama outra.
/make-planpode chamar/grill-meinternamente.
# Estrutura minima de uma SKILL.md --- name: grill-me description: Stress-testa um plano antes de codar. Use quando o usuario disser "vou comecar a implementar", "tenho uma ideia", "faz sentido fazer assim?". --- # Grill Me Voce e um senior cetico. Antes de aceitar qualquer plano: 1. Liste 5 suposicoes implicitas no pedido do usuario. 2. Para cada uma, pergunte "e se essa estiver errada?". 3. Sugira o experimento mais barato para validar cada uma. 4. So entao retorne o plano refinado.
π‘ Prioridade de instrucoes
Quando ha conflito, a ordem de precedencia e: system prompt > skill ativa > CLAUDE.md > pedido do usuario. Uma skill bem feita "amarra" comportamento mesmo se o usuario tentar atalho.
Exemplo: se /tdd esta ativa e o usuario disser "pula o teste dessa vez", o agente recusa β a skill venceu.
π― Problema #1 β Desalinhamento
O problema mais caro nao e codigo errado β e codigo certo da coisa errada. O usuario pede X mas quer Y, o agente codifica X perfeitamente, e duas semanas depois o feature e jogado fora.
π Citacao β David Thomas (The Pragmatic Programmer)
"No-one, not even users, knows exactly what they want. Even when they do, they cannot articulate it. And even when they articulate it, they will change their minds tomorrow."
Conclusao: aceitar o pedido literal do usuario e quase sempre uma armadilha. Skills tipo /grill-me existem pra forcar a conversa de descoberta antes do codigo.
β BEFORE β Sem grilling
Usuario:
Agente:
- β Codifica botao CSV em 2 horas.
- β Usuario testa: "mas eu queria Excel com formatacao."
- β Retrabalho. CSV vai pro lixo.
β AFTER β Com /grill-me
Agente pergunta:
- β "Quem vai abrir esse arquivo? Excel, Sheets, ferramenta de BI?"
- β "Precisa de formatacao (cores, totais), ou so dados crus?"
- β "Quantas linhas? CSV trava acima de 1M no Excel."
Usuario responde -> agente codifica XLSX com formulas. Zero retrabalho.
π‘ Sinal de alarme
Se o agente nunca te corrigiu, nunca pediu esclarecimento e nunca discordou de voce β ele esta te servindo, nao te ajudando. Uma boa skill de descoberta deve gerar atrito produtivo nas primeiras trocas.
π£οΈ Problema #2 β Verbosidade
Quando agente e humano nao compartilham vocabulario, cada conversa precisa ser explicada do zero. Eric Evans (autor de Domain-Driven Design) chama isso de ausencia de linguagem ubiqua: termos que toda a equipe β humanos e agentes β usa da mesma forma.
π Eric Evans β Domain-Driven Design
A ideia central de Evans: o codigo deve falar a lingua do negocio. Se voce tem que traduzir "PaymentBatch" pra "lote de cobrancas" toda vez que abre um arquivo, o modelo esta errado.
Com agentes a perda e amplificada: cada conversa nova comeca do zero porque o agente nao "viveu" as discussoes anteriores. Skills com glossario fixo (ex: /grill-with-docs) injetam a linguagem ubiqua em todo prompt.
Exemplo concreto. Imagine um curso onde "aula" pode ser um placeholder OU uma instancia real materializada com aluno e progresso. Sem linguagem ubiqua, voce escreve assim:
β Verboso (sem linguagem ubiqua)
62 palavras. Aspas em "real" tres vezes. Reconstroi o conceito do zero.
β Conciso (com linguagem ubiqua)
21 palavras. Termos "materialization cascade" e "materialized" carregam todo o contexto.
π‘ Os 3 beneficios da linguagem ubiqua com agentes
- 1. Brevidade: uma palavra carrega um paragrafo de contexto.
- 2. Precisao: "materializar" significa exatamente uma coisa, sem ambiguidade.
- 3. Auditoria: commits, PRs e tickets compartilham o mesmo dicionario.
π§ͺ Problema #3 β Codigo que nao funciona
LLMs sao treinados pra produzir codigo que parece certo. Tipos batem, imports existem, sintaxe e valida β e mesmo assim a logica esta errada. Sem um sinal externo (testes), o agente acredita no proprio output.
A solucao classica e TDD (Test-Driven Development): escrever o teste primeiro, ver ele falhar (vermelho), implementar o minimo pra ele passar (verde), depois refatorar. Skills como /tdd impoem esse ciclo no agente.
RED β Escreva o teste que falha
Antes de escrever uma linha de implementacao, descreva o comportamento esperado num teste.
Por que funciona: te forca a definir o que antes do como. Se voce nao consegue escrever o teste, voce nao entendeu o requisito. O teste falhando confirma que voce esta testando algo real β nao um teste vazio que sempre passa.
GREEN β Implemente o minimo
A regra: codigo mais curto e mais simples que faz o teste passar. Pode ser feio. Pode ser duplicado. Funciona.
Por que funciona: bloqueia a tentacao de "ja vou deixar pronto pro proximo caso". Cada teste compra uma linha de codigo, nada alem disso.
REFACTOR β Limpe com a rede embaixo
Com os testes verdes, agora voce reorganiza nomes, extrai funcoes, remove duplicacao β sem medo de quebrar.
Por que funciona: a refatoracao acontece depois que o comportamento esta cravado em teste. Se um refactor quebrar logica, o teste avisa em segundos.
β οΈ Atencao β o anti-padrao TDD com agentes
O erro mais comum: pedir ao agente "implementa X e depois escreve os testes". O agente vai escrever testes que passam no codigo dele, nao testes que validariam o requisito. Teste depois nao e TDD β e teatro.
ποΈ Problema #4 β Ball of mud
Codigo apodrece. Foi documentado por Foote e Yoder em 1997 com o termo "Big Ball of Mud": sistemas que crescem sem arquitetura coerente porque cada feature foi adicionada na pressa, sem refator. Com agentes a velocidade aumenta β e o apodrecimento tambem.
A intuicao errada: "vou pedir pro agente refatorar tudo agora". A intuicao certa: refator e oportunidade, nao evento. Voce nao reescreve o sistema; voce identifica uma duplicacao e a unifica quando ja precisa mexer naquela area.
β Refator destrutivo
- β "Refatora tudo o modulo de pagamento" β 2 semanas, 50 arquivos, PR impossivel de revisar.
- β Muda nome de classe e quebra 14 lugares que ninguem percebeu.
- β Feature flag fica acesa 3 meses. Codigo novo e velho convivem.
- β Resultado: bola de lama com mais uma camada por cima.
β Deepening opportunities
-
β
Antes de tocar num arquivo, rode
/improve-codebase-architecturenele. - β Skill identifica duplicacao especifica: "essa funcao existe em 3 lugares como variacoes."
- β Unifica so aquele caso. PR de 80 linhas, revisavel em 10 min.
- β Resultado: cada feature deixa o codigo um pouco melhor (regra do escoteiro).
π‘ Exemplo pratico β identificando duplicacao
Voce vai mexer no UserController. Antes, roda /improve-codebase-architecture UserController. A skill responde:
- UserController.create (linha 42)
- AdminController.invite (linha 78)
- WebhookController.signup (linha 31)
Variam apenas no tratamento de dominio bloqueado. Sugiro extrair
EmailValidator.validate(email, options) e refatorar os 3 chamadores num PR antes de adicionar o seu codigo novo."
π Como skills compoem
Skills individuais ja ajudam. Mas o ganho real aparece quando elas se compoem em fluxos β cada uma resolve um problema, e o output de uma alimenta a proxima.
Workflow tipico de uma feature, do zero ao codigo em producao:
/grill-with-docs Stress-testa a ideia contra docs e ADRs β (elimina desalinhamento, problema #1) βΌ /to-prd Vira documento de produto curto e cravado β (fixa linguagem ubiqua, problema #2) βΌ /to-issues Quebra o PRD em issues pequenas e testaveis β (escopo pequeno = menos ball of mud) βΌ /tdd Para cada issue: teste vermelho -> verde -> refactor β (resolve problema #3) βΌ /triage Revisa diff, sugere refator pontual antes do merge (combate problema #4, deepening opportunity)
Cada seta e uma transicao deliberada. O usuario nao precisa segurar o contexto inteiro na cabeca β as skills fazem o handoff. O PRD vira input do /to-issues; a issue vira input do /tdd; o diff vira input do /triage.
π§± Principio: skills sao tijolos, nao monolitos
Uma skill que tenta fazer "tudo o ciclo de feature" e pior que cinco skills pequenas encadeadas. Razoes:
-
β’
Reuso:
/grill-meserve pra qualquer plano, nao so pra features. -
β’
Substituicao: trocar
/tddpor/bddnum projeto nao quebra o resto. - β’ Manutencao: skill curta cabe na cabeca, e mais facil de auditar.
-
β’
Composicao livre: mesma skill em fluxos diferentes (ex:
/grill-meantes de PRD, antes de ADR, antes de migracao).
π‘ Regra pratica
Se voce esta escrevendo uma skill e o description precisa de mais de 2 frases pra explicar quando ativar, ela esta fazendo coisa demais. Quebre.
π Resumo do Modulo
Proximo Modulo:
1.2 β Anatomia de uma SKILL.md: frontmatter, description triggers e corpo