Naar hoofdinhoud gaan
De meeste Skills-configuratie 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 },
    },
  },
}
Gebruik voor ingebouwde afbeeldingsgeneratie agents.defaults.imageGenerationModel plus de kern-tool image_generate in plaats van skills.entries. Skill- vermeldingen zijn alleen bedoeld voor aangepaste of externe Skill-workflows.

Laden (skills.load)

skills.load.extraDirs
string[]
Extra Skills-mappen om te scannen, met de laagste prioriteit (na gebundelde Skills en Plugin-Skills). Paden worden uitgebreid met ondersteuning voor ~.
Vertrouwde echte doelmappen waarnaar gesymlinkte Skill-mappen mogen verwijzen, zelfs wanneer de symlink buiten de geconfigureerde hoofdmap staat. Gebruik dit voor bewuste sibling-repo-indelingen zoals <workspace>/skills/manager -> ~/Projects/manager/skills. Houd deze lijst beperkt — wijs niet naar brede hoofdmappen zoals ~ of ~/Projects.
skills.load.watch
boolean
standaard:"true"
Bewaak Skill-mappen en vernieuw de Skills-snapshot wanneer SKILL.md-bestanden wijzigen. Omvat geneste bestanden onder gegroepeerde Skill-hoofdmappen.
skills.load.watchDebounceMs
number
standaard:"250"
Debounce-venster voor Skill-watcher-events in milliseconden.

Installeren (skills.install)

skills.install.preferBrew
boolean
standaard:"true"
Geef de voorkeur aan Homebrew-installers wanneer brew beschikbaar is.
skills.install.nodeManager
"npm" | "pnpm" | "yarn" | "bun"
standaard:"\"npm\""
Voorkeur voor Node-pakketbeheerder bij Skill-installaties. Dit heeft alleen invloed op Skill-installaties — de Gateway-runtime moet nog steeds Node gebruiken (Bun wordt niet aanbevolen voor WhatsApp/Telegram). Gebruik openclaw setup --node-manager voor npm, pnpm of bun; stel "yarn" handmatig in voor Skill-installaties met Yarn.
skills.install.allowUploadedArchives
boolean
standaard:"false"
Sta vertrouwde operator.admin Gateway-clients toe om privé-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 Skill- en Plugin-installaties 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 Plugin-installatie-/ updatesources.
{
  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.enabled
boolean
standaard:"false"
Schakelt installatiebeleid in dat eigendom is van de operator. Wanneer dit is ingeschakeld zonder geldige exec-opdracht, mislukken installaties fail-closed.
security.installPolicy.targets
("skill" | "plugin")[]
Optioneel doelfilter. Wanneer dit wordt weggelaten, geldt het beleid voor elk ondersteund doel, zodat nieuwe installaties niet onverwacht fail-open gaan.
security.installPolicy.exec.command
string
Absoluut pad naar het vertrouwde beleidsuitvoerbare bestand. OpenClaw voert het zonder shell uit en valideert het pad vóór gebruik.
security.installPolicy.exec.args
string[]
Statische argumenten die na command worden doorgegeven.
security.installPolicy.exec.timeoutMs
number
standaard:"10000"
Maximale kloktijd voor één beleidsbeslissing.
security.installPolicy.exec.noOutputTimeoutMs
number
standaard:"timeoutMs"
Maximale tijd zonder stdout- of stderr-uitvoer voordat het beleid fail-closed mislukt.
security.installPolicy.exec.maxOutputBytes
number
standaard:"1048576"
Maximaal gecombineerd aantal stdout- en stderr-bytes dat van het beleidsproces wordt geaccepteerd.
security.installPolicy.exec.env
Record<string, string>
Letterlijke omgevingsvariabelen die aan het beleidsproces worden geleverd.
security.installPolicy.exec.passEnv
string[]
Namen van omgevingsvariabelen die vanuit het OpenClaw-proces naar het beleidsproces worden gekopieerd. Alleen genoemde variabelen worden doorgegeven.
security.installPolicy.exec.trustedDirs
string[]
Optionele allowlist van mappen die het beleidsuitvoerbare bestand mogen bevatten.
security.installPolicy.exec.allowInsecurePath
boolean
standaard:"false"
Omzeilt controles op eigenaarschap en permissies van het opdrachtpad. Gebruik dit alleen wanneer het pad door een ander mechanisme wordt beschermd.
Staat toe dat het geconfigureerde opdrachtpad een symlink is. Het opgeloste doel moet nog steeds aan de andere padcontroles voldoen. Argumentscripts voor interpreters moeten directe reguliere bestanden zijn, geen symlinks.
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 niet-nul afsluitcode, timeout, misvormde JSON, ontbrekende velden of niet- ondersteunde protocolversies mislukken fail-closed. OpenClaw voert geen installatiebeleid uit tijdens normaal opstarten van de Gateway. Installaties en updates mislukken fail-closed wanneer beleid is ingeschakeld maar niet beschikbaar is. openclaw doctor voert statische validatie uit, en openclaw doctor --deep voert een synthetische installatieprobe uit tegen de geconfigureerde opdracht. Bulkupdates passen beleid per doel toe: een geblokkeerde Skill- of Plugin-update mislukt voor dat doel zonder het beleid uit te schakelen of latere doelen in de batch over te slaan. Voorbeeld-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" }));
});

