OpenClaw Skills sind Markdown-Dateien. Keine kompilierten Binaries, keine API-Wrapper, keine Docker-Container. Ein Ordner, eine Datei namens SKILL.md, fertig. Der Agent liest deine Anweisungen zur Laufzeit und befolgt sie.
Die Syntax lernst du in fünf Minuten. Aber es gibt ein Konzept, an dem fast alle scheitern. Und genau das ist der Grund, warum selbst gebaute Skills oft nie aktiviert werden.
Was ein Skill eigentlich ist
Ein Skill liegt unter ~/.openclaw/skills/dein-skill-name/SKILL.md. Mehr nicht. YAML-Frontmatter oben für Metadaten, Markdown darunter für Anweisungen. Beim Start einer neuen Session scannt OpenClaw jeden Skill-Ordner, liest das Frontmatter und entscheidet, welche Skills relevant sind.
ClawHub (die öffentliche Registry von OpenClaw) hostet über 13.000 Community Skills, Stand März 2026. Du kannst die installieren, eigene bauen, oder beides.
Der Fehler, den die meisten Anleitungen verschweigen
Jede openclaw skill anleitung erklärt, was das description-Feld macht. Kaum eine erklärt, wie OpenClaw es tatsächlich nutzt.
Wie es der technische Guide von LumaDock beschreibt: "Die Frontmatter-Description ist kein Marketing-Text. Sie funktioniert eher wie eine Trigger-Phrase." OpenClaw liest Name und Description, um zu entscheiden, ob der vollständige Skill in den Kontext geladen wird. Erst nach diesem Match liest der Agent die Anweisungen darunter.
Das bedeutet: Deine Description sollte genau die Worte verwenden, die ein Nutzer tippen würde.
"Summarize errors from a service log" funktioniert. "Comprehensive log analysis utility" eher nicht.
Ich habe Skills gesehen, die wochenlang unbenutzt blieben, weil die Description zu abstrakt war. Schreibe sie so, als würdest du den Satz "Hey OpenClaw, kannst du..." vervollständigen.
SKILL.md Aufbau
Hier ein funktionierendes Beispiel. Ein Log-Triage-Skill mit allen nötigen Komponenten:
---
name: log-triage
description: Summarize errors from a service log in a time window.
user-invocable: true
metadata: {"clawdbot":{"emoji":"🔍","requires":{"bins":["bash","date"]}}}
---
Unter dem Frontmatter strukturierst du deine Anweisungen wie ein Runbook:
# Log triage
## What it does
Reads service logs, groups repeated errors, and returns a summary.
## Inputs needed
- Service name (required)
- Time window (default: last 1 hour)
## Workflow
1. Ask for service name and time window if not provided
2. Fetch logs via journalctl or docker logs
3. Group repeated error patterns
4. Show the exact command used for each step
## Output format
Markdown table: error pattern, count, first/last occurrence, sample line.
## Guardrails
- Never restart services or modify config files
- If logs are empty, say so and suggest what to check next
- Do not fabricate log entries
## Failure handling
If a command fails, include the command text and error output.
Die Guardrails-Section ist wichtiger, als du denkst. Ohne sie rät der Agent bei fehlenden Daten. Und Raten liefert unzuverlässige Ergebnisse.
Zwei Details zum Frontmatter verdienen besondere Aufmerksamkeit. Das Flag user-invocable: true macht deinen Skill als Slash-Command verfügbar. Und der metadata-Block muss ein einzeiliges JSON-Objekt sein. Mehrzeiliges YAML in diesem Feld verursacht stille Parse-Fehler, wie die offizielle OpenClaw-Dokumentation bestätigt. Dieser Bug hat schon viele erwischt.
Skill testen
Führe openclaw skills list --eligible aus, um zu prüfen, ob OpenClaw deinen Skill erkennt und alle Gating-Checks bestanden sind (requires.bins, OS-Einschränkungen usw.). Falls dein Skill nicht auftaucht, sagt dir dieser Befehl warum.
Wichtig zu wissen: Skills werden beim Session-Start eingefroren. Nach dem Bearbeiten von SKILL.md brauchst du eine neue Session, damit Änderungen greifen. Für Hot-Reload während der Entwicklung aktivierst du den File Watcher in der Config (skills.load.watch: true).
Auf ClawHub veröffentlichen
Vier Schritte:
clawhub auth loginausführen- Den Metadata-Namespace auf
metadata.clawdbotsetzen, nicht aufmetadata.openclaw. Die offizielle Doku zeigt manchmalmetadata.openclawin Beispielen, aber der ClawHub-Validator akzeptiert nurclawdbot. Eine Community-Checklist mit 13 Punkten dokumentiert diesen Stolperstein nach sechs fehlgeschlagenen Versuchen. clawhub publish ./dein-skill-ordnerausführen- Auf den VirusTotal-Scan warten (jede ClawHub-Einreichung wird seit Februar 2026 automatisch gescannt)
Beachte dabei: VirusTotal scannt ausführbare Artefakte. Es analysiert nicht die natürlichsprachlichen Anweisungen in SKILL.md auf Prompt Injection. Reviewer und Nutzer müssen den Quellcode selbst lesen.
Security Checklist
Vier Regeln, die dir Probleme ersparen:
Niemals API-Keys oder Tokens hardcoden. Nutze
requires.envin den Metadaten und SecretRef-Provider (source: env,source: fileodersource: exec), um Credentials sicher einzubinden.Füge
set -euo pipefailin jedes Shell-Skript ein, das dein Skill referenziert. Nach der ClawHavoc-Kampagne, die ClawHub mit über 1.000 bösartigen Skills überschwemmt hat, gilt fehlendes Script-Hardening als Warnsignal.Deklariere minimale Berechtigungen. Skills mit zu vielen Rechten werden von Reviewern markiert und von Nutzern gemeldet (drei Meldungen verstecken einen Skill automatisch).
Dokumentiere jeden externen Endpoint, den dein Skill kontaktiert. Nutzer, die nicht nachvollziehen können, wohin Daten fließen, installieren deinen Skill nicht.
Eigene openclaw custom skills auf ClawHosters nutzen
Wenn du eine ClawHosters Managed Instance nutzt, kannst du eigene Skills direkt über das Dashboard hochladen. Kein CLI-Setup nötig. Deine Instance erkennt sie bei der nächsten Session. Die komplette Anleitung findest du in der Skills & Plugins Dokumentation.