Skills

Configuración de Skills

La mayor parte de la configuración de Skills se encuentra bajo skills en ~/.openclaw/openclaw.json. La visibilidad específica de cada agente se encuentra bajo agents.defaults.skills y agents.list[].skills.

json5
{  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 },    },  },}

Carga (skills.load)

skills.load.extraDirsstring[]

Directorios adicionales de Skills que se examinarán, con la precedencia más baja (por debajo de los Skills incluidos y de Plugin). Las rutas se expanden con compatibilidad con ~.

skills.load.allowSymlinkTargetsstring[]

Directorios de destino reales y de confianza a los que pueden resolverse las carpetas de Skills enlazadas simbólicamente, incluso cuando el enlace simbólico se encuentra fuera de la raíz configurada. Use esta opción para estructuras intencionales de repositorios hermanos, como <workspace>/skills/manager -> ~/Projects/manager/skills. Mantenga esta lista limitada; no apunte a raíces amplias como ~ o ~/Projects.

skills.load.watchbooleandefault: true

Supervisa las carpetas de Skills y actualiza la instantánea de Skills cuando cambian los archivos SKILL.md. Incluye los archivos anidados bajo raíces agrupadas de Skills.

skills.load.watchDebounceMsnumberdefault: 250

Intervalo de estabilización, en milisegundos, para los eventos del supervisor de Skills.

Instalación (skills.install)

skills.install.preferBrewbooleandefault: true

Da preferencia a los instaladores de Homebrew cuando brew está disponible.

skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"

Preferencia del gestor de paquetes de Node para instalar Skills. Esto solo afecta a las instalaciones de Skills; el entorno de ejecución del Gateway debe seguir usando Node (Bun no se recomienda para WhatsApp/Telegram). openclaw setup --node-manager y openclaw onboard --node-manager aceptan npm, pnpm o bun; establezca "yarn" directamente en la configuración para instalaciones de Skills basadas en Yarn.

skills.install.allowUploadedArchivesbooleandefault: false

Permite que los clientes de confianza operator.admin del Gateway instalen archivos zip privados preparados mediante skills.upload.*. Las instalaciones normales de ClawHub no necesitan esta opción.

Política de instalación del operador (security.installPolicy)

Use security.installPolicy cuando los operadores necesiten un comando local de confianza para aprobar o bloquear instalaciones de Skills y Plugins mediante una política específica del host. La política se ejecuta después de que OpenClaw haya preparado el material de origen y antes de que continúe la instalación o actualización. Se aplica a los Skills de ClawHub, los Skills cargados, los Skills de Git/locales, los instaladores de dependencias de Skills y los orígenes de instalación o actualización de Plugins.

