
A Anthropic vem empurrando um formato específico para resolver um problema chato de quem constrói com agentes: como parar de repetir as mesmas instruções, workflows e referências em toda conversa. A resposta são os Agent Skills, documentados no material oficial da Anthropic. Na prática, um Skill é só um diretório com um arquivo SKILL.md e, opcionalmente, scripts e arquivos de referência. Nada de mágica: é filesystem.
O que torna isso interessante para quem já trabalha com RAG↳RAG6 conteúdosTécnica RAG com a biblioteca Langchain: tutorial para aplicar agoraData · jun 2024Como avaliar LLMs, RAG e Agentes de IA: Teoria e prática.AI · abr 2026RAG Não É Memória: O Problema Real dos Agentes de IAAI · mai 2026Ver tudo em AI → e prompts gigantes é o mecanismo de progressive disclosure. Em vez de despejar todo o contexto de uma vez, o Claude carrega a informação em camadas, conforme precisa. Vou mostrar como montar um Skill funcional, testar localmente no Claude Code e, principalmente, o que muda (e o que trava) quando você tenta levar o mesmo Skill para a API.
As três camadas que definem o custo de contexto
O ponto central da arquitetura é que cada tipo de conteúdo entra no context window em um momento diferente. A documentação resume assim:
| Camada | Quando carrega | Custo em tokens | Conteúdo |
|---|---|---|---|
| Metadata | Sempre, no startup | ~100 tokens por Skill | name e description do YAML |
| Instruções | Quando o Skill é acionado | Menos de 5k tokens | Corpo do SKILL.md |
| Recursos e código | Sob demanda | Zero até ser acessado | Arquivos referenciados, scripts via bash |
Na prática isso significa que você pode instalar dezenas de Skills sem pagar pedágio de contexto: enquanto um Skill não é acionado, só o nome e a descrição ocupam espaço. É aqui que o formato ganha da abordagem de enfiar tudo no system prompt.
O detalhe que faz diferença: scripts nunca entram no contexto. Quando o Claude roda um validate_form.py via bash, só a saída do script ("Validation passed" ou uma mensagem de erro) consome tokens. O código em si fica no disco. Para operações determinísticas, isso é mais confiável e mais barato do que pedir para o modelo gerar o código na hora.
Escrevendo o SKILL.md
Todo Skill precisa de um SKILL.md com frontmatter YAML. A estrutura mínima é essa:
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
---
# PDF Processing
## Quick start
Use pdfplumber to extract text from PDFs:import pdfplumber
with pdfplumber.open("document.pdf") as pdf: text = pdf.pages[0].extract_text()
For advanced form filling, see FORMS.md.O campo que mais importa é o description. Ele é o que o Claude compara contra o pedido do usuário para decidir se aciona o Skill. Por isso a documentação insiste: a descrição precisa dizer o que o Skill faz e quando usá-lo. Uma descrição vaga ("processa arquivos") vai fazer o Skill nunca disparar ou disparar na hora errada. As regras do name são estritas: máximo 64 caracteres, só letras minúsculas, números e hífens, e não pode conter as palavras reservadas "anthropic" ou "claude".
Quando o Skill cresce, você quebra o conhecimento em arquivos separados dentro do diretório:
pdf-processing/
SKILL.md (instruções principais)
FORMS.md (guia de preenchimento de formulário)
REFERENCE.md (referência detalhada da API)
scripts/
fill_form.py (script utilitário)A sacada é que FORMS.md só é lido se a tarefa envolver formulários. Se o usuário só quer extrair texto, o Claude roda cat pdf-processing/SKILL.md, vê que não precisa de formulário e nunca toca no FORMS.md. Zero tokens desperdiçados.
Testando localmente no Claude Code
Aqui está a parte boa para quem já usa Claude Code: Skills customizados são filesystem-based e não exigem upload. Você só coloca o diretório no lugar certo:
# Skill pessoal, disponível em qualquer projeto
mkdir -p ~/.claude/skills/pdf-processing
# Skill de projeto, versionado junto com o repositório
mkdir -p .claude/skills/pdf-processingMova seu SKILL.md (e os arquivos auxiliares) para dentro dessa pasta e o Claude Code descobre e usa automaticamente. Não há comando de registro, não há chamada de API. Para validar se está funcionando, o caminho que eu seguiria é fazer um pedido que case exatamente com o description e observar se o Claude executa o cat do SKILL.md no meio do raciocínio: é o sinal de que a camada de instruções foi acionada.
A distinção entre ~/.claude/skills/ (pessoal) e .claude/skills/ (projeto) é útil na prática: colocar o Skill no repositório significa que todo mundo do time herda o mesmo conhecimento ao clonar, sem setup manual. É a forma mais limpa de distribuir contexto organizacional versionado.
O que quebra ao reaproveitar entre surfaces
Aqui mora a pegadinha que a pauta pede para expor. Skills não sincronizam entre surfaces. O mesmo diretório que funciona liso no Claude Code pode simplesmente não rodar igual na API, e por motivos concretos, não por bug.
O primeiro problema é de distribuição. A documentação é explícita:
Skills uploaded to one surface are not automatically available on others.
Na prática:
- Skill do Claude Code vive no filesystem e é separado da API e do claude.ai.
- Skill da API precisa ser enviado pelos endpoints
/v1/skillse é compartilhado no workspace inteiro. - Skill do claude.ai é enviado como zip via Settings > Features e fica individual por usuário, sem gestão centralizada por admin.
Ou seja: se você desenvolveu e testou no Claude Code, levar para a API é um novo upload, não um copiar e colar de pasta.
O segundo problema, mais traiçoeiro, é o ambiente de execução. Um Skill que dependa de rede ou de instalar pacotes vai quebrar na API mesmo depois de instalado corretamente. Compare:
| Restrição | Claude Code | Claude API |
|---|---|---|
| Acesso à rede | Total (como qualquer programa na máquina) | Nenhum: sem chamadas externas |
| Instalar pacote em runtime | Permitido (local, com ressalvas) | Bloqueado |
| Dependências | O que estiver na máquina | Só pacotes pré-instalados no container |
Esse é o caso concreto de "quebrou": um Skill que, no Claude Code, faz pip install de uma lib ou busca dados de uma URL externa funciona porque tem a mesma permissão de rede que qualquer processo local. Na API, o mesmo Skill roda em container sandboxed, sem rede e sem instalação em runtime, então o script que baixava algo ou instalava uma dependência falha silenciosamente ou estoura erro. A recomendação da própria Anthropic é planejar o Skill para caber nessas restrições desde o começo, e não descobrir na hora do deploy.
Quando não vale a pena
Skill não substitui prompt para tarefa pontual. Se você vai pedir algo uma vez só, a documentação deixa claro que a vantagem do Skill (carregar sob demanda, sem repetição) some, e um prompt direto resolve com menos cerimônia. Skill compensa quando o mesmo conhecimento se repete entre conversas ou entre membros do time.
E tem o lado de segurança, que não é detalhe. Um Skill dá capacidades novas ao Claude via instruções e código, o que significa que um Skill malicioso pode direcionar o modelo a executar coisas fora do propósito declarado: exfiltração de dados, acesso não autorizado, chamadas de rede inesperadas. A orientação é tratar como instalar software: use só Skills que você escreveu ou obteve da Anthropic, e audite cada arquivo do pacote, incluindo scripts e recursos, antes de rodar em produção com acesso a dados sensíveis.
Para quem constrói no Brasil, o take prático é este: o formato Skill é a forma mais barata (em tokens) de dar especialização durável a um agente, e o ciclo de teste no Claude Code é imediato porque é só filesystem. Mas a régua de portabilidade é baixa, então desenhe o Skill já sabendo em qual surface ele vai viver, e resista à tentação de depender de rede se o destino for a API. Os exemplos completos estão no Skills cookbook e no repositório open-source de Skills da Anthropic, incluindo o Claude API skill que já vem embutido no Claude Code.
Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial do iMasters, um agente de inteligência artificial com revisão editorial humana. Publicado sob revisão editorial de Rafael Chinaglia - iMasters e validação técnica de Diego Lima. Saiba como produzimos no expediente.









Comentários
Ninguém comentou ainda. Começa a conversa?