Pular para o conteúdo

Agent Skills: pare de entulhar workflows no seu rules file

agent skills | | Cheesecake Labs
Resumo
  • Rules files tendem a inchar com procedimentos específicos de tarefas, virando manuais de operação que carregam em toda interação, encarecem o contexto e diluem políticas importantes; rules deveriam ser guardrails curtos e sempre ativos.
  • Agent skills são pastas autocontidas (SKILL.md obrigatório, além de scripts, references e assets opcionais) que empacotam workflows específicos e usam progressive disclosure: só nome e descrição carregam na inicialização, e o conteúdo completo entra apenas quando a tarefa combina.
  • Em um projeto React real, migrar de rules para rules mais skills reduziu o contexto na inicialização de 7.121 para 2.213 tokens, uma queda de 4.908 tokens (69%), mantendo as instruções completas disponíveis sob demanda.
  • Skills se somam em camadas com rules (guardrails universais), MCPs (acesso a sistemas externos) e subagents (delegação e paralelismo), podem ser compartilhadas via pastas no repo, escopo de usuário ou repo Git da organização, e o ponto de partida é auditar as rules, criar uma skill de alto valor, colocá-la no repo e iterar.

Este post pressupõe que você já tem familiaridade com agents de programação com IA (Cursor, Claude Code, Windsurf etc.), conceitos básicos de prompt engineering e rules files (o .cursor/rules/ do Cursor ou o CLAUDE.md do Claude Code).

Se você está começando agora no desenvolvimento assistido por agents, comece pela documentação inicial da sua ferramenta. Se nunca usou rules, leia a documentação de rules do Cursor ou a documentação de memory do Claude Code antes de continuar. Entender rules é o contexto essencial para saber por que as skills existem.

O problema: rules que viram manuais de operação

O rules file de todo time segue a mesma trajetória. Começa com alguns guardrails sensatos:

  • “Pergunte antes de ações destrutivas”
  • “Não adicione novas dependências sem aprovação”

Aí alguém adiciona um checklist para o código de cobrança. Outra pessoa inclui procedimentos de migração. Uma terceira contribui com templates de design de API. Seis meses depois, a sua seção de “rules” virou um manual de operação de 5.000 tokens que carrega em toda interação com o agent.

O que dá errado:

  • O prompt base incha. Toda conversa paga o custo em tokens de todos os workflows, inclusive os que nunca são acionados.
  • Políticas importantes se perdem no meio. “Nunca apague bancos de dados de produção” fica ao lado de “No código de cobrança, verifique as chaves de idempotência”, e o agent trata as duas com o mesmo peso.
  • Workflows especializados não podem ser reaproveitados. Aquele checklist caprichado de revisão de migração fica preso no rules file de um único projeto.
  • A manutenção é sofrida. Mudar um único procedimento significa editar um bloco gigante de texto e torcer para nada mais quebrar.
  • O debug fica mais difícil. Quando o agent se comporta mal, rastrear a causa em um paredão de assuntos misturados é tedioso.

Rules deveriam ser guardrails: políticas curtas, sempre ativas, que moldam o comportamento em qualquer tarefa. Quando você as sobrecarrega com procedimentos específicos de uma tarefa, está usando a ferramenta errada para o trabalho.

Leia também: Boas práticas em React: separação de responsabilidades e otimização de código

O que são agent skills?

Uma skill é uma pasta autocontida que empacota um workflow específico ou uma área de expertise:

my-skill/
├── SKILL.md          # Obrigatório: instruções + metadados
├── scripts/          # Opcional: código executável
├── references/       # Opcional: documentação
└── assets/           # Opcional: templates, recursosCode language: PHP (php)

O arquivo SKILL.md é o ponto de entrada. O frontmatter dele traz um nome e uma descrição, e o corpo traz as instruções propriamente ditas.

Veja um exemplo real de skill que aplica Inversão de Dependência a um módulo:

---
name: dependency-inversion
description:
  Refactor a module to follow the Dependency Inversion Principle by extracting
  interfaces, inverting concrete dependencies, and wiring via injection. Use
  when the user asks to decouple modules, invert dependencies, extract an
  interface, apply SOLID principles, or improve testability of tightly coupled
  code.
---

Decouples modules by replacing direct imports of concrete implementations with
injected abstractions, improving testability and swappability.

