Skills (OpenClaw)

OpenClaw nutzt AgentSkills-kompatible Skill-Ordner, um dem Agent beizubringen, wie er Tools verwendet. Jeder Skill ist ein Verzeichnis mit einer SKILL.md-Datei, die YAML-Frontmatter und Anweisungen enthält. OpenClaw lädt gebündelte Skills plus optionale lokale Überschreibungen und filtert sie beim Laden basierend auf Umgebung, Config und vorhandenen Binaries.

Speicherorte und Priorität

Skills werden von drei Orten geladen:

  1. Gebündelte Skills: mit der Installation ausgeliefert (npm-Paket oder OpenClaw.app)
  2. Managed/lokale Skills: ~/.openclaw/skills
  3. Workspace-Skills: <workspace>/skills

Bei Namenskonflikten gilt folgende Priorität:

<workspace>/skills (höchste) → ~/.openclaw/skills → gebündelte Skills (niedrigste)

Zusätzlich kannst du weitere Skill-Ordner (niedrigste Priorität) über skills.load.extraDirs in ~/.openclaw/openclaw.json konfigurieren.

Per-Agent vs. gemeinsame Skills

In Multi-Agent-Setups hat jeder Agent seinen eigenen Workspace. Das bedeutet:

  • Per-Agent-Skills liegen in <workspace>/skills nur für diesen Agent.
  • Gemeinsame Skills liegen in ~/.openclaw/skills (managed/lokal) und sind für alle Agents auf derselben Maschine sichtbar.
  • Gemeinsame Ordner können auch über skills.load.extraDirs (niedrigste Priorität) hinzugefügt werden, wenn du ein gemeinsames Skill-Paket für mehrere Agents nutzen möchtest.

Wenn derselbe Skill-Name an mehreren Orten existiert, gilt die übliche Priorität: Workspace gewinnt, dann managed/lokal, dann gebündelt.

Plugins + Skills

Plugins können eigene Skills mitbringen, indem sie skills-Verzeichnisse in openclaw.plugin.json auflisten (Pfade relativ zum Plugin-Root). Plugin-Skills werden geladen, wenn das Plugin aktiviert ist, und nehmen an den normalen Skill-Prioritätsregeln teil. Du kannst sie über metadata.openclaw.requires.config im Config-Eintrag des Plugins steuern. Siehe Plugins für Discovery/Config und Tools für die Tool-Oberfläche, die diese Skills vermitteln.

ClawHub (install + sync)

ClawHub ist die öffentliche Skills-Registry für OpenClaw. Schau dir https://clawhub.com an. Nutze es, um Skills zu entdecken, zu installieren, zu aktualisieren und zu sichern. Vollständige Anleitung: ClawHub.

Häufige Workflows:

  • Skill in deinen Workspace installieren:
    • clawhub install <skill-slug>
  • Alle installierten Skills aktualisieren:
    • clawhub update --all
  • Sync (scannen + Updates veröffentlichen):
    • clawhub sync --all

Standardmäßig installiert clawhub in ./skills unter deinem aktuellen Arbeitsverzeichnis (oder fällt auf den konfigurierten OpenClaw-Workspace zurück). OpenClaw erkennt das als <workspace>/skills in der nächsten Session.

