Compétences (OpenClaw)
OpenClaw utilise des dossiers de skills compatibles AgentSkills pour apprendre à l’agent à utiliser des outils. Chaque skill est un répertoire contenant unSKILL.md avec un frontmatter YAML et des instructions. OpenClaw charge les skills intégrées ainsi que des surcharges locales optionnelles, et les filtre au chargement en fonction de l’environnement, de la configuration et de la présence de binaires.
Emplacements et priorité
Les skills sont chargées depuis trois emplacements :- Skills intégrées : livrées avec l’installation (package npm ou OpenClaw.app)
- Skills gérées/locales :
~/.openclaw/skills - Skills d’espace de travail :
<workspace>/skills
<workspace>/skills (le plus élevé) → ~/.openclaw/skills → skills intégrées (le plus faible)
De plus, vous pouvez configurer des dossiers de skills supplémentaires (priorité la plus basse) via
skills.load.extraDirs dans ~/.openclaw/openclaw.json.
Skills par agent vs partagées
Dans des configurations multi-agents, chaque agent possède son propre espace de travail. Cela signifie :- Les skills par agent résident dans
<workspace>/skillspour cet agent uniquement. - Les skills partagées résident dans
~/.openclaw/skills(gérées/locales) et sont visibles par tous les agents sur la même machine. - Des dossiers partagés peuvent également être ajoutés via
skills.load.extraDirs(priorité la plus basse) si vous souhaitez un pack de skills commun utilisé par plusieurs agents.
Plugins + compétences
Les plugins peuvent livrer leurs propres skills en listant des répertoiresskills dans
openclaw.plugin.json (chemins relatifs à la racine du plugin). Les skills de plugin se chargent
lorsque le plugin est activé et participent aux règles normales de priorité des skills.
Vous pouvez les filtrer via metadata.openclaw.requires.config sur l’entrée de configuration du plugin. Voir Plugins pour la découverte/la configuration et Tools pour la surface d’outils que ces skills enseignent.
ClawHub (installation + synchronisation)
ClawHub est le registre public de skills pour OpenClaw. Parcourez-le sur https://clawhub.com. Utilisez-le pour découvrir, installer, mettre à jour et sauvegarder des skills. Guide complet : ClawHub. Flux courants :- Installer une skill dans votre espace de travail :
clawhub install <skill-slug>
- Mettre à jour toutes les skills installées :
clawhub update --all
- Synchroniser (analyse + publication des mises à jour) :
clawhub sync --all
clawhub installe dans ./skills sous votre répertoire de travail courant
(ou revient à l’espace de travail OpenClaw configuré). OpenClaw le prend en compte comme <workspace>/skills
à la prochaine session.
Notes de sécurité
- Traitez les skills tierces comme du code non fiable. Lisez-les avant activation.
- Préférez des exécutions en sandbox pour des entrées non fiables et des outils risqués. Voir Sandboxing.
skills.entries.*.envetskills.entries.*.apiKeyinjectent des secrets dans le processus hôte pour ce tour d’agent (pas dans la sandbox). Gardez les secrets hors des prompts et des journaux.- Pour un modèle de menaces plus large et des checklists, voir Security.
Format (AgentSkills + compatible Pi)
SKILL.md doit inclure au minimum :
- Nous suivons la spécification AgentSkills pour la structure et l’intention.
- Le parseur utilisé par l’agent embarqué ne prend en charge que des clés de frontmatter sur une seule ligne.
metadatadoit être un objet JSON sur une seule ligne.- Utilisez
{baseDir}dans les instructions pour référencer le chemin du dossier de la skill. - Clés de frontmatter optionnelles :
-
homepage— URL affichée comme « Website » dans l’UI macOS des Skills (également prise en charge viametadata.openclaw.homepage). -
user-invocable—true|false(par défaut :true). Lorsquetrue, la skill est exposée comme commande slash utilisateur. -
disable-model-invocation—true|false(par défaut :false). Lorsquetrue, la skill est exclue du prompt du modèle (toujours disponible via invocation utilisateur). -
command-dispatch—tool(optionnel). Lorsqu’il est défini surtool, la commande slash contourne le modèle et est dispatchée directement vers un outil. -
command-tool— nom de l’outil à invoquer lorsquecommand-dispatch: toolest défini. -
command-arg-mode—raw(par défaut). Pour le dispatch d’outil, transmet la chaîne d’arguments brute à l’outil (sans parsing central). L’outil est invoqué avec les paramètres :{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.
-
Filtrage (filtres au chargement)
OpenClaw filtre les skills au chargement à l’aide demetadata (JSON sur une seule ligne) :
metadata.openclaw :
always: true— inclure toujours la skill (ignorer les autres filtres).emoji— emoji optionnel utilisé par l’UI macOS des Skills.homepage— URL optionnelle affichée comme « Website » dans l’UI macOS des Skills.os— liste optionnelle de plateformes (darwin,linux,win32). Si définie, la skill n’est éligible que sur ces OS.requires.bins— liste ; chacun doit exister surPATH.requires.anyBins— liste ; au moins un doit exister surPATH.requires.env— liste ; la variable d’environnement doit exister ou être fournie en configuration.requires.config— liste de cheminsopenclaw.jsonqui doivent être truthy.primaryEnv— nom de variable d’environnement associé àskills.entries.<name>.apiKey.install— tableau optionnel de spécifications d’installateur utilisées par l’UI macOS des Skills (brew/node/go/uv/download).
requires.binsest vérifié sur l’hôte au chargement de la skill.- Si un agent est en sandbox, le binaire doit aussi exister à l’intérieur du conteneur.
Installez-le via
agents.defaults.sandbox.docker.setupCommand(ou une image personnalisée).setupCommands’exécute une fois après la création du conteneur. Les installations de packages requièrent également une sortie réseau, un FS racine inscriptible et un utilisateur root dans la sandbox. Exemple : la skillsummarize(skills/summarize/SKILL.md) nécessite la CLIsummarizedans le conteneur de sandbox pour s’y exécuter.
- Si plusieurs installateurs sont listés, la passerelle choisit une seule option préférée (brew quand disponible, sinon node).
- Si tous les installateurs sont
download, OpenClaw liste chaque entrée afin que vous puissiez voir les artefacts disponibles. - Les spécifications d’installateur peuvent inclure
os: ["darwin"|"linux"|"win32"]pour filtrer les options par plateforme. - Les installations Node respectent
skills.install.nodeManagerdansopenclaw.json(par défaut : npm ; options : npm/pnpm/yarn/bun). Cela n’affecte que les installations de skills ; le runtime de la Gateway doit rester Node (Bun n’est pas recommandé pour WhatsApp/Telegram). - Installations Go : si
goest manquant et quebrewest disponible, la passerelle installe d’abord Go via Homebrew et définitGOBINsur lebinde Homebrew lorsque possible. - Installations par téléchargement :
url(requis),archive(tar.gz|tar.bz2|zip),extract(par défaut : auto lorsqu’une archive est détectée),stripComponents,targetDir(par défaut :~/.openclaw/tools/<skillKey>).
metadata.openclaw n’est présent, la skill est toujours éligible (sauf
si désactivée en configuration ou bloquée par skills.allowBundled pour les skills intégrées).
Surcharges de configuration (~/.openclaw/openclaw.json)
Les skills intégrées/gérées peuvent être activées/désactivées et recevoir des valeurs d’environnement :
metadata.openclaw.skillKey, utilisez cette clé sous skills.entries.
Règles :
enabled: falsedésactive la skill même si elle est intégrée/installée.env: injectée uniquement si la variable n’est pas déjà définie dans le processus.apiKey: commodité pour les skills qui déclarentmetadata.openclaw.primaryEnv.config: sac optionnel pour des champs personnalisés par skill ; les clés personnalisées doivent se trouver ici.allowBundled: liste blanche optionnelle pour les skills intégrées uniquement. Si définie, seules les skills intégrées figurant dans la liste sont éligibles (les skills gérées/espace de travail ne sont pas affectées).
Injection d’environnement (par exécution d’agent)
Lorsqu’une exécution d’agent démarre, OpenClaw :- Lit les métadonnées des skills.
- Applique toute
skills.entries.<key>.envouskills.entries.<key>.apiKeyàprocess.env. - Construit le prompt système avec les skills éligibles.
- Restaure l’environnement d’origine après la fin de l’exécution.
Instantané de session (performance)
OpenClaw capture un instantané des skills éligibles au démarrage d’une session et réutilise cette liste pour les tours suivants de la même session. Les modifications de skills ou de configuration prennent effet à la prochaine nouvelle session. Les skills peuvent également se rafraîchir en cours de session lorsque le watcher de skills est activé ou lorsqu’un nouveau nœud distant éligible apparaît (voir ci-dessous). Considérez cela comme un rechargement à chaud : la liste rafraîchie est prise en compte au prochain tour d’agent.Nœuds macOS distants (Gateway Linux)
Si la Gateway (passerelle) s’exécute sous Linux mais qu’un nœud macOS est connecté avecsystem.run autorisé (les approbations Exec de sécurité ne sont pas définies sur deny), OpenClaw peut considérer les skills réservées à macOS comme éligibles lorsque les binaires requis sont présents sur ce nœud. L’agent doit exécuter ces skills via l’outil nodes (généralement nodes.run).
Cela repose sur le fait que le nœud rapporte son support de commandes et sur une sonde de binaire via system.run. Si le nœud macOS se déconnecte ultérieurement, les skills restent visibles ; les invocations peuvent échouer jusqu’à la reconnexion du nœud.
Watcher de skills (rafraîchissement automatique)
Par défaut, OpenClaw surveille les dossiers de skills et met à jour l’instantané des skills lorsque les fichiersSKILL.md changent. Configurez cela sous skills.load :
Impact sur les tokens (liste des skills)
Lorsque des skills sont éligibles, OpenClaw injecte une liste XML compacte des skills disponibles dans le prompt système (viaformatSkillsForPrompt dans pi-coding-agent). Le coût est déterministe :
- Surcharge de base (uniquement lorsqu’il y a ≥1 skill) : 195 caractères.
- Par skill : 97 caractères + la longueur des valeurs
<name>,<description>et<location>échappées en XML.
- L’échappement XML étend
& < > " 'en entités (&,<, etc.), augmentant la longueur. - Le nombre de tokens varie selon le tokenizer du modèle. Une estimation approximative de type OpenAI est ~4 caractères/token, donc 97 caractères ≈ 24 tokens par skill, plus la longueur réelle de vos champs.
Cycle de vie des skills gérées
OpenClaw livre un ensemble de base de skills comme skills intégrées dans le cadre de l’installation (package npm ou OpenClaw.app).~/.openclaw/skills existe pour des surcharges locales
(par exemple, épingler/appliquer un correctif à une skill sans modifier la copie intégrée). Les skills d’espace de travail appartiennent à l’utilisateur et remplacent les deux en cas de conflit de nom.