Pular para o conteúdo principal
A maior parte da configuração de skills fica em skills em ~/.openclaw/openclaw.json. A visibilidade específica do 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 },
    },
  },
}
Para geração de imagens integrada, use agents.defaults.imageGenerationModel mais a ferramenta central image_generate em vez de skills.entries. Entradas de skill são apenas para fluxos de trabalho de skills personalizados ou de terceiros.

Carregamento (skills.load)

skills.load.extraDirs
string[]
Diretórios adicionais de skills a verificar, com a menor precedência (depois de skills empacotadas e de Plugin). Os caminhos são expandidos com suporte a ~.
Diretórios de destino reais confiáveis para os quais pastas de skills com symlink podem resolver, mesmo quando o symlink fica fora da raiz configurada. Use isto 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.watch
boolean
padrão:"true"
Observa pastas de skills e atualiza o snapshot de skills quando arquivos SKILL.md mudam. Abrange arquivos aninhados em raízes de skills agrupadas.
skills.load.watchDebounceMs
number
padrão:"250"
Janela de debounce para eventos do observador de skills, em milissegundos.

Instalação (skills.install)

skills.install.preferBrew
boolean
padrão:"true"
Prefere instaladores do Homebrew quando brew está disponível.
skills.install.nodeManager
"npm" | "pnpm" | "yarn" | "bun"
padrão:"\"npm\""
Preferência de gerenciador de pacotes Node para instalações de skills. Isto afeta apenas instalações de skills — o runtime do Gateway ainda deve usar Node (Bun não é recomendado para WhatsApp/Telegram). Use openclaw setup --node-manager para npm, pnpm ou bun; defina "yarn" manualmente para instalações de skills baseadas em Yarn.
skills.install.allowUploadedArchives
boolean
padrão:"false"
Permite que clientes Gateway operator.admin confiáveis instalem arquivos zip privados preparados por meio de skills.upload.*. Instalações normais do ClawHub não precisam desta configuração.

Política de instalação do operador (security.installPolicy)

Use security.installPolicy quando 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 preparou o material de origem e antes que a instalação ou atualização continue. Ela se aplica a skills do ClawHub, skills enviadas, skills 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.enabled
boolean
padrão:"false"
Habilita a política de instalação controlada pelo operador. Quando habilitada sem um comando exec válido, as instalações falham de forma fechada.
security.installPolicy.targets
("skill" | "plugin")[]
Filtro de alvo opcional. Quando omitido, a política se aplica a todos os alvos compatíveis para que novas instalações não falhem abertas inesperadamente.
security.installPolicy.exec.command
string
Caminho absoluto para o executável de política confiável. O OpenClaw o executa sem um shell e valida o caminho antes do uso.
security.installPolicy.exec.args
string[]
Argumentos estáticos passados depois de command.
security.installPolicy.exec.timeoutMs
number
padrão:"10000"
Tempo máximo de execução em relógio de parede para uma decisão de política.
security.installPolicy.exec.noOutputTimeoutMs
number
padrão:"timeoutMs"
Tempo máximo sem saída em stdout ou stderr antes que a política falhe de forma fechada.
security.installPolicy.exec.maxOutputBytes
number
padrão:"1048576"
Máximo de bytes combinados de stdout e stderr aceitos do processo de política.
security.installPolicy.exec.env
Record<string, string>
Variáveis de ambiente literais fornecidas ao processo de política.
security.installPolicy.exec.passEnv
string[]
Nomes de variáveis de ambiente copiados do processo do OpenClaw para o processo de política. Apenas variáveis nomeadas são passadas.
security.installPolicy.exec.trustedDirs
string[]
Lista de permissões opcional de diretórios que podem conter o executável de política.
security.installPolicy.exec.allowInsecurePath
boolean
padrão:"false"
Ignora verificações de propriedade e permissão do caminho do comando. Use apenas quando o caminho estiver protegido por outro mecanismo.
Permite que o caminho de comando configurado seja um symlink. O destino resolvido ainda deve satisfazer as outras verificações de caminho. Argumentos de scripts interpretadores devem ser arquivos regulares diretos, não symlinks.
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": "..." }. Saída diferente de zero, timeout, JSON malformado, campos ausentes ou versões de protocolo sem suporte falham de forma fechada. 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 fechada quando a política está habilitada, mas indisponível. openclaw doctor realiza validação estática, e openclaw doctor --deep executa uma sondagem sintética de instalação contra o comando configurado. Atualizações em massa aplicam a política por alvo: uma atualização de skill ou plugin bloqueada falha nesse alvo sem desabilitar a política nem pular alvos posteriores no 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 de política mínimo:
#!/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 empacotadas

skills.allowBundled
string[]
Lista de permissões opcional apenas para skills empacotadas. Quando definida, apenas skills empacotadas na lista ficam elegíveis. Skills gerenciadas, no nível do agente e do workspace não são afetadas.

Entradas por skill (skills.entries)