Sicherheitshinweise

  • Behandle Skills von Drittanbietern als nicht vertrauenswürdigen Code. Lies sie, bevor du sie aktivierst.
  • Bevorzuge Sandbox-Ausführungen für nicht vertrauenswürdige Eingaben und riskante Tools. Siehe Sandboxing.
  • skills.entries.*.env und skills.entries.*.apiKey injizieren Secrets in den Host-Prozess für diesen Agent-Turn (nicht in die Sandbox). Halte Secrets aus Prompts und Logs raus.
  • Für ein umfassenderes Bedrohungsmodell und Checklisten siehe Security.

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-Spezifikation für Layout/Intent.
  • Der Parser des eingebetteten Agent unterstützt nur einzeilige Frontmatter-Keys.
  • metadata sollte ein einzeiliges JSON-Objekt sein.
  • Nutze {baseDir} in Anweisungen, um auf den Skill-Ordnerpfad zu verweisen.
  • Optionale Frontmatter-Keys:
    • homepage — URL, die als “Website” in der macOS Skills UI angezeigt wird (auch über metadata.openclaw.homepage unterstützt).

    • user-invocabletrue|false (Standard: true). Wenn true, wird der Skill als User-Slash-Command verfügbar gemacht.

    • disable-model-invocationtrue|false (Standard: false). Wenn true, wird der Skill vom Model-Prompt ausgeschlossen (bleibt aber über User-Invocation verfügbar).

    • command-dispatchtool (optional). Wenn auf tool gesetzt, umgeht der Slash-Command das Modell und dispatcht direkt zu einem Tool.

    • command-tool — Tool-Name, der aufgerufen wird, wenn command-dispatch: tool gesetzt ist.

    • command-arg-moderaw (Standard). Für Tool-Dispatch wird der rohe Args-String an das Tool weitergeleitet (kein Core-Parsing).

      Das Tool wird mit folgenden Parametern aufgerufen: { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Gating (Load-Time-Filter)

OpenClaw filtert Skills beim Laden mithilfe von 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, die als “Website” in der macOS Skills UI angezeigt wird.
  • os — optionale Liste von Plattformen (darwin, linux, win32). Wenn gesetzt, ist der Skill nur auf diesen Betriebssystemen verfügbar.
  • requires.bins — Liste; jedes muss auf PATH existieren.
  • requires.anyBins — Liste; mindestens eines muss auf PATH existieren.
  • requires.env — Liste; Umgebungsvariable muss existieren oder in der Config bereitgestellt werden.
  • requires.config — Liste von openclaw.json-Pfaden, die truthy sein müssen.
  • primaryEnv — Name der Umgebungsvariable, die mit skills.entries.<name>.apiKey verknüpft ist.
  • install — optionales Array von Installer-Specs für die macOS Skills UI (brew/node/go/uv/download).

Hinweis zu Sandboxing:

  • requires.bins wird auf dem Host beim Skill-Laden geprüft.
  • Wenn ein Agent in einer Sandbox läuft, muss das Binary auch innerhalb des Containers existieren. Installiere es über agents.defaults.sandbox.docker.setupCommand (oder ein Custom-Image). setupCommand läuft einmal nach der Container-Erstellung. Paketinstallationen benötigen außerdem Netzwerk-Egress, ein beschreibbares Root-FS und einen Root-User in der Sandbox. Beispiel: Der summarize-Skill (skills/summarize/SKILL.md) benötigt die summarize-CLI im Sandbox-Container, um dort zu laufen.

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:

  • Wenn mehrere Installer aufgelistet sind, wählt der Gateway eine einzelne bevorzugte Option (brew wenn verfügbar, sonst node).
  • Wenn alle Installer download sind, listet OpenClaw jeden Eintrag auf, damit du die verfügbaren Artefakte sehen kannst.
  • Installer-Specs können os: ["darwin"|"linux"|"win32"] enthalten, um Optionen nach Plattform zu filtern.
  • Node-Installationen respektieren skills.install.nodeManager in openclaw.json (Standard: npm; Optionen: npm/pnpm/yarn/bun). Das betrifft nur Skill-Installationen; die Gateway-Runtime sollte weiterhin Node sein (Bun wird für WhatsApp/Telegram nicht empfohlen).
  • Go-Installationen: Wenn go fehlt und brew verfügbar ist, installiert der Gateway Go zuerst über Homebrew und setzt GOBIN auf Homebrews bin, wenn möglich.
  • Download-Installationen: url (erforderlich), archive (tar.gz | tar.bz2 | zip), extract (Standard: auto wenn Archiv erkannt), stripComponents, targetDir (Standard: ~/.openclaw/tools/<skillKey>).

Wenn kein metadata.openclaw vorhanden ist, ist der Skill immer verfügbar (außer er ist in der Config deaktiviert oder durch skills.allowBundled für gebündelte Skills blockiert).

Config-Überschreibungen (~/.openclaw/openclaw.json)

Gebündelte/managed Skills können umgeschaltet und mit Env-Werten versorgt 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: Wenn der Skill-Name Bindestriche enthält, setze den Key in Anführungszeichen (JSON5 erlaubt quoted Keys).

Config-Keys entsprechen standardmäßig dem Skill-Namen. Wenn ein Skill metadata.openclaw.skillKey definiert, nutze diesen Key unter skills.entries.

Regeln:

  • enabled: false deaktiviert den Skill, auch wenn er gebündelt/installiert ist.
  • env: wird nur injiziert, wenn die Variable nicht bereits im Prozess gesetzt ist.
  • apiKey: Komfort-Feature für Skills, die metadata.openclaw.primaryEnv deklarieren.
  • config: optionale Bag für custom Per-Skill-Felder; custom Keys müssen hier liegen.
  • allowBundled: optionale Allowlist nur für gebündelte Skills. Wenn gesetzt, sind nur gebündelte Skills in der Liste verfügbar (managed/workspace-Skills nicht betroffen).

Environment-Injection (per Agent-Run)

Wenn ein Agent-Run startet, macht OpenClaw Folgendes:

  1. Liest Skill-Metadata.
  2. Wendet skills.entries.<key>.env oder skills.entries.<key>.apiKey auf process.env an.
  3. Baut den System-Prompt mit verfügbaren Skills.
  4. Stellt die ursprüngliche Umgebung nach Ende des Runs wieder her.

Das ist auf den Agent-Run beschränkt, keine globale Shell-Umgebung.

Session-Snapshot (Performance)

OpenClaw erstellt einen Snapshot der verfügbaren Skills beim Session-Start und nutzt diese Liste für nachfolgende Turns in derselben Session. Änderungen an Skills oder Config werden in der nächsten neuen Session wirksam.

Skills können auch mid-session aktualisiert werden, wenn der Skills-Watcher aktiviert ist oder ein neuer verfügbarer Remote-Node erscheint (siehe unten). Denk daran als Hot Reload: Die aktualisierte Liste wird beim nächsten Agent-Turn übernommen.

Remote macOS Nodes (Linux Gateway)

Wenn der Gateway auf Linux läuft, aber ein macOS-Node verbunden ist mit erlaubtem system.run (Exec-Approvals-Security nicht auf deny gesetzt), kann OpenClaw macOS-only-Skills als verfügbar behandeln, wenn die erforderlichen Binaries auf diesem Node vorhanden sind. Der Agent sollte diese Skills über das nodes-Tool ausführen (typischerweise nodes.run).

Das basiert darauf, dass der Node seinen Command-Support meldet und auf einem Bin-Probe über system.run. Wenn der macOS-Node später offline geht, bleiben die Skills sichtbar; Aufrufe können fehlschlagen, bis der Node sich wieder verbindet.

Skills-Watcher (Auto-Refresh)

Standardmäßig überwacht OpenClaw Skill-Ordner und aktualisiert den Skills-Snapshot, wenn sich SKILL.md-Dateien ändern. Konfiguriere das unter skills.load:

{
  skills: {
    load: {
      watch: true,
      watchDebounceMs: 250,
    },
  },
}

Token-Impact (Skills-Liste)

Wenn Skills verfügbar sind, injiziert OpenClaw eine kompakte XML-Liste verfügbarer 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 + die Länge der XML-escaped <name>-, <description>- und <location>-Werte.

Formel (Zeichen):

total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))

Hinweise:

  • XML-Escaping erweitert & < > " ' zu Entities (&amp;, &lt;, etc.), was die Länge erhöht.
  • Token-Counts variieren je nach Modell-Tokenizer. Eine grobe OpenAI-Style-Schätzung ist ~4 Zeichen/Token, also 97 Zeichen ≈ 24 Token pro Skill plus deine tatsächlichen Feldlängen.

Managed Skills Lifecycle

OpenClaw liefert einen Basis-Satz von Skills als gebündelte Skills als Teil der Installation (npm-Paket oder OpenClaw.app). ~/.openclaw/skills existiert für lokale Überschreibungen (z. B. um einen Skill zu pinnen/patchen, ohne die gebündelte Kopie zu ändern). Workspace-Skills gehören dem User und überschreiben beide bei Namenskonflikten.

Config-Referenz

Siehe Skills config für das vollständige Konfigurationsschema.

Suchst du mehr Skills?

Schau dir https://clawhub.com an.