Apostila · Skills de IA, volume II de VI

O mesmo
ficheiro,
sítios diferentes

O SKILL.md é idêntico em toda a parte. O que muda — e muda mais do que se espera — é a pasta onde se põe, o símbolo com que se chama, a ordem de precedência quando há conflitos, e a dúzia de campos que cada ferramenta acrescenta por cima da norma. Este volume percorre Claude Code, Codex, Cursor, GitHub Copilot e o VS Code, Gemini CLI, claude.ai e a API, verificados nas fontes de cada fornecedor.

12 capítulosdas pastas ao governo em equipa
1 demo ao vivoda mesma skill em quatro ferramentas
6 fontesem ficha padronizada e datada

↓ role para começar

Capítulo 01 Fundamento

O mesmo ficheiro, sítios diferentes

O SKILL.md é o mesmo em toda a parte. O que muda — e muda mais do que se espera — é onde se põe, como se chama e o que cada ferramenta acrescenta por cima.

1.1 O mapa das pastas

FerramentaProjetoPessoalOutros
Claude Code.claude/skills/~/.claude/skills/Empresa (definições geridas), plugins
Codex / ChatGPT.agents/skills/
(na pasta actual e na raiz do repositório)
~/.agents/skills//etc/codex/skills (administração), embutidas
Cursor.agents/skills/
.cursor/skills/
~/.agents/skills/
~/.cursor/skills/
Lê também as do Claude e do Codex
Gemini CLI.gemini/skills/
.agents/skills/
~/.gemini/skills/
~/.agents/skills/
Embutidas, extensões
A observação que vale por todo o capítulo

Olhe para a coluna do projeto. .agents/skills/ aparece no Codex, no Cursor e no Gemini CLI — três fornecedores concorrentes a convergir na mesma pasta neutra, sem marca de ninguém.

O Claude Code usa .claude/skills/. Não é um problema — o Cursor lê as duas, e nada impede que um repositório tenha ambas. Mas é a decisão prática número um deste volume, e é tratada no capítulo 7.

1.2 Como se chama uma skill, em cada uma

FerramentaExplícitoAutomáticoGerir
Claude Code/nome-da-skill, com argumentos, e várias encadeadasSim, pela description/skills, /skill-doctor
ChatGPT@nome na conversaSimInterface
Codex CLI$nomeSim$skill-creator, $skill-installer
Cursor/ no chat do agenteSimModo personalizado (Option+Enter)
Gemini CLI/skills activate <nome>Sim, com pedido de consentimento/skills list, gemini skills install

Três símbolos diferentes para a mesma acção — /, @ e $. É trivial e é a primeira coisa que confunde quem alterna entre ferramentas.

1.3 Uma diferença que morde: a ordem de precedência

Duas ferramentas, ordens opostas

Quando duas skills têm o mesmo nome em níveis diferentes, qual ganha?

No Claude Code: empresa > pessoal > projeto. A sua skill pessoal sobrepõe-se à do projeto.

No Gemini CLI: embutidas < extensões < utilizador < espaço de trabalho. A do projeto sobrepõe-se à pessoal — exactamente o contrário.

No Codex: não funde nada — ambas aparecem no selector e quem escolhe é quem pede.

Nenhuma das três está errada; são decisões defensáveis diferentes. Mas significa que a mesma configuração produz comportamentos opostos conforme a ferramenta, e é uma origem de confusão que não se descobre a ler documentação de uma só.

1.4 O que este volume é

Delimitação e validade

Volume II de seis. Trata de onde e como, por ferramenta, e do uso por quem não programa (capítulo 5). O volume I trata do formato e de como se escreve uma skill que funcione — e é pressuposto aqui.

É o volume mais volátil da série, e assume-o: tudo o que se segue foi verificado nas fontes primárias de cada fornecedor em setembro de 2026, e as ligações estão no capítulo 12. O método — como se descobre onde uma ferramenta põe as skills, como se testa a portabilidade, como se diagnostica — dura mais que qualquer caminho de pasta.

Exercício 1.1 — Onde estão as suas

Na ferramenta que usa, liste as skills disponíveis com o comando da tabela 1.2 e descubra de que pasta vem cada uma. Se usa duas ferramentas, faça em ambas e compare. É frequente descobrir que uma delas não está a ver metade.

Capítulo 02 Ferramenta

Claude Code: a implementação mais completa

É a que mais estende o formato — o que a torna a mais poderosa e a que mais facilmente produz skills que só funcionam ali.

2.1 Onde põe, e o que descobre

ÂmbitoCaminhoVale para
Empresa.claude/skills/<nome>/SKILL.md nas definições geridasTodos os utilizadores da organização
Pessoal~/.claude/skills/<nome>/SKILL.mdTodos os seus projetos
Projeto.claude/skills/<nome>/SKILL.mdSó este projeto
Plugin<plugin>/skills/<nome>/SKILL.mdOnde o plugin estiver activo

Descobre também em pastas acima, até à raiz do repositório, e em pastas aninhadas abaixo — o que resolve bem o caso do monorepo: uma skill em apps/web/.claude/skills/ carrega quando o agente trabalha nessa subpasta, e fica disponível como apps/web:nome.

Uma comodidade que muda o ritmo de trabalho

O Claude Code vigia as pastas de skills e apanha alterações na sessão em curso, sem reiniciar. Editar o SKILL.md e testar imediatamente torna o ciclo de escrita e avaliação do volume I, cap. 8 muito mais rápido — e é a razão pela qual compensa desenvolver skills aqui mesmo que o destino seja outra ferramenta.

2.2 Invocar

# directa
/nome-da-skill

# com argumentos
/nome-da-skill argumento1 argumento2

# várias encadeadas, com argumentos no fim
/skill-1 /skill-2 argumentos

E automaticamente, pela description, a menos que a skill declare disable-model-invocation: true.

2.3 Os dois comandos que valem a pena conhecer

2.4 Os campos que só existem aqui

O Claude Code acrescenta uma dúzia de campos que não fazem parte da especificação:

CampoFaz
disable-model-invocationSó a pessoa pode invocar; o agente não
user-invocable: falseO inverso: só o agente
pathsLimita a skill a ficheiros que correspondam ao padrão
context: forkCorre num subagente isolado, sem sujar o contexto principal
backgroundEspera ou não pelo resultado
arguments, argument-hintArgumentos nomeados, para substituição no corpo
model, effortEscolhe o modelo e o esforço para esta skill
hooks, shell, agentIntegração com o resto do sistema
O que isto custa