Allowlist voor gebundelde Skills

skills.allowBundled
string[]
Optionele allowlist alleen voor gebundelde Skills. Wanneer ingesteld, komen alleen gebundelde Skills in de lijst in aanmerking. Beheerde Skills, Skills op agentniveau en workspace-Skills blijven onaangetast.

Vermeldingen per Skill (skills.entries)

Sleutels onder entries komen standaard overeen met de Skill-name. Als een Skill metadata.openclaw.skillKey definieert, gebruik dan die sleutel. Zet namen met koppeltekens tussen aanhalingstekens (JSON5 staat geciteerde sleutels toe).
skills.entries.<key>.enabled
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 dat een van claude, codex, opencode of een andere ondersteunde CLI is geïnstalleerd en geauthenticeerd.
skills.entries.<key>.apiKey
string | { source, provider, id }
Gemaksveld voor Skills die metadata.openclaw.primaryEnv declareren. Ondersteunt een plattetekstreeks of een SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
skills.entries.<key>.env
Record<string, string>
Omgevingsvariabelen die voor de agent-run worden geïnjecteerd. Worden alleen geïnjecteerd wanneer de variabele nog niet in het proces is ingesteld.
skills.entries.<key>.config
object
Optionele verzameling voor aangepaste configuratievelden per Skill.

Agent-allowlists (agents)

