Skills (OpenClaw)
O OpenClaw usa pastas de skill compatíveis com AgentSkills para ensinar o agente a usar ferramentas. Cada skill é um diretório contendo umSKILL.md com frontmatter YAML e instruções. O OpenClaw carrega Skills integradas mais overrides locais opcionais, e as filtra no momento do carregamento com base em ambiente, configuração e presença de binários.
Localizações e precedência
O OpenClaw carrega Skills destas fontes:- Pastas extras de skill: configuradas com
skills.load.extraDirs - Skills integradas: distribuídas com a instalação (pacote npm ou OpenClaw.app)
- Skills gerenciadas/locais:
~/.openclaw/skills - Skills pessoais do agente:
~/.agents/skills - Skills do agente do projeto:
<workspace>/.agents/skills - Skills do workspace:
<workspace>/skills
<workspace>/skills (mais alta) → <workspace>/.agents/skills → ~/.agents/skills → ~/.openclaw/skills → Skills integradas → skills.load.extraDirs (mais baixa)
Skills por agente vs compartilhadas
Em configurações multiagente, cada agente tem seu próprio workspace. Isso significa:- Skills por agente ficam em
<workspace>/skillsapenas para aquele agente. - Skills do agente do projeto ficam em
<workspace>/.agents/skillse se aplicam àquele workspace antes da pasta normalskills/do workspace. - Skills pessoais do agente ficam em
~/.agents/skillse se aplicam a todos os workspaces naquela máquina. - Skills compartilhadas ficam em
~/.openclaw/skills(gerenciadas/locais) e são visíveis para todos os agentes na mesma máquina. - Pastas compartilhadas também podem ser adicionadas por
skills.load.extraDirs(precedência mais baixa) se você quiser um pacote comum de Skills usado por vários agentes.
Allowlists de Skills por agente
A localização da skill e a visibilidade da skill são controles separados.- Localização/precedência decide qual cópia de uma skill com o mesmo nome vence.
- Allowlists por agente decidem quais Skills visíveis um agente pode realmente usar.
agents.defaults.skills para uma base compartilhada e, depois, sobrescreva por agente com
agents.list[].skills:
- Omita
agents.defaults.skillspara Skills irrestritas por padrão. - Omita
agents.list[].skillspara herdaragents.defaults.skills. - Defina
agents.list[].skills: []para não ter Skills. - Uma lista não vazia em
agents.list[].skillsé o conjunto final daquele agente; ela não é mesclada com os padrões.
Plugins + Skills
Plugins podem distribuir suas próprias Skills listando diretóriosskills em
openclaw.plugin.json (caminhos relativos à raiz do plugin). As Skills do plugin são carregadas
quando o plugin está ativado. Hoje esses diretórios são mesclados no mesmo caminho
de baixa precedência que skills.load.extraDirs, então uma skill de mesmo nome integrada,
gerenciada, do agente ou do workspace a substitui.
Você pode aplicar gate nelas via metadata.openclaw.requires.config na entrada de config
do plugin. Veja Plugins para descoberta/configuração e Ferramentas para a
superfície de ferramentas que essas Skills ensinam.
ClawHub (instalação + sincronização)
ClawHub é o registro público de Skills do OpenClaw. Navegue em https://clawhub.ai. Use os comandos nativosopenclaw skills
para descobrir/instalar/atualizar Skills, ou a CLI separada clawhub quando
você precisar de fluxos de publicação/sincronização.
Guia completo: ClawHub.
Fluxos comuns:
- Instalar uma skill no seu workspace:
openclaw skills install <skill-slug>
- Atualizar todas as Skills instaladas:
openclaw skills update --all
- Sincronizar (varrer + publicar atualizações):
clawhub sync --all
openclaw skills install nativo instala no diretório skills/ do workspace ativo. A CLI separada
clawhub também instala em ./skills sob o diretório de trabalho atual
(ou recorre ao workspace configurado do OpenClaw).
O OpenClaw identifica isso como <workspace>/skills na próxima sessão.
Notas de segurança
- Trate Skills de terceiros como código não confiável. Leia antes de ativar.
- Prefira execuções em sandbox para entradas não confiáveis e ferramentas arriscadas. Veja Sandboxing.
- A descoberta de Skills do workspace e de diretórios extras aceita apenas raízes de skill e arquivos
SKILL.mdcujo realpath resolvido permaneça dentro da raiz configurada. - Instalações de dependências de Skills via gateway (
skills.install, onboarding e a UI de configurações de Skills) executam o scanner interno de código perigoso antes de executar metadados de instalação. Achadoscriticalbloqueiam por padrão, a menos que o chamador defina explicitamente o override de perigoso; achados suspeitos ainda geram apenas aviso. openclaw skills install <slug>é diferente: ele baixa uma pasta de skill do ClawHub para o workspace e não usa o caminho de metadados de instalação acima.skills.entries.*.enveskills.entries.*.apiKeyinjetam segredos no processo host para aquele turno do agente (não no sandbox). Mantenha segredos fora de prompts e logs.- Para um modelo de ameaça mais amplo e checklists, veja Segurança.
Formato (AgentSkills + compatível com Pi)
SKILL.md deve incluir no mínimo:
- Seguimos a especificação AgentSkills para layout/intenção.
- O parser usado pelo agente embutido aceita chaves de frontmatter em uma única linha apenas.
metadatadeve ser um objeto JSON em uma única linha.- Use
{baseDir}nas instruções para referenciar o caminho da pasta da skill. - Chaves opcionais de frontmatter:
-
homepage— URL exibida como “Website” na UI de Skills do macOS (também suportada viametadata.openclaw.homepage). -
user-invocable—true|false(padrão:true). Quandotrue, a skill é exposta como um slash command do usuário. -
disable-model-invocation—true|false(padrão:false). Quandotrue, a skill é excluída do prompt do modelo (ainda disponível por invocação do usuário). -
command-dispatch—tool(opcional). Quando definido comotool, o slash command ignora o modelo e é despachado diretamente para uma ferramenta. -
command-tool— nome da ferramenta a invocar quandocommand-dispatch: toolestiver definido. -
command-arg-mode—raw(padrão). Para dispatch de ferramenta, encaminha a string bruta de args para a ferramenta (sem parsing pelo core). A ferramenta é invocada com os parâmetros:{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.
-
Gating (filtros no momento do carregamento)
O OpenClaw filtra Skills no momento do carregamento usandometadata (JSON em uma única linha):
metadata.openclaw:
always: true— sempre inclui a skill (ignora os demais gates).emoji— emoji opcional usado pela UI de Skills do macOS.homepage— URL opcional mostrada como “Website” na UI de Skills do macOS.os— lista opcional de plataformas (darwin,linux,win32). Se definida, a skill só é elegível nesses sistemas operacionais.requires.bins— lista; cada item deve existir noPATH.requires.anyBins— lista; pelo menos um item deve existir noPATH.requires.env— lista; a variável de ambiente deve existir ou ser fornecida na configuração.requires.config— lista de caminhos deopenclaw.jsonque devem ser truthy.primaryEnv— nome da variável de ambiente associada askills.entries.<name>.apiKey.install— array opcional de especificações de instalador usadas pela UI de Skills do macOS (brew/node/go/uv/download).
requires.binsé verificado no host no momento do carregamento da skill.- Se um agente estiver em sandbox, o binário também deve existir dentro do contêiner.
Instale-o por meio de
agents.defaults.sandbox.docker.setupCommand(ou uma imagem personalizada).setupCommandé executado uma vez depois que o contêiner é criado. Instalações de pacote também exigem saída de rede, um sistema de arquivos raiz gravável e um usuário root no sandbox. Exemplo: a skillsummarize(skills/summarize/SKILL.md) precisa da CLIsummarizeno contêiner do sandbox para ser executada ali.
- Se vários instaladores estiverem listados, o gateway escolhe uma única opção preferida (brew quando disponível, caso contrário node).
- Se todos os instaladores forem
download, o OpenClaw lista cada entrada para que você possa ver os artefatos disponíveis. - Especificações de instalador podem incluir
os: ["darwin"|"linux"|"win32"]para filtrar opções por plataforma. - Instalações por node respeitam
skills.install.nodeManageremopenclaw.json(padrão: npm; opções: npm/pnpm/yarn/bun). Isso afeta apenas as instalações de Skill; o runtime do Gateway ainda deve ser Node (Bun não é recomendado para WhatsApp/Telegram). - A seleção de instalador via gateway é orientada por preferência, não apenas por node:
quando as especificações de instalação misturam tipos, o OpenClaw prefere Homebrew quando
skills.install.preferBrewestá ativado ebrewexiste, depoisuv, depois o gerenciador node configurado e, então, outros fallbacks comogooudownload. - Se todas as especificações de instalação forem
download, o OpenClaw expõe todas as opções de download em vez de reduzi-las a um único instalador preferido. - Instalações Go: se
goestiver ausente ebrewestiver disponível, o gateway instala Go via Homebrew primeiro e defineGOBINpara obindo Homebrew quando possível. - Instalações por download:
url(obrigatório),archive(tar.gz|tar.bz2|zip),extract(padrão: automático quando um arquivo compactado é detectado),stripComponents,targetDir(padrão:~/.openclaw/tools/<skillKey>).
metadata.openclaw, a skill é sempre elegível (a menos que
esteja desativada na configuração ou bloqueada por skills.allowBundled para Skills integradas).
Overrides de configuração (~/.openclaw/openclaw.json)
Skills integradas/gerenciadas podem ser ativadas/desativadas e receber valores de env:
image_generate com agents.defaults.imageGenerationModel em vez de uma
skill integrada. Os exemplos de Skill aqui são para fluxos personalizados ou de terceiros.
Para análise de imagens nativa, use a ferramenta image com agents.defaults.imageModel.
Para geração/edição nativa de imagens, use image_generate com
agents.defaults.imageGenerationModel. Se você escolher openai/*, google/*,
fal/* ou outro modelo de imagem específico de provedor, adicione também a autenticação/chave de API desse provedor.
As chaves de configuração correspondem ao nome da skill por padrão. Se uma skill definir
metadata.openclaw.skillKey, use essa chave em skills.entries.
Regras:
enabled: falsedesativa a skill mesmo que ela esteja integrada/instalada.env: injetado apenas se a variável ainda não estiver definida no processo.apiKey: conveniência para Skills que declarammetadata.openclaw.primaryEnv. Suporta string em texto puro ou objeto SecretRef ({ source, provider, id }).config: bag opcional para campos personalizados por skill; chaves personalizadas devem ficar aqui.allowBundled: allowlist opcional apenas para Skills integradas. Se definida, apenas Skills integradas na lista serão elegíveis (Skills gerenciadas/do workspace não são afetadas).
Injeção de ambiente (por execução de agente)
Quando uma execução de agente começa, o OpenClaw:- Lê os metadados da skill.
- Aplica qualquer
skills.entries.<key>.envouskills.entries.<key>.apiKeyaprocess.env. - Constrói o prompt do sistema com Skills elegíveis.
- Restaura o ambiente original após o fim da execução.
claude-cli, o OpenClaw também materializa o mesmo
snapshot elegível como um plugin temporário do Claude Code e o passa com
--plugin-dir. O Claude Code pode então usar seu resolvedor nativo de Skills, enquanto
o OpenClaw continua sendo responsável por precedência, allowlists por agente, gating e
injeção de env/chave de API em skills.entries.*. Outros backends de CLI usam apenas o catálogo do prompt.
Snapshot de sessão (desempenho)
O OpenClaw cria um snapshot das Skills elegíveis quando uma sessão começa e reutiliza essa lista nos turnos seguintes da mesma sessão. Alterações em Skills ou na configuração entram em vigor na próxima sessão nova. As Skills também podem ser atualizadas no meio da sessão quando o watcher de Skills está ativado ou quando um novo nó remoto elegível aparece (veja abaixo). Pense nisso como um hot reload: a lista atualizada é capturada no próximo turno do agente. Se a allowlist efetiva de Skills do agente mudar para aquela sessão, o OpenClaw atualiza o snapshot para que as Skills visíveis permaneçam alinhadas com o agente atual.Nós remotos macOS (gateway Linux)
Se o Gateway estiver em execução no Linux, mas um nó macOS estiver conectado comsystem.run permitido (segurança de aprovações de Exec diferente de deny), o OpenClaw pode tratar Skills exclusivas de macOS como elegíveis quando os binários necessários estiverem presentes naquele nó. O agente deve executar essas Skills por meio da ferramenta exec com host=node.
Isso depende de o nó reportar seu suporte a comandos e de um probe de binário via system.run. Se o nó macOS ficar offline depois, as Skills permanecem visíveis; as invocações podem falhar até que o nó se reconecte.
Watcher de Skills (autoatualização)
Por padrão, o OpenClaw monitora pastas de skill e incrementa o snapshot de Skills quando arquivosSKILL.md mudam. Configure isso em skills.load:
Impacto em tokens (lista de Skills)
Quando há Skills elegíveis, o OpenClaw injeta uma lista XML compacta de Skills disponíveis no prompt do sistema (viaformatSkillsForPrompt em pi-coding-agent). O custo é determinístico:
- Overhead base (somente quando ≥1 skill): 195 caracteres.
- Por skill: 97 caracteres + o tamanho dos valores XML-escaped de
<name>,<description>e<location>.
- O escaping XML expande
& < > " 'em entidades (&,<etc.), aumentando o tamanho. - A contagem de tokens varia conforme o tokenizer do modelo. Uma estimativa aproximada no estilo OpenAI é ~4 caracteres/token, então 97 caracteres ≈ 24 tokens por skill, além do tamanho real dos seus campos.
Ciclo de vida de Skills gerenciadas
O OpenClaw distribui um conjunto base de Skills como Skills integradas como parte da instalação (pacote npm ou OpenClaw.app).~/.openclaw/skills existe para
overrides locais (por exemplo, fixar/aplicar patch em uma skill sem alterar a cópia
integrada). Skills do workspace pertencem ao usuário e substituem ambas em conflitos de nome.
Referência de configuração
Veja Configuração de Skills para o esquema completo de configuração.Procurando mais Skills?
Navegue em https://clawhub.ai.Relacionado
- Criando Skills — criando Skills personalizadas
- Configuração de Skills — referência de configuração de Skills
- Slash Commands — todos os slash commands disponíveis
- Plugins — visão geral do sistema de plugins