Skills
Skills-Konfiguration
Der Großteil der Skills-Konfiguration befindet sich unter skills in
~/.openclaw/openclaw.json. Agent-spezifische Sichtbarkeit befindet sich unter
agents.defaults.skills und 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[]Zusätzliche Skill-Verzeichnisse, die mit der niedrigsten Priorität durchsucht
werden (nach gebündelten Skills und Plugin-Skills). Pfade werden mit
Unterstützung für ~ erweitert.
skills.load.allowSymlinkTargetsstring[]Vertrauenswürdige reale Zielverzeichnisse, in die symbolisch verknüpfte
Skill-Ordner aufgelöst werden dürfen, auch wenn der Symlink außerhalb des
konfigurierten Stammverzeichnisses liegt. Verwenden Sie dies für bewusst
angelegte Layouts mit benachbarten Repositorys wie
<workspace>/skills/manager -> ~/Projects/manager/skills. Halten Sie diese
Liste eng gefasst — verweisen Sie nicht auf breite Stammverzeichnisse wie ~
oder ~/Projects.
skills.load.watchbooleandefault: trueSkill-Ordner überwachen und den Skills-Snapshot aktualisieren, wenn sich
SKILL.md-Dateien ändern. Deckt verschachtelte Dateien unter gruppierten
Skill-Stammverzeichnissen ab.
skills.load.watchDebounceMsnumberdefault: 250Debounce-Fenster für Skill-Watcher-Ereignisse in Millisekunden.
Installieren (skills.install)
skills.install.preferBrewbooleandefault: trueHomebrew-Installer bevorzugen, wenn brew verfügbar ist.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Bevorzugter Node-Paketmanager für Skill-Installationen. Dies betrifft nur
Skill-Installationen — die Gateway-Laufzeit sollte weiterhin Node verwenden
(Bun wird für WhatsApp/Telegram nicht empfohlen). Verwenden Sie
openclaw setup --node-manager für npm, pnpm oder bun; setzen Sie "yarn"
manuell für Yarn-gestützte Skill-Installationen.
skills.install.allowUploadedArchivesbooleandefault: falseVertrauenswürdigen operator.admin-Gateway-Clients erlauben, private
Zip-Archive zu installieren, die über skills.upload.* bereitgestellt wurden.
Normale ClawHub-Installationen benötigen diese Einstellung nicht.
Operator-Installationsrichtlinie (security.installPolicy)
Verwenden Sie security.installPolicy, wenn Operatoren einen vertrauenswürdigen
lokalen Befehl benötigen, um Skill- und Plugin-Installationen mit hostspezifischer
Richtlinie zu genehmigen oder zu blockieren. Die Richtlinie wird ausgeführt,
nachdem OpenClaw Quellmaterial bereitgestellt hat und bevor die Installation
oder Aktualisierung fortgesetzt wird. Sie gilt für ClawHub-Skills,
hochgeladene Skills, Git-/lokale Skills, Skill-Abhängigkeitsinstaller sowie
Quellen für Plugin-Installationen und -Aktualisierungen.
{ 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: falseAktiviert die vom Operator verwaltete Installationsrichtlinie. Wenn sie ohne
gültigen exec-Befehl aktiviert ist, schlagen Installationen geschlossen fehl.
security.installPolicy.targets("skill" | "plugin")[]Optionaler Zielfilter. Wenn ausgelassen, gilt die Richtlinie für jedes unterstützte Ziel, damit neue Installationen nicht unerwartet offen fehlschlagen.
security.installPolicy.exec.commandstringAbsoluter Pfad zur vertrauenswürdigen ausführbaren Richtliniendatei. OpenClaw führt sie ohne Shell aus und validiert den Pfad vor der Verwendung.
security.installPolicy.exec.argsstring[]Statische Argumente, die nach command übergeben werden.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Maximale Wanduhr-Laufzeit für eine Richtlinienentscheidung.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaximale Zeit ohne stdout- oder stderr-Ausgabe, bevor die Richtlinie geschlossen fehlschlägt.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maximal akzeptierte kombinierte stdout- und stderr-Bytes vom Richtlinienprozess.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Namen von Umgebungsvariablen, die aus dem OpenClaw-Prozess in den Richtlinienprozess kopiert werden. Nur benannte Variablen werden übergeben.
security.installPolicy.exec.trustedDirsstring[]Optionale Zulassungsliste von Verzeichnissen, die die ausführbare Richtliniendatei enthalten dürfen.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseUmgeht Prüfungen von Eigentümerschaft und Berechtigungen des Befehlspfads. Nur verwenden, wenn der Pfad durch einen anderen Mechanismus geschützt ist.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseErlaubt, dass der konfigurierte Befehlspfad ein Symlink ist. Das aufgelöste Ziel muss weiterhin die anderen Pfadprüfungen erfüllen. Argumente für Interpreter-Skripte müssen direkte reguläre Dateien sein, keine Symlinks.
Die Richtlinie erhält ein JSON-Objekt auf stdin mit protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
optionalem strukturiertem source, strukturiertem origin und request. Sie
muss ein JSON-Objekt auf stdout schreiben: { "protocolVersion": 1, "decision": "allow" }
oder { "protocolVersion": 1, "decision": "block", "reason": "..." }.
Exit ungleich null, Timeout, fehlerhaftes JSON, fehlende Felder oder nicht
unterstützte Protokollversionen schlagen geschlossen fehl.
OpenClaw führt die Installationsrichtlinie beim normalen Gateway-Start nicht
aus. Installationen und Aktualisierungen schlagen geschlossen fehl, wenn die
Richtlinie aktiviert, aber nicht verfügbar ist. openclaw doctor führt eine
statische Validierung durch, und openclaw doctor --deep führt eine synthetische
Installationsprüfung gegen den konfigurierten Befehl aus.
Massenaktualisierungen wenden die Richtlinie pro Ziel an: Eine blockierte Skill- oder Plugin-Aktualisierung schlägt für dieses Ziel fehl, ohne die Richtlinie zu deaktivieren oder spätere Ziele im Batch zu überspringen.
Beispiel für 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" }}Minimaler Richtlinienbefehl:
#!/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" }));});Zulassungsliste für gebündelte Skills
skills.allowBundledstring[]Optionale Zulassungsliste nur für gebündelte Skills. Wenn gesetzt, sind nur gebündelte Skills in der Liste zulässig. Verwaltete Skills, agentenbezogene Skills und Workspace-Skills bleiben unberührt.
Einträge pro Skill (skills.entries)
Schlüssel unter entries entsprechen standardmäßig dem Skill-name. Wenn ein
Skill metadata.openclaw.skillKey definiert, verwenden Sie stattdessen diesen
Schlüssel. Setzen Sie Namen mit Bindestrich in Anführungszeichen (JSON5 erlaubt
Schlüssel in Anführungszeichen).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false deaktiviert den Skill, selbst wenn er gebündelt oder installiert ist.
Der gebündelte Skill coding-agent ist Opt-in — setzen Sie ihn auf true und
stellen Sie sicher, dass claude, codex, opencode oder eine andere
unterstützte CLI installiert und authentifiziert ist.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Komfortfeld für Skills, die metadata.openclaw.primaryEnv deklarieren.
Unterstützt eine Klartextzeichenfolge oder eine SecretRef:
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩAgent-Zulassungslisten (agents)
Verwenden Sie die Agentenkonfiguration, wenn Sie dieselben Skill-Stammverzeichnisse für Maschine/Workspace, aber pro Agent einen anderen sichtbaren Skill-Satz verwenden möchten.
{ 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[]Gemeinsame Basis-Zulassungsliste, die von Agenten geerbt wird, die
agents.list[].skills auslassen. Ganz auslassen, damit Skills standardmäßig
nicht eingeschränkt werden.
agents.list[].skillsstring[]Expliziter endgültiger Skill-Satz für diesen Agenten. Explizite Listen
ersetzen geerbte Standardwerte — sie werden nicht zusammengeführt. Auf
[] setzen, um für diesen Agenten keine Skills verfügbar zu machen.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseWenn true, können Agenten nach erfolgreichen Durchläufen aus dauerhaften
Gesprächssignalen ausstehende Vorschläge erstellen. Vom Benutzer ausgelöste
Skill-Erstellung läuft unabhängig von dieser Einstellung immer über Skill
Workshop.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending erfordert die Genehmigung durch eine Bedienperson, bevor ein vom Agent initiiertes Anwenden, Ablehnen oder
Quarantänisieren erfolgt. auto erlaubt diese Aktionen ohne Genehmigung.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseErlauben Sie Skill Workshop Apply, über Workspace-Skill-Symlinks zu schreiben, deren
echtes Ziel bereits durch skills.load.allowSymlinkTargets als vertrauenswürdig eingestuft ist. Lassen Sie dies
deaktiviert, außer angewendete generierte Vorschläge sollen diesen gemeinsamen Skill-
Root verändern.
skills.workshop.maxPendingnumberdefault: 50Maximale Anzahl ausstehender und quarantänisierter Vorschläge, die pro Workspace aufbewahrt werden.
skills.workshop.maxSkillBytesnumberdefault: 40000Maximale Größe des Vorschlagstexts in Byte. Vorschlagsbeschreibungen sind hart auf 160 Byte begrenzt, da sie in Discovery- und Listen-Ausgaben erscheinen.
Symlink-verknüpfte Skill-Roots
Standardmäßig sind Workspace-, Projekt-Agent-, Extra-Verzeichnis- und gebündelte Skill-Roots
Einschlussgrenzen. Ein per Symlink verknüpfter Skill-Ordner unter <workspace>/skills,
der außerhalb des Roots aufgelöst wird, wird mit einer Logmeldung übersprungen.
Um ein beabsichtigtes Symlink-Layout zu erlauben, deklarieren Sie das vertrauenswürdige Ziel:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Mit dieser Konfiguration wird <workspace>/skills/manager -> ~/Projects/manager/skills nach
der Realpath-Auflösung akzeptiert. extraDirs scannt das benachbarte Repo direkt;
allowSymlinkTargets behält den Symlink-Pfad für bestehende Layouts bei.
Skill Workshop Apply schreibt standardmäßig nicht über diese Symlinks. Damit Workshop Apply Skills unter bereits vertrauenswürdigen Symlink-Zielen verändern darf, aktivieren Sie dies separat:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Verwaltete Verzeichnisse ~/.openclaw/skills und persönliche Verzeichnisse ~/.agents/skills
akzeptieren bereits Skill-Verzeichnis-Symlinks (die Einschlussregel pro Skill-SKILL.md
gilt weiterhin).
Sandboxed Skills und Umgebungsvariablen
Übergeben Sie Secrets mit Folgendem an eine Docker-Sandbox:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Hinweis zur Ladereihenfolge
workspace/skills (highest)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsbundled skillsskills.load.extraDirs (lowest)Änderungen an Skills und Konfiguration werden in der nächsten neuen Sitzung wirksam, wenn der Watcher aktiviert ist, oder im nächsten Agent-Turn, wenn der Watcher eine Änderung erkennt.