MÓDULO 3.2

🎯 Description e triggers

O campo description é o que faz a skill disparar. Aprenda a escrever triggers fortes, incluir cláusulas SKIP para evitar disparo errado e nomear skills corretamente em kebab-case.

6
Tópicos
45
Minutos
Intermediário
Nível
Prática
Tipo
1

🎯 A description como único gatilho

O campo description no frontmatter do SKILL.md é o único sinal que o agente usa para decidir se deve ativar uma skill. É o seu "anúncio" para o agente — escreva como se precisasse convencer alguém em 5 segundos.

Mensagem "criar curso HTML" Match semântico desc: "ajuda com código" → 20% desc: "criar HTML curso" → 95% desc: "análise de dados" → 2% 🧩 formato-curso skill ativada relevância: 95% Apenas a description é avaliada — o corpo da skill ainda não foi lido

O que torna uma description eficaz

1 Frase-resumo — o que a skill faz em uma linha, com verbos de ação concretos
2 TRIGGER when — lista de cenários explícitos de ativação
3 SKIP — casos onde NÃO deve disparar, mesmo com sobreposição temática
Match semântico
não literal
Único sinal
antes de ativar
3 partes
resumo+trigger+skip
Lazy loading
corpo lido depois
2

⚡ Escrevendo frases-gatilho fortes

Frases-gatilho são as cláusulas TRIGGER when na description. Elas listam explicitamente os contextos de ativação, cobrindo múltiplas formas como o usuário pode expressar o mesmo pedido.

Exemplo real: skill claude-api (TRIGGER + SKIP) YAML description
description: |-
  Build, debug, and optimize Claude API / Anthropic SDK apps.
  Apps built with this skill should include prompt caching.
  Also handles migrating existing Claude API code between
  Claude model versions.
  
  TRIGGER when: code imports `anthropic`/`@anthropic-ai/sdk`;
  user asks for the Claude API, Anthropic SDK, or Managed
  Agents; user adds/modifies/tunes a Claude feature (caching,
  thinking, tool use, batch) or model (Opus/Sonnet/Haiku).
  
  SKIP: file imports `openai`/other-provider SDK, filename
  like `*-openai.py`, provider-neutral code, general
  programming/ML.

✓ Triggers fortes

  • Prefixo explícito "TRIGGER when:" ou "Use quando:"
  • Cobre múltiplas formulações do mesmo pedido
  • Inclui sinônimos e variações do domínio
  • Menciona artefatos concretos (imports, arquivos)
  • Testável: "se disser X, deve disparar?"

✗ Triggers fracos

  • Sem prefixo — não há separação clara do resumo
  • Cobre apenas 1 formulação ("crie um curso")
  • Palavras-chave genéricas ("código", "web")
  • Técnico demais para o usuário ("processa tokens")
  • Sem SKIP — dispara em contextos errados

💡 Técnica: 5 perguntas de teste

Antes de publicar a skill, teste a description com 5 perguntas reais que o usuário faria. Para cada uma, verifique:

  • 1. A skill deveria disparar? (sim/não)
  • 2. Apenas lendo a description, fica claro que sim/não?
  • 3. Alguma outra skill concorreria por este trigger?
  • 4. O SKIP elimina os falsos positivos?
  • 5. Alguém sem contexto entenderia a description?
TRIGGER when:
prefixo padrão
Múltiplas formas
cobre variações
Testável
5 perguntas
Artefatos
imports, arquivos
3

🚫 Cláusulas SKIP: evitar disparo errado

SKIP define os anti-casos: situações onde a skill NÃO deve disparar, mesmo que haja sobreposição temática com o trigger. É a fronteira que separa a skill de suas vizinhas.

📊 Por que SKIP importa

Imagine que você tem claude-api e uma skill genérica de "código Python". Sem SKIP, qualquer script Python que mencione uma API poderia acionar a skill errada. O SKIP cria fronteiras nítidas:

claude-api → ativa quando:
  • • import anthropic
  • • Claude API / SDK
  • • Opus, Sonnet, Haiku
claude-api → SKIP quando:
  • • import openai
  • • código provider-neutral
  • • ML genérico sem SDK

Como refinar o SKIP na prática

1

Identify false positives

Use a skill por 1 semana. Anote toda vez que ela disparar quando não deveria — são os seus falsos positivos.

2

Encontre o padrão

O que os falsos positivos têm em comum? É uma biblioteca? Um tipo de arquivo? Um contexto específico?

3

Adicione ao SKIP

Adicione o padrão à cláusula SKIP da description. Re-teste com os falsos positivos originais.

✓ SKIP bem escrito

  • Prefixo "SKIP:" explícito e em maiúsculas
  • Lista os casos de não-uso com exemplos concretos
  • Complementa o TRIGGER sem contradizê-lo
  • Refinado com falsos positivos reais

