Skills
Configuração de Skills
A maior parte da configuração de Skills fica em skills no arquivo
~/.openclaw/openclaw.json. A visibilidade específica de cada agente fica em
agents.defaults.skills e agents.list[].skills.
{ skills: { allowBundled: ["gemini", "peekaboo"], load: { extraDirs: ["~/Projects/agent-scripts/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], watch: true, watchDebounceMs: 250, }, install: { preferBrew: true, nodeManager: "npm", allowUploadedArchives: false, }, workshop: { autonomous: { enabled: false }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, entries: { "image-lab": { enabled: true, apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" }, }, peekaboo: { enabled: true }, sag: { enabled: false }, }, },}Carregamento (skills.load)
skills.load.extraDirsstring[]Diretórios adicionais de Skills a serem verificados, com a menor precedência
(abaixo das Skills integradas e de Plugins). Os caminhos são expandidos com
suporte a ~.
skills.load.allowSymlinkTargetsstring[]Diretórios de destino reais e confiáveis para os quais pastas de Skills
vinculadas simbolicamente podem apontar, mesmo quando o link simbólico está fora
da raiz configurada. Use isso para layouts intencionais de repositórios irmãos,
como <workspace>/skills/manager -> ~/Projects/manager/skills. Mantenha esta
lista restrita — não aponte para raízes amplas como ~ ou ~/Projects.
skills.load.watchbooleandefault: trueMonitora as pastas de Skills e atualiza o snapshot de Skills quando arquivos
SKILL.md são alterados. Abrange arquivos aninhados em raízes de Skills
agrupadas.
skills.load.watchDebounceMsnumberdefault: 250Janela de debounce, em milissegundos, para eventos do monitor de Skills.
Instalação (skills.install)
skills.install.preferBrewbooleandefault: trueDá preferência aos instaladores do Homebrew quando brew está disponível.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Preferência de gerenciador de pacotes do Node para instalações de Skills. Isso
afeta apenas as instalações de Skills — o ambiente de execução do Gateway ainda
deve usar Node (Bun não é recomendado para WhatsApp/Telegram).
openclaw setup --node-manager e openclaw onboard --node-manager aceitam
npm, pnpm ou bun; defina "yarn" diretamente na configuração para
instalações de Skills baseadas em Yarn.
skills.install.allowUploadedArchivesbooleandefault: falsePermite que clientes confiáveis do Gateway com operator.admin instalem
arquivos zip privados preparados por meio de skills.upload.*. Instalações
normais do ClawHub não precisam dessa configuração.
Política de instalação do operador (security.installPolicy)
Use security.installPolicy quando os operadores precisarem de um comando local
confiável para aprovar ou bloquear instalações de Skills e Plugins com uma
política específica do host. A política é executada depois que o OpenClaw prepara
o material de origem e antes que a instalação ou atualização prossiga. Ela se
aplica a Skills do ClawHub, Skills enviadas, Skills do Git/locais, instaladores
de dependências de Skills e origens de instalação/atualização de Plugins.
{ security: { installPolicy: { enabled: true, // Omit targets to cover every supported target. targets: ["skill", "plugin"], exec: { source: "exec", command: "/usr/local/bin/openclaw-install-policy", args: ["--json"], timeoutMs: 10000, noOutputTimeoutMs: 10000, maxOutputBytes: 1048576, passEnv: ["OPENCLAW_STATE_DIR", "PATH"], env: { POLICY_MODE: "strict" }, trustedDirs: ["/usr/local/bin"], }, }, },}security.installPolicy.enabledbooleandefault: falseAtiva a política de instalação controlada pelo operador. Quando ativada sem
um comando exec válido, as instalações falham de forma segura.
security.installPolicy.targets("skill" | "plugin")[]Filtro opcional de destinos. Quando omitido, a política se aplica a todos os destinos compatíveis, para que novas instalações não sejam permitidas inesperadamente em caso de falha.
security.installPolicy.exec.commandstringCaminho absoluto para o executável confiável da política. O OpenClaw o executa sem um shell e valida o caminho antes do uso.
security.installPolicy.exec.argsstring[]Argumentos estáticos passados após command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Tempo máximo total de execução para uma decisão da política.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsTempo máximo sem saída em stdout ou stderr antes que a política falhe de forma segura.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Número máximo combinado de bytes de stdout e stderr aceitos do processo da política.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Nomes de variáveis de ambiente copiados do processo do OpenClaw para o processo da política. Apenas as variáveis nomeadas são repassadas.
security.installPolicy.exec.trustedDirsstring[]Lista opcional de diretórios permitidos que podem conter o executável da política.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseIgnora as verificações de propriedade e permissões do caminho do comando. Use somente quando o caminho estiver protegido por outro mecanismo.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falsePermite que o caminho configurado do comando seja um link simbólico. O destino resolvido ainda precisa atender às demais verificações de caminho. Os argumentos de scripts de interpretador devem ser arquivos regulares diretos, não links simbólicos.
A política recebe um objeto JSON em stdin com protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
source estruturado opcional, origin estruturado e request. Ela deve
escrever um objeto JSON em stdout: { "protocolVersion": 1, "decision": "allow" }
ou { "protocolVersion": 1, "decision": "block", "reason": "..." }. Código de
saída diferente de zero, tempo limite, JSON malformado, campos ausentes ou versões
de protocolo não compatíveis causam falha segura.
O OpenClaw não executa a política de instalação durante a inicialização normal
do Gateway. Instalações e atualizações falham de forma segura quando a política
está ativada, mas indisponível. openclaw doctor executa uma validação estática;
openclaw doctor --deep executa uma sondagem sintética de instalação usando o
comando configurado.
Atualizações em massa aplicam a política a cada destino: uma atualização de Skill ou Plugin bloqueada causa falha nesse destino sem desativar a política nem ignorar os destinos posteriores do lote.
Exemplo de stdin:
{ "protocolVersion": 1, "openclawVersion": "2026.6.1", "targetType": "skill", "targetName": "weather", "sourcePath": "/var/folders/.../openclaw-skill-clawhub/root", "sourcePathKind": "directory", "source": { "kind": "clawhub", "authority": "openclaw", "mutable": false, "network": true }, "origin": { "type": "clawhub", "registry": "https://clawhub.openclaw.ai", "slug": "weather", "version": "1.0.0" }, "request": { "kind": "skill-install", "mode": "install", "requestedSpecifier": "clawhub:weather@1.0.0" }, "skill": { "installId": "clawhub" }}Comando mínimo de política:
#!/usr/bin/env node let input = "";process.stdin.setEncoding("utf8");process.stdin.on("data", (chunk) => { input += chunk;});process.stdin.on("end", () => { const request = JSON.parse(input); if (request.targetType === "plugin" && request.source?.kind === "local-path") { process.stdout.write( JSON.stringify({ protocolVersion: 1, decision: "block", reason: "local plugin paths are not approved on this host", }), ); return; } process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});Lista de permissões de Skills integradas
skills.allowBundledstring[]Lista de permissões opcional apenas para Skills integradas. Quando definida, somente as Skills integradas presentes na lista são elegíveis. Skills gerenciadas, no nível do agente e do workspace não são afetadas.
Entradas por Skill (skills.entries)
Por padrão, as chaves em entries correspondem ao name da Skill. Se uma Skill
definir metadata.openclaw.skillKey, use essa chave. Coloque nomes com hífen
entre aspas (JSON5 permite chaves entre aspas).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false desativa a Skill mesmo quando ela está integrada ou instalada. A Skill
integrada coding-agent exige ativação explícita — defina-a como true e
certifique-se de que claude, codex, opencode ou outra CLI compatível esteja
instalada e autenticada.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Campo de conveniência para Skills que declaram metadata.openclaw.primaryEnv.
Aceita uma string de texto simples ou uma SecretRef:
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩListas de permissões de agentes (agents)
Use a configuração do agente quando quiser manter as mesmas raízes de Skills da máquina/workspace, mas usar um conjunto diferente de Skills visíveis para cada agente.
{ agents: { defaults: { skills: ["github", "weather"], // shared baseline }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults entirely { id: "locked-down", skills: [] }, // no skills ], },}agents.defaults.skillsstring[]Lista de permissões de referência compartilhada, herdada por agentes que omitem
agents.list[].skills. Omita-a por completo para deixar as Skills sem
restrições por padrão.
agents.list[].skillsstring[]Conjunto final explícito de Skills para esse agente. Listas explícitas
substituem os padrões herdados — elas não são combinadas. Defina como []
para não expor nenhuma Skill a esse agente.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseQuando true, os agentes podem criar propostas pendentes com base em sinais
persistentes de conversas após turnos bem-sucedidos. A criação de Skills
solicitada pelo usuário sempre passa pelo Skill Workshop,
independentemente desta configuração.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending exige a aprovação do operador antes que ações de aplicar, rejeitar
ou colocar em quarentena sejam iniciadas pelo agente. auto permite essas
ações sem aprovação.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falsePermite que a aplicação pelo Skill Workshop grave por meio de links
simbólicos de Skills do espaço de trabalho cujo destino real já seja
confiável conforme skills.load.allowSymlinkTargets. Mantenha esta opção
desativada, a menos que a aplicação das propostas geradas deva modificar
essa raiz compartilhada de Skills.
skills.workshop.maxPendingnumberdefault: 50Número máximo de propostas pendentes e em quarentena mantidas por espaço de trabalho (intervalo permitido: 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Tamanho máximo do corpo da proposta em bytes (intervalo permitido: 1024-200000). As descrições das propostas têm um limite rígido separado de 160 bytes, pois aparecem na saída de descoberta e listagem.
Consulte Skill Workshop para conhecer o ciclo de vida das propostas, os comandos da CLI, os parâmetros das ferramentas do agente e os métodos do Gateway controlados por esta configuração.
Raízes de Skills com links simbólicos
Por padrão, as raízes de Skills do espaço de trabalho, do agente do projeto,
de diretórios extras e das Skills integradas são limites de contenção. Uma
pasta de Skill com link simbólico em <workspace>/skills que seja resolvida
para fora da raiz é ignorada e uma mensagem é registrada no log.
Para permitir intencionalmente uma estrutura com links simbólicos, declare o destino confiável:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Com esta configuração, <workspace>/skills/manager -> ~/Projects/manager/skills
é aceito após a resolução do caminho real. extraDirs verifica diretamente o
repositório adjacente; allowSymlinkTargets preserva o caminho com link
simbólico para estruturas existentes.
Por padrão, a aplicação pelo Skill Workshop não grava por meio desses links simbólicos. Para permitir que a aplicação pelo Workshop modifique Skills em destinos de links simbólicos já confiáveis, habilite essa opção separadamente:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Os diretórios gerenciados ~/.openclaw/skills e pessoais ~/.agents/skills
já aceitam incondicionalmente links simbólicos para diretórios de Skills (a
contenção de SKILL.md por Skill ainda se aplica) — allowSymlinkTargets só
é necessário para as raízes do espaço de trabalho, de diretórios extras e do
agente do projeto (<workspace>/.agents/skills).
Skills em sandbox e variáveis de ambiente
Passe segredos para uma sandbox do Docker com:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Lembrete da ordem de carregamento
workspace/skills (mais alta)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsSkills integradasskills.load.extraDirs (mais baixa)As alterações nas Skills e na configuração entram em vigor na próxima nova sessão quando o monitor estiver habilitado, ou no próximo turno do agente quando o monitor detectar uma alteração.
Relacionados
O que são Skills, ordem de carregamento, restrições e formato de SKILL.md.
Criação de Skills personalizadas para o espaço de trabalho.
Fila de propostas para Skills elaboradas por agentes.
Catálogo nativo de comandos de barra e diretivas de chat.