Skills

Skills-configuratie

De meeste Skills-configuratie staat onder skills in ~/.openclaw/openclaw.json. Agentspecifieke zichtbaarheid staat onder agents.defaults.skills en agents.entries.*.skills.

json5
{  skills: {    allowBundled: ["gemini", "peekaboo"],    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,    },    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 },    },  },}

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 werkelijke doelmappen waarnaar Skill-mappen met symbolische koppelingen mogen verwijzen, zelfs wanneer de symbolische koppeling buiten de geconfigureerde hoofdmap staat. Gebruik dit voor opzettelijke indelingen met naastgelegen repository's, zoals <workspace>/skills/manager -> ~/Projects/manager/skills. Houd deze lijst beperkt — verwijs niet naar brede hoofdmappen zoals ~ of ~/Projects.

skills.load.watchbooleandefault: true

Bewaak Skill-mappen en vernieuw de Skills-momentopname wanneer SKILL.md-bestanden veranderen. Dit omvat geneste bestanden onder gegroepeerde Skill-hoofdmappen.

Installatie (skills.install)

skills.install.preferBrewbooleandefault: true

Geef 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 OpenClaw-CLI en Gateway-runtime vereisen Node omdat de canonieke statusopslag node:sqlite gebruikt. openclaw setup --node-manager en openclaw onboard --node-manager accepteren npm, pnpm of bun; stel "yarn" rechtstreeks in de configuratie in voor Skill-installaties met Yarn.

skills.install.allowUploadedArchivesbooleandefault: false

Sta vertrouwde operator.admin-Gateway-clients toe om privé-ziparchieven te installeren die via skills.upload.* zijn klaargezet. Voor normale ClawHub-installaties is 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 installatie-/updatebronnen van Plugins.

