Skills (OpenClaw)
OpenClaw usa cartelle di skill compatibili con AgentSkills per insegnare all’agente come usare gli strumenti. Ogni skill è una directory che contiene unSKILL.md con frontmatter YAML e istruzioni. OpenClaw carica Skills incluse più override locali facoltativi, e le filtra al momento del caricamento in base all’ambiente, alla configurazione e alla presenza dei binari.
Posizioni e precedenza
OpenClaw carica le skill da queste fonti:- Cartelle di skill extra: configurate con
skills.load.extraDirs - Skills incluse: fornite con l’installazione (pacchetto npm o OpenClaw.app)
- Skills gestite/locali:
~/.openclaw/skills - Skills agente personali:
~/.agents/skills - Skills agente del progetto:
<workspace>/.agents/skills - Skills del workspace:
<workspace>/skills
<workspace>/skills (più alta) → <workspace>/.agents/skills → ~/.agents/skills → ~/.openclaw/skills → Skills incluse → skills.load.extraDirs (più bassa)
Skills per agente vs condivise
Nelle configurazioni multi-agent, ogni agente ha il proprio workspace. Questo significa:- Le Skills per agente si trovano in
<workspace>/skillssolo per quell’agente. - Le Skills agente del progetto si trovano in
<workspace>/.agents/skillse si applicano a quel workspace prima della normale cartellaskills/del workspace. - Le Skills agente personali si trovano in
~/.agents/skillse si applicano a tutti i workspace su quella macchina. - Le Skills condivise si trovano in
~/.openclaw/skills(gestite/locali) e sono visibili a tutti gli agenti sulla stessa macchina. - Le Cartelle condivise possono anche essere aggiunte tramite
skills.load.extraDirs(precedenza minima) se vuoi un pacchetto di skill comune usato da più agenti.
Allowlist delle skill per agente
La posizione della skill e la visibilità della skill sono controlli separati.- Posizione/precedenza decide quale copia di una skill con lo stesso nome prevale.
- Le allowlist dell’agente decidono quali skill visibili un agente può effettivamente usare.
agents.defaults.skills per una baseline condivisa, poi esegui l’override per agente con
agents.list[].skills:
- Ometti
agents.defaults.skillsper avere skill senza restrizioni per impostazione predefinita. - Ometti
agents.list[].skillsper ereditareagents.defaults.skills. - Imposta
agents.list[].skills: []per non avere skill. - Una lista non vuota in
agents.list[].skillsè l’insieme finale per quell’agente; non viene unita ai valori predefiniti.
Plugin + skill
I plugin possono fornire le proprie skill elencando directoryskills in
openclaw.plugin.json (percorsi relativi alla radice del plugin). Le skill del plugin vengono caricate
quando il plugin è abilitato. Attualmente queste directory vengono unite nello stesso
percorso a bassa precedenza di skills.load.extraDirs, quindi una skill inclusa,
gestita, dell’agente o del workspace con lo stesso nome la sovrascrive.
Puoi applicare il gating tramite metadata.openclaw.requires.config sulla voce di configurazione
del plugin. Vedi Plugin per rilevamento/configurazione e Strumenti per la
superficie degli strumenti che queste skill insegnano.
ClawHub (installazione + sincronizzazione)
ClawHub è il registro pubblico delle skill per OpenClaw. Visitalo su https://clawhub.ai. Usa i comandi nativiopenclaw skills
per scoprire/installare/aggiornare le skill, oppure la CLI separata clawhub quando
ti servono flussi di pubblicazione/sincronizzazione.
Guida completa: ClawHub.
Flussi comuni:
- Installa una skill nel tuo workspace:
openclaw skills install <skill-slug>
- Aggiorna tutte le skill installate:
openclaw skills update --all
- Sincronizza (scansione + pubblicazione aggiornamenti):
clawhub sync --all
openclaw skills install installa nella directory skills/
del workspace attivo. Anche la CLI separata clawhub installa in ./skills sotto la tua
directory di lavoro corrente (oppure usa come fallback il workspace OpenClaw configurato).
OpenClaw la rileva come <workspace>/skills nella sessione successiva.
Note di sicurezza
- Tratta le skill di terze parti come codice non attendibile. Leggile prima di abilitarle.
- Preferisci esecuzioni sandboxed per input non attendibili e strumenti rischiosi. Vedi Sandboxing.
- Il rilevamento delle skill nel workspace e nelle directory extra accetta solo radici di skill e file
SKILL.mdil cui realpath risolto rimane all’interno della radice configurata. - Le installazioni di dipendenze delle skill supportate dal Gateway (
skills.install, onboarding e UI delle impostazioni Skills) eseguono lo scanner integrato per codice pericoloso prima di eseguire i metadati di installazione. I rilevamenticriticalbloccano per impostazione predefinita a meno che il chiamante non imposti esplicitamente l’override pericoloso; i rilevamenti sospetti invece generano solo un avviso. openclaw skills install <slug>è diverso: scarica una cartella skill da ClawHub nel workspace e non usa il percorso dei metadati di installazione sopra descritto.skills.entries.*.enveskills.entries.*.apiKeyiniettano segreti nel processo host per quel turno dell’agente (non nella sandbox). Tieni i segreti fuori dai prompt e dai log.- Per un modello di minaccia più ampio e checklist, vedi Sicurezza.
Formato (compatibile con AgentSkills + Pi)
SKILL.md deve includere almeno:
- Seguiamo la specifica AgentSkills per layout/intento.
- Il parser usato dall’agente incorporato supporta solo chiavi frontmatter su singola riga.
metadatadeve essere un oggetto JSON su singola riga.- Usa
{baseDir}nelle istruzioni per fare riferimento al percorso della cartella della skill. - Chiavi frontmatter facoltative:
-
homepage— URL mostrato come “Website” nella UI Skills di macOS (supportato anche tramitemetadata.openclaw.homepage). -
user-invocable—true|false(predefinito:true). Quandotrue, la skill è esposta come comando slash utente. -
disable-model-invocation—true|false(predefinito:false). Quandotrue, la skill è esclusa dal prompt del modello (rimane comunque disponibile tramite invocazione utente). -
command-dispatch—tool(facoltativo). Quando impostato sutool, il comando slash bypassa il modello e viene inviato direttamente a uno strumento. -
command-tool— nome dello strumento da invocare quando è impostatocommand-dispatch: tool. -
command-arg-mode—raw(predefinito). Per il dispatch allo strumento, inoltra la stringa raw degli argomenti allo strumento (senza parsing core). Lo strumento viene invocato con i parametri:{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.
-
Gating (filtri al momento del caricamento)
OpenClaw filtra le skill al momento del caricamento usandometadata (JSON su singola riga):
metadata.openclaw:
always: true— include sempre la skill (salta gli altri gate).emoji— emoji facoltativa usata dalla UI Skills di macOS.homepage— URL facoltativo mostrato come “Website” nella UI Skills di macOS.os— elenco facoltativo di piattaforme (darwin,linux,win32). Se impostato, la skill è idonea solo su questi OS.requires.bins— elenco; ciascuno deve esistere inPATH.requires.anyBins— elenco; almeno uno deve esistere inPATH.requires.env— elenco; la variabile env deve esistere oppure essere fornita nella configurazione.requires.config— elenco di percorsiopenclaw.jsonche devono essere truthy.primaryEnv— nome della variabile env associata askills.entries.<name>.apiKey.install— array facoltativo di specifiche di installazione usate dalla UI Skills di macOS (brew/node/go/uv/download).
requires.binsviene controllato sull’host al momento del caricamento della skill.- Se un agente è sandboxed, il binario deve esistere anche dentro il container.
Installalo tramite
agents.defaults.sandbox.docker.setupCommand(o un’immagine personalizzata).setupCommandviene eseguito una volta dopo la creazione del container. Le installazioni di pacchetti richiedono anche uscita di rete, un root FS scrivibile e un utente root nella sandbox. Esempio: la skillsummarize(skills/summarize/SKILL.md) richiede la CLIsummarizenel container sandbox per poter essere eseguita lì.
- Se sono elencati più installer, il gateway sceglie una singola opzione preferita (brew quando disponibile, altrimenti node).
- Se tutti gli installer sono
download, OpenClaw elenca ogni voce in modo che tu possa vedere gli artifact disponibili. - Le specifiche dell’installer possono includere
os: ["darwin"|"linux"|"win32"]per filtrare le opzioni in base alla piattaforma. - Le installazioni node rispettano
skills.install.nodeManagerinopenclaw.json(predefinito: npm; opzioni: npm/pnpm/yarn/bun). Questo influisce solo sulle installazioni delle skill; il runtime del Gateway dovrebbe comunque essere Node (Bun non è consigliato per WhatsApp/Telegram). - La selezione dell’installer supportata dal Gateway è basata sulle preferenze, non solo su node:
quando le specifiche di installazione mescolano tipi diversi, OpenClaw preferisce Homebrew quando
skills.install.preferBrewè abilitato ed esistebrew, poiuv, poi il node manager configurato, poi altri fallback comegoodownload. - Se ogni specifica di installazione è
download, OpenClaw mostra tutte le opzioni di download invece di comprimerle in un solo installer preferito. - Installazioni Go: se
gonon è presente ebrewè disponibile, il gateway installa prima Go tramite Homebrew e impostaGOBINsubindi Homebrew quando possibile. - Installazioni download:
url(obbligatorio),archive(tar.gz|tar.bz2|zip),extract(predefinito: automatico quando viene rilevato un archivio),stripComponents,targetDir(predefinito:~/.openclaw/tools/<skillKey>).
metadata.openclaw non è presente, la skill è sempre idonea (a meno che
non sia disabilitata nella configurazione o bloccata da skills.allowBundled per le Skills incluse).
Override di configurazione (~/.openclaw/openclaw.json)
Le Skills incluse/gestite possono essere abilitate/disabilitate e ricevere valori env:
image_generate con agents.defaults.imageGenerationModel invece di una
skill inclusa. Gli esempi di skill qui sono per flussi personalizzati o di terze parti.
Per l’analisi nativa delle immagini, usa lo strumento image con agents.defaults.imageModel.
Per la generazione/modifica nativa delle immagini, usa image_generate con
agents.defaults.imageGenerationModel. Se scegli openai/*, google/*,
fal/* o un altro modello di immagine specifico del provider, aggiungi anche l’auth/chiave API
di quel provider.
Le chiavi di configurazione corrispondono al nome della skill per impostazione predefinita. Se una skill definisce
metadata.openclaw.skillKey, usa quella chiave sotto skills.entries.
Regole:
enabled: falsedisabilita la skill anche se è inclusa/installata.env: iniettato solo se la variabile non è già impostata nel processo.apiKey: scorciatoia per skill che dichiaranometadata.openclaw.primaryEnv. Supporta una stringa plaintext o un oggetto SecretRef ({ source, provider, id }).config: contenitore facoltativo per campi personalizzati per skill; le chiavi personalizzate devono stare qui.allowBundled: allowlist facoltativa solo per le Skills incluse. Se impostata, solo le Skills incluse presenti nell’elenco sono idonee (le skill gestite/workspace non sono interessate).
Iniezione dell’ambiente (per esecuzione dell’agente)
Quando inizia un’esecuzione dell’agente, OpenClaw:- Legge i metadati della skill.
- Applica eventuali
skills.entries.<key>.envoskills.entries.<key>.apiKeyaprocess.env. - Costruisce il prompt di sistema con le skill idonee.
- Ripristina l’ambiente originale al termine dell’esecuzione.
Snapshot della sessione (prestazioni)
OpenClaw crea uno snapshot delle skill idonee all’avvio di una sessione e riutilizza quell’elenco per i turni successivi della stessa sessione. Le modifiche alle skill o alla configurazione hanno effetto nella successiva nuova sessione. Le skill possono anche aggiornarsi durante la sessione quando il watcher delle skill è abilitato o quando compare un nuovo nodo remoto idoneo (vedi sotto). Consideralo come un hot reload: l’elenco aggiornato viene recepito al turno successivo dell’agente. Se l’allowlist effettiva delle skill dell’agente cambia per quella sessione, OpenClaw aggiorna lo snapshot in modo che le skill visibili restino allineate con l’agente corrente.Nodi remoti macOS (gateway Linux)
Se il Gateway è in esecuzione su Linux ma è connesso un nodo macOS consystem.run consentito (sicurezza delle approvazioni Exec non impostata su deny), OpenClaw può trattare come idonee le skill solo macOS quando i binari richiesti sono presenti su quel nodo. L’agente dovrebbe eseguire queste skill tramite lo strumento exec con host=node.
Questo si basa sul fatto che il nodo segnali il supporto ai comandi e su un probe dei binari tramite system.run. Se il nodo macOS va offline in seguito, le skill restano visibili; le invocazioni possono fallire finché il nodo non si ricollega.
Watcher delle skill (aggiornamento automatico)
Per impostazione predefinita, OpenClaw osserva le cartelle delle skill e aggiorna lo snapshot delle skill quando i fileSKILL.md cambiano. Configuralo sotto skills.load:
Impatto sui token (elenco delle skill)
Quando le skill sono idonee, OpenClaw inietta un elenco XML compatto delle skill disponibili nel prompt di sistema (tramiteformatSkillsForPrompt in pi-coding-agent). Il costo è deterministico:
- Overhead di base (solo quando ≥1 skill): 195 caratteri.
- Per skill: 97 caratteri + la lunghezza dei valori XML-escaped di
<name>,<description>e<location>.
- L’escaping XML espande
& < > " 'in entità (&,<, ecc.), aumentando la lunghezza. - Il numero di token varia in base al tokenizer del modello. Una stima approssimativa in stile OpenAI è ~4 caratteri/token, quindi 97 caratteri ≈ 24 token per skill più le lunghezze effettive dei campi.
Ciclo di vita delle Skills gestite
OpenClaw fornisce un set base di skill come Skills incluse come parte dell’installazione (pacchetto npm o OpenClaw.app).~/.openclaw/skills esiste per
override locali (ad esempio, fissare/applicare patch a una skill senza modificare la
copia inclusa). Le skill del workspace sono controllate dall’utente e sovrascrivono entrambe in caso di conflitto di nome.
Riferimento della configurazione
Vedi Configurazione Skills per lo schema completo della configurazione.Cerchi altre skill?
Visita https://clawhub.ai.Correlati
- Creazione di Skills — creazione di skill personalizzate
- Configurazione Skills — riferimento della configurazione delle skill
- Comandi slash — tutti i comandi slash disponibili
- Plugin — panoramica del sistema di plugin