Skills
Configuration des Skills
La plupart des paramètres de configuration des Skills se trouvent 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: "auto", 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 hors de la racine configurée. Utilisez ce paramètre pour
les structures intentionnelles de dépôts frères telles que
<workspace>/skills/manager -> ~/Projects/manager/skills. Limitez strictement cette liste
— n’indiquez pas de racines étendues comme ~ ou ~/Projects.
skills.load.watchbooleandefault: trueSurveille les dossiers de Skills et actualise l’instantané des Skills lorsque les fichiers SKILL.md
changent. Inclut les fichiers imbriqués sous les racines de Skills regroupées.
skills.load.watchDebounceMsnumberdefault: 250Fenêtre d’anti-rebond des événements de surveillance des Skills, en millisecondes.
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"Préférence de gestionnaire de paquets Node pour l’installation des Skills. Cela concerne uniquement
l’installation des Skills : la CLI OpenClaw et l’environnement d’exécution du Gateway nécessitent Node, car le
magasin d’état canonique utilise node:sqlite. openclaw setup --node-manager et
openclaw onboard --node-manager acceptent npm, pnpm ou bun ; définissez
"yarn" directement 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 l’installation 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 fichiers 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 et aux sources d’installation ou 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 bloqué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 shell et valide le chemin avant de l’utiliser.
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 sur stdout ou stderr avant le blocage par défaut de la politique.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Nombre maximal d’octets combinés de stdout et stderr acceptés 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. À utiliser 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 toujours satisfaire les autres vérifications de chemin. Les arguments de script d’interpréteur doivent être des fichiers ordinaires directs, et non des liens symboliques.
La politique reçoit sur stdin un objet JSON comprenant protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
un champ structuré facultatif source, un champ structuré origin et request. Elle doit
écrire un objet JSON sur stdout : { "protocolVersion": 1, "decision": "allow" }
ou { "protocolVersion": 1, "decision": "block", "reason": "..." }. Un code de sortie différent de zéro,
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 blocage par défaut.
OpenClaw n’exécute pas la politique d’installation au démarrage normal du Gateway.
Les installations et les mises à jour sont bloquées par défaut lorsque la politique est activée mais indisponible.
openclaw doctor effectue une validation statique ; openclaw doctor --deep
exécute une sonde d’installation synthétique avec 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 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" }}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 concernés.
Entrées par Skill (skills.entries)
Les clés sous entries correspondent par défaut au champ name du Skill. Si un Skill définit
metadata.openclaw.skillKey, utilisez cette clé à la place. 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 est facultatif : définissez-le sur true et assurez-vous que l’un des outils
claude, codex, opencode ou une autre CLI prise en charge est installé et
authentifié.
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 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 de l’agent lorsque vous souhaitez conserver les mêmes racines de Skills pour la machine ou l’espace de travail, mais définir un ensemble de Skills visibles différent pour 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 ne pas restreindre les Skills
par défaut.
agents.list[].skillsstring[]Ensemble final explicite de 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 true, OpenClaw peut créer des propositions en attente à partir de corrections durables
et peut examiner les travaux achevés substantiels et réussis une fois que le système devient
inactif. Cela peut ajouter une exécution du modèle en arrière-plan après les tours admissibles. La création
de Skills demandée par l’utilisateur et /learn continuent de fonctionner lorsque le paramètre est défini sur false.
Consultez Auto-apprentissage pour connaître les critères d’admissibilité, la confidentialité, le coût, les autorisations limitées aux propositions et la résolution des problèmes.
skills.workshop.approvalPolicy"pending" | "auto"default: "auto"auto permet à l’agent d’appliquer, de rejeter ou de mettre en quarantaine sans
demande d’approbation supplémentaire. pending exige l’approbation de l’opérateur.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseAutorise l’application de Skill Workshop à écrire par l’intermédiaire des liens symboliques de 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
de Skills partagée.
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 liste.
Consultez Skill Workshop pour connaître le cycle de vie des propositions, les commandes CLI, les paramètres des outils de l’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
qui se résout hors de la racine est ignoré et un message est consigné dans le journal.
Pour autoriser intentionnellement une structure de 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 la résolution du chemin réel. extraDirs analyse directement le dépôt voisin ;
allowSymlinkTargets conserve le chemin lié symboliquement pour les structures
existantes.
Par défaut, l’application de Skill Workshop n’écrit pas par l’intermédiaire de ces liens symboliques. Pour permettre à l’application de Workshop de 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 ~/.openclaw/skills gérés et ~/.agents/skills personnels
acceptent déjà sans condition les liens symboliques vers des répertoires de Skills (le confinement
SKILL.md par Skill reste applicable) — 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 des 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/skillsSkills intégrésskills.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 SKILL.md.
Création de Skills personnalisés pour l’espace de travail.
File de propositions pour les Skills rédigés par l’agent.
Propositions prudentes et facultatives issues des travaux achevés.
Catalogue natif de commandes slash et directives de discussion.