json5
{  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: false

Schakelt installatiebeleid in dat door de operator wordt beheerd. 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.commandstring

Absoluut pad naar het vertrouwde uitvoerbare beleidsbestand. OpenClaw voert dit zonder een shell uit en valideert het pad vóór gebruik.

security.installPolicy.exec.argsstring[]

Statische argumenten die na command worden doorgegeven.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

Maximale totale uitvoeringstijd voor één beleidsbeslissing.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Maximale tijd zonder uitvoer naar stdout of stderr voordat het beleid standaard blokkeert.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Maximaal 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 benoemde variabelen worden doorgegeven.

security.installPolicy.exec.trustedDirsstring[]

Optionele toelatingslijst van mappen die het uitvoerbare beleidsbestand mogen bevatten.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Omzeilt controles op eigendom en machtigingen van het opdrachtpad. Gebruik dit alleen wanneer het pad door een ander mechanisme wordt beschermd.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Staat toe dat het geconfigureerde opdrachtpad een symbolische koppeling is. Het herleide doel moet nog steeds aan de overige padcontroles voldoen. Scriptargumenten voor interpreters moeten directe reguliere bestanden zijn, geen symbolische koppelingen.

Het beleid ontvangt één JSON-object op stdin met protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath, sourcePathKind, optionele gestructureerde source, gestructureerde 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 de normale opstart 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:

json
{  "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:

js
#!/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: "lokale Plugin-paden zijn niet goedgekeurd op deze 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, Skills op agentniveau en Skills in de werkruimte worden niet beïnvloed.

Vermeldingen per Skill (skills.entries)

Sleutels onder entries komen standaard overeen met de Skill-name. Als een Skill metadata.openclaw.skillKey definieert, gebruik je in plaats daarvan die sleutel. Zet 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 vereist expliciete inschakeling — stel deze in op true en zorg dat een van claude, codex, opencode of een andere ondersteunde CLI is geïnstalleerd en geverifieerd.

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 je dezelfde hoofdlocaties voor Skills op de machine/in de werkruimte wilt gebruiken, maar per agent een andere zichtbare verzameling Skills wilt instellen.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // gedeelde basis    },    list: [      { id: "writer" }, // neemt github, 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 die agents.entries.*.skills weglaten. Laat deze volledig weg om Skills standaard onbeperkt te laten.

agents.entries.*.skillsstring[]

Expliciete definitieve verzameling Skills voor die agent. Expliciete lijsten vervangen overgenomen standaardwaarden — ze worden niet samengevoegd. Stel dit in op [] om voor die agent geen Skills beschikbaar te maken.

Workshop (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Wanneer true, kan OpenClaw openstaande voorstellen maken op basis van duurzame correcties en kan het geslaagd, substantieel voltooid werk beoordelen nadat het systeem inactief is geworden. Dit kan na geschikte beurten een modeluitvoering op de achtergrond toevoegen. Door de gebruiker gestarte aanmaak van skills en /learn blijven werken wanneer de instelling false is.

Zie Zelflerend vermogen voor geschiktheid, privacy, kosten, uitsluitend-voorstellenmachtigingen en probleemoplossing.

skills.workshop.approvalPolicy"pending" | "auto"default: "auto"

auto staat door de agent geïnitieerd toepassen, afwijzen of in quarantaine plaatsen toe zonder een extra goedkeuringsprompt. pending vereist goedkeuring van de operator.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Sta toe dat toepassen via Skill Workshop via symlinks naar workspace-skills schrijft waarvan het echte doel al wordt vertrouwd door skills.load.allowSymlinkTargets. Laat dit uitgeschakeld, tenzij het toepassen van gegenereerde voorstellen die gedeelde skill-root moet wijzigen.

skills.workshop.maxPendingnumberdefault: 50

Maximumaantal openstaande en in quarantaine geplaatste voorstellen dat per workspace wordt bewaard (toegestaan bereik: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

Maximale grootte van de voorsteltekst in bytes (toegestaan bereik: 1024-200000). Beschrijvingen van voorstellen hebben afzonderlijk een harde limiet van 160 bytes, omdat ze worden weergegeven in detectie- en lijstuitvoer.

Zie Skill Workshop voor de levenscyclus van voorstellen, CLI- opdrachten, parameters van agenttools en Gateway-methoden die door deze configuratie worden beheerd.

Standaard vormen de skill-roots voor workspace, projectagent, extra directory en gebundelde skills insluitingsgrenzen. Een skillmap met een symlink onder <workspace>/skills die naar buiten de root verwijst, wordt overgeslagen met een logbericht.

Declareer het vertrouwde doel om een opzettelijke symlinkindeling toe te staan:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/manager/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],    },  },}

Met deze configuratie wordt <workspace>/skills/manager -> ~/Projects/manager/skills geaccepteerd na realpath-resolutie. extraDirs scant de aangrenzende repository rechtstreeks; allowSymlinkTargets behoudt het pad met de symlink voor bestaande indelingen.

Bij toepassen schrijft Skill Workshop standaard niet via deze symlinks. Om Workshop bij toepassen skills onder reeds vertrouwde symlinkdoelen te laten wijzigen, moet je dit afzonderlijk inschakelen:

json5
{  skills: {    load: {      allowSymlinkTargets: ["~/Projects/manager/skills"],    },    workshop: {      allowSymlinkTargetWrites: true,    },  },}

Beheerde ~/.openclaw/skills- en persoonlijke ~/.agents/skills-directory's accepteren symlinks naar skilldirectory's al onvoorwaardelijk (insluiting per skill via SKILL.md blijft van toepassing) — allowSymlinkTargets is alleen nodig voor roots van workspace, extra directory en projectagent (<workspace>/.agents/skills).

Skills in een sandbox en omgevingsvariabelen

Geef geheimen als volgt door aan een Docker-sandbox:

json5
{  agents: {    defaults: {      sandbox: {        docker: {          env: { GEMINI_API_KEY: "your-key-here" },        },      },    },  },}

Herinnering aan de laadvolgorde

text
workspace/skills      (hoogste)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsgebundelde 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

Was this useful?
On this page

On this page