Skills
Configuration des Skills
La plupart de la configuration des Skills se trouve sous skills dans
~/.openclaw/openclaw.json. La visibilité propre à chaque agent se trouve sous
agents.defaults.skills et 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 }, }, },}Chargement (skills.load)
skills.load.extraDirsstring[]Répertoires de Skills supplémentaires à analyser, avec la priorité la plus
faible (après les Skills intégrés et ceux des Plugins). Les chemins sont
développés avec la prise en charge de ~.
skills.load.allowSymlinkTargetsstring[]Répertoires cibles réels et approuvés vers lesquels les dossiers de Skills
liés symboliquement peuvent pointer, même lorsque le lien symbolique se trouve
en dehors de la racine configurée. Utilisez ce paramètre pour les organisations
intentionnelles avec des dépôts frères, telles que
<workspace>/skills/manager -> ~/Projects/manager/skills. Limitez strictement
cette liste — ne la faites pas pointer vers des racines larges comme ~ ou
~/Projects.
skills.load.watchbooleandefault: trueSurveille les dossiers de Skills et actualise l’instantané des Skills lorsque
des fichiers SKILL.md sont modifiés. Cela couvre les fichiers imbriqués sous
les racines de Skills regroupées.
skills.load.watchDebounceMsnumberdefault: 250Fenêtre d’anti-rebond, en millisecondes, pour les événements de surveillance des Skills.
Installation (skills.install)
skills.install.preferBrewbooleandefault: truePrivilégie les programmes d’installation Homebrew lorsque brew est disponible.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Gestionnaire de paquets Node privilégié pour l’installation des Skills. Ce
paramètre concerne uniquement les installations de Skills — l’exécution du
Gateway doit toujours utiliser Node (Bun n’est pas recommandé pour
WhatsApp/Telegram). openclaw setup --node-manager et
openclaw onboard --node-manager acceptent npm, pnpm ou bun ; définissez
directement "yarn" dans la configuration pour les installations de Skills
reposant sur Yarn.
skills.install.allowUploadedArchivesbooleandefault: falseAutorise les clients Gateway operator.admin approuvés à installer des
archives zip privées préparées via skills.upload.*. Les installations
ClawHub ordinaires ne nécessitent pas ce paramètre.
Politique d’installation de l’opérateur (security.installPolicy)
Utilisez security.installPolicy lorsque les opérateurs ont besoin d’une commande
locale approuvée pour autoriser ou bloquer les installations de Skills et de
Plugins selon une politique propre à l’hôte. La politique s’exécute après
qu’OpenClaw a préparé les éléments sources et avant la poursuite de l’installation
ou de la mise à jour. Elle s’applique aux Skills ClawHub, aux Skills téléversés,
aux Skills Git/locaux, aux programmes d’installation des dépendances de Skills
ainsi qu’aux sources d’installation et de mise à jour des 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.enabledbooleandefault: falseActive la politique d’installation gérée par l’opérateur. Lorsqu’elle est
activée sans commande exec valide, les installations sont refusées par
défaut.
security.installPolicy.targets("skill" | "plugin")[]Filtre de cibles facultatif. Lorsqu’il est omis, la politique s’applique à toutes les cibles prises en charge afin que les nouvelles installations ne soient pas autorisées par défaut de manière inattendue.
security.installPolicy.exec.commandstringChemin absolu vers l’exécutable de politique approuvé. OpenClaw l’exécute sans interpréteur de commandes et valide le chemin avant utilisation.
security.installPolicy.exec.argsstring[]Arguments statiques transmis après command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Durée d’exécution réelle maximale d’une décision de politique.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsDurée maximale sans sortie standard ni sortie d’erreur avant que la politique refuse l’opération par défaut.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Nombre maximal cumulé d’octets de sortie standard et de sortie d’erreur accepté du processus de politique.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Noms des variables d’environnement copiées du processus OpenClaw vers le processus de politique. Seules les variables nommées sont transmises.
security.installPolicy.exec.trustedDirsstring[]Liste d’autorisation facultative des répertoires pouvant contenir l’exécutable de politique.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseContourne les vérifications de propriété et d’autorisations du chemin de la commande. Utilisez ce paramètre uniquement lorsque le chemin est protégé par un autre mécanisme.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseAutorise le chemin de commande configuré à être un lien symbolique. La cible résolue doit tout de même satisfaire les autres vérifications de chemin. Les arguments de script de l’interpréteur doivent être des fichiers ordinaires directs, et non des liens symboliques.
La politique reçoit sur l’entrée standard un objet JSON contenant
protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath,
sourcePathKind, ainsi que les champs structurés facultatifs source, origin
et request. Elle doit écrire sur la sortie standard un objet JSON :
{ "protocolVersion": 1, "decision": "allow" } ou
{ "protocolVersion": 1, "decision": "block", "reason": "..." }. Un code de
sortie non nul, un dépassement de délai, un JSON mal formé, des champs manquants
ou des versions de protocole non prises en charge entraînent un refus par défaut.
OpenClaw n’exécute pas la politique d’installation lors du démarrage normal du
Gateway. Les installations et les mises à jour sont refusées par défaut lorsque
la politique est activée mais indisponible. openclaw doctor effectue une
validation statique ; openclaw doctor --deep exécute une vérification
d’installation synthétique sur la commande configurée.
Les mises à jour groupées appliquent la politique à chaque cible : le blocage de la mise à jour d’un Skill ou d’un Plugin fait échouer cette cible sans désactiver la politique ni ignorer les cibles suivantes du lot.
Exemple d’entrée standard :
{ "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" }}Commande de politique minimale :
#!/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" }));});Liste d’autorisation des Skills intégrés
skills.allowBundledstring[]Liste d’autorisation facultative réservée aux Skills intégrés. Lorsqu’elle est définie, seuls les Skills intégrés figurant dans la liste sont admissibles. Les Skills gérés, propres aux agents et de l’espace de travail ne sont pas affectés.
Entrées par Skill (skills.entries)
Par défaut, les clés sous entries correspondent au name du Skill. Si un
Skill définit metadata.openclaw.skillKey, utilisez plutôt cette clé. Placez
les noms contenant des traits d’union entre guillemets (JSON5 autorise les clés
entre guillemets).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false désactive le Skill même s’il est intégré ou installé. Le Skill intégré
coding-agent doit être activé explicitement — définissez-le sur true et
vérifiez que claude, codex, opencode ou une autre CLI prise en charge
est installée et authentifiée.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Champ pratique pour les Skills qui déclarent metadata.openclaw.primaryEnv.
Accepte une chaîne en texte brut ou une référence de secret SecretRef :
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩListes d’autorisation des agents (agents)
Utilisez la configuration des agents lorsque vous souhaitez conserver les mêmes racines de Skills pour la machine ou l’espace de travail, mais exposer un ensemble de Skills différent à chaque agent.
{ 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[]Liste d’autorisation de référence partagée, héritée par les agents qui omettent
agents.list[].skills. Omettez-la entièrement pour que les Skills ne soient
pas restreints par défaut.
agents.list[].skillsstring[]Ensemble final explicite des Skills pour cet agent. Les listes explicites
remplacent entièrement les valeurs par défaut héritées — elles ne sont pas
fusionnées. Définissez ce champ sur [] pour n’exposer aucun Skill à cet agent.
Atelier (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseLorsque la valeur est true, les agents peuvent créer des propositions en attente à partir de signaux
persistants issus des conversations après des tours réussis. La création de Skills demandée par
l’utilisateur passe toujours par Skill Workshop, quel que soit ce paramètre.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending exige l’approbation de l’opérateur avant qu’un agent puisse lancer
une application, un rejet ou une mise en quarantaine. auto autorise ces actions sans approbation.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseAutorise l’application par Skill Workshop à écrire via les liens symboliques des Skills de l’espace de travail
dont la cible réelle est déjà approuvée par skills.load.allowSymlinkTargets. Laissez
cette option désactivée sauf si l’application des propositions générées doit modifier cette racine
partagée de Skills.
skills.workshop.maxPendingnumberdefault: 50Nombre maximal de propositions en attente et mises en quarantaine conservées par espace de travail (plage autorisée : 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Taille maximale du corps d’une proposition en octets (plage autorisée : 1024-200000). Les descriptions des propositions sont plafonnées séparément à 160 octets, car elles apparaissent dans les résultats de découverte et de listage.
Consultez Skill Workshop pour le cycle de vie des propositions, les commandes CLI, les paramètres des outils d’agent et les méthodes du Gateway contrôlés par cette configuration.
Racines de Skills liées symboliquement
Par défaut, les racines de Skills de l’espace de travail, de l’agent de projet, des répertoires supplémentaires et des Skills intégrés
constituent des limites de confinement. Un dossier de Skill lié symboliquement sous <workspace>/skills
et résolu en dehors de la racine est ignoré avec un message dans le journal.
Pour autoriser intentionnellement une organisation avec des liens symboliques, déclarez la cible approuvée :
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Avec cette configuration, <workspace>/skills/manager -> ~/Projects/manager/skills
est accepté après résolution du chemin réel. extraDirs analyse directement le dépôt adjacent ;
allowSymlinkTargets conserve le chemin lié symboliquement pour les organisations existantes.
Par défaut, l’application par Skill Workshop n’écrit pas via ces liens symboliques. Pour autoriser l’application par Workshop à modifier les Skills sous des cibles de liens symboliques déjà approuvées, activez cette option séparément :
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Les répertoires gérés ~/.openclaw/skills et personnels ~/.agents/skills
acceptent déjà sans condition les liens symboliques vers des répertoires de Skills (le confinement de
SKILL.md par Skill s’applique toujours) — allowSymlinkTargets n’est nécessaire que
pour les racines de l’espace de travail, des répertoires supplémentaires et de l’agent de projet (<workspace>/.agents/skills).
Skills en bac à sable et variables d’environnement
Transmettez les secrets à un bac à sable Docker avec :
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Rappel de l’ordre de chargement
workspace/skills (priorité la plus élevée)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsbundled skillsskills.load.extraDirs (priorité la plus faible)Les modifications apportées aux Skills et à la configuration prennent effet lors de la prochaine nouvelle session si l’observateur est activé, ou lors du prochain tour de l’agent lorsque l’observateur détecte une modification.
Voir aussi
Présentation des Skills, ordre de chargement, contrôle d’accès et format de SKILL.md.
Création de Skills personnalisés pour l’espace de travail.
File d’attente des propositions de Skills rédigées par les agents.
Catalogue natif des commandes obliques et directives de discussion.