Skills (OpenClaw)
Skills = eigene Tools. In ~/clawd/skills/ ablegen. OpenClaw nutzt AgentSkills -kompatible Skill-Ordner, um dem Agenten die Nutzung von Tools beizubringen. Jeder Skill ist ein Verzeichnis mit einer SKILL.md inkl. YAML-Frontmatter und Anweisungen. OpenClaw lädt gebündelte Skills plus optionale lokale Überschreibungen und filtert sie zur Ladezeit nach Umgebung, Config und vorhandenen Binaries.
Orte und Vorrang
Skills werden aus drei Quellen geladen:
- Gebündelte Skills: mit der Installation ausgeliefert (npm-Paket oder OpenClaw.app)
- Verwaltete/lokale Skills:
~/.clawdbot/skills - Workspace-Skills:
<workspace>/skills
Bei Namenskonflikt gilt: <workspace>/skills (höchster Vorrang) → ~/.clawdbot/skills → gebündelte Skills (niedrigster). Zusätzlich kannst du über skills.load.extraDirs in ~/.clawdbot/openclaw.json weitere Skill-Ordner konfigurieren (niedrigster Vorrang).
Pro-Agent vs. geteilte Skills
Bei Multi-Agent-Setups hat jeder Agent seinen eigenen Workspace. Das bedeutet:
- Pro-Agent-Skills liegen in
<workspace>/skillsnur für diesen Agenten. - Geteilte Skills liegen in
~/.clawdbot/skills(verwaltet/lokal) und sind für alle Agenten auf derselben Maschine sichtbar. - Geteilte Ordner können auch über
skills.load.extraDirs(niedrigster Vorrang) hinzugefügt werden, wenn mehrere Agenten einen gemeinsamen Skill-Pack nutzen sollen.
Existiert derselbe Skill-Name an mehreren Orten, gilt die übliche Vorrangfolge: Workspace gewinnt, dann verwaltet/lokal, dann gebündelt.
Plugins + Skills
Plugins können eigene Skills mitliefern, indem sie skills-Verzeichnisse in openclaw.plugin.json angeben (Pfade relativ zur Plugin-Wurzel). Plugin-Skills werden geladen, wenn das Plugin aktiviert ist, und folgen den normalen Skill-Vorrangregeln. Du kannst sie über metadata.openclaw.requires.config am Plugin-Config-Eintrag begrenzen. Siehe Plugins für Discovery/Config und Tools für die Tool-Oberfläche, die diese Skills vermitteln.
ClawdHub (Install + Sync)
ClawdHub ist die öffentliche Skill-Registry für OpenClaw. Durchsuchen unter https://clawdhub.com . Zum Entdecken, Installieren, Aktualisieren und Sichern von Skills nutzen. Vollständige Anleitung: ClawdHub. Typische Abläufe:
- Skill in deinen Workspace installieren:
clawdhub install <skill-slug>
- Alle installierten Skills aktualisieren:
clawdhub update --all
- Sync (Scannen + Updates veröffentlichen):
clawdhub sync --all
Standardmäßig installiert clawdhub in ./skills unter deinem aktuellen Arbeitsverzeichnis (oder nutzt den konfigurierten OpenClaw-Workspace). OpenClaw übernimmt das als <workspace>/skills in der nächsten Sitzung.
Sicherheitshinweise
- Drittanbieter-Skills als vertrauenswürdigen Code behandeln. Vor dem Aktivieren lesen.
- Für unvertrauenswürdige Eingaben und riskante Tools sandboxed Läufe bevorzugen. Siehe Sandboxing.
skills.entries.*.envundskills.entries.*.apiKeyinjizieren Secrets in den Host-Prozess für diesen Agenten-Turn (nicht die Sandbox). Secrets aus Prompts und Logs fernhalten.- Für breiteres Bedrohungsmodell und Checklisten: Sicherheit.
Format (AgentSkills + Pi-kompatibel)
SKILL.md muss mindestens enthalten:
---
name: nano-banana-pro
description: Generate or edit images via Gemini 3 Pro Image
---Hinweise:
- Wir folgen der AgentSkills-Spec für Layout/Intent.
- Der Parser des eingebetteten Agenten unterstützt nur einzeilige Frontmatter-Keys.
metadatasollte ein einzeiliges JSON-Objekt sein.{baseDir}in Anweisungen für den Skill-Ordnerpfad nutzen.- Optionale Frontmatter-Keys:
homepage— URL, in der macOS-Skills-UI als „Website“ angezeigt (auch viametadata.openclaw.homepage).user-invocable—true|false(Standard:true). Beitruewird der Skill als User-Slash-Command bereitgestellt.disable-model-invocation—true|false(Standard:false). Beitruewird der Skill vom Modell-Prompt ausgeschlossen (weiterhin per User-Aufruf verfügbar).command-dispatch—tool(optional). Beitoolumgeht der Slash-Command das Modell und geht direkt an ein Tool.command-tool— Tool-Name beim Aufruf, wenncommand-dispatch: toolgesetzt ist.command-arg-mode—raw(Standard). Bei Tool-Dispatch wird der Rohtext-Args-String an das Tool weitergegeben (kein Core-Parsing). Das Tool wird mit den Parametern aufgerufen:{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.
Gating (Ladezeit-Filter)
OpenClaw filtert Skills zur Ladezeit über metadata (einzeiliges JSON):
---
name: nano-banana-pro
description: Generate or edit images via Gemini 3 Pro Image
metadata: {"openclaw":{"requires":{"bins":["uv"],"env":["GEMINI_API_KEY"],"config":["browser.enabled"]},"primaryEnv":"GEMINI_API_KEY"}}
---Felder unter metadata.openclaw:
always: true— Skill immer einbeziehen (andere Gates überspringen).emoji— optionales Emoji für die macOS-Skills-UI.homepage— optionale URL, in der macOS-Skills-UI als „Website“ angezeigt.os— optionale Liste der Plattformen (darwin,linux,win32). Wenn gesetzt, ist der Skill nur auf diesen OS zulässig.requires.bins— Liste; jede muss imPATHexistieren.requires.anyBins— Liste; mindestens eine muss imPATHexistieren.requires.env— Liste; Env-Var muss existieren oder in der Config bereitgestellt werden.requires.config— Liste vonopenclaw.json-Pfaden, die truthy sein müssen.primaryEnv— Env-Var-Name fürskills.entries.<name>.apiKey.install— optionale Liste von Installer-Specs für die macOS-Skills-UI (brew/node/go/uv/download).
Hinweis zu Sandboxing:
requires.binswird auf dem Host zur Skill-Ladezeit geprüft.- Ist ein Agent sandboxed, muss die Binary auch im Container existieren. Installation z. B. über
agents.defaults.sandbox.docker.setupCommand(oder Custom-Image).setupCommandläuft einmal nach der Container-Erstellung. Paket-Installationen benötigen außerdem Netzwerk-Egress, beschreibbares Root-FS und Root-User in der Sandbox. Beispiel: Der Skillsummarize(skills/summarize/SKILL.md) benötigt diesummarize-CLI im Sandbox-Container.
Installer-Beispiel:
---
name: gemini
description: Use Gemini CLI for coding assistance and Google search lookups.
metadata: {"openclaw":{"emoji":"♊️","requires":{"bins":["gemini"]},"install":[{"id":"brew","kind":"brew","formula":"gemini-cli","bins":["gemini"],"label":"Install Gemini CLI (brew)"}]}}
---Hinweise:
- Bei mehreren Installern wählt das Gateway eine bevorzugte Option (brew wenn verfügbar, sonst node).
- Sind alle Installer
download, listet OpenClaw jeden Eintrag, damit du die verfügbaren Artefakte siehst. - Installer-Specs können
os: ["darwin"|"linux"|"win32"]enthalten, um Optionen nach Plattform zu filtern. - Node-Installationen beachten
skills.install.nodeManagerinopenclaw.json(Standard: npm; Optionen: npm/pnpm/yarn/bun). Betrifft nur Skill-Installationen; die Gateway-Runtime sollte Node bleiben (Bun nicht empfohlen für WhatsApp/Telegram). - Go-Installationen: Fehlt
gound istbrewverfügbar, installiert das Gateway Go zuerst über Homebrew und setztGOBINauf Homebrewsbin, wenn möglich. - Download-Installationen:
url(erforderlich),archive(tar.gz|tar.bz2|zip),extract(Standard: auto bei erkanntem Archiv),stripComponents,targetDir(Standard:~/.clawdbot/tools/<skillKey>).
Fehlt metadata.openclaw, ist der Skill immer zulässig (außer in Config deaktiviert oder durch skills.allowBundled bei gebündelten Skills blockiert).
Config-Überschreibungen (~/.clawdbot/openclaw.json)
Gebündelte/verwaltete Skills können ein- und ausgeschaltet sowie mit Env-Werten versehen werden:
{
skills: {
entries: {
"nano-banana-pro": {
enabled: true,
apiKey: "GEMINI_KEY_HERE",
env: {
GEMINI_API_KEY: "GEMINI_KEY_HERE"
},
config: {
endpoint: "https://example.invalid",
model: "nano-pro"
}
},
peekaboo: { enabled: true },
sag: { enabled: false }
}
}
}Hinweis: Enthält der Skill-Name Bindestriche, den Key in Anführungszeichen setzen (JSON5 erlaubt quoted keys). Config-Keys entsprechen standardmäßig dem Skill-Namen. Definiert ein Skill metadata.openclaw.skillKey, diesen Key unter skills.entries nutzen. Regeln:
enabled: falsedeaktiviert den Skill auch bei gebündelt/installiert.env: wird nur injiziert, wenn die Variable im Prozess noch nicht gesetzt ist.apiKey: Convenience für Skills mitmetadata.openclaw.primaryEnv.config: optionaler Beutel für pro-Skill-Felder; eigene Keys hier ablegen.allowBundled: optionale Allowlist nur für gebündelte Skills. Wenn gesetzt, sind nur gebündelte Skills in der Liste zulässig (verwaltete/Workspace-Skills unberührt).
Umgebungs-Injection (pro Agenten-Lauf)
Beim Start eines Agenten-Laufs:
- Skill-Metadaten lesen.
skills.entries.<key>.envoderskills.entries.<key>.apiKeyinprocess.envanwenden.- System-Prompt mit zulässigen Skills aufbauen.
- Ursprüngliche Umgebung nach Ende des Laufs wiederherstellen.
Das gilt nur für den Agenten-Lauf, nicht für eine globale Shell-Umgebung.
Sitzungs-Snapshot (Performance)
OpenClaw erstellt einen Snapshot der zulässigen Skills beim Sitzungsstart und nutzt diese Liste für folgende Turns in derselben Sitzung wieder. Änderungen an Skills oder Config greifen in der nächsten neuen Sitzung. Skills können auch mitten in der Sitzung aktualisiert werden, wenn der Skills-Watcher aktiv ist oder ein neuer zulässiger Remote-Node erscheint (siehe unten). Wie Hot Reload: Die aktualisierte Liste wird beim nächsten Agenten-Turn übernommen.
Remote-macOS-Nodes (Linux-Gateway)
Läuft das Gateway unter Linux, ist aber ein macOS-Node verbunden mit erlaubtem system.run (Exec-Approvals-Security nicht auf deny), kann OpenClaw macOS-only-Skills als zulässig behandeln, wenn die benötigten Binaries auf diesem Node vorhanden sind. Der Agent sollte diese Skills über das nodes-Tool ausführen (typisch nodes.run). Das setzt voraus, dass der Node seine Befehlsunterstützung meldet und ein Bin-Probe über system.run erfolgt. Geht der macOS-Node später offline, bleiben die Skills sichtbar; Aufrufe können fehlschlagen, bis der Node wieder verbunden ist.
Skills-Watcher (Auto-Refresh)
Standardmäßig beobachtet OpenClaw Skill-Ordner und aktualisiert den Skills-Snapshot bei Änderungen an SKILL.md-Dateien. Konfigurierbar unter skills.load:
{
skills: {
load: {
watch: true,
watchDebounceMs: 250
}
}
}Token-Auswirkung (Skills-Liste)
Bei zulässigen Skills injiziert OpenClaw eine kompakte XML-Liste der verfügbaren Skills in den System-Prompt (über formatSkillsForPrompt in pi-coding-agent). Die Kosten sind deterministisch:
- Basis-Overhead (nur bei ≥1 Skill): 195 Zeichen.
- Pro Skill: 97 Zeichen + Länge der XML-escaped-Werte
<name>,<description>und<location>.
Formel (Zeichen):
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))Hinweise:
- XML-Escaping wandelt
& < > " 'in Entities um (&,<usw.), was die Länge erhöht. - Token-Anzahl hängt vom Modell-Tokenizer ab. Grobe OpenAI-Schätzung: ~4 Zeichen/Token, also 97 Zeichen ≈ 24 Tokens pro Skill plus deine Feldlängen.
Lebenszyklus verwalteter Skills
OpenClaw liefert einen Basissatz von Skills als gebündelte Skills mit der Installation (npm-Paket oder OpenClaw.app). ~/.clawdbot/skills dient lokalen Überschreibungen (z. B. Pinnen/Patchen eines Skills ohne die gebündelte Kopie zu ändern). Workspace-Skills gehören dem Nutzer und überschreiben bei Namenskonflikten beide.
Config-Referenz
Siehe Skills Config für das vollständige Konfigurationsschema.
Weitere Skills?
Durchsuchen: https://clawdhub.com .