## Dependency Inversion Progress:

- [ ] Step 1: Identify concrete dependencies in the target module
- [ ] Step 2: Extract an interface (port) for each dependency
- [ ] Step 3: Update the module to depend on the interface, not the concrete
- [ ] Step 4: Create an adapter implementing the interface for the original concrete
- [ ] Step 5: Wire the adapter via constructor or factory injectionCode language: CSS (css)

As skills usam progressive disclosure para gerenciar o contexto em três estágios:

  1. Descoberta. Na inicialização, os agents carregam apenas o nome e a descrição de cada skill disponível. São poucos tokens por skill, o suficiente para saber quando cada uma se aplica.
  2. Ativação. Quando uma tarefa combina com a descrição de uma skill, o agent carrega o SKILL.md completo no contexto.
  3. Execução. O agent segue as instruções, carregando arquivos referenciados ou rodando os scripts empacotados conforme a necessidade.

Um projeto pode ter dezenas de skills instaladas. O agent só paga o custo em tokens das que realmente usa em cada conversa.

Antes e depois

Um padrão que aparece o tempo todo. Veja:

Antes, tudo mora nas rules:

  • “Sempre pergunte antes de ações arriscadas”
  • “Não adicione novas dependências sem aprovação”
  • “No código de cobrança, verifique a idempotência”
  • “Em migrações, confira os caminhos de rollback”

As quatro instruções carregam em todo prompt, sempre. As duas últimas são irrelevantes, a menos que a pessoa esteja mexendo justamente em cobrança ou em migrações.

Depois: rules curtas, com a expertise movida para skills

Rules (sempre carregadas):

  • Pergunte antes de ações arriscadas
  • Não adicione novas dependências sem aprovação

Skills (carregadas sob demanda):

  • billing-review: verificações de idempotência, casos extremos de pagamento
  • migration-review: caminhos de rollback, verificação de integridade dos dados

As rules seguem focadas em políticas universais. O conhecimento especializado só entra em cena quando é preciso.

Números reais

Um projeto React real migrou de uma configuração só com rules para rules mais skills, e o impacto em tokens na inicialização do prompt foi medido:

ConfiguraçãoComponenteTokens
Antesoverview.md (rule sempre ativa)1.636
patterns.md (rule sempre ativa)3.137
structure.md (rule sempre ativa)2.348
Total7.121
Depoisproject.md (rule sempre ativa)1.911
feature-flags (frontmatter da skill)71
feature-screen-creator (frontmatter da skill)61
react-component (frontmatter da skill)59
redux-state-management (frontmatter da skill)67
unit-tests (frontmatter da skill)44
Total2.213

Isso dá uma redução de 4.908 tokens na inicialização, 69% menos contexto consumido antes mesmo de o agent começar a trabalhar. As instruções completas das skills continuam existindo e continuam sendo usadas. Elas só não carregam antes de o agent precisar delas.

Skills x rules: quando usar cada uma

Skills e rules resolvem problemas diferentes:

DimensãoRulesSkills
Objetivo principalMoldar o comportamentoEnsinar um workflow
EscopoAmplo, vale para todas as tarefasMais restrito, focado em uma tarefa
Quando fica ativaSempreSó quando é relevante
Conteúdo típicoPolíticas, prioridades, tom, segurançaProcedimentos, exemplos, referências, templates
Melhor usoGuardrails e consistênciaKnow-how especializado e reutilizável

Use rules para políticas universais, que devem valer em toda interação.

  • “Pergunte antes de ações destrutivas.”
  • “Use conventional commits.”
  • “Prefira composição a herança.”

Use skills para workflows específicos, que só importam em determinados contextos.

  • “Como escrever um teste e2e com Playwright.”
  • “Como criar a estrutura de um novo endpoint de API.”
  • “Como revisar código de cobrança em busca de casos extremos de pagamento.”

Leia também: Machine Learning explicado: o que é, como funciona e por que importa para o negócio

Onde as agent skills se encaixam ao lado de MCPs e subagents

Skills não são a única forma de ampliar as capacidades de um agent. Outros dois padrões, servidores MCP e subagents, resolvem problemas diferentes.

MCP (Model Context Protocol)