✗ Armadilhas do SKIP

  • SKIP tão amplo que bloqueia casos válidos
  • Contradiz o TRIGGER ("Use quando X... SKIP: X")
  • Ausência de SKIP em skill de escopo amplo
  • SKIP genérico demais ("SKIP: código geral")
SKIP:
prefixo obrigatório
Anti-casos
fronteira da skill
Refinamento
com uso real
Complementar
não contraditório
4

🔤 Nome em kebab-case

O nome da pasta e do campo name no frontmatter seguem uma convenção única: kebab-case.

Exemplos de nomes válidos vs inválidos
✓ VÁLIDO
formato-curso
ads-skill
n8n-code-python
claude-api
deep-research
✗ INVÁLIDO
formatoCurso (camelCase)
formato_curso (underscore)
Formato Curso (espaços)
FORMATO-CURSO (maiúsculas)
fc (abreviação ambígua)

💡 Por que kebab-case funciona

URL-safe
funciona como slug sem encoding
Terminal-safe
sem necessidade de aspas no shell
Legível
instantaneamente escaneável
minúsculas
sem maiúsculas
hífen
separador único
2-4 palavras
nome descritivo
pasta = name
coerência total
5

✅ Exemplos reais de description eficaz

Análise de descriptions de skills reais em produção. O que as torna eficazes e por quê.

Skill: formato-curso — description real
description: |-
  Template e padrões de design para criar páginas HTML de cursos
  no formato INEMA.CLUB.
  
  Use esta skill SEMPRE que o usuário pedir para criar, editar ou
  revisar páginas HTML de curso — incluindo index de trilhas,
  páginas de módulos, componentes como navegação, cards, tópicos
  expansíveis, modais e slides.
  Acione também quando o usuário mencionar trilhas, módulos,
  tópicos, INEMA.CLUB, ou quando pedir para seguir o
  "formato de curso" ou "template de curso".
  
  Nao deixe de usar esta skill se o usuário mencionar qualquer
  coisa relacionada a páginas HTML de cursos ou ao projeto skillx.

Por que essa description funciona

Frase-resumo clara: "Template e padrões de design para criar páginas HTML de cursos no formato INEMA.CLUB" — específico, com formato de saída e contexto
TRIGGER abrangente: cobre criar, editar, revisar; lista componentes específicos (modais, slides, cards); menciona sinônimos do domínio (INEMA.CLUB, skillx)
Tom imperativo: "SEMPRE que o usuário pedir", "Acione também" — sem ambiguidade sobre quando usar
Reforço negativo: "Não deixe de usar" — instrução explícita para não ignorar, antecipando casos limítrofes
Específico
contexto + formato
Abrangente
múltiplas formulações
Imperativo
sem ambiguidade
Sinônimos
vocabulário do domínio
6

❌ Anti-patterns de description

Descriptions ruins são invisíveis (skill nunca dispara), promíscuas (dispara para tudo) ou confusas (dispara quando não deveria). Os 4 anti-patterns mais comuns:

✗ Anti-pattern 1: Vago demais

description: "Ajuda com código"

Problema: "código" é tudo. Toda skill de dev vai competir. Nenhuma vai ganhar de forma previsível.

✗ Anti-pattern 2: Circular

description: "Use quando precisar de IA"

Problema: todas as skills "usam IA". A description precisa diferenciar, não generalizar.

✗ Anti-pattern 3: Técnico demais

description: "Processa tokens via API REST e gerencia context window"

Problema: o usuário não pensa em "tokens" e "context window" — pensa em "preciso de uma resposta".

✗ Anti-pattern 4: Sem âncoras

description: "Skill para trabalhar com APIs externas"

Problema: qual API? REST? GraphQL? Anthropic? OpenAI? Sem âncora específica, o match vai errar.

💡 O teste de 1 frase

Mostre a description para alguém que nunca viu a skill. Faça uma pergunta: "Em que situação você usaria isso?" Se a resposta for vaga ou errada, a description falhou. O teste leva 30 segundos e economiza horas de debug.

Vago
não diferencia
Circular
generaliza
Técnico
vocabulário errado
Sem âncora
contexto ausente

🎯 Resumo do Módulo

Description = gatilho único — o único sinal que o agente avalia antes de ativar; lazily carrega o corpo
Estrutura ideal — frase-resumo + TRIGGER when: + SKIP: em 3-6 linhas
TRIGGER forte — prefixo explícito, múltiplas formulações, artefatos concretos (imports, arquivos), testável
SKIP delimitador — define fronteiras, eliminada com falsos positivos reais, complementar ao TRIGGER
Kebab-case — minúsculas + hífen; pasta e frontmatter name idênticos; URL-safe e terminal-safe
Anti-patterns — vago, circular, técnico demais, sem âncora; use o teste de 1 frase para validar

Próximo Módulo:

3.3 — Scripts e referências auxiliares: como estruturar scripts/, references/, .env.example e aplicar progressive disclosure