Skills

Skills-Konfiguration

Die meiste Skills-Konfiguration befindet sich unter skills in ~/.openclaw/openclaw.json. Die agentenspezifische Sichtbarkeit befindet sich unter agents.defaults.skills und 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[]

Zusätzliche zu durchsuchende Skill-Verzeichnisse mit der niedrigsten Priorität (unterhalb gebündelter Skills und Plugin-Skills). Pfade werden mit Unterstützung für ~ erweitert.

skills.load.allowSymlinkTargetsstring[]

Vertrauenswürdige tatsächliche Zielverzeichnisse, in die über Symlinks eingebundene 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 wie <workspace>/skills/manager -> ~/Projects/manager/skills. Halten Sie diese Liste eng begrenzt — verweisen Sie nicht auf weit gefasste Stammverzeichnisse wie ~ oder ~/Projects.

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.

Installation (skills.install)

skills.install.preferBrewbooleandefault: true

Bevorzugt Homebrew-Installationsprogramme, wenn brew verfügbar ist.

skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"

Bevorzugter Node-Paketmanager für Skill-Installationen. Dies betrifft ausschließlich Skill-Installationen – die OpenClaw-CLI und die Gateway-Laufzeit benötigen Node, da der kanonische Zustandsspeicher node:sqlite verwendet. openclaw setup --node-manager und openclaw onboard --node-manager akzeptieren npm, pnpm oder bun; legen Sie "yarn" für Yarn-basierte Skill-Installationen direkt in der Konfiguration fest.

skills.install.allowUploadedArchivesbooleandefault: false

Erlaubt 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 Betreiber (security.installPolicy)

Verwenden Sie security.installPolicy, wenn Betreiber 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.

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

Aktiviert die betreibereigene Installationsrichtlinie. Wenn sie ohne gültigen exec-Befehl aktiviert wird, werden Installationen standardmäßig blockiert.

security.installPolicy.targets("skill" | "plugin")[]

Optionaler Zielfilter. Wenn er weggelassen wird, gilt die Richtlinie für jedes unterstützte Ziel, damit neue Installationen nicht unerwartet standardmäßig zugelassen werden.

security.installPolicy.exec.commandstring

Absoluter 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: 10000

Maximale Gesamtlaufzeit für eine Richtlinienentscheidung.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Maximale Zeit ohne Ausgabe auf stdout oder stderr, bevor die Richtlinie standardmäßig blockiert.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Maximale 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 von Verzeichnissen, die die ausführbare Richtliniendatei enthalten dürfen.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Umgeht Prüfungen der Eigentümerschaft und Berechtigungen des Befehlspfads. Verwenden Sie dies nur, wenn der Pfad durch einen anderen Mechanismus geschützt ist.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Erlaubt, 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 über stdout ein JSON-Objekt ausgeben: { "protocolVersion": 1, "decision": "allow" } oder { "protocolVersion": 1, "decision": "block", "reason": "..." }. Ein von null verschiedener Exit-Code, eine Zeitüberschreitung, fehlerhaftes JSON, fehlende Felder oder nicht unterstützte Protokollversionen führen zur standardmäßigen Blockierung.

OpenClaw führt die Installationsrichtlinie beim normalen Start des Gateways nicht aus. Installationen und Aktualisierungen werden standardmäßig blockiert, wenn die Richtlinie aktiviert, aber nicht verfügbar ist. openclaw doctor führt eine statische Validierung durch; openclaw doctor --deep führt eine synthetische Installationsprüfung für den konfigurierten Befehl aus.

Bei Massenaktualisierungen wird die Richtlinie auf jedes Ziel einzeln angewendet: Eine blockierte Aktualisierung eines Skills oder Plugins lässt dieses Ziel fehlschlagen, ohne die Richtlinie zu deaktivieren oder spätere Ziele im Stapel zu überspringen.

Beispiel für 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"  }}

Minimaler Richtlinienbefehl:

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: "local plugin paths are not approved on this host",      }),    );    return;  }  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});

Positivliste gebündelter Skills

skills.allowBundledstring[]

Optionale Positivliste ausschließlich für gebündelte Skills. Wenn sie festgelegt ist, kommen nur die gebündelten Skills in der Liste infrage. Verwaltete Skills sowie Skills auf Agenten- und Workspace-Ebene sind davon nicht betroffen.