São genuinamente úteis — context: fork e paths resolvem problemas reais. E cada um que usar torna a skill menos portável. Ao enviar para o claude.ai ou para a API, só os campos da especificação funcionam: name, description, license, compatibility e allowed-tools.

Não é uma razão para não os usar. É uma razão para decidir de antemão se aquela skill é portável ou é de casa, que é o assunto do capítulo 7.

2.5 Controlar o que aparece

// .claude/settings.local.json
{
  "skillOverrides": {
    "deploy": "off",                    // esconder por completo
    "legacy": "name-only",              // listar só o nome, sem descrição
    "review": "user-invocable-only"     // esconder do agente; a pessoa pode invocar
  },
  "disableBundledSkills": true,
  "skillListingBudgetFraction": 0.02,   // fatia do contexto para a listagem
  "skillListingMaxDescChars": 1536
}

O skillListingBudgetFraction é a resposta directa ao problema do volume I: há um orçamento de contexto para as descrições, e quando é ultrapassado as descrições são encurtadas — o que degrada a activação sem avisar. /skill-doctor mostra quando isso está a acontecer.

Exercício 2.1 — Corra o diagnóstico

Corra /skill-doctor e olhe para duas colunas: quais nunca foram usadas, e quanto custam em tokens. Desligue com skillOverrides as que não usa há um mês — não as apague, para poder voltar atrás — e volte a correr passada uma semana.

Capítulo 03 Ferramenta

Codex e ChatGPT: a mesma norma, outra casa

A implementação da OpenAI usa a pasta neutra, tem um instalador próprio, e é a única que dá acesso a skills a quem nunca abriu um terminal.

3.1 Onde põe

ÂmbitoCaminhoPara
Repositório (pasta actual)$CWD/.agents/skillsSkills específicas daquela pasta
Repositório (raiz)$REPO_ROOT/.agents/skillsSkills de toda a organização do repositório
Utilizador$HOME/.agents/skillsPessoais, entre repositórios
Administração/etc/codex/skillsPredefinições do sistema
SistemaEmbutidas no Codexskill-creator e outras
A diferença de filosofia, num detalhe

Repare no nome da pasta: .agents/, não .codex/. É uma escolha deliberada de neutralidade — a mesma pasta serve qualquer agente que respeite a norma, e é a razão pela qual o Cursor e o Gemini CLI também a leem.

E note a segunda diferença: quando duas skills partilham nome, o Codex não funde nem escolhe — mostra as duas no selector e deixa a decisão a quem pede. É mais transparente que a precedência silenciosa do capítulo 1.3, e obriga a escolher todas as vezes.

3.2 Invocar

3.3 As duas skills embutidas que interessam

SkillFaz
$skill-creatorConstrói uma skill nova, interactivamente — o equivalente ao do repositório oficial da Anthropic
$skill-installerDescarrega skills curadas a partir de repositórios. Não tem equivalente directo nas outras ferramentas

O instalador é conveniente e é exactamente onde o capítulo 11 do volume I se aplica com mais força: instalar com um comando não dispensa ler o que se instalou.

3.4 O ficheiro de configuração extra

Para além do SKILL.md, o Codex admite um agents/openai.yaml opcional com:

É a mesma decisão de desenho do Claude Code — estender o formato — resolvida ao contrário: as extensões ficam num ficheiro à parte em vez de no cabeçalho. Tem uma vantagem concreta de portabilidade: o SKILL.md mantém-se limpo e válido em qualquer ferramenta; outra simplesmente ignora o ficheiro extra.

3.5 O limite de listagem

Um número explícito, e o que acontece ao ultrapassá-lo

O Codex reserva para a lista inicial de skills no máximo 2% da janela de contexto, ou 8000 caracteres quando a janela é desconhecida. Com muitas skills instaladas, omite algumas e mostra um aviso.

É o mesmo problema do skillListingBudgetFraction do Claude Code, resolvido de forma diferente: aqui algumas skills desaparecem da lista; ali as descrições são encurtadas. Nos dois casos, o sintoma é o mesmo — uma skill que funcionava deixa de disparar quando se instalam mais, e ninguém liga uma coisa à outra.

3.6 Desligar

# ~/.codex/config.toml
[[skills.config]]
# entradas para desactivar skills concretas
Exercício 3.1 — A mesma skill nas duas pastas

Copie uma skill sua para .agents/skills/ e para .claude/skills/ no mesmo repositório. Abra as duas ferramentas e confirme que ambas a veem. Depois altere só uma das cópias e repare no que acontece — é o problema do capítulo 7.

Capítulo 04 Ferramenta

Cursor, Copilot, Gemini CLI, e os outros quarenta

Três implementações com decisões próprias interessantes — uma delas dentro do editor mais usado do mundo —, e a constatação de que a lista de ferramentas compatíveis já é grande demais para caber num capítulo.

4.1 Cursor: lê as pastas de toda a gente

ÂmbitoCaminhos
Projeto.agents/skills/ e .cursor/skills/
Utilizador~/.agents/skills/ e ~/.cursor/skills/

E, por compatibilidade, carrega também as pastas do Claude e do Codex — é a implementação mais tolerante entre os editores dedicados. Só o VS Code lê mais (4.3). Descobre recursivamente qualquer subpasta que contenha um SKILL.md, o que permite organizar por temas sem configuração.

Duas coisas próprias do Cursor

Modo personalizado. Com Option+Enter (ou Alt+Enter), uma skill fica activa durante toda a sessão em vez de por pedido. É um modelo de uso diferente dos outros — a skill deixa de ser algo que dispara e passa a ser um modo de trabalho. Os campos icon e color servem para distinguir esses modos visualmente.

E uma limitação a ter presente: o Cursor não copia ~/.agents/skills/ nem skills locais não sincronizadas para agentes na nuvem. Uma skill que funciona na sua máquina pode não existir num agente remoto — é a versão desta ferramenta do problema do capítulo 6.

4.2 Gemini CLI: consentimento explícito