O MCP dá aos agents uma forma padronizada de se conectar a ferramentas externas, fontes de dados e aplicações. É como uma porta USB para o agent acessar sistemas em execução.

DimensãoSkillsMCPs
Papel principalEnsinar ao agent como trabalharPermitir que o agent acesse sistemas
O que contémInstruções, workflows, expertiseConectividade reutilizável
Uso de contextoSó quando a skill é carregadaSó quando a ferramenta é usada
Exemplo“Como revisar um PR”“Servidor MCP do GitHub com as APIs de PR”

Skills e MCPs se complementam. Uma skill ensina ao agent como usar as ferramentas que um MCP oferece. A skill diz “este é o workflow para revisar um PR”. O MCP dá o acesso à API do GitHub para buscar diffs e publicar comentários.

Vale registrar: as respostas das ferramentas MCP também consomem os limites de tokens. Payloads grandes vindos de chamadas MCP enchem a context window rápido, o que deixa o argumento do contexto enxuto a favor das skills ainda mais forte.

Subagents

Subagents são instâncias de trabalho especializadas, que cuidam de subtarefas de forma independente e muitas vezes em paralelo.

DimensãoSkillsSubagents
Papel principalFornecer expertise ou workflowFornecer delegação e paralelismo
FormatoPacote de conhecimento e instruçõesInstância de trabalho adicional
O que resolve“Como esta tarefa deve ser feita?”“Quem deve fazer esta subtarefa?”
Exemplo“Checklist de revisão de segurança”“Suba um worker de revisão de segurança e outro para corrigir testes”

Skills dizem ao agent o que fazer. Subagents cuidam de quem faz. Um subagent pode até carregar uma skill para aprender a executar a tarefa que recebeu.

Escolhendo a ferramenta certa

MecanismoQuando usarExemplo
RulesGuardrails universais, que precisam estar sempre ativos“Nunca apague bancos de dados de produção.”
SkillsWorkflows de tarefas reutilizáveis, padrões de código, convenções do projeto“Como escrever um teste e2e com Playwright.”
MCPsConexões ao vivo com APIs externas, bancos de dados ou sistemas fechados“Consulte o JIRA para pegar os últimos relatórios de bug.”
SubagentsTrabalho pesado e tarefas paralelas, para poupar a context window do agent principal“Vasculhe 100 arquivos de log em busca de um memory leak específico.”

Esses mecanismos se somam em camadas: rules para os guardrails de segurança, skills para os workflows do time, MCPs para o acesso a ferramentas e subagents para o trabalho que dá para paralelizar.

Por que isso importa para os times

Economizar tokens importa. O ganho organizacional importa ainda mais. As skills transformam o conhecimento do time em artefatos portáteis e versionados, que qualquer agent consegue pegar e executar.

Quando uma pessoa sênior escreve uma skill de security-review, todo mundo do time passa a ter o mesmo checklist de revisão, do recém-chegado ao veterano. O conhecimento deixa de morar na cabeça de alguém ou em uma página do Confluence que ninguém lê. Ele passa a morar onde o agent usa.

Como compartilhar skills entre times

Skills são pastas. Distribua com as ferramentas que os devs já usam. Os runtimes de agent que suportam skills reconhecem vários escopos de instalação:

EscopoLocalQuem se beneficiaExemplo
Projeto.cursor/skills/ ou .claude/skills/ no repoTodo mundo no projetomigration-review para um schema de banco específico
Usuário~/.cursor/skills/ ou ~/.claude/skills/Você, em todos os projetostechnical-blog-writing para o seu workflow pessoal
Time / organizaçãoCompartilhado via Git ou um registryTodo mundo na organizaçãoapi-design com os padrões de API da sua empresa

Skills com escopo de projeto entram no commit do repo e viajam junto com ele. Skills com escopo de usuário são pessoais: seu estilo de código preferido, seu workflow de escrita.

Para distribuir no time, o caminho mais simples é um repo Git compartilhado. Aponte um diretório do seu projeto para ele via submodule e as atualizações chegam a cada pull:

git submodule add https://github.com/your-org/shared-skills .claude/skills/shared

Um ponto de partida prático

