Skills
Configurazione delle Skills
La maggior parte della configurazione delle skill si trova in skills in
~/.openclaw/openclaw.json. La visibilità specifica per agente si trova in
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 }, }, },}Caricamento (skills.load)
skills.load.extraDirsstring[]Directory aggiuntive delle skill da analizzare, con la priorità più bassa (dopo
le skill incluse e dei Plugin). I percorsi vengono espansi con il supporto di ~.
skills.load.allowSymlinkTargetsstring[]Directory di destinazione reali attendibili in cui possono risolversi le cartelle
delle skill collegate simbolicamente, anche quando il collegamento simbolico si trova
all'esterno della radice configurata. Usalo per strutture intenzionali con repository
adiacenti, come <workspace>/skills/manager -> ~/Projects/manager/skills. Mantieni
questo elenco ristretto: non indicare radici generiche come ~ o ~/Projects.
skills.load.watchbooleandefault: trueMonitora le cartelle delle skill e aggiorna l'istantanea delle skill quando cambiano
i file SKILL.md. Include i file annidati nelle radici raggruppate delle skill.
skills.load.watchDebounceMsnumberdefault: 250Finestra di debounce in millisecondi per gli eventi del monitoraggio delle skill.
Installazione (skills.install)
skills.install.preferBrewbooleandefault: truePreferisce i programmi di installazione Homebrew quando brew è disponibile.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Preferenza del gestore di pacchetti Node per le installazioni delle skill. Ciò influisce
solo sulle installazioni delle skill: il runtime del Gateway deve continuare a usare Node
(Bun non è consigliato per WhatsApp/Telegram). openclaw setup --node-manager e
openclaw onboard --node-manager accettano npm, pnpm o bun; imposta
"yarn" direttamente nella configurazione per installazioni delle skill basate su Yarn.
skills.install.allowUploadedArchivesbooleandefault: falseConsente ai client Gateway operator.admin attendibili di installare archivi zip
privati predisposti tramite skills.upload.*. Le normali installazioni da ClawHub non
richiedono questa impostazione.
Criteri di installazione dell'operatore (security.installPolicy)
Usa security.installPolicy quando gli operatori necessitano di un comando locale
attendibile per approvare o bloccare le installazioni di skill e Plugin in base a criteri
specifici dell'host. Il criterio viene eseguito dopo che OpenClaw ha predisposto il materiale
sorgente e prima che l'installazione o l'aggiornamento prosegua. Si applica alle skill di
ClawHub, alle skill caricate, alle skill Git/locali, ai programmi di installazione delle
dipendenze delle skill e alle sorgenti di installazione/aggiornamento dei Plugin.
{ 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: falseAbilita il criterio di installazione gestito dall'operatore. Quando è abilitato senza
un comando exec valido, le installazioni vengono bloccate per impostazione predefinita.
security.installPolicy.targets("skill" | "plugin")[]Filtro facoltativo delle destinazioni. Se omesso, il criterio si applica a tutte le destinazioni supportate, affinché le nuove installazioni non vengano inaspettatamente consentite per impostazione predefinita.
security.installPolicy.exec.commandstringPercorso assoluto dell'eseguibile attendibile del criterio. OpenClaw lo esegue senza una shell e convalida il percorso prima dell'uso.
security.installPolicy.exec.argsstring[]Argomenti statici passati dopo command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Durata massima effettiva per una singola decisione del criterio.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsTempo massimo senza output su stdout o stderr prima che il criterio blocchi l'operazione per impostazione predefinita.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Numero massimo complessivo di byte di stdout e stderr accettati dal processo del criterio.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Nomi delle variabili d'ambiente copiati dal processo OpenClaw nel processo del criterio. Vengono passate solo le variabili indicate.
security.installPolicy.exec.trustedDirsstring[]Elenco consentito facoltativo delle directory che possono contenere l'eseguibile del criterio.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseIgnora i controlli sulla proprietà e sui permessi del percorso del comando. Usalo solo quando il percorso è protetto da un altro meccanismo.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseConsente che il percorso del comando configurato sia un collegamento simbolico. La destinazione risolta deve comunque soddisfare gli altri controlli sul percorso. Gli argomenti degli script dell'interprete devono essere file regolari diretti, non collegamenti simbolici.
Il criterio riceve su stdin un oggetto JSON con protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
i campi strutturati facoltativi source e origin, e request. Deve
scrivere su stdout un oggetto JSON: { "protocolVersion": 1, "decision": "allow" }
oppure { "protocolVersion": 1, "decision": "block", "reason": "..." }. Un codice di
uscita diverso da zero, un timeout, JSON non valido, campi mancanti o versioni del
protocollo non supportate comportano il blocco per impostazione predefinita.
OpenClaw non esegue il criterio di installazione durante il normale avvio del Gateway.
Le installazioni e gli aggiornamenti vengono bloccati per impostazione predefinita quando
il criterio è abilitato ma non disponibile. openclaw doctor esegue la convalida statica;
openclaw doctor --deep esegue una verifica di installazione simulata sul comando configurato.
Gli aggiornamenti in blocco applicano il criterio a ogni destinazione: l'aggiornamento bloccato di una skill o di un Plugin non riesce per quella destinazione, senza disabilitare il criterio né saltare le destinazioni successive del gruppo.
Esempio di 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 minimo del criterio:
#!/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" }));});Elenco consentito delle skill incluse
skills.allowBundledstring[]Elenco consentito facoltativo esclusivamente per le skill incluse. Quando è impostato, sono idonee solo le skill incluse presenti nell'elenco. Le skill gestite, a livello di agente e dell'area di lavoro non sono interessate.
Voci per singola skill (skills.entries)
Per impostazione predefinita, le chiavi in entries corrispondono al name della skill.
Se una skill definisce metadata.openclaw.skillKey, usa invece tale chiave. Racchiudi tra
virgolette i nomi con trattini (JSON5 consente chiavi tra virgolette).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false disabilita la skill anche se inclusa o installata. La skill inclusa
coding-agent richiede l'abilitazione esplicita: impostala su true e assicurati che
claude, codex, opencode o un'altra CLI supportata sia installata e autenticata.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Campo di praticità per le skill che dichiarano metadata.openclaw.primaryEnv.
Supporta una stringa in testo non crittografato o un SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩElenchi consentiti degli agenti (agents)
Usa la configurazione dell'agente quando vuoi mantenere le stesse radici delle skill della macchina/area di lavoro, ma un insieme di skill visibili diverso per ogni 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[]Elenco consentito di base condiviso, ereditato dagli agenti che omettono
agents.list[].skills. Omettilo completamente per lasciare le skill senza
restrizioni per impostazione predefinita.
agents.list[].skillsstring[]Insieme finale esplicito delle skill per tale agente. Gli elenchi espliciti
sostituiscono completamente i valori predefiniti ereditati, senza unirsi a essi.
Imposta [] per non esporre alcuna skill a tale agente.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseQuando è true, gli agenti possono creare proposte in sospeso a partire da
segnali persistenti delle conversazioni dopo turni completati con successo.
La creazione di skill richiesta dall'utente passa sempre attraverso Skill
Workshop, indipendentemente da questa impostazione.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending richiede l'approvazione dell'operatore prima che l'agente avvii
l'applicazione, il rifiuto o la quarantena. auto consente queste azioni
senza approvazione.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseConsente all'applicazione tramite Skill Workshop di scrivere attraverso i
collegamenti simbolici alle skill dell'area di lavoro la cui destinazione
reale è già considerata attendibile da skills.load.allowSymlinkTargets.
Mantieni questa opzione disabilitata, a meno che l'applicazione delle
proposte generate non debba modificare la radice condivisa delle skill.
skills.workshop.maxPendingnumberdefault: 50Numero massimo di proposte in sospeso e in quarantena conservate per area di lavoro (intervallo consentito: 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Dimensione massima del corpo della proposta in byte (intervallo consentito: 1024-200000). Le descrizioni delle proposte hanno separatamente un limite rigido di 160 byte, perché compaiono nell'output di individuazione ed elenco.
Consulta Skill Workshop per il ciclo di vita delle proposte, i comandi CLI, i parametri degli strumenti degli agenti e i metodi Gateway controllati da questa configurazione.
Radici delle skill con collegamenti simbolici
Per impostazione predefinita, le radici delle skill dell'area di lavoro,
dell'agente di progetto, delle directory aggiuntive e delle skill incluse
costituiscono limiti di contenimento. Una cartella di skill con collegamento
simbolico in <workspace>/skills che viene risolta all'esterno della radice
viene ignorata e viene registrato un messaggio nel log.
Per consentire intenzionalmente una struttura con collegamenti simbolici, dichiara la destinazione attendibile:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Con questa configurazione,
<workspace>/skills/manager -> ~/Projects/manager/skills viene accettato dopo
la risoluzione del percorso reale. extraDirs analizza direttamente il
repository adiacente; allowSymlinkTargets mantiene il percorso con
collegamento simbolico per le strutture esistenti.
Per impostazione predefinita, l'applicazione tramite Skill Workshop non scrive attraverso questi collegamenti simbolici. Per consentire all'applicazione tramite Workshop di modificare le skill nelle destinazioni di collegamenti simbolici già considerate attendibili, abilita separatamente questa opzione:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Le directory gestite ~/.openclaw/skills e personali ~/.agents/skills
accettano già senza condizioni i collegamenti simbolici alle directory delle
skill (il contenimento di SKILL.md per ogni skill continua ad applicarsi):
allowSymlinkTargets è necessario solo per le radici dell'area di lavoro,
delle directory aggiuntive e dell'agente di progetto
(<workspace>/.agents/skills).
Skill in ambiente isolato e variabili di ambiente
Passa i segreti a un ambiente isolato Docker con:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Promemoria sull'ordine di caricamento
workspace/skills (priorità massima)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsskill incluseskills.load.extraDirs (priorità minima)Le modifiche alle skill e alla configurazione diventano effettive nella nuova sessione successiva quando il monitoraggio è abilitato, oppure nel turno successivo dell'agente quando il monitoraggio rileva una modifica.
Contenuti correlati
Definizione delle skill, ordine di caricamento, controllo dell'accesso e formato di SKILL.md.
Creazione di skill personalizzate per l'area di lavoro.
Coda delle proposte per le skill redatte dagli agenti.
Catalogo nativo dei comandi slash e direttive per la chat.