Precedência, do menor para o maior: embutidas < extensões < utilizador (~/.gemini/skills/ ou ~/.agents/skills/) < espaço de trabalho (.gemini/skills/ ou .agents/skills/).

# na sessão
/skills list [all] [nodesc]
/skills activate <nome>
/skills disable <nome>   /skills enable <nome>
/skills reload

# no terminal
gemini skills list --all
gemini skills install <url-do-repositório> --consent
gemini skills uninstall <nome> --scope workspace
A decisão de desenho mais interessante das quatro

Quando o Gemini identifica uma tarefa que corresponde a uma skill, chama uma ferramenta activate_skill e mostra-lhe um pedido de consentimento — com o propósito da skill e o acesso a pastas que exige — antes de a injectar no contexto.

É uma resposta directa ao risco do volume I, cap. 11: a activação deixa de ser silenciosa. O custo é fricção em cada uso; o ganho é que uma skill maliciosa tem de passar por si antes de agir. Repare também no --consent obrigatório na instalação — a mesma filosofia, no outro extremo.

4.3 GitHub Copilot e VS Code: seis pastas, e uma divergência interna

É a implementação com maior alcance de todas — não por ser a melhor, mas por estar onde as pessoas já estão. E é a mais permissiva a ler: seis caminhos, três de projeto e três pessoais.

ÂmbitoCaminhos
Projeto.github/skills/, .claude/skills/, .agents/skills/
Pessoal~/.copilot/skills/, ~/.claude/skills/, ~/.agents/skills/

Repare no primeiro: .github/skills/ é o único caso, em todo este volume, em que uma ferramenta põe as skills numa pasta que a equipa já tem e já revê. Não é um detalhe de arrumação — é a diferença entre uma skill que passa por code review como qualquer outro ficheiro e uma que vive numa pasta que ninguém abre.

E é a única que deixa acrescentar caminhos por configuração, com chat.agentSkillsLocations; e ler as personalizações do repositório-pai, com chat.useCustomizationsInParentRepositories — o que resolve o caso do monorepo, que nas outras ferramentas se resolve com ligações simbólicas.

Invoca-se por barra, com argumentos a seguir:

# escreva / para ver a lista
/webapp-testing para a página de entrada
A ideia de desenho que mais vale a pena roubar

Todas as outras ferramentas tratam «uma pessoa pode chamar isto» e «o modelo pode chamar isto sozinho» como a mesma coisa. O VS Code separa-as em dois interruptores independentes:

CampoOmissãoPara que serve
user-invocabletrueSe aparece na lista da barra
disable-model-invocationfalseSe o modelo a pode carregar por iniciativa própria
argument-hint—Sugestão de argumentos, à frente do nome
context: fork—Experimental. Corre a skill num subagente com contexto próprio

São quatro combinações, e as duas do meio são as que interessam. Só do utilizador (disable-model-invocation: true) é para o procedimento perigoso — publicar, migrar, apagar — que deve existir mas nunca disparar sozinho. Só do modelo (user-invocable: false) é para a convenção de fundo que ninguém quer ver numa lista mas que deve aplicar-se sempre. Nas outras ferramentas, obter isto exige escrever a proibição na descrição e torcer para que o modelo obedeça.

A divergência que confirma o capítulo 6, e desta vez dentro do mesmo fornecedor

O agente na nuvem do Copilot e o VS Code não documentam o mesmo conjunto de campos. O VS Code descreve argument-hint, user-invocable, disable-model-invocation e context. A documentação do agente na nuvem descreve license e allowed-tools — este último pré-aprova ferramentas de linha de comandos sem pedir confirmação, que é uma decisão de segurança, não de conforto.

Ou seja: a mesma skill, no mesmo produto, com o mesmo nome, obedece a campos diferentes conforme a superfície — e nenhum dos dois lados avisa que ignorou um campo do outro. É a lição do capítulo 6 sem sequer ser preciso mudar de fornecedor.

Um aviso que a própria GitHub publica e que vale a pena repetir: as skills não são verificadas por ninguém e podem conter injecções de instruções, instruções escondidas ou scripts maliciosos. Numa pasta como .github/skills/, que entra no repositório por pull request, isto é um argumento a favor — é revista como código. Numa pasta pessoal instalada à pressa, não é.

4.4 E os outros

À data desta apostila, o registo oficial da norma lista cerca de meia centena de produtos compatíveis. Alguns que interessam a públicos diferentes:

ProdutoContexto
JetBrains JuniePara quem trabalha em IntelliJ, PyCharm e afins — o Copilot também corre aqui em modo agente
Goose, OpenCode, OpenHands, Roo CodeAgentes de código abertos, agnósticos quanto ao modelo
Amp, Factory, Kiro, OnaPlataformas de desenvolvimento com agentes
Laravel BoostSkills específicas de uma framework — um padrão que vai crescer
Databricks, Snowflake Cortex, Pulumi NeoAgentes dentro de plataformas de dados e de infraestrutura
Spring AI, fast-agent, LettaPara quem constrói agentes e quer suportar a norma
Como verificar, em vez de acreditar nesta tabela

Esta lista vai estar desactualizada. O registo oficial de clientes da norma (agentskills.io/clients) mantém a lista viva, com ligação à documentação de cada produto — e é sempre a fonte a consultar antes de assumir que uma ferramenta suporta ou não suporta.

O padrão que se observa e que provavelmente dura: a maioria adopta .agents/skills/, lê também as pastas dos concorrentes, e acrescenta os seus próprios campos por cima. É a forma normal de uma norma se consolidar.

Exercício 4.1 — Verifique a sua ferramenta

Vá ao registo de clientes e procure a ferramenta que usa. Se lá estiver, abra a documentação dela e responda a três perguntas: que pastas lê, como se invoca, e que campos acrescenta. São as três que este volume faz a cada uma.

Capítulo 05 Ferramenta

claude.ai e a API: sem terminal, e em escala

Metade das pessoas que beneficiam de skills nunca vai abrir um terminal. Esta é a parte do assunto que raramente é explicada.

5.1 claude.ai — para quem não programa

Como se instala uma skill sem linha de comandos

Comprime-se a pasta da skill num ficheiro .zip e envia-se em Definições → Funcionalidades. É tudo.