Einträge pro Skill (skills.entries)

Schlüssel unter entries entsprechen standardmäßig der 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, selbst 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 dieselben Skill-Stammverzeichnisse für Maschine und Workspace, aber für jeden Agenten eine andere sichtbare Skill-Menge verwendet werden soll.

json5
{  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-Positivliste, die von Agenten übernommen wird, bei denen agents.entries.*.skills fehlt. Lassen Sie sie vollständig weg, damit Skills standardmäßig nicht eingeschränkt werden.

agents.entries.*.skillsstring[]

Explizite endgültige Skill-Menge für diesen Agenten. Explizite Listen ersetzen übernommene Standardwerte — sie werden nicht zusammengeführt. Setzen Sie sie auf [], um für diesen Agenten keine Skills bereitzustellen.

Workshop (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Wenn true festgelegt ist, kann OpenClaw aus dauerhaften Korrekturen ausstehende Vorschläge erstellen und erfolgreiche, umfangreiche abgeschlossene Arbeiten prüfen, nachdem das System inaktiv geworden ist. Dadurch kann nach geeigneten Durchläufen ein Modellauslauf im Hintergrund hinzukommen. Die vom Benutzer veranlasste Erstellung von Skills und /learn funktionieren weiterhin, wenn die Einstellung false ist.

Unter Selbstlernen finden Sie Informationen zu Eignung, Datenschutz, Kosten, Berechtigungen nur für Vorschläge und Fehlerbehebung.

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

auto ermöglicht das vom Agenten initiierte Anwenden, Ablehnen oder unter Quarantäne stellen ohne eine zusätzliche Genehmigungsaufforderung. pending erfordert die Genehmigung durch den Betreiber.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Ermöglicht Skill Workshop beim Anwenden, über Symlinks von 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 nicht diesen gemeinsam genutzten Skill-Stammordner verändern soll.

skills.workshop.maxPendingnumberdefault: 50

Maximale Anzahl ausstehender und unter Quarantäne gestellter Vorschläge, die pro Workspace aufbewahrt werden (zulässiger Bereich: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

Maximale Größe des Vorschlagstexts in Byte (zulässiger Bereich: 1024-200000). Vorschlagsbeschreibungen sind separat fest auf 160 Byte begrenzt, da sie in der Erkennungs- und Listenausgabe erscheinen.

Unter Skill Workshop finden Sie Informationen zum Lebenszyklus von Vorschlägen, zu CLI- Befehlen, Parametern der Agentenwerkzeuge und Gateway-Methoden, die von dieser Konfiguration gesteuert werden.

Standardmäßig sind Workspace-, Projektagenten-, Zusatzverzeichnis- und gebündelte Skill-Stammordner Begrenzungsgrenzen. Ein über Symlink eingebundener Skill-Ordner unter <workspace>/skills, der auf ein Ziel außerhalb des Stammordners verweist, wird mit einer Protokollmeldung übersprungen.

Um ein beabsichtigtes Symlink-Layout zuzulassen, deklarieren Sie das vertrauenswürdige Ziel:

json5
{  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 durchsucht das benachbarte Repository direkt; allowSymlinkTargets behält den über Symlink eingebundenen Pfad für bestehende Layouts bei.

Beim Anwenden schreibt Skill Workshop standardmäßig nicht über diese Symlinks. Damit Workshop beim Anwenden Skills unter bereits vertrauenswürdigen Symlink-Zielen verändern kann, aktivieren Sie dies separat:

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

Verwaltete ~/.openclaw/skills- und persönliche ~/.agents/skills-Verzeichnisse akzeptieren Symlinks auf Skill-Verzeichnisse bereits uneingeschränkt (die Begrenzung von SKILL.md pro Skill gilt weiterhin) — allowSymlinkTargets wird nur für Workspace-, Zusatzverzeichnis- und Projektagenten-Stammordner (<workspace>/.agents/skills) benötigt.

Skills in Sandboxes und Umgebungsvariablen

Übergeben Sie Geheimnisse wie folgt an eine Docker-Sandbox:

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

Erinnerung an die Ladereihenfolge

text
workspace/skills      (höchste Priorität)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsgebündelte Skillsskills.load.extraDirs (niedrigste Priorität)

Änderungen an Skills und 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 this useful?
On this page

On this page