OpenCode skills: o que são skills em agentes de código e como funcionam na prática

OpenCode skills são instruções que você guarda em arquivo em vez de colar no chat toda vez. Na prática, uma skill é uma pasta com um SKILL.md dentro: frontmatter YAML (com name e description) e o corpo em Markdown. No OpenCode, uma ferramenta nativa chamada skill mostra ao modelo só o nome e a descrição de cada skill instalada e carrega o conteúdo completo apenas quando ele decide que aquela se aplica. O formato é o Agent Skills, criado pela Anthropic, e o Claude Code lê a mesma coisa, então dá pra reaproveitar o mesmo arquivo nos dois agentes
Você abre uma sessão nova do agente e lá vai colar de novo o mesmo bloco de instrução
o padrão de commit, a estrutura de pastas, aquela regra chata que só esse projeto tem
e amanhã, tudo outra vez 🙂
Se você chegou aqui procurando por OpenCode skills, provavelmente quer entender o que essa palavra significa ANTES de sair instalando qualquer coisa, e isso é o mais saudável a fazer
Então bora do começo: o que é uma skill, como o arquivo é montado por dentro, como o OpenCode carrega ela e o que muda de verdade em relação a jogar prompt solto no chat…
Como uma skill é feita por dentro
Uma skill é bem menos misteriosa do que o nome sugere
É uma pasta com um arquivo SKILL.md dentro, só isso
O arquivo tem duas partes: um frontmatter YAML no topo (com campos como name e description) e, embaixo, o corpo em Markdown com as instruções
---
name: revisao-antes-do-commit
description: Usar quando o pedido envolver revisar mudanças de codigo antes de commitar neste projeto
---
# Revisao antes do commit
Siga esta ordem:
1. Liste os arquivos alterados
2. Confira se cada mudanca tem teste
3. Escreva a mensagem de commit no padrao do repositorioSe você já escreveu um post em Markdown com frontmatter, ou mexeu em qualquer gerador de site estático, o formato vai parecer familiar demais
E qual campo importa mais? A description
Ela é o que decide se a skill é anunciada ao modelo: skill sem descrição simplesmente não aparece pro agente
O name do frontmatter serve como rótulo de exibição, o nome bonitinho que você lê na tela
Por que isso pesa tanto? Porque no OpenCode as skills são carregadas sob demanda por uma ferramenta nativa chamada skill: o modelo enxerga nome e descrição de cada skill instalada e só carrega o conteúdo completo quando decide que aquela ali se aplica ao que você pediu
Ou seja: a descrição é o índice do livro
Se o índice está mal escrito, ninguém abre o capítulo, por melhor que ele seja
Escrever a description é metade do trabalho, se liga nisso
Onde o OpenCode procura suas skills e como controlar o acesso
Saber o formato não adianta se o arquivo estiver no lugar errado, então vamos aos caminhos que a documentação de skills do OpenCode lista
- Caminhos do projeto, que ficam versionados junto do código:
.opencode/skills/*/SKILL.md
.claude/skills/*/SKILL.md
.agents/skills/*/SKILL.mdO erro comum deste passo é montar a pasta certinha, com o arquivo certinho, e esquecer a description no frontmatter: a skill existe no disco e continua invisível pro agente
- Caminhos globais do usuário, pras skills que você quer em qualquer projeto:
~/.config/opencode/skills/*/SKILL.md
~/.claude/skills/*/SKILL.md
~/.agents/skills/*/SKILL.mdO erro comum aqui é jogar no global aquilo que é regra de UM projeto só, tipo convenção de pasta de um repositório específico, e depois estranhar o agente aplicando isso onde não devia
- Skills vêm habilitadas por padrão no OpenCode, e dá pra desligar por agente com
tools.skill = false, seja no frontmatter do agente customizado, seja noopencode.json(por exemploagent.plan.tools.skill = false)
Com a ferramenta desligada, a seção available_skills é omitida, ou seja, aquele agente nem fica sabendo que existe skill
O erro comum é desligar pra um agente e continuar esperando que ele use suas skills
- Acesso granular por permissão: o
opencode.jsonaceita uma permissãoskillcom as açõesallow,askedeny, e os padrões aceitam curinga (internal-*casa tantointernal-docsquantointernal-tools)
As mesmas regras podem ficar sob agents.<id>.permissions, se você quiser um recorte por agente, como explica a documentação de permissões
Tome cuidado com um detalhe aqui: deny não é um "esconder da lista" apenas
Ele remove a skill da descoberta E recusa o carregamento
O ask é o meio termo: anuncia a skill normalmente, mas pede aprovação na hora de usar
De onde veio o formato SKILL.md (e por que ele não é só do OpenCode)
Esse formato não nasceu dentro do OpenCode
O Agent Skills foi criado pela Anthropic e anunciado publicamente em 16 de outubro de 2025
Depois, em 18 de dezembro de 2025, a Anthropic publicou o Agent Skills como padrão aberto, com especificação e documentação em agentskills.io e a spec mantida no GitHub, em github.com/agentskills/agentskills
E é aí que a coisa fica interessante pra quem usa mais de um agente
O Claude Code lê o mesmo formato de pasta com SKILL.md, procurando skills pessoais em ~/.claude/skills/ e skills do projeto em .claude/skills/
Repara na lista de caminhos lá de cima: o OpenCode também olha .claude/skills e ~/.claude/skills
Tradução prática: a mesma skill pode servir os dois agentes sem você duplicar arquivo nenhum
muito massa isso, né? 😀
Skill x prompt solto: a diferença no dia a dia
Dá pra viver colando prompt, claro, é o que a maioria faz
Mas a diferença estrutural entre as duas abordagens é essa aqui:
| Eixo | Prompt colado a cada sessão | Skill em SKILL.md |
|---|---|---|
| Onde a instrução mora | no seu histórico de chat (ou num bloco de notas) | em uma pasta com SKILL.md, no projeto ou no global |
| Quem decide usar | você, lembrando de colar | o modelo, a partir da listagem de nome + descrição |
| O que ocupa contexto | o texto inteiro, sempre que você cola | só nome e descrição, até a skill ser carregada |
| Versionamento | fora do repositório, cada um com a sua cópia | arquivo do projeto, entra no commit junto com o código |
| Reuso entre projetos | copiar e colar de novo | caminho global do usuário |
| Reuso entre agentes | refazer o prompt em cada ferramenta | mesmo formato lido por OpenCode e Claude Code |
| Controle de acesso | não existe | permissão skill com allow, ask e deny |
O que muda no seu fluxo quando a instrução vira skill
A leitura prática da tabela é simples: o conhecimento repetido sai do seu histórico de mensagens e vira arquivo do projeto
Quem entra no repositório amanhã herda a mesma instrução, sem você explicar de novo
E muda também de quem é a decisão
Antes o esforço era "lembrar de colar"
Agora o esforço é "escrever uma descrição que o modelo entenda", porque é ela que faz a skill ser anunciada ou ignorada
É um trabalho diferente, e sinceramente é um trabalho mais barato: você escreve uma vez e revisa quando a regra muda
Só não vamos vender fumaça aqui: skill é instrução organizada e carregada na hora certa, não é um plugin que sai executando sozinho
Quem quer coisa rodando sem ninguém no volante está falando de outro assunto, mais perto de automação de fluxos com n8n, e não de um arquivo Markdown com boas instruções
Que tipo de tarefa repetitiva uma skill resolve
O critério é bem direto: repete, tem regra estável e você já se cansou de explicar
Se os três batem, vira skill
- Padrão de commit e de revisão do repositório: formato da mensagem, o que conferir antes de commitar, o que nunca entra no commit
- Convenções de código e estrutura de pastas: onde mora cada camada, como nomear arquivo, qual padrão o time já decidiu que usa
- Roteiro fixo de investigação de bug: qual log olhar primeiro, como reproduzir, o que registrar antes de sair mexendo
- Checklist antes de publicar: build, testes, variáveis de ambiente, aquilo que você SEMPRE esquece e descobre em produção
- Regra de domínio do produto: o vocabulário do negócio, o que pode e o que não pode, algo bem parecido com a lógica de agentes de IA para nichos específicos, onde o contexto da área vale mais que o modelo
O que NÃO vira skill é decisão de uma vez só
Pedido pontual continua sendo prompt mesmo, e tudo bem
As skills que eu encadeei num projeto do zero
Aqui eu preciso ser honesto sobre o cenário do teste: esse fluxo eu rodei no Claude Code, que lê o mesmo formato de SKILL.md, e não dentro do OpenCode
A lógica de encadeamento vale igual, o produto é que foi outro
O encadeamento foi este, nesta ordem:
- Brainstorm: entrevista pra levantar requisito antes de escrever uma linha de código
- Escrita de plano: transforma o documento de design em tarefas com ordem, dependência e critério de aceitação
- Execução do plano: pega o plano aprovado e escreve o código
- Design de front-end: tira o visual genérico de cima do projeto
- Skill própria de checagem de segurança: criada por prompt, em vez de instalar pacote de terceiro
Agora o que aconteceu em cada uma delas
Comecei de uma pasta vazia, com uma skill de brainstorm ativada junto do prompt do projeto (um app de controle de despesas pessoais, com cadastro por categoria, dashboard mensal e gráfico)
E a skill não saiu escrevendo código: ela conduziu uma entrevista
Perguntou se era uso pessoal ou vários usuários, qual autenticação, se as categorias eram fixas ou customizáveis, e ainda sugeriu uma lista de categorias pra eu aprovar
No meio do papo apareceu uma oferta de gerar mockups e diagramas no navegador, com aviso de que ia consumir mais token, e eu recusei pra ir direto pra implementação
Com o documento de design aprovado, usei uma segunda skill, de escrita de plano, pedindo pra transformar aquele design em plano de implementação com tarefas em ordem, dependências e critérios de aceitação
Saíram 14 tarefas
Aí uma dica que economiza dor de cabeça: mesmo com o plano já no contexto, referencie o arquivo do plano com @ na hora de mandar executar, pra garantir que o agente está usando o documento certo
A terceira skill foi a de executar o plano e escrever o código
Essa fase de criar arquivo e fazer setup pede MUITOS aceites seguidos, então vale considerar o modo de pular confirmações se você não quiser passar o dia clicando
Cronometrando por curiosidade: até a terceira tarefa do plano rodando, deu quase 10 minutos
No fim da execução o app subiu com erro no fluxo de criar conta e login
Copiei a mensagem, colei no agente e fui depurando até acessar o projeto
Erro no primeiro prompt eu trato como parte do processo, não como falha do fluxo, beleza? Depois de corrigido, cadastrei uma despesa de alimentação e o registro e a autenticação funcionaram normalmente
O problema que sobrou foi outro: arquitetura boa, clareza boa, e uma interface completamente genérica
Projeto sem alma
Aí entrou a quarta skill, de design de front-end, e aqui eu não pedi "faz um redesign"
Eu descrevi a intenção: visual clean e moderno que passe confiança financeira, modo escuro, sensação de controle sem sobrecarga
O agente devolveu o redesign explicando o que mudou (modo escuro, tipografia, cor de acento, cards, barra de navegação, animações) e o resultado veio com tipografia melhor, estilo mais sóbrio e elementos mais consistentes
Garantia? Nenhuma, isso depende MUITO do prompt
Boa parte das reclamações de "a IA fez uma porcaria" que eu vejo por aí é prompt mal escrito, não modelo ruim
E a quinta frente foi criar skill própria em vez de instalar pacote de terceiro, porque cada projeto usa uma tecnologia diferente
Criei por prompt uma skill de checagem de segurança que dá nota de 0 a 100, exigindo verificação mecânica (rodar comandos de verdade e contar problemas encontrados) e não achismo subjetivo
Descrevi o que eu queria auditar (segredos, entradas, autenticação, dependências, cabeçalhos) e pedi saída com nota total, detalhamento por categoria e lista de problemas
Depois de criada, abri o arquivo da skill e li antes de rodar
Skill gerada por IA é rascunho pra validar, não evangelho
Minha conclusão prática: o ganho não está numa skill isolada, está no encadeamento
brainstorm pra levantar requisito, plano com tarefas e critérios, execução, e depois o front-end pra tirar o visual genérico
Gasta mais tempo e mais token, sim, mas o prompt sai certeiro e cobre decisão que eu não teria pensado no começo
Veja as skills funcionando no vídeo
No vídeo abaixo eu mostro esse encadeamento na tela, da pasta vazia até o app rodando: a entrevista da skill de brainstorm, o plano com as tarefas, a execução com os aceites, o erro de login sendo depurado e o redesign do front-end
Por onde começar com skills
Skill é instrução repetida que virou arquivo, e o agente decide sozinho quando abrir esse arquivo com base na descrição que você escreveu
É menos mágica e mais organização, e é justamente por isso que funciona
Próximo passo, hoje mesmo: crie uma pasta com um SKILL.md dentro de .opencode/skills (ou dentro de .claude/skills, se quiser aproveitar o mesmo arquivo nos dois agentes), capriche na description e teste numa tarefa que você já repetiu essa semana
Se a skill for carregada sozinha na hora certa, tá valendo 😀
até o próximo post!
Perguntas frequentes
Uma skill criada para o Claude Code funciona sem alteração no OpenCode?
Sim. O Claude Code já lê skills pessoais em ~/.claude/skills/ e skills do projeto em .claude/skills/, e o OpenCode inclui esses dois caminhos na própria lista de descoberta. Ou seja, o mesmo arquivo SKILL.md serve os dois agentes, sem duplicar nada.
Por que uma skill que está na pasta certa não aparece para o agente?
O motivo mais comum é a description ausente ou fraca no frontmatter. É ela que decide se a skill é anunciada ao modelo antes de ser carregada; sem description clara, a skill fica invisível mesmo estando no caminho certo.
Dá para permitir uma skill e bloquear outra no mesmo projeto?
Sim, pelo opencode.json. A permissão skill aceita allow, ask e deny por padrão de nome, com curinga (internal-* casa internal-docs e internal-tools), e as mesmas regras podem ficar sob agents.<id>.permissions para valer só num agente específico.
É preciso escrever código para criar uma skill no OpenCode?
Não. Uma skill é só uma pasta com um arquivo SKILL.md dentro, com frontmatter YAML (campos como name e description) e o corpo em Markdown com as instruções. Não tem compilação nem lógica de programa envolvida.
Onde ficam as skills que eu quero usar em todos os projetos, e não só em um?
Nos caminhos globais do usuário: ~/.config/opencode/skills/, ~/.claude/skills/ ou ~/.agents/skills/, sempre terminando em */SKILL.md. Skills nesses caminhos ficam disponíveis em qualquer projeto, ao contrário das que moram em .opencode/skills/ dentro do repositório.
Quem criou o formato SKILL.md, e ele é exclusivo do OpenCode?
O formato foi criado pela Anthropic e anunciado publicamente em 16 de outubro de 2025. Em 18 de dezembro de 2025 virou padrão aberto, com especificação publicada em agentskills.io e mantida no GitHub, então não é exclusivo do OpenCode.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]