Requisitos: plano Pro, Max, Team ou Enterprise, com execução de código activada. As skills pré-construídas de documentos — PowerPoint, Excel, Word e PDF — já estão activas e não exigem instalação nenhuma.

Isto muda quem pode escrever skills. Uma pessoa de marketing, de recursos humanos ou de contabilidade pode escrever um SKILL.md num editor de texto, comprimir a pasta e ter as convenções da sua área aplicadas automaticamente. Não é preciso perceber de programação — é preciso saber escrever instruções claras, que é o volume I.

5.2 Duas limitações do claude.ai que decidem a estratégia de equipa

É individual, e não há administração central

As skills enviadas para o claude.ai são de cada utilizador. Não são partilhadas com a organização e não podem ser geridas centralmente por um administrador. Se dez pessoas da equipa precisam da mesma skill, as dez têm de a enviar.

Consequência prática, e é o oposto do que a maioria assume: para distribuir uma convenção a uma equipa, o claude.ai não é o caminho. O caminho é a API (partilha por espaço de trabalho) ou um repositório com .claude/skills/ versionado (capítulo 10).

Organizações Enterprise podem ligar análise de conteúdo às skills enviadas no claude.ai — que não cobre as enviadas pela API.

5.3 A API — para quem constrói produtos

O contentor da API é fechado — e isso muda o que se pode escrever

Sem acesso à rede e sem instalação de pacotes em execução: só o que já está pré-instalado.

Uma skill cujos scripts descarreguem algo, chamem uma API externa ou instalem uma biblioteca funciona no Claude Code e falha na API. É a diferença de ambiente mais consequente de todo este volume, e não dá erro na escrita — dá erro na execução, em produção.

5.4 As três superfícies, lado a lado

claude.aiAPIClaude Code
Como se instalaZip nas definições/v1/skillsFicheiros em pasta
PartilhaIndividualEspaço de trabalhoPessoal, projeto ou plugin
RedeVariável, conforme definiçõesNenhumaTotal
Instalar pacotesVariávelNãoSim (só localmente)
Documentos pré-construídosSimSimNão
Campos extraSó os da normaSó os da normaUma dúzia a mais

5.5 Duas restrições de nome que só existem aqui

Palavras reservadas

Na API e no claude.ai, o campo name não pode conter «anthropic» nem «claude», e nem name nem description podem conter etiquetas XML.

É mais restritivo que a especificação-base. Uma skill chamada claude-helper é válida segundo a norma e é rejeitada ao enviar — vale a pena saber antes de a ter distribuída pela equipa.

Exercício 5.1 — A skill de quem não programa

Escreva um SKILL.md para uma tarefa não técnica da sua organização — o formato de uma acta, as regras de um orçamento, o tom de uma resposta a cliente — comprima a pasta e envie-a no claude.ai. É o exercício que mostra que este assunto não é só para programadores.

Capítulo 06 Crítica

A armadilha central: nada sincroniza

É a coisa que mais tempo faz perder a quem começa, é contraintuitiva, e está dita numa linha da documentação que ninguém lê.

6.1 O facto

As skills não atravessam superfícies

Uma skill enviada para o claude.ai não fica disponível na API. Uma skill enviada pela API não aparece no claude.ai. As do Claude Code são ficheiros e são independentes das duas.

Não há sincronização automática entre superfícies do mesmo fornecedor — quanto mais entre fornecedores diferentes. Cada superfície onde quiser usar a skill exige um envio próprio.

É contraintuitivo porque tudo o resto na experiência sugere continuidade: é a mesma conta, o mesmo modelo, a mesma marca. E é exactamente por isso que se perde tempo — a suposição por omissão é que sincroniza, e não há erro nenhum a corrigi-la: a skill simplesmente não está lá.

6.2 Onde isto morde, caso a caso

SituaçãoO que acontece
Escreveu no Claude Code, espera usar no claude.aiTem de comprimir a pasta e enviar à mão
Enviou no claude.ai, construiu um produto na APITem de enviar outra vez, pelos endpoints
A equipa toda precisa da mesmaNo claude.ai, cada pessoa envia a sua (cap. 5.2)
Usa Claude Code e CodexDuas pastas: .claude/skills/ e .agents/skills/
Trabalha local e em agentes na nuvemNo Cursor, as pessoais não são copiadas para a nuvem (cap. 4.1)
Usa o VS Code e o agente na nuvem do CopilotO mesmo fornecedor documenta campos diferentes em cada superfície (cap. 4.3)
A skill usa campos do Claude CodeAo enviar para a API, esses campos são ignorados (cap. 2.4)

6.3 As três estratégias

1 · Uma fonte, cópias derivadas

A skill vive num sítio só — o repositório — e um script copia-a para as outras pastas e gera o zip. É a que recomendo: uma única versão a editar, e a duplicação é mecânica e verificável.

2 · Ligações simbólicas

ln -s de .agents/skills/x para .claude/skills/x. Elegante e instantâneo. Não sobrevive a zips, a envios pela API nem a máquinas Windows.

3 · Assumir a divergência

Versões diferentes por superfície, deliberadamente — a do Claude Code usa os campos extra, a da API é a versão portável. Legítimo, desde que esteja escrito qual é qual e porquê.

O que não fazer

Copiar à mão e esquecer. É o que acontece por omissão, e produz três versões divergentes da mesma skill sem que ninguém saiba qual é a boa.

6.4 O script de sincronização, em oito linhas

