Wird geladen
Wird geladen

Skills

Skills sind Ordner mit Anweisungen, Skripten und Ressourcen, die Claude dynamisch lädt, um die Leistung bei spezialisierten Aufgaben zu verbessern. Im Kern jedes Skills steht eine SKILL.md-Datei — ein paketiertes Set von Anweisungen, das du einmal hochlädst und dann an jeden messages.create-Aufruf anhängst. Du bringst Claude bei, wie du etwas machst: dein Format für Statusberichte, deine Review-Checkliste, deine Release Notes. Claude liest das Skill, folgt der Vorgehensweise und erzeugt Output in deiner Form.

Skills vs. Tools

Es lohnt sich, den Unterschied klar zu haben, denn beide lösen unterschiedliche Probleme:

  • Tools verbinden Claude mit Daten und Aktionen. „Sieh diesen Codeabschnitt nach", „sende diese E-Mail" — Claude ruft das Tool auf, und etwas anderes wird ausgeführt.
  • Skills bringen Claude eine Vorgehensweise bei. „Erstelle den täglichen Statusbericht nach dieser Vorlage" — es ist ein Playbook, das Claude liest und befolgt, was manchmal bedeutet, dass gebündelte Skripte selbst ausgeführt werden.

Eine einfache Merkregel: Tools drehen sich um das, was Claude tun kann, während Skills sich darum drehen, wie du es erledigt haben willst.

Nebeneinanderstellung von Tools und Skills: Tools verbinden sich mit Daten, führen Aktionen aus und lassen Code laufen — was Claude tun kann; Skills bringen eine Vorgehensweise bei mit nur Anweisungen, kein Code läuft — wie du es erledigt haben willst

Noch etwas Wissenswertes: Skills werden beim Start nicht vollständig in den Kontext geladen. Zunächst laden nur Name und Beschreibung. Wenn dein Agent entscheidet, dass ein Skill relevant ist, lädt er dann das vollständige Skill in den Kontext. Das hält deinen Kontext schlank, selbst wenn viele Skills verfügbar sind.

Ein Skill hochladen

Skills werden einmal in deinen Workspace hochgeladen und dann per ID referenziert. Du kannst direkt auf der Claude Platform hochladen oder es programmatisch tun:

python
skill = client.skills.create(
    display_name="Status Report Generator",
    files=files_from_dir("status-report-skill"),  # folder containing SKILL.md
)

print(skill.id)  # reference this ID in future requests

Für dieses Beispiel möchte ich einen Generator für Statusberichte. Alle Regeln dafür, was einen guten Statusbericht ausmacht — Abschnitte, Tonfall, wie zusammengefasst wird, wie mit Blockern umgegangen wird — leben in einem Skill, das im Voraus paketiert wurde. Das Aktivitätsprotokoll selbst ist nur ein String, der zur Anfragezeit übergeben wird.

Ein Skill an eine Anfrage anhängen

Skills werden über die Container-Konfiguration an eine Anfrage angehängt — ein skills-Array innerhalb des Containers, wobei jeder Eintrag eine skill_id und version benennt. Hier ist der vollständige Aufruf für den Generator für Statusberichte:

python
response = client.messages.create(
    model="claude-opus-5",
    max_tokens=4096,
    container={
        "skills": [
            {
                "type": "custom",
                "skill_id": skill.id,
                "version": "latest",
            }
        ]
    },
    tools=[
        {
            "type": "code_execution_20250825",
            "name": "code_execution",
        }
    ],
    messages=[
        {
            "role": "user",
            "content": f"Generate the daily status report from this activity log:\n\n{activity_log}",
        }
    ],
)

Ein paar Dinge, die es wert sind, hervorgehoben zu werden:

  • Wir rufen den Standard-client.messages.create auf, ohne Beta-Header. Skills sind auf der Claude API allgemein verfügbar, sodass der skills-2025-10-02-Beta-Header nicht mehr erforderlich ist; Anfragen, die ihn weiterhin senden, funktionieren unverändert weiter.
  • container.skills ist die Stelle, an der das Skill angehängt wird. Es ist eine Liste, sodass du mehrere Skills auf einen Aufruf schichten kannst.
  • Code-Ausführung ist hier ebenfalls aktiviert. Sie ist erforderlich: In der API laufen Skills innerhalb des Containers des Code-Ausführungs-Tools, was es den Skill-Vorgehensweisen erst ermöglicht, echte Arbeit zu verrichten — wie das Ausführen von Skripten in einem Terminal.

Es ausführen

Der Output ist ein Statusbericht, der genau so formatiert ist, wie das Skill es vorgibt. Abschnitte, Tonfall, Umgang mit Blockern — alles davon kommt aus der SKILL.md-Datei, die du hochgeladen hast. Der User-Prompt ist eine Zeile; die Vorgehensweise lebt im Skill.

Terminal-Output des generierten täglichen Statusberichts, mit Abschnitten für Erledigtes und Blocker sowie einer vom Skill formatierten Zusammenfassung

In einer Produktionsanwendung standardisiert ein Team so den Output über ein gesamtes Feature hinweg. Mit diesem Endpunkt für tägliche Statusberichte erhält jeder PM die gleiche Struktur, den gleichen Tonfall, die gleichen Abschnitte, in der gleichen Reihenfolge — ohne dass jemand eine Vorlage in einen Prompt hineinkopieren muss.

Eine Projektmanagement-App mit einer Seite für tägliche Berichte, wo das Aktivitätsprotokoll jedes Projekts eine Ein-Klick-Schaltfläche „Bericht generieren" hat, die vom Skill unterstützt wird

Zusammenfassung

  • Skills paketieren deine Vorgehensweisen. Eine SKILL.md-Datei (plus etwaige Skripte und Ressourcen) bringt Claude bei, wie du willst, dass etwas gemacht wird.
  • Tools vs. Skills: Tools drehen sich um das, was Claude tun kann; Skills drehen sich darum, wie du es erledigt haben willst.
  • Skills laden progressiv. Nur Name und Beschreibung laden beim Start; das vollständige Skill lädt in den Kontext, wenn der Agent entscheidet, es zu verwenden.
  • Einmal hochladen mit client.skills.create, dann anhängen mit container.skills bei jedem messages.create-Aufruf — eine Liste, sodass du mehrere Skills schichten kannst.
  • Kombiniere es mit Code-Ausführung, wenn die Vorgehensweise des Skills echte Arbeit verrichten muss.
  • Greife zu einem Skill, wenn das Wie genauso wichtig ist wie das Was.