Por onde começar:

  1. Audite o seu rules file. Tudo que for específico de uma tarefa é candidato a virar skill.
  2. Comece por uma skill de alto valor. Escolha o workflow que o seu time mais repete: escrita de testes, revisão de PR, criação da estrutura de um serviço.
  3. Coloque no repo. Skills com escopo de projeto não exigem infraestrutura nenhuma. Faça o commit da pasta e o agent de cada pessoa do time passa a reconhecê-la automaticamente.
  4. Itere com base no uso. Observe como o agent ativa a skill. Ajuste a descrição se ela dispara demais ou de menos. Aperte as instruções quando o agent pular etapas.
  5. Promova para compartilhar. Quando uma skill provar seu valor em um projeto, mova para um repositório compartilhado ou um registry e amplie o alcance.

Trade-offs e limitações

As agent skills também têm suas limitações:

  • A descoberta depende da qualidade da descrição. Se a descrição da skill não bate com a forma como as pessoas escrevem os pedidos, o agent não vai ativá-la. Escrever boas descrições de gatilho exige iteração.
  • Skills são mais uma coisa para manter. Elas ficam desatualizadas do mesmo jeito que a documentação. Uma skill velha, que ensina o workflow errado, é pior do que nenhuma skill.
  • Nem todo runtime de agent suporta skills ainda. O padrão vem ganhando tração, mas não está universalmente padronizado. Confira na documentação da sua ferramenta o suporte atual.
  • Overhead em projetos pequenos. Se o seu rules file tem 500 tokens e cobre tudo o que você precisa, extrair skills só adiciona complexidade organizacional, sem economia real de tokens.

Conclusão

Se o seu rules file já está parecendo bagunçado, você sabe. Faz tempo que você passa direto por certas seções pensando “isso não deveria estar aqui”. Confie nesse instinto. Tire aquele trecho e coloque em uma pasta de skill. Dê um nome e uma descrição. Veja no que dá.

Leituras recomendadas

Banner da Cheesecake Labs sobre modernização de aplicações legadas

FAQ

Qual é o problema de colocar procedimentos específicos de tarefas nos rules files?

O rules file vai crescendo até virar um manual de operação de milhares de tokens que carrega em toda interação com o agent. O prompt base incha, políticas importantes se perdem no meio de instruções específicas, workflows especializados ficam presos em um único projeto, a manutenção fica sofrida e o debug fica mais difícil. Rules deveriam ser guardrails: políticas curtas, sempre ativas, que moldam o comportamento em qualquer tarefa.

O que é uma agent skill e como ela é estruturada?

Uma skill é uma pasta autocontida que empacota um workflow específico ou uma área de expertise. Ela tem um arquivo SKILL.md obrigatório, com frontmatter (nome e descrição) e as instruções no corpo, além de pastas opcionais: scripts/ (código executável), references/ (documentação) e assets/ (templates e recursos).

Como as skills economizam contexto?

Elas usam progressive disclosure em três estágios: na descoberta, o agent carrega apenas o nome e a descrição de cada skill; na ativação, quando a tarefa combina com a descrição, carrega o SKILL.md completo; na execução, carrega arquivos referenciados ou roda scripts conforme a necessidade. Em um projeto React real, migrar de só rules para rules mais skills reduziu o contexto de inicialização de 7.121 para 2.213 tokens, uma redução de 4.908 tokens (69%).

Quando usar rules, skills, MCPs e subagents?

Rules servem para guardrails universais que precisam estar sempre ativos (ex.: 'Nunca apague bancos de dados de produção'). Skills servem para workflows reutilizáveis, padrões de código e convenções do projeto (ex.: 'Como escrever um teste e2e com Playwright'). MCPs dão conexões ao vivo com APIs externas, bancos de dados ou sistemas fechados. Subagents cuidam de trabalho pesado e tarefas paralelas, poupando a context window do agent principal. Esses mecanismos se somam em camadas.

Como compartilhar skills e por onde começar?

Skills são pastas e podem ser instaladas em escopo de projeto (.cursor/skills/ ou .claude/skills/ no repo), de usuário (~/.cursor/skills/ ou ~/.claude/skills/) ou de time/organização (via Git ou registry, por exemplo com git submodule). Para começar: audite o rules file e transforme o que for específico de tarefa em skill, comece por uma skill de alto valor (o workflow mais repetido pelo time), coloque no repo e itere com base no uso, ajustando a descrição e as instruções.