#!/usr/bin/env bash
# fonte única: skills/ na raiz do repositório
set -euo pipefail
for d in skills/*/; do
  n=$(basename "$d")
  rsync -a --delete "$d" ".claude/skills/$n/"   # Claude Code
  rsync -a --delete "$d" ".agents/skills/$n/"   # Codex, Cursor, Gemini
  (cd skills && zip -qr "../dist/$n.zip" "$n")  # para enviar no claude.ai
done

Correr isto num hook de commit ou na integração contínua resolve o problema de vez, e torna a divergência impossível em vez de improvável — que é a diferença que interessa.

Exercício 6.1 — Conte as cópias

Procure no seu sistema por ficheiros chamados SKILL.md e agrupe-os por nome de skill. Cada nome que apareça em mais de um sítio é uma divergência à espera de acontecer — compare o conteúdo das cópias e veja se já divergiram.

Capítulo 07 Prática

Escrever uma skill portável

É possível escrever uma skill que funciona em todas as ferramentas. Custa desistir de algumas comodidades — e é uma decisão consciente, não uma omissão.

7.1 O núcleo comum

O que funciona em toda a parte

Cabeçalho: só name, description, license, compatibility e allowed-tools. Mais nada.

Estrutura: SKILL.md na raiz, e scripts/, references/, assets/ conforme necessário.

Nome: minúsculas, dígitos e hífenes; igual ao nome da pasta; e sem as palavras «claude» ou «anthropic», para poder ser enviada para a API (cap. 5.5).

Ambiente: se quiser que corra na API, sem acesso à rede e sem instalar pacotes (cap. 5.3). Esta é a restrição mais dura, e a que mais vezes é descoberta tarde.

7.2 A pergunta que decide, no início

esta skill vai ser usada... │ ├── só por mim, só no Claude Code? │ → use tudo. paths, context: fork, arguments. │ a portabilidade não é um objectivo. │ ├── pela equipa, no repositório? │ → núcleo comum + .agents/ e .claude/ │ sincronizadas por script (cap. 6.4) │ └── num produto, pela API, ou por quem não programa? → SÓ o núcleo comum sem rede, sem instalar pacotes, sem palavras reservadas no nome

Decidir isto no início custa um minuto; descobri-lo no fim custa reescrever. É a mesma disciplina de declarar o objectivo antes de construir, de Estatística III, cap. 2.

7.3 Como degradar com elegância

Quando quer usar um campo específico e manter a portabilidade, o padrão é não depender dele:

Em vez deEscreva
Depender de paths para a skill só actuar em *.pyPôr na descrição «use ao trabalhar em ficheiros Python» e manter o paths. Onde existir, filtra; onde não existir, a descrição faz o trabalho
Depender de arguments para receber parâmetrosEscrever no corpo «se não for indicado o ambiente, pergunte antes de continuar»
Depender de context: fork para não sujar o contextoEscrever a skill para produzir saída curta, o que é bom em qualquer ferramenta
Depender de um script que descarrega dadosIncluir os dados em assets/, se forem estáveis

O princípio é sempre o mesmo: o campo específico é uma optimização, não a fundação. Se a skill não funciona sem ele, não é portável — e isso pode ser aceitável, desde que esteja declarado.

7.4 Declare a compatibilidade

O campo compatibility existe precisamente para isto, faz parte da norma, e é ignorado por quase toda a gente:

compatibility: Desenhada para Claude Code. Usa os campos paths e context,
  que outras ferramentas ignoram. Requer acesso à rede — não corre na API.

Quem instalar sabe o que esperar antes de descobrir por tentativa. Custa uma linha e é a diferença entre uma skill que decepciona e uma que avisa.

7.5 Testar a portabilidade

1 · Valide com skills-ref validate — apanha desvios da norma.

2 · Corra numa segunda ferramenta. Não é preciso testar em oito; duas chegam para expor as suposições. Claude Code e Cursor é o par mais fácil, porque o Cursor lê as duas pastas.

3 · Comprima e envie para o claude.ai. Se for rejeitada, é o nome (cap. 5.5).

4 · Se for para a API, teste no contentor sem rede. É onde as dependências escondidas aparecem.

5 · Confirme os cinco pedidos negativos em cada ferramenta. A activação varia entre implementações, e uma descrição que delimita bem num sítio pode disparar a mais noutro.

Exercício 7.1 — Torne uma portável

Pegue numa skill que use campos específicos e reescreva-a para o núcleo comum, aplicando 7.3. Depois corra as duas versões lado a lado e veja o que se perdeu de facto — costuma ser menos do que se temia.

Capítulo 08 Crítica

O que cada ferramenta acrescenta, e o que isso custa

Todas estendem a norma. Perceber o padrão das extensões diz mais sobre o futuro do formato do que a lista de campos.

8.1 As extensões, comparadas

NecessidadeClaude CodeCursorCodexNa norma?
Impedir activação automáticadisable-model-invocationdisable-model-invocationallow_implicit_invocation (YAML à parte)Não
Limitar a certos ficheirospathspaths—Não
Aparência na interface—icon, colorinterface (YAML à parte)Não
Metadados livresmetadatametadata—Sim
Ferramentas pré-aprovadasallowed-tools—dependenciesSim (experimental)
Isolamento de contextocontext: fork——Não

8.2 O padrão que as duas primeiras linhas revelam

Convergência espontânea

Repare que disable-model-invocation e paths aparecem com o mesmo nome em duas implementações independentes, e que a terceira resolve a primeira com outro nome mas a mesma semântica.

Isso não é coincidência: são necessidades reais que a especificação-base não cobriu, e várias equipas chegaram à mesma solução. Historicamente, é assim que uma norma cresce — os implementadores convergem primeiro, o comité formaliza depois. É uma aposta razoável que estes dois campos acabem na norma, e uma aposta pior que os mais específicos lá cheguem.

8.3 As duas filosofias de extensão

Tudo no cabeçalho

Claude Code, Cursor. Os campos extra vivem no mesmo SKILL.md.

A favor: um ficheiro só; tudo visível de uma vez.
Contra: o ficheiro deixa de ser estritamente conforme, e outra ferramenta vê campos que não entende.

Ficheiro à parte

Codex, com agents/openai.yaml.

A favor: o SKILL.md mantém-se limpo e portável; quem não conhece o ficheiro extra ignora-o.
Contra: dois sítios para manter, e é fácil esquecer um deles.

A segunda é melhor para portabilidade e a primeira é mais cómoda no dia a dia. Se escrever para distribuir, o padrão do Codex é o que menos surpresas dá a quem instalar.

8.4 O orçamento de listagem, comparado

Claude CodeCodex
LimiteskillListingBudgetFraction, configurável2% da janela, ou 8000 caracteres
Ao ultrapassarEncurta as descriçõesOmite skills, com aviso
SintomaActivação piora sem razão aparenteUma skill deixa de existir
A consequência que ninguém liga à causa

Nos dois casos, instalar mais skills degrada as que já lá estavam — e o sintoma aparece longe da causa. Quem instalou dez skills na semana passada não liga isso ao facto de uma skill antiga ter deixado de disparar.

Regra prática: trate o número de skills instaladas como um recurso limitado. O /skill-doctor do Claude Code existe exactamente para isto, e o equivalente noutras ferramentas é olhar para a lista e perguntar quais não usa há um mês.

Exercício 8.1 — O inventário de campos

Percorra as suas skills e liste todos os campos de cabeçalho que usa. Marque os que não estão na norma (secção 8.1). Para cada um, decida: é essencial, ou é comodidade? As de comodidade são as que pode largar quando precisar de portabilidade.

Capítulo 09 Método aplicado · Demo

A mesma skill em quatro ferramentas

Role devagar. Uma skill que funciona no Claude Code, levada às outras três — e os quatro pontos em que se parte.

Ponto 0 — o ponto de partida

Uma skill boa, com quatro decisões que a prendem

Não tem nada de errado: usa paths para não disparar fora do sítio, context: fork para não sujar o contexto, arguments para receber o número do PR, e um script que vai buscar o diff. São quatro boas decisões de engenharia — e cada uma é uma amarra.

Ponto 1 — a pasta

Duas das quatro ferramentas nem a encontram

O Codex procura em .agents/skills/, o Gemini em .gemini/ ou .agents/. Nenhum olha para .claude/. Só o Cursor, que lê as pastas de todos, a encontra (cap. 1.1).

E o sintoma é o pior possível: não há erro. A skill simplesmente não existe para aquelas ferramentas. Resolve-se com o script de sincronização do capítulo 6.4 — uma fonte, cópias derivadas.

Ponto 2 — o nome

«claude» é palavra reservada

O nome claude-rever-pr é perfeitamente válido segundo a especificação, e é rejeitado ao enviar para o claude.ai ou para a API, que proíbem «claude» e «anthropic» no campo name (cap. 5.5).

É a falha mais irónica das cinco: a skill é rejeitada pela própria plataforma cujo nome tem. E a correção obriga a renomear também a pasta, porque os dois têm de coincidir.

Ponto 3 — os campos

Degradar em silêncio é pior do que falhar

Nas ferramentas que não conhecem paths, context e arguments, a skill não dá erro — comporta-se pior: dispara onde não devia, enche o contexto principal, e não recebe o parâmetro.

É a diferença que interessa entre falhar e degradar: uma falha avisa; uma degradação acumula-se durante semanas e é atribuída ao modelo, à ferramenta ou ao acaso — nunca à skill (cap. 8.1).

Ponto 4 — o ambiente

O contentor da API não tem rede, e isto só se vê a correr

O script faz um pedido HTTP. Funciona no Claude Code e no Cursor, que têm acesso total à rede; é variável no claude.ai; e falha sempre na API, cujo contentor não tem rede nem permite instalar pacotes (cap. 5.3).

É o ponto mais caro dos cinco, porque é o único que não se detecta a ler: a skill parece perfeita, valida sem erros, e falha em execução — no ambiente de produção, que é onde custa.

A versão portável

O que mudou, e o que se perdeu

Nome sem palavra reservada; nenhum campo fora da norma; a filtragem por ficheiros passou para a descrição, onde funciona em toda a parte; e o script deixou de ser obrigatório — há um caminho alternativo quando não há rede, e o campo compatibility declara-o.

Perdeu-se o isolamento de contexto e a passagem de argumentos. São perdas reais, e estão escritas — que é a diferença entre uma skill que decepciona e uma que avisa (cap. 7.4).

A lição da demo inteira é a decisão do capítulo 7.2, e é uma pergunta de um minuto no início: esta skill é de casa, ou é para distribuir? As duas respostas são legítimas. O que não é legítimo é não escolher — e depois descobrir, cinco pontos depois, que a skill só funcionava onde foi escrita.

Exercício 9.1 — Os cinco pontos, na sua

Passe uma skill sua pelos cinco pontos: a pasta, o nome, os campos, o ambiente e a declaração de compatibilidade. Conte em quantos ela se parte. É raro passar nos cinco à primeira — e o ponto 4 é o que quase toda a gente falha.

Capítulo 10 Operação

Instalar, organizar e governar em equipa

Skills numa pessoa é uma comodidade. Skills numa equipa é uma decisão de governo — e tem as mesmas exigências de qualquer dependência partilhada.

10.1 Onde pôr, conforme quem precisa

Quem precisaOndePorquê
Só vocêPasta pessoal da ferramentaPreferências e experiências. Não polui o repositório
Quem trabalha neste projetoVersionada no repositórioÉ a que rende mais. Quem clona recebe; alterações passam por revisão
Toda a organização, em códigoPlugin, ou repositório de skills partilhadoDistribuição com versão e controlo
Toda a organização, na APIEnvio pela APIPartilha por espaço de trabalho, automática
Quem não programaZip no claude.ai, por pessoaNão há alternativa — não há gestão central (cap. 5.2)
A recomendação, em uma linha

Versione as skills no repositório do projeto e sincronize as pastas por script. Resolve distribuição, revisão, histórico e portabilidade de uma vez, e não depende de nenhuma funcionalidade de nenhum fornecedor.

10.2 A estrutura que funciona num repositório

skills/                       # fonte única, versionada
├── rever-pr/
│   ├── SKILL.md
│   ├── scripts/
│   └── testes/CASOS.md        # os 10 pedidos do volume I, cap. 8
├── relatorio-mensal/
└── README.md                  # o que existe, quem é dono, como se sincroniza

.claude/skills/  →  gerado    # em .gitignore
.agents/skills/  →  gerado    # em .gitignore
dist/*.zip       →  gerado    # para o claude.ai

Os testes ao lado da skill são o detalhe que a mantém viva: quem a alterar tem por onde verificar que não a partiu, o que transforma «não mexer que isso funciona» em «alterar com confiança».

10.3 As regras de governo

10.4 Skills como onboarding

O uso que compensa mais e é o menos óbvio

Uma pasta skills/ bem escrita é a documentação de convenções da equipa, num formato que tanto as pessoas como os agentes leem. Não é um efeito secundário: é a melhor razão para as versionar.

Quem entra na equipa lê os SKILL.md e percebe como se trabalha ali — e o agente aplica-as sem que ninguém tenha de as lembrar. É a única documentação interna que tem um utilizador que nunca se esquece de a ler.

Exercício 10.1 — O README de skills

Crie skills/README.md com uma tabela: nome, o que faz, dono, data da última revisão. É o documento que faz a diferença entre uma pasta de ficheiros e um activo mantido — e demora dez minutos.

Capítulo 11 Prática

Quando não funciona nesta ferramenta

A escada de diagnóstico específica da portabilidade: seis degraus, do mais barato ao mais caro, e cada um elimina metade das hipóteses.

11.1 A escada

1 · A ferramenta vê a skill? Liste as disponíveis com o comando desta ferramenta (cap. 1.2). Se não estiver na lista, é pasta — e resolve-se antes de olhar para o conteúdo.

2 · A pasta está no sítio certo para esta ferramenta? Confira a tabela 1.1. É a causa número um, e a mais rápida de excluir.

3 · O name coincide com a pasta? Falha silenciosa em todas as implementações (volume I, cap. 10.2). Corra o validador.

4 · Está a ser omitida por orçamento? Com muitas instaladas, algumas desaparecem ou perdem a descrição (cap. 8.4). Desligue metade e volte a testar.

5 · Force a activação pelo comando explícito. Se resultar, o problema é a descrição; se não resultar, é o corpo ou o ambiente. Este passo divide o problema ao meio.

6 · Depende de um campo ou de um recurso que esta ferramenta não tem? Campos extra (cap. 8.1), rede, pacotes (cap. 5.3). É aqui que estão as falhas que só aparecem a correr.

11.2 A tabela de sintomas

SintomaCausa mais provável
Não aparece na listaPasta errada para esta ferramenta, ou name ≠ pasta
Aparece e nunca disparaDescrição, ou competição com outra mais específica
Funcionava e deixou de dispararInstalaram-se mais skills e o orçamento estourou
Dispara e comporta-se pior que noutra ferramentaDepende de campos extra que esta ignora
Dispara e o script falhaRede ou pacotes indisponíveis neste ambiente
Rejeitada ao enviarPalavra reservada no nome, ou etiqueta XML (cap. 5.5)
Funciona local e não na nuvemSkill pessoal não copiada para o ambiente remoto (cap. 4.1)

11.3 A terceira linha é a que engana

A causa está longe do sintoma

«Funcionava e deixou de funcionar» leva quase toda a gente a procurar o que mudou na skill — e a resposta é que não mudou nada nela. Mudou o contexto à volta: instalaram-se mais skills, e a listagem foi truncada.

É a razão pela qual vale a pena registar quantas skills estavam instaladas quando cada uma foi validada. Uma linha no README.md da pasta chega, e poupa a tarde em que se procura um erro que não existe.

11.4 O teste mínimo antes de distribuir

Três verificações, dez minutos, e cobrem a maior parte do que corre mal:

  1. Validar com skills-ref validate.
  2. Correr numa segunda ferramenta — expõe as suposições de pasta e de campos.
  3. Correr com a pasta de skills quase vazia e quase cheia — expõe o problema do orçamento antes de ele aparecer a outra pessoa.
Exercício 11.1 — Provoque o problema do orçamento

Instale skills até a sua ferramenta avisar ou truncar as descrições. Registe o número. Depois volte atrás. Saber onde está o seu tecto é a única forma de reconhecer o sintoma da terceira linha quando ele aparecer a sério.

Capítulo 12 Ofício · Catálogo

O que fica, e as seis fontes por ferramenta

As regras que sobrevivem a qualquer produto, e o catálogo de documentação deste volume — em ficha padronizada e datada.

12.1 As sete regras

1 · Decida cedo o alcance

De casa ou para distribuir. Custa um minuto no início e evita reescrever no fim.

2 · Uma fonte, cópias derivadas

Nunca edite duas cópias da mesma skill. Sincronize por script.

3 · .agents/skills/ é o terreno comum

Codex, Cursor e Gemini leem-no. Só o Claude Code exige a sua pasta.

4 · Nada sincroniza

Entre superfícies do mesmo fornecedor também não. Cada uma exige o seu envio.

5 · Campos extra são optimização

Nunca fundação. Se a skill não funciona sem eles, não é portável — e isso deve estar escrito.

6 · O ambiente decide

Rede e pacotes variam por superfície. É a falha que só aparece a correr.

7 · O número de skills é um recurso

Instalar mais degrada as que já lá estão. Reveja e desligue.

E uma oitava

Verifique na fonte. Este volume caduca; a documentação de cada produto, não.

12.2 Catálogo: a documentação de cada ferramenta

Porque este catálogo é de documentação e não de skills

Os volumes temáticos que se seguem catalogam skills. Este cataloga as fontes onde se verifica cada ferramenta — porque é isso que este volume ensina a fazer, e porque é a única parte que não caduca: os caminhos de pastas mudam, a documentação que os publica não.

Registo de clientes da norma Comunidade Agent Skills

A lista viva dos produtos que suportam o formato — à data desta apostila, cerca de meia centena — com ligação à documentação de skills de cada um.

Porque importa: É a única resposta factual à pergunta «isto funciona na minha ferramenta?», e é onde se vai buscar o caminho de pastas de qualquer produto que não esteja neste volume.

A favor
  • Mantida a par da norma, não por um fornecedor
  • Cada entrada liga à documentação própria, que é sempre mais actual que qualquer apostila
  • Cobre desde CLIs abertos a plataformas de dados e agentes de saúde
Contra
  • Cresce depressa — qualquer contagem fica desactualizada em semanas
  • Suportar a norma não garante suportá-la toda: a profundidade varia muito entre produtos

É a fonte a consultar antes deste volume. Se divergirem, manda a documentação do produto.

https://agentskills.io/clients ·licença Apache-2.0·verificado em setembro de 2026

Documentação de skills do Claude Code Anthropic

Caminhos por âmbito, ordem de precedência, invocação com argumentos, os comandos /skills e /skill-doctor, todas as definições de skillOverrides, e a lista explícita dos campos que são extensões e não fazem parte da norma.

Porque importa: É a implementação mais completa, e a documentação que melhor separa o que é norma do que é extensão — informação que quase nenhum produto publica com esta clareza.

A favor
  • Distingue explicitamente campos da norma de campos próprios
  • /skill-doctor não tem equivalente noutras ferramentas: mostra custo e uso real
  • Detecção de alterações em sessão acelera muito o ciclo de escrita
Contra
  • A quantidade de campos extra convida a escrever skills não portáveis sem dar por isso
  • A precedência (pessoal sobrepõe-se a projeto) é o inverso de outras ferramentas e surpreende
  • As skills de documentos pré-construídas não estão disponíveis aqui

https://code.claude.com/docs/en/skills ·licença Documentação do produto·verificado em setembro de 2026

Documentação de skills do Codex e ChatGPT OpenAI

Os cinco âmbitos de procura em .agents/skills, invocação por @ no ChatGPT e $ no CLI, as skills embutidas skill-creator e skill-installer, e o ficheiro opcional agents/openai.yaml.

Porque importa: É a prova de que o formato é mesmo cross-fornecedor — e a implementação que mais aposta na pasta neutra, que é o padrão que os outros estão a seguir.

A favor
  • Usa .agents/skills, o caminho que Cursor e Gemini CLI também leem
  • As extensões ficam num ficheiro à parte, mantendo o SKILL.md portável
  • Não funde nomes iguais: mostra as duas e deixa escolher
  • $skill-installer não tem equivalente directo nas outras
Contra
  • O limite de listagem é rígido: com muitas skills, algumas são omitidas
  • A instalação por comando facilita saltar a auditoria do volume I, cap. 11

Para quem alterna entre ferramentas: escrever para .agents/skills/ maximiza a compatibilidade — só o Claude Code exige a sua própria pasta.

https://developers.openai.com/codex/skills/ ·licença Documentação do produto·verificado em setembro de 2026

Agent Skills no claude.ai e na API Anthropic

As três superfícies lado a lado, os requisitos de plano e de execução de código, os limites do contentor da API (sem rede, sem instalar pacotes), as palavras reservadas no nome e a advertência explícita de que as skills não sincronizam entre superfícies.

Porque importa: É a única fonte que diz claramente as duas coisas que mais tempo fazem perder: que nada sincroniza, e que no claude.ai as skills são individuais e não há gestão central.

A favor
  • Documenta o caminho para quem não programa: zip nas definições
  • Explica os limites do contentor da API, que decidem o que se pode escrever
  • Tem a arquitectura de divulgação progressiva explicada em detalhe
Contra
  • A ausência de gestão central no claude.ai é uma limitação séria para equipas, e é fácil de não ver
  • Ler três modelos de partilha diferentes (individual, espaço de trabalho, ficheiros) exige atenção

Leia a secção de limitações antes de escrever qualquer skill destinada à API. É onde estão as restrições que não se descobrem a testar localmente.

https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview ·licença Documentação do produto·verificado em setembro de 2026

Documentação de skills do Cursor e do Gemini CLI Cursor · Google

Duas implementações com decisões próprias: o Cursor lê as pastas de todos os concorrentes e tem o modo personalizado que mantém uma skill activa toda a sessão; o Gemini CLI pede consentimento explícito antes de injectar uma skill e exige --consent ao instalar.

Porque importa: São os dois melhores exemplos de que a mesma norma admite filosofias diferentes — máxima tolerância num caso, máxima cautela no outro.

A favor
  • Cursor: lê .claude/, .agents/ e .cursor/ — o mais fácil para testar portabilidade
  • Cursor: o modo personalizado é um padrão de uso que as outras não têm
  • Gemini CLI: o consentimento antes da activação responde directamente ao risco de skills de terceiros
Contra
  • Cursor: skills pessoais não são copiadas para agentes na nuvem — falha silenciosa em ambientes remotos
  • Gemini CLI: o consentimento acrescenta fricção em cada uso
  • Precedências opostas entre as duas, o que confunde quem alterna

Documentação do Gemini CLI: geminicli.com/docs/cli/skills/

https://cursor.com/docs/context/skills ·licença Documentação do produto·verificado em setembro de 2026

Skills de agente no VS Code e no GitHub Copilot Microsoft e GitHub

Duas documentações a ler em conjunto: a do VS Code traz os seis caminhos de pastas, a invocação por barra e os campos argument-hint, user-invocable, disable-model-invocation e context; a da GitHub traz as superfícies onde o mesmo ficheiro corre — agente na nuvem, revisão de código, CLI, aplicação e modo agente no VS Code e nos IDEs da JetBrains — e os campos license e allowed-tools.

Porque importa: É a implementação de maior alcance, porque está dentro do editor que a maioria das equipas já abriu. E é o caso onde a lição do capítulo 6 se demonstra sem mudar de fornecedor: as duas páginas descrevem conjuntos de campos diferentes para o mesmo produto.

A favor
  • Lê seis caminhos, incluindo os do Claude e os da norma — a mais permissiva de todas
  • .github/skills/ põe as skills numa pasta que a equipa já revê em pull request
  • Separa «o utilizador pode chamar» de «o modelo pode chamar» em dois campos independentes — não há equivalente noutra ferramenta
  • Único a permitir acrescentar caminhos por configuração e a ler o repositório-pai (monorepos)
Contra
  • Os campos próprios não coincidem entre o VS Code e o agente na nuvem, e nenhum lado avisa quando ignora um campo do outro
  • context: fork é experimental e depende ainda de uma definição para funcionar
  • allowed-tools pré-aprova comandos sem confirmação: é conforto que se paga em superfície de ataque
  • Seis caminhos são seis sítios onde procurar quando uma skill não é encontrada

Aviso da própria GitHub: as skills não são verificadas por ninguém e podem conter injecções de instruções ou scripts maliciosos. Ler antes de instalar não é excesso de zelo.

code.visualstudio.com/docs/agent-customization/agent-skills ·docs.github.com — about-agent-skills·verificado em setembro de 2026

12.3 O que vem a seguir

Os quatro volumes temáticos, cada um com o seu catálogo de skills em ficha padronizada: III — Produto digital (sites, aplicações, software, MCP), IV — Marca e identidade, V — Pensar e VI — Jogos e 3D.

12.4 Leituras a par

Exercício 12.1 — A matriz da sua equipa

Faça uma tabela com as ferramentas que a sua equipa usa e, para cada uma, as pastas que lê e os campos que suporta. Depois decida uma estratégia de sincronização e escreva-a no README.md da pasta de skills. É a decisão que impede as três versões divergentes.