Chaves em entries correspondem ao name da skill por padrão. Se uma skill definir metadata.openclaw.skillKey, use essa chave em vez disso. Coloque nomes com hífen entre aspas (JSON5 permite chaves entre aspas).
skills.entries.<key>.enabled
boolean
false desabilita a skill mesmo quando ela está empacotada ou instalada. A skill empacotada coding-agent é opt-in — defina-a como true e garanta que claude, codex, opencode ou outra CLI compatível esteja instalada e autenticada.
skills.entries.<key>.apiKey
string | { source, provider, id }
Campo de conveniência para skills que declaram metadata.openclaw.primaryEnv. Aceita uma string em texto simples ou um SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
skills.entries.<key>.env
Record<string, string>
Variáveis de ambiente injetadas para a execução do agente. Injetadas apenas quando a variável ainda não está definida no processo.
skills.entries.<key>.config
object
Bolsa opcional para campos personalizados de configuração por skill.

Listas de permissões de agentes (agents)

Use a configuração do agente quando quiser as mesmas raízes de skills de máquina/workspace, mas um conjunto de skills visível diferente por 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.skills
string[]
Lista de permissões de linha de base compartilhada herdada por agentes que omitem agents.list[].skills. Omita por completo para deixar skills irrestritas por padrão.
agents.list[].skills
string[]
Conjunto final explícito de skills para esse agente. Listas explícitas substituem padrões herdados — elas não são mescladas. Defina como [] para não expor skills a esse agente.
Listas de permissões de skills de agentes são um filtro de visibilidade e carregamento para a descoberta de skills do OpenClaw, prompts, descoberta de comandos de barra, sincronização de sandbox e snapshots de skills. Elas não são uma fronteira de autorização em tempo de shell. Se um agente puder executar exec no host, esse shell ainda poderá executar clientes externos ou ler arquivos do host que estejam visíveis ao usuário de execução, incluindo registros de clientes MCP, como ~/.openclaw/skills/config/mcporter.json. Para isolamento MCP por agente, combine listas de permissões de skills com isolamento por sandbox/usuário do SO, negue ou restrinja fortemente exec no host e prefira credenciais por agente no servidor MCP.

Workshop (skills.workshop)

skills.workshop.autonomous.enabled
boolean
padrão:"false"
Quando true, agentes podem criar propostas pendentes a partir de sinais duráveis de conversa 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"
padrão:"\"pending\""
pending exige aprovação do operador antes de aplicar, rejeitar ou colocar em quarentena por iniciativa do agente. auto permite essas ações sem aprovação.
Permite que a aplicação do Skill Workshop grave por meio de links simbólicos de skills do workspace cujo destino real já é confiável por skills.load.allowSymlinkTargets. Mantenha isto desabilitado, a menos que aplicações de propostas geradas devam modificar essa raiz de skills compartilhada.
skills.workshop.maxPending
number
padrão:"50"
Máximo de propostas pendentes e em quarentena retidas por workspace.
skills.workshop.maxSkillBytes
number
padrão:"40000"
Tamanho máximo do corpo da proposta em bytes. As descrições de propostas têm limite rígido de 160 bytes porque aparecem na saída de descoberta e listagem.
Por padrão, raízes de skills de workspace, agente de projeto, diretório extra e incluídas são limites de contenção. Uma pasta de skill com link simbólico em <workspace>/skills que resolve para fora da raiz é ignorada com uma mensagem de log. Para permitir um layout intencional com link simbólico, 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 de realpath. extraDirs verifica diretamente o repositório irmão; allowSymlinkTargets preserva o caminho com link simbólico para layouts existentes. Por padrão, a aplicação do Skill Workshop não grava por meio desses links simbólicos. Para permitir que a aplicação do Workshop modifique skills em destinos de links simbólicos já confiáveis, habilite separadamente:
{
  skills: {
    load: {
      allowSymlinkTargets: ["~/Projects/manager/skills"],
    },
    workshop: {
      allowSymlinkTargetWrites: true,
    },
  },
}
Diretórios gerenciados ~/.openclaw/skills e diretórios pessoais ~/.agents/skills já aceitam links simbólicos para diretórios de skills (a contenção por skill de SKILL.md ainda se aplica).

Skills em sandbox e variáveis de ambiente

skills.entries.<skill>.env e apiKey se aplicam apenas a execuções no host. Dentro de um sandbox, eles não têm efeito — uma skill que depende de GEMINI_API_KEY falhará com apiKey not configured, a menos que o sandbox receba a variável separadamente.
Passe segredos para um sandbox Docker com:
{
  agents: {
    defaults: {
      sandbox: {
        docker: {
          env: { GEMINI_API_KEY: "your-key-here" },
        },
      },
    },
  },
}
Usuários com acesso ao daemon do Docker podem inspecionar valores de sandbox.docker.env por meio dos metadados do Docker. Use um arquivo de segredo montado, uma imagem personalizada ou outro caminho de entrega quando essa exposição não for aceitável.

Lembrete da ordem de carregamento

workspace/skills      (highest)
workspace/.agents/skills
~/.agents/skills
~/.openclaw/skills
bundled skills
skills.load.extraDirs (lowest)
Alterações em skills e na configuração entram em vigor na próxima nova sessão quando o observador está habilitado, ou no próximo turno do agente quando o observador detecta uma alteração.

Relacionados

Referência de Skills

O que são skills, ordem de carregamento, controles de acesso e formato de SKILL.md.

Criando skills

Autoria de skills personalizadas de workspace.

Skill Workshop

Fila de propostas para skills rascunhadas por agentes.

Comandos de barra

Catálogo nativo de comandos de barra e diretivas de chat.