Skills
Skills-configuratie
De meeste configuratie voor Skills staat onder skills in
~/.openclaw/openclaw.json. Agentspecifieke zichtbaarheid staat onder
agents.defaults.skills en 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 }, }, },}Laden (skills.load)
skills.load.extraDirsstring[]Aanvullende Skill-mappen om te scannen, met de laagste prioriteit (onder
gebundelde Skills en Plugin-Skills). Paden worden uitgebreid met
ondersteuning voor ~.
skills.load.allowSymlinkTargetsstring[]Vertrouwde echte doelmappen waarnaar via symbolische koppelingen gekoppelde
Skill-mappen mogen verwijzen, zelfs wanneer de symbolische koppeling zich
buiten de geconfigureerde hoofdmap bevindt. Gebruik dit voor opzettelijke
indelingen met naastgelegen opslagplaatsen, zoals
<workspace>/skills/manager -> ~/Projects/manager/skills. Houd deze lijst
beperkt: verwijs niet naar brede hoofdmappen zoals ~ of ~/Projects.
skills.load.watchbooleandefault: trueBewaak Skill-mappen en vernieuw de momentopname van Skills wanneer
SKILL.md-bestanden veranderen. Dit omvat geneste bestanden onder
gegroepeerde hoofdmappen voor Skills.
skills.load.watchDebounceMsnumberdefault: 250Debouncevenster voor gebeurtenissen van de Skill-bewaker, in milliseconden.
Installatie (skills.install)
skills.install.preferBrewbooleandefault: trueGeef de voorkeur aan Homebrew-installatieprogramma's wanneer brew
beschikbaar is.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Voorkeur voor de Node-pakketbeheerder bij Skill-installaties. Dit is alleen
van invloed op Skill-installaties; de Gateway-runtime moet nog steeds Node
gebruiken (Bun wordt niet aanbevolen voor WhatsApp/Telegram).
openclaw setup --node-manager en openclaw onboard --node-manager
accepteren npm, pnpm of bun; stel "yarn" rechtstreeks in de
configuratie in voor Skill-installaties op basis van Yarn.
skills.install.allowUploadedArchivesbooleandefault: falseSta vertrouwde operator.admin-Gateway-clients toe om persoonlijke
ziparchieven te installeren die via skills.upload.* zijn klaargezet.
Normale ClawHub-installaties hebben deze instelling niet nodig.
Installatiebeleid voor operators (security.installPolicy)
Gebruik security.installPolicy wanneer operators een vertrouwde lokale
opdracht nodig hebben om installaties van Skills en Plugins goed te keuren of
te blokkeren met hostspecifiek beleid. Het beleid wordt uitgevoerd nadat
OpenClaw bronmateriaal heeft klaargezet en voordat de installatie of update
doorgaat. Het is van toepassing op ClawHub-Skills, geüploade Skills,
Git-/lokale Skills, installatieprogramma's voor Skill-afhankelijkheden en
bronnen voor installatie en updates van Plugins.
{ security: { installPolicy: { enabled: true, // Laat targets weg om elk ondersteund doel te omvatten. 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: falseSchakelt installatiebeleid van de operator in. Wanneer dit is ingeschakeld
zonder een geldige exec-opdracht, worden installaties standaard
geblokkeerd.
security.installPolicy.targets("skill" | "plugin")[]Optioneel doelfilter. Wanneer dit wordt weggelaten, geldt het beleid voor elk ondersteund doel, zodat nieuwe installaties niet onverwacht standaard worden toegestaan.
security.installPolicy.exec.commandstringAbsoluut pad naar het vertrouwde uitvoerbare beleidsbestand. OpenClaw voert het zonder shell uit en valideert het pad vóór gebruik.
security.installPolicy.exec.argsstring[]Statische argumenten die na command worden doorgegeven.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Maximale verstreken uitvoeringstijd voor één beleidsbeslissing.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaximale tijd zonder uitvoer naar stdout of stderr voordat het beleid standaard blokkeert.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maximaal gecombineerd aantal bytes van stdout en stderr dat van het beleidsproces wordt geaccepteerd.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Namen van omgevingsvariabelen die vanuit het OpenClaw-proces naar het beleidsproces worden gekopieerd. Alleen genoemde variabelen worden doorgegeven.
security.installPolicy.exec.trustedDirsstring[]Optionele toelatingslijst met mappen die het uitvoerbare beleidsbestand mogen bevatten.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseOmzeilt controles op eigendom en machtigingen van het opdrachtpad. Gebruik dit alleen wanneer het pad door een ander mechanisme wordt beschermd.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseStaat toe dat het geconfigureerde opdrachtpad een symbolische koppeling is. Het herleide doel moet nog steeds aan de overige padcontroles voldoen. Argumenten voor interpreterscripts moeten rechtstreeks reguliere bestanden zijn, geen symbolische koppelingen.
Het beleid ontvangt via stdin één JSON-object met protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
optioneel gestructureerd source, gestructureerd origin en request. Het
moet één JSON-object naar stdout schrijven:
{ "protocolVersion": 1, "decision": "allow" } of
{ "protocolVersion": 1, "decision": "block", "reason": "..." }. Een
afsluitcode die niet nul is, een time-out, ongeldige JSON, ontbrekende velden
of niet-ondersteunde protocolversies leiden standaard tot blokkering.
OpenClaw voert tijdens het normaal opstarten van de Gateway geen
installatiebeleid uit. Installaties en updates worden standaard geblokkeerd
wanneer het beleid is ingeschakeld maar niet beschikbaar is.
openclaw doctor voert statische validatie uit; openclaw doctor --deep
voert een synthetische installatieproef uit met de geconfigureerde opdracht.
Bij bulksgewijze updates wordt het beleid per doel toegepast: een geblokkeerde update van een Skill of Plugin mislukt voor dat doel zonder het beleid uit te schakelen of latere doelen in de batch over te slaan.
Voorbeeld van 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" }}Minimale beleidsopdracht:
#!/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" }));});Toelatingslijst voor gebundelde Skills
skills.allowBundledstring[]Optionele toelatingslijst, uitsluitend voor gebundelde Skills. Wanneer deze is ingesteld, komen alleen gebundelde Skills in de lijst in aanmerking. Beheerde Skills en Skills op agent- en werkruimteniveau worden niet beïnvloed.
Vermeldingen per Skill (skills.entries)
Sleutels onder entries komen standaard overeen met de name van de Skill.
Als een Skill metadata.openclaw.skillKey definieert, gebruikt u in plaats
daarvan die sleutel. Plaats namen met koppeltekens tussen aanhalingstekens
(JSON5 staat sleutels tussen aanhalingstekens toe).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false schakelt de Skill uit, zelfs wanneer deze gebundeld of geïnstalleerd
is. De gebundelde Skill coding-agent is opt-in: stel deze in op true en
zorg ervoor dat claude, codex, opencode of een andere ondersteunde CLI
is geïnstalleerd en geauthenticeerd.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Gemaksveld voor Skills die metadata.openclaw.primaryEnv declareren.
Ondersteunt een tekenreeks met platte tekst of een SecretRef:
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩToelatingslijsten voor agents (agents)
Gebruik agentconfiguratie wanneer u voor dezelfde machine/werkruimte dezelfde hoofdmappen voor Skills wilt gebruiken, maar per agent een andere zichtbare verzameling Skills wilt instellen.
{ agents: { defaults: { skills: ["github", "weather"], // gedeelde basislijn }, list: [ { id: "writer" }, // neemt github en weather over { id: "docs", skills: ["docs-search"] }, // vervangt de standaardwaarden volledig { id: "locked-down", skills: [] }, // geen Skills ], },}agents.defaults.skillsstring[]Gedeelde basistoelatingslijst die wordt overgenomen door agents waarbij
agents.list[].skills ontbreekt. Laat deze volledig weg om Skills standaard
onbeperkt te laten.
agents.list[].skillsstring[]Expliciete definitieve verzameling Skills voor die agent. Expliciete
lijsten vervangen overgenomen standaardwaarden; ze worden niet
samengevoegd. Stel dit in op [] om geen Skills aan die agent beschikbaar
te stellen.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseWanneer true, kunnen agents na geslaagde beurten voorstellen in afwachting
maken op basis van duurzame gesprekssignalen. Door de gebruiker gevraagde
aanmaak van Skills verloopt altijd via Skill Workshop, ongeacht deze instelling.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending vereist goedkeuring van de beheerder voordat een door een agent
geïnitieerde toepassing, afwijzing of quarantaine plaatsvindt. auto staat
deze acties zonder goedkeuring toe.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseSta toe dat Skill Workshop bij het toepassen via symlinks naar Skills in de
werkruimte schrijft waarvan het werkelijke doel al wordt vertrouwd door
skills.load.allowSymlinkTargets. Laat dit uitgeschakeld, tenzij het toepassen
van gegenereerde voorstellen die gedeelde hoofdmap voor Skills moet wijzigen.
skills.workshop.maxPendingnumberdefault: 50Maximumaantal voorstellen in afwachting en in quarantaine dat per werkruimte wordt bewaard (toegestaan bereik: 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Maximale grootte van de inhoud van een voorstel in bytes (toegestaan bereik: 1024-200000). Voorstelbeschrijvingen hebben afzonderlijk een vaste limiet van 160 bytes, omdat ze in uitvoer voor detectie en lijsten verschijnen.
Zie Skill Workshop voor de levenscyclus van voorstellen, CLI-opdrachten, parameters voor agenttools en Gateway-methoden die door deze configuratie worden beheerd.
Hoofdmappen voor Skills met symlinks
Standaard vormen hoofdmappen voor Skills van de werkruimte, projectagent,
extra map en meegeleverde Skills insluitingsgrenzen. Een map voor Skills met
een symlink onder <workspace>/skills die naar buiten de hoofdmap verwijst,
wordt overgeslagen met een logbericht.
Declareer het vertrouwde doel om een doelbewuste indeling met symlinks toe te staan:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Met deze configuratie wordt
<workspace>/skills/manager -> ~/Projects/manager/skills na realpath-resolutie
geaccepteerd. extraDirs scant de aangrenzende repository rechtstreeks;
allowSymlinkTargets behoudt het pad met de symlink voor bestaande indelingen.
Skill Workshop schrijft bij het toepassen standaard niet via deze symlinks. Schakel dit afzonderlijk in om Workshop bij het toepassen Skills onder reeds vertrouwde symlinkdoelen te laten wijzigen:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Beheerde mappen ~/.openclaw/skills en persoonlijke mappen
~/.agents/skills accepteren symlinks naar mappen voor Skills al
onvoorwaardelijk (insluiting van SKILL.md per Skill blijft van toepassing) —
allowSymlinkTargets is alleen nodig voor hoofdmappen van de werkruimte, extra
map en projectagent (<workspace>/.agents/skills).
Skills in een sandbox en omgevingsvariabelen
Geef geheimen als volgt door aan een Docker-sandbox:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Herinnering aan de laadvolgorde
workspace/skills (hoogste)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsmeegeleverde Skillsskills.load.extraDirs (laagste)Wijzigingen aan Skills en configuratie worden van kracht in de volgende nieuwe sessie wanneer de watcher is ingeschakeld, of tijdens de volgende agentbeurt wanneer de watcher een wijziging detecteert.
Gerelateerd
Wat Skills zijn, de laadvolgorde, toegangsbeperking en de indeling van SKILL.md.
Aangepaste Skills voor werkruimten opstellen.
Voorstelwachtrij voor door agents opgestelde Skills.
Systeemeigen catalogus met slash-opdrachten en chatinstructies.