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
| Ferramenta | Projeto | Pessoal | Outros |
|---|---|---|---|
| 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 |
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
| Ferramenta | Explícito | Automático | Gerir |
|---|---|---|---|
| Claude Code | /nome-da-skill, com argumentos, e várias encadeadas | Sim, pela description | /skills, /skill-doctor |
| ChatGPT | @nome na conversa | Sim | Interface |
| Codex CLI | $nome | Sim | $skill-creator, $skill-installer |
| Cursor | / no chat do agente | Sim | Modo 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
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 é
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.
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
| Âmbito | Caminho | Vale para |
|---|---|---|
| Empresa | .claude/skills/<nome>/SKILL.md nas definições geridas | Todos os utilizadores da organização |
| Pessoal | ~/.claude/skills/<nome>/SKILL.md | Todos os seus projetos |
| Projeto | .claude/skills/<nome>/SKILL.md | Só este projeto |
| Plugin | <plugin>/skills/<nome>/SKILL.md | Onde 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.
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
/skills— lista o que está disponível com as descrições, e permite ligar e desligar a visibilidade de cada uma./skill-doctor— mostra estatísticas de uso, custo em tokens e quais nunca são usadas. É a ferramenta de higiene: skills que nunca disparam estão a pagar o custo permanente do nível 1 sem devolver nada (volume I, cap. 3.4).
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:
| Campo | Faz |
|---|---|
disable-model-invocation | Só a pessoa pode invocar; o agente não |
user-invocable: false | O inverso: só o agente |
paths | Limita a skill a ficheiros que correspondam ao padrão |
context: fork | Corre num subagente isolado, sem sujar o contexto principal |
background | Espera ou não pelo resultado |
arguments, argument-hint | Argumentos nomeados, para substituição no corpo |
model, effort | Escolhe o modelo e o esforço para esta skill |
hooks, shell, agent | Integração com o resto do sistema |
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.
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
| Âmbito | Caminho | Para |
|---|---|---|
| Repositório (pasta actual) | $CWD/.agents/skills | Skills específicas daquela pasta |
| Repositório (raiz) | $REPO_ROOT/.agents/skills | Skills de toda a organização do repositório |
| Utilizador | $HOME/.agents/skills | Pessoais, entre repositórios |
| Administração | /etc/codex/skills | Predefinições do sistema |
| Sistema | Embutidas no Codex | skill-creator e outras |
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
- No ChatGPT: escreve-se
@e o nome da skill, como se mencionasse alguém. - No Codex CLI: escreve-se
$e o nome. - Automaticamente: em ambos, pela descrição, com o mesmo mecanismo de divulgação progressiva.
3.3 As duas skills embutidas que interessam
| Skill | Faz |
|---|---|
$skill-creator | Constrói uma skill nova, interactivamente — o equivalente ao do repositório oficial da Anthropic |
$skill-installer | Descarrega 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:
interface— nome a mostrar, ícones, cor da marca.policy— nomeadamenteallow_implicit_invocation, o equivalente aodisable-model-invocationdo Claude Code.dependencies— declaração de ferramentas necessárias.
É 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
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
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, Gemini CLI, e os outros quarenta
Duas implementações com decisões próprias interessantes, 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
| Âmbito | Caminhos |
|---|---|
| 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 das quatro. Descobre recursivamente qualquer subpasta que contenha um
SKILL.md, o que permite organizar por temas sem configuração.
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
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 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:
| Produto | Contexto |
|---|---|
| GitHub Copilot e VS Code | Dentro do editor mais usado; documentação própria para skills de agente |
| JetBrains Junie | Para quem trabalha em IntelliJ, PyCharm e afins |
| Goose, OpenCode, OpenHands, Roo Code | Agentes de código abertos, agnósticos quanto ao modelo |
| Amp, Factory, Kiro, Ona | Plataformas de desenvolvimento com agentes |
| Laravel Boost | Skills específicas de uma framework — um padrão que vai crescer |
| Databricks, Snowflake Cortex, Pulumi Neo | Agentes dentro de plataformas de dados e de infraestrutura |
| Spring AI, fast-agent, Letta | Para quem constrói agentes e quer suportar a norma |
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.
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
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
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
- Exige a ferramenta de execução de código. As skills correm no contentor dessa ferramenta; sem ela não funcionam.
- Indica-se o
skill_idno parâmetrocontainer. As pré-construídas sãopptx,xlsx,docxepdf. - As próprias enviam-se pelos endpoints
/v1/skills. - Partilha por espaço de trabalho: todos os membros têm acesso. É o modelo de partilha que o claude.ai não tem.
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.ai | API | Claude Code | |
|---|---|---|---|
| Como se instala | Zip nas definições | /v1/skills | Ficheiros em pasta |
| Partilha | Individual | Espaço de trabalho | Pessoal, projeto ou plugin |
| Rede | Variável, conforme definições | Nenhuma | Total |
| Instalar pacotes | Variável | Não | Sim (só localmente) |
| Documentos pré-construídos | Sim | Sim | Não |
| Campos extra | Só os da norma | Só os da norma | Uma dúzia a mais |
5.5 Duas restrições de nome que só existem aqui
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.
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
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ção | O que acontece |
|---|---|
| Escreveu no Claude Code, espera usar no claude.ai | Tem de comprimir a pasta e enviar à mão |
| Enviou no claude.ai, construiu um produto na API | Tem de enviar outra vez, pelos endpoints |
| A equipa toda precisa da mesma | No claude.ai, cada pessoa envia a sua (cap. 5.2) |
| Usa Claude Code e Codex | Duas pastas: .claude/skills/ e .agents/skills/ |
| Trabalha local e em agentes na nuvem | No Cursor, as pessoais não são copiadas para a nuvem (cap. 4.1) |
| A skill usa campos do Claude Code | Ao 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.
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
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
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 de | Escreva |
|---|---|
Depender de paths para a skill só actuar em *.py | Pô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âmetros | Escrever no corpo «se não for indicado o ambiente, pergunte antes de continuar» |
Depender de context: fork para não sujar o contexto | Escrever a skill para produzir saída curta, o que é bom em qualquer ferramenta |
| Depender de um script que descarrega dados | Incluir 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.
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
| Necessidade | Claude Code | Cursor | Codex | Na norma? |
|---|---|---|---|---|
| Impedir activação automática | disable-model-invocation | disable-model-invocation | allow_implicit_invocation (YAML à parte) | Não |
| Limitar a certos ficheiros | paths | paths | — | Não |
| Aparência na interface | — | icon, color | interface (YAML à parte) | Não |
| Metadados livres | metadata | metadata | — | Sim |
| Ferramentas pré-aprovadas | allowed-tools | — | dependencies | Sim (experimental) |
| Isolamento de contexto | context: fork | — | — | Não |
8.2 O padrão que as duas primeiras linhas revelam
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 Code | Codex | |
|---|---|---|
| Limite | skillListingBudgetFraction, configurável | 2% da janela, ou 8000 caracteres |
| Ao ultrapassar | Encurta as descrições | Omite skills, com aviso |
| Sintoma | Activação piora sem razão aparente | Uma skill deixa de existir |
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.
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.
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.
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.
«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.
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).
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.
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.
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 precisa | Onde | Porquê |
|---|---|---|
| Só você | Pasta pessoal da ferramenta | Preferências e experiências. Não polui o repositório |
| Quem trabalha neste projeto | Versionada no repositório | É a que rende mais. Quem clona recebe; alterações passam por revisão |
| Toda a organização, em código | Plugin, ou repositório de skills partilhado | Distribuição com versão e controlo |
| Toda a organização, na API | Envio pela API | Partilha por espaço de trabalho, automática |
| Quem não programa | Zip no claude.ai, por pessoa | Não há alternativa — não há gestão central (cap. 5.2) |
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
- Cada skill tem um dono nomeado. Sem dono, desactualiza-se em silêncio e passa a dar instruções erradas com ar de autoridade (volume I, cap. 8.4).
- Skills de terceiros entram por revisão, como qualquer dependência, e copiadas para o repositório em vez de puxadas de uma fonte que muda sem aviso.
- Inventário do que está instalado e porquê. É o mesmo requisito de Governança de IA, cap. 6 — e aqui é fácil de cumprir, porque são ficheiros no repositório.
- Um limite deliberado ao número. Cada skill instalada custa contexto permanente e degrada as outras (cap. 8.4). «Quantas skills queremos ter?» é uma pergunta com resposta.
- Revisão periódica. Trimestral chega: o que nunca disparou, o que ficou desactualizado, o que se pode fundir.
10.4 Skills como onboarding
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.
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
| Sintoma | Causa mais provável |
|---|---|
| Não aparece na lista | Pasta errada para esta ferramenta, ou name ≠ pasta |
| Aparece e nunca dispara | Descrição, ou competição com outra mais específica |
| Funcionava e deixou de disparar | Instalaram-se mais skills e o orçamento estourou |
| Dispara e comporta-se pior que noutra ferramenta | Depende de campos extra que esta ignora |
| Dispara e o script falha | Rede ou pacotes indisponíveis neste ambiente |
| Rejeitada ao enviar | Palavra reservada no nome, ou etiqueta XML (cap. 5.5) |
| Funciona local e não na nuvem | Skill pessoal não copiada para o ambiente remoto (cap. 4.1) |
11.3 A terceira linha é a que engana
«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:
- Validar com
skills-ref validate. - Correr numa segunda ferramenta — expõe as suposições de pasta e de campos.
- 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.
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 cinco 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
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.
- 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
- 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.
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.
- Distingue explicitamente campos da norma de campos próprios
/skill-doctornão tem equivalente noutras ferramentas: mostra custo e uso real- Detecção de alterações em sessão acelera muito o ciclo de escrita
- 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
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.
- Usa
.agents/skills, o caminho que Cursor e Gemini CLI também leem - As extensões ficam num ficheiro à parte, mantendo o
SKILL.mdportável - Não funde nomes iguais: mostra as duas e deixa escolher
$skill-installernão tem equivalente directo nas outras
- 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.
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.
- 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
- 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.
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.
- 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
- 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/
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
- Skills de IA I — Fundamentos — o formato, e como se escreve uma que funcione.
- MCP — a outra metade da extensão de um agente.
- Aceleração de Código com IA — o contexto de trabalho onde a maioria destas ferramentas vive.
- Governança de IA — o inventário do capítulo 10.3.
- Código Legado e Refatoração — porque uma pasta de skills sem dono é código legado a formar-se.
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.