json5
{  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: false

Habilita la política de instalación gestionada por el operador. Cuando se habilita sin un comando exec válido, las instalaciones se bloquean de forma segura.

security.installPolicy.targets("skill" | "plugin")[]

Filtro de destinos opcional. Cuando se omite, la política se aplica a todos los destinos compatibles para que las instalaciones nuevas no se permitan inesperadamente por omisión.

security.installPolicy.exec.commandstring

Ruta absoluta al ejecutable de política de confianza. OpenClaw lo ejecuta sin un shell y valida la ruta antes de usarla.

security.installPolicy.exec.argsstring[]

Argumentos estáticos que se pasan después de command.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

Tiempo máximo de ejecución real para una decisión de política.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Tiempo máximo sin salida estándar ni salida de error antes de que la política se bloquee de forma segura.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Cantidad máxima combinada de bytes de la salida estándar y la salida de error aceptada del proceso de política.

security.installPolicy.exec.env"Record<string,
security.installPolicy.exec.passEnvstring[]

Nombres de variables de entorno que se copian del proceso de OpenClaw al proceso de política. Solo se pasan las variables indicadas.

security.installPolicy.exec.trustedDirsstring[]

Lista de permitidos opcional de directorios que pueden contener el ejecutable de política.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Omite las comprobaciones de propiedad y permisos de la ruta del comando. Úselo únicamente cuando la ruta esté protegida mediante otro mecanismo.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Permite que la ruta configurada del comando sea un enlace simbólico. El destino resuelto debe seguir cumpliendo las demás comprobaciones de ruta. Los argumentos de scripts de intérprete deben ser archivos normales directos, no enlaces simbólicos.

La política recibe por la entrada estándar un objeto JSON con protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath, sourcePathKind, un objeto estructurado opcional source, un objeto estructurado origin y request. Debe escribir un objeto JSON en la salida estándar: { "protocolVersion": 1, "decision": "allow" } o { "protocolVersion": 1, "decision": "block", "reason": "..." }. Una salida con código distinto de cero, un tiempo de espera agotado, un JSON mal formado, campos ausentes o versiones de protocolo no compatibles provocan un bloqueo seguro.

OpenClaw no ejecuta la política de instalación durante el inicio normal del Gateway. Las instalaciones y actualizaciones se bloquean de forma segura cuando la política está habilitada pero no disponible. openclaw doctor realiza una validación estática; openclaw doctor --deep ejecuta una prueba de instalación sintética contra el comando configurado.

Las actualizaciones masivas aplican la política a cada destino: una actualización bloqueada de un Skill o Plugin hace que falle ese destino sin deshabilitar la política ni omitir los destinos posteriores del lote.

Ejemplo de entrada estándar:

json
{  "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:

js
#!/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 Skills incluidos permitidos

skills.allowBundledstring[]

Lista de permitidos opcional únicamente para los Skills incluidos. Cuando se establece, solo son aptos los Skills incluidos que aparecen en la lista. Los Skills gestionados, los de nivel de agente y los del espacio de trabajo no se ven afectados.

Entradas por Skill (skills.entries)

De forma predeterminada, las claves bajo entries coinciden con el name del Skill. Si un Skill define metadata.openclaw.skillKey, use esa clave en su lugar. Escriba entre comillas los nombres con guiones (JSON5 permite claves entre comillas).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> false deshabilita el Skill incluso cuando está incluido o instalado. El Skill incluido coding-agent requiere activación explícita: establézcalo en true y asegúrese de que claude, codex, opencode u otra CLI compatible esté instalada y autenticada.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> Campo práctico para Skills que declaran metadata.openclaw.primaryEnv. Admite una cadena de texto sin formato o una SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.

"skills.entries.<key�����r�
"skills.entries.<key�w₫��ܩ

Listas de Skills permitidos por agente (agents)

Use la configuración del agente cuando quiera utilizar las mismas raíces de Skills de la máquina o del espacio de trabajo, pero un conjunto visible de Skills diferente para cada agente.

json5
{  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 base compartida de Skills permitidos que heredan los agentes que omiten agents.list[].skills. Omítala por completo para dejar los Skills sin restricciones de forma predeterminada.

agents.list[].skillsstring[]

Conjunto final explícito de Skills para ese agente. Las listas explícitas sustituyen los valores predeterminados heredados; no se combinan. Establézcalo en [] para no exponer ningún Skill a ese agente.

Taller (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Cuando es true, los agentes pueden crear propuestas pendientes a partir de señales persistentes de la conversación tras completar turnos correctamente. La creación de Skills solicitada por el usuario siempre pasa por Skill Workshop, independientemente de esta configuración.

skills.workshop.approvalPolicy"pending" | "auto"default: "pending"

pending requiere la aprobación del operador antes de aplicar, rechazar o poner en cuarentena una propuesta por iniciativa del agente. auto permite esas acciones sin aprobación.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Permite que Skill Workshop escriba, al aplicar una propuesta, a través de enlaces simbólicos de Skills del espacio de trabajo cuyo destino real ya sea de confianza según skills.load.allowSymlinkTargets. Mantenga esta opción desactivada salvo que la aplicación de propuestas generadas deba modificar esa raíz compartida de Skills.

skills.workshop.maxPendingnumberdefault: 50

Número máximo de propuestas pendientes y en cuarentena que se conservan por espacio de trabajo (rango permitido: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

Tamaño máximo del cuerpo de una propuesta en bytes (rango permitido: 1024-200000). Las descripciones de las propuestas tienen por separado un límite estricto de 160 bytes, porque aparecen en la salida de detección y listado.

Consulte Skill Workshop para conocer el ciclo de vida de las propuestas, los comandos de la CLI, los parámetros de las herramientas del agente y los métodos del Gateway que controla esta configuración.

Raíces de Skills con enlaces simbólicos

De forma predeterminada, las raíces de Skills del espacio de trabajo, del agente del proyecto, de directorios adicionales y de Skills incluidos actúan como límites de contención. Una carpeta de Skills con enlace simbólico bajo <workspace>/skills que se resuelva fuera de la raíz se omite y se registra un mensaje en el registro.

Para permitir una estructura intencionada de enlaces simbólicos, declare el destino de confianza:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/manager/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],    },  },}

Con esta configuración, <workspace>/skills/manager -> ~/Projects/manager/skills se acepta después de resolver la ruta real. extraDirs examina directamente el repositorio adyacente; allowSymlinkTargets conserva la ruta con enlace simbólico para las estructuras existentes.

De forma predeterminada, la aplicación de propuestas de Skill Workshop no escribe a través de esos enlaces simbólicos. Para permitir que Workshop modifique Skills bajo destinos de enlaces simbólicos que ya sean de confianza, active esta opción por separado:

json5
{  skills: {    load: {      allowSymlinkTargets: ["~/Projects/manager/skills"],    },    workshop: {      allowSymlinkTargetWrites: true,    },  },}

Los directorios administrados ~/.openclaw/skills y personales ~/.agents/skills ya aceptan incondicionalmente enlaces simbólicos a directorios de Skills (la contención de SKILL.md por Skill sigue siendo aplicable); allowSymlinkTargets solo es necesario para las raíces del espacio de trabajo, de directorios adicionales y del agente del proyecto (<workspace>/.agents/skills).

Skills en entornos aislados y variables de entorno

Transfiera secretos a un entorno aislado de Docker mediante:

json5
{  agents: {    defaults: {      sandbox: {        docker: {          env: { GEMINI_API_KEY: "your-key-here" },        },      },    },  },}

Recordatorio del orden de carga

text
workspace/skills      (máxima prioridad)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsSkills incluidosskills.load.extraDirs (mínima prioridad)

Los cambios en las Skills y en la configuración surten efecto en la siguiente sesión nueva cuando el observador está activado, o en el siguiente turno del agente cuando el observador detecta un cambio.

Temas relacionados

Was this useful?
On this page

On this page