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.

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

Entprellzeitraum für Ereignisse der Skill-Überwachung in Millisekunden.

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 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: 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 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.

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 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.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 im Zweifel 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 der Verzeichnisse, welche die ausführbare Richtliniendatei enthalten dürfen.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Umgeht 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: 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 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:

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 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.

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

Wenn 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: false

Erlaubt 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: 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 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.

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:

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

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

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 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 this useful?
On this page

On this page