Skills
Skills-Konfiguration
Die meisten Skills-Konfigurationen befinden sich unter skills in
~/.openclaw/openclaw.json. Die agentenspezifische Sichtbarkeit wird unter
agents.defaults.skills und agents.list[].skills festgelegt.
{ 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 tatsächliche Zielverzeichnisse, in die per Symlink
verknüpfte Skill-Ordner aufgelöst werden dürfen, selbst wenn sich der
Symlink außerhalb des konfigurierten Stammverzeichnisses befindet.
Verwenden Sie dies für beabsichtigte Layouts mit benachbarten Repositorys,
beispielsweise
<workspace>/skills/manager -> ~/Projects/manager/skills. Halten Sie diese
Liste eng begrenzt – geben Sie keine weit gefassten Stammverzeichnisse wie
~ oder ~/Projects an.
skills.load.watchbooleandefault: trueÜberwacht Skill-Ordner und aktualisiert den Skills-Snapshot, wenn sich
SKILL.md-Dateien ändern. Dies umfasst verschachtelte Dateien unter
gruppierten Skill-Stammverzeichnissen.
skills.load.watchDebounceMsnumberdefault: 250Entprellzeitraum für Ereignisse der Skill-Überwachung in Millisekunden.
Installation (skills.install)
skills.install.preferBrewbooleandefault: trueBevorzugt Homebrew-Installationsprogramme, wenn brew verfügbar ist.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Bevorzugter Node-Paketmanager für Skill-Installationen. Dies wirkt sich nur
auf Skill-Installationen aus – die Gateway-Laufzeit sollte weiterhin Node
verwenden (Bun wird für WhatsApp/Telegram nicht empfohlen).
openclaw setup --node-manager und openclaw onboard --node-manager
akzeptieren npm, pnpm oder bun; legen Sie für Yarn-basierte
Skill-Installationen "yarn" direkt in der Konfiguration fest.
skills.install.allowUploadedArchivesbooleandefault: falseErlaubt vertrauenswürdigen operator.admin-Gateway-Clients, private
ZIP-Archive zu installieren, die über skills.upload.* bereitgestellt
wurden. Normale ClawHub-Installationen benötigen diese Einstellung nicht.
Installationsrichtlinie für Operatoren (security.installPolicy)
Verwenden Sie security.installPolicy, wenn Operatoren einen
vertrauenswürdigen lokalen Befehl benötigen, um Skill- und
Plugin-Installationen anhand hostspezifischer Richtlinien zu genehmigen oder
zu blockieren. Die Richtlinie wird ausgeführt, nachdem OpenClaw das
Quellmaterial bereitgestellt hat und bevor die Installation oder
Aktualisierung fortgesetzt wird. Sie gilt für ClawHub-Skills, hochgeladene
Skills, Git-/lokale Skills, Installationsprogramme für Skill-Abhängigkeiten
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, werden Installationen im Zweifel
blockiert.
security.installPolicy.targets("skill" | "plugin")[]Optionaler Zielfilter. Wenn er nicht angegeben ist, gilt die Richtlinie für jedes unterstützte Ziel, damit neue Installationen nicht unerwartet im Zweifel zugelassen werden.
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 Gesamtlaufzeit für eine Richtlinienentscheidung.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaximale Zeit ohne Ausgabe auf stdout oder stderr, bevor die Richtlinie im Zweifel blockiert.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maximale kombinierte Anzahl an stdout- und stderr-Bytes, die vom Richtlinienprozess akzeptiert wird.
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 Positivliste der Verzeichnisse, welche die ausführbare Richtliniendatei enthalten dürfen.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseUmgeht die Prüfungen für Eigentümerschaft und Berechtigungen des Befehlspfads. Verwenden Sie dies nur, 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 übrigen Pfadprüfungen erfüllen. Argumente für Interpreter-Skripte müssen direkte reguläre Dateien und dürfen keine Symlinks sein.
Die Richtlinie empfängt über stdin ein JSON-Objekt 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": "..." }. Ein
Exit-Code ungleich null, eine Zeitüberschreitung, fehlerhaftes JSON, fehlende
Felder oder nicht unterstützte Protokollversionen führen zur Blockierung.
OpenClaw führt die Installationsrichtlinie während des normalen
Gateway-Starts nicht aus. Installationen und Aktualisierungen werden
blockiert, wenn die Richtlinie aktiviert, aber nicht verfügbar ist.
openclaw doctor führt eine statische Validierung durch;
openclaw doctor --deep führt einen synthetischen Installationstest mit dem
konfigurierten Befehl aus.
Bei Massenaktualisierungen wird die Richtlinie auf jedes Ziel einzeln angewendet: Eine blockierte Skill- oder Plugin-Aktualisierung schlägt für dieses Ziel fehl, ohne die Richtlinie zu deaktivieren oder spätere Ziele im Stapel 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" }));});Positivliste für gebündelte Skills
skills.allowBundledstring[]Optionale Positivliste ausschließlich für gebündelte Skills. Wenn sie festgelegt ist, kommen nur gebündelte Skills aus der Liste infrage. Verwaltete Skills sowie Skills auf Agenten- und Arbeitsbereichsebene sind davon nicht betroffen.
Einträge pro Skill (skills.entries)
Schlüssel unter entries entsprechen standardmäßig dem name des Skills.
Wenn ein Skill metadata.openclaw.skillKey definiert, verwenden Sie
stattdessen diesen Schlüssel. Setzen Sie Namen mit Bindestrichen in
Anführungszeichen (JSON5 erlaubt Schlüssel in Anführungszeichen).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false deaktiviert den Skill, auch wenn er gebündelt oder installiert ist.
Der gebündelte Skill coding-agent muss explizit aktiviert werden – 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₫��ܩAgenten-Positivlisten (agents)
Verwenden Sie die Agentenkonfiguration, wenn Sie dieselben Skill-Stammverzeichnisse für Maschine und Arbeitsbereich, aber pro Agent eine andere sichtbare Skill-Auswahl 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 grundlegende Positivliste, die von Agenten übernommen wird, bei
denen agents.list[].skills fehlt. Lassen Sie sie vollständig weg, damit
Skills standardmäßig nicht eingeschränkt werden.
agents.list[].skillsstring[]Explizite endgültige Skill-Auswahl für diesen Agenten. Explizite Listen
ersetzen übernommene Standardwerte – sie werden nicht zusammengeführt.
Legen Sie [] fest, um diesem Agenten keine Skills bereitzustellen.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseWenn true, können Agenten nach erfolgreichen Durchläufen aus dauerhaften
Konversationssignalen ausstehende Vorschläge erstellen. Die vom Benutzer
veranlasste Erstellung von Skills erfolgt unabhängig von dieser Einstellung
immer über den Skill Workshop.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending erfordert die Genehmigung durch den Betreiber, bevor ein vom Agenten
initiierter Vorschlag angewendet, abgelehnt oder unter Quarantäne gestellt
wird. auto erlaubt diese Aktionen ohne Genehmigung.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseErlaubt dem Skill Workshop beim Anwenden, über Symlinks für Workspace-Skills
zu schreiben, deren tatsächliches Ziel bereits durch
skills.load.allowSymlinkTargets als vertrauenswürdig eingestuft ist. Lassen
Sie diese Option deaktiviert, sofern das Anwenden generierter Vorschläge
dieses gemeinsam genutzte Stammverzeichnis für Skills nicht verändern soll.
skills.workshop.maxPendingnumberdefault: 50Maximale Anzahl ausstehender und unter Quarantäne gestellter Vorschläge, die pro Workspace aufbewahrt werden (zulässiger Bereich: 1–200).
skills.workshop.maxSkillBytesnumberdefault: 40000Maximale Größe des Vorschlagstexts in Byte (zulässiger Bereich: 1024–200000). Vorschlagsbeschreibungen sind separat auf 160 Byte fest begrenzt, da sie in Ausgaben zur Erkennung und Auflistung erscheinen.
Unter Skill Workshop finden Sie Informationen zum Lebenszyklus von Vorschlägen, zu CLI-Befehlen, Parametern der Agentenwerkzeuge und Gateway-Methoden, die durch diese Konfiguration gesteuert werden.
Über Symlinks eingebundene Stammverzeichnisse für Skills
Standardmäßig bilden die Stammverzeichnisse für Workspace-, Projektagenten-,
zusätzliche Verzeichnis- und gebündelte Skills Begrenzungen. Ein über einen
Symlink eingebundener Skill-Ordner unter <workspace>/skills, dessen Ziel
außerhalb des Stammverzeichnisses liegt, wird mit einer Protokollmeldung
übersprungen.
Um eine beabsichtigte Symlink-Struktur zuzulassen, 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
Auflösung des tatsächlichen Pfads akzeptiert. extraDirs durchsucht das
benachbarte Repository direkt; allowSymlinkTargets erhält den über Symlink
eingebundenen Pfad für bestehende Strukturen.
Beim Anwenden schreibt der Skill Workshop standardmäßig nicht über diese Symlinks. Damit der Workshop beim Anwenden Skills unter bereits vertrauenswürdigen Symlink-Zielen verändern darf, müssen Sie dies separat aktivieren:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Verwaltete Verzeichnisse unter ~/.openclaw/skills und persönliche
Verzeichnisse unter ~/.agents/skills akzeptieren Symlinks auf
Skill-Verzeichnisse bereits uneingeschränkt (die Begrenzung pro Skill durch
SKILL.md gilt weiterhin) — allowSymlinkTargets ist nur für die
Stammverzeichnisse von Workspace-, zusätzlichen Verzeichnis- und
Projektagenten-Skills (<workspace>/.agents/skills) erforderlich.
Skills in Sandboxes und Umgebungsvariablen
Übergeben Sie Geheimnisse wie folgt an eine Docker-Sandbox:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Erinnerung an die Ladereihenfolge
workspace/skills (höchste Priorität)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsgebündelte Skillsskills.load.extraDirs (niedrigste Priorität)Änderungen an Skills und der Konfiguration werden in der nächsten neuen Sitzung wirksam, wenn die Überwachung aktiviert ist, oder beim nächsten Agentendurchlauf, wenn die Überwachung eine Änderung erkennt.
Verwandte Themen
Was Skills sind, ihre Ladereihenfolge, Zugriffssteuerung und das Format von SKILL.md.
Erstellung benutzerdefinierter Workspace-Skills.
Vorschlagswarteschlange für von Agenten entworfene Skills.
Nativer Katalog von Slash-Befehlen und Chat-Direktiven.