Gebruik agentconfiguratie wanneer je dezelfde Skill-hoofdmappen voor machine/ workspace wilt, maar per agent een andere zichtbare Skill-set.
{
  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.skills
string[]
Gedeelde baseline-allowlist die wordt geërfd door agents die agents.list[].skills weglaten. Laat dit volledig weg om Skills standaard onbeperkt te laten.
agents.list[].skills
string[]
Expliciete uiteindelijke Skill-set voor die agent. Expliciete lijsten vervangen geërfde standaardwaarden — ze worden niet samengevoegd. Stel in op [] om geen Skills voor die agent beschikbaar te maken.
Agent-Skill-allowlists zijn een zichtbaarheids- en laadfilter voor OpenClaw-Skill-detectie, prompts, slash-command-detectie, sandbox- synchronisatie en Skill-snapshots. Ze vormen geen autorisatiegrens op shell-tijd. Als een agent host-exec kan uitvoeren, kan die shell nog steeds externe clients uitvoeren of hostbestanden lezen die zichtbaar zijn voor de uitvoerende gebruiker, inclusief MCP-clientregistries zoals ~/.openclaw/skills/config/mcporter.json. Combineer voor MCP-isolatie per agent Skill-allowlists met sandbox-/OS-gebruikersisolatie, weiger host-exec of gebruik hiervoor een strakke allowlist, en geef de voorkeur aan credentials per agent op de MCP-server.

Workshop (skills.workshop)

skills.workshop.autonomous.enabled
boolean
standaard:"false"
Wanneer true, kunnen agents openstaande voorstellen maken op basis van duurzame conversatiesignalen na succesvolle beurten. Door gebruikers aangestuurde Skill-creatie loopt altijd via Skill Workshop, ongeacht deze instelling.
skills.workshop.approvalPolicy
"pending" | "auto"
standaard:"\"pending\""
pending vereist goedkeuring door de operator voordat een door de agent geïnitieerde toepassing, afwijzing of quarantaine plaatsvindt. auto staat die acties zonder goedkeuring toe.
Sta Skill Workshop toe om via workspace-skill-symlinks te schrijven waarvan het werkelijke 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.maxPending
number
standaard:"50"
Maximaal aantal in behandeling zijnde en in quarantaine geplaatste voorstellen dat per workspace wordt bewaard.
skills.workshop.maxSkillBytes
number
standaard:"40000"
Maximale grootte van de voorsteltekst in bytes. Voorstelbeschrijvingen zijn strikt beperkt tot 160 bytes omdat ze verschijnen in ontdekking en lijstuitvoer.

Gesymlinkte skill-roots

Standaard zijn workspace-, project-agent-, extra-dir- en meegeleverde skill-roots containment-grenzen. Een gesymlinkte skill-map onder <workspace>/skills die buiten de root uitkomt, wordt overgeslagen met een logbericht. Declareer het vertrouwde doel om een bedoelde symlink-indeling toe te staan:
{
  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 naastgelegen repo rechtstreeks; allowSymlinkTargets behoudt het gesymlinkte pad voor bestaande indelingen. Skill Workshop schrijft standaard niet via die symlinks. Om Workshop toe te staan Skills onder al vertrouwde symlinkdoelen te wijzigen, moet je dit apart inschakelen:
{
  skills: {
    load: {
      allowSymlinkTargets: ["~/Projects/manager/skills"],
    },
    workshop: {
      allowSymlinkTargetWrites: true,
    },
  },
}
Beheerde mappen ~/.openclaw/skills en persoonlijke mappen ~/.agents/skills accepteren al symlinks naar skill-mappen (containment per skill-SKILL.md blijft van toepassing).

Gesandboxte Skills en env-vars

skills.entries.<skill>.env en apiKey gelden alleen voor host-runs. Binnen een sandbox hebben ze geen effect — een skill die afhankelijk is van GEMINI_API_KEY faalt met apiKey not configured, tenzij de variabele apart aan de sandbox wordt gegeven.
Geef geheimen door aan een Docker-sandbox met:
{
  agents: {
    defaults: {
      sandbox: {
        docker: {
          env: { GEMINI_API_KEY: "your-key-here" },
        },
      },
    },
  },
}
Gebruikers met toegang tot de Docker-daemon kunnen waarden van sandbox.docker.env inspecteren via Docker-metadata. Gebruik een gekoppeld geheim bestand, een aangepaste image of een ander leveringspad wanneer die blootstelling niet acceptabel is.

Herinnering aan laadvolgorde

workspace/skills      (highest)
workspace/.agents/skills
~/.agents/skills
~/.openclaw/skills
bundled skills
skills.load.extraDirs (lowest)
Wijzigingen aan Skills en configuratie worden van kracht bij de volgende nieuwe sessie wanneer de watcher is ingeschakeld, of bij de volgende agentbeurt wanneer de watcher een wijziging detecteert.

Gerelateerd

Skills-naslag

Wat Skills zijn, laadvolgorde, gating en de indeling van SKILL.md.

Skills maken

Aangepaste workspace-Skills schrijven.

Skill Workshop

Voorstelwachtrij voor door agents opgestelde Skills.

Slash-commands

Native slash-commandcatalogus en chatdirectieven.