# Hermes Agent Skills erklärt: So lernt der KI-Agent aus Erfahrung

Hermes Agent Skills sind die prozedurale Memory-Ebene des KI-Agenten von Nous Research. Sie können wiederkehrende, komplexe Abläufe mit mehreren Tool-Aufrufen in dauerhaft gespeicherte Anweisungen, Konfigurationen, Skripte und Referenzdateien überführen. Dadurch kann Hermes bekannte Arbeitswege später gezielt laden, statt sie bei jeder Aufgabe vollständig neu herzuleiten.

## Was sind Hermes Agent Skills?

Ein Skill ist eine **lokal gespeicherte Anleitung für eine bestimmte Aufgabe**. Er beschreibt beispielsweise, wie der [Hermes Agent](https://www.ionos.de/digitalguide/server/knowhow/was-ist-hermes-agent/) eine Anwendung bereitstellt, Daten aus einer Schnittstelle abruft, einen [Kubernetes-Cluster](https://www.ionos.de/digitalguide/server/knowhow/kubernetes-cluster/) überprüft oder einen wiederkehrenden Entwicklungsprozess ausführt.

Im Mittelpunkt steht jeweils eine Datei namens `SKILL.md`. Sie enthält eine kurze Beschreibung, die Einsatzbedingungen, die einzelnen Arbeitsschritte, bekannte Fehlerquellen und eine Methode zur abschließenden Kontrolle. Zusätzlich kann ein Skill Skripte, Konfigurationsvorlagen, Beispiele und technische Referenzen enthalten. Alle lokal installierten und vom Agenten erstellten Skills liegen standardmäßig im Verzeichnis `~/.hermes/skills/`.

Ein Skill ist dabei nicht mit einem klassischen Programm gleichzusetzen. Er ist zunächst eine strukturierte Arbeitsanweisung für das [Sprachmodell](https://www.ionos.de/digitalguide/server/knowhow/large-language-model/). Enthaltene Skripte oder Kommandozeilenbefehle können jedoch vom Agenten mithilfe seiner Tools ausgeführt werden. Hermes bezeichnet Skills deshalb als **prozedurales Gedächtnis**: Das normale Memory speichert, was der Agent weiß, während ein Skill festhält, wie eine Aufgabe ausgeführt werden soll.

## Die 4-Layer-Speicherarchitektur von Hermes Agent

Für das Verständnis lässt sich das Zusammenspiel der verschiedenen Speicherarten des Hermes Agent in vier praktische Ebenen gliedern.

<table>
  <thead>
    <tr>
      <th><strong>Speicherebene</strong></th>
      <th><strong>Funktion</strong></th>
      <th><strong>Persistenztyp</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>L1: Session Context</td>
      <td>Enthält die aktuelle Unterhaltung, die laufende Aufgabenplanung und die Ergebnisse der zuletzt verwendeten Tools.</td>
      <td>Temporär; grundsätzlich an die aktuelle Sitzung gebunden</td>
    </tr>
    <tr>
      <td>L2: Persisted Facts</td>
      <td>Speichert kompakte Fakten über die Nutzer, ihre Projekte, Präferenzen und die technische Umgebung in `MEMORY.md` und `USER.md`.</td>
      <td>Dauerhaft und sitzungsübergreifend</td>
    </tr>
    <tr>
      <td>L3: Local File Search</td>
      <td>Ermöglicht die bedarfsgesteuerte Suche in lokalen Dateien sowie in früheren Unterhaltungen. Vergangene Sitzungen werden in einer lokalen SQLite-Datenbank gespeichert und über FTS5 durchsucht.</td>
      <td>Daten bleiben lokal gespeichert, werden aber nur bei Bedarf geladen</td>
    </tr>
    <tr>
      <td>L4: Procedural Skills</td>
      <td>Speichert wiederverwendbare Vorgehensweisen, Tool-Abfolgen, Konfigurationen und Skripte in Skill-Verzeichnissen mit einer `SKILL.md`.</td>
      <td>Dauerhaft und sitzungsübergreifend</td>
    </tr>
  </tbody>
</table>

### L1: Session Context

Der Session Context ist das **kurzfristige Arbeitsgedächtnis** des Agenten. Er enthält die aktuelle Anfrage, bisherige Antworten, Zwischenergebnisse und Tool-Ausgaben. Endet die Sitzung, steht dieser vollständige Verlauf in einer späteren Sitzung nicht automatisch wieder als aktiver Kontext zur Verfügung. Hermes speichert Unterhaltungen allerdings lokal. Der Agent kann sie später mit dem Tool `session_search` erneut durchsuchen.

### L2: Persisted Facts

Besonders wichtige Informationen werden in `MEMORY.md` und `USER.md` abgelegt. Dazu gehören beispielsweise bevorzugte Programmiersprachen, Projektkonventionen, Verzeichnisstrukturen oder wiederholt benötigte Informationen über die Arbeitsumgebung. Diese Dateien werden zu Beginn einer neuen Sitzung **in den Systemkontext geladen**. Damit dieser Bereich nicht unnötig viele [Tokens](https://www.ionos.de/digitalguide/websites/web-entwicklung/ai-token/) verbraucht, ist er bewusst auf 2.200 Zeichen für `MEMORY.md` und 1.375 Zeichen für `USER.md` begrenzt.

### L3: Lokale Dateien und frühere Sitzungen

Umfangreiche Dokumentationen, Quellcodedateien oder frühere Unterhaltungen müssen nicht dauerhaft im aktiven Kontext liegen. Hermes kann sie bei Bedarf **gezielt durchsuchen**. Für vergangene Sitzungen verwendet Hermes eine lokale [SQLite-Datenbank](https://www.ionos.de/digitalguide/websites/web-entwicklung/sqlite/) unter `~/.hermes/state.db`. Die darin integrierte FTS5-Volltextsuche arbeitet schlagwortbasiert und liefert die tatsächlich gespeicherten Nachrichten zurück.

### L4: Procedural Skills

Skills bilden die **oberste Ebene** dieser Architektur. Sie speichern nicht nur einzelne Fakten, sondern vollständige Vorgehensweisen. Ein Skill kann zum Beispiel festlegen:

- welche Voraussetzungen zuerst geprüft werden,
- welche Tools oder Befehle verwendet werden,
- in welcher Reihenfolge die Schritte erfolgen,
- wie typische Fehler behandelt werden,
- wie das Ergebnis abschließend kontrolliert wird.

Genau diese Ebene ermöglicht es Hermes, aus abgeschlossenen Aufgaben wiederverwendbare Arbeitsabläufe zu entwickeln.

## Der Self-Learning Loop

Der Self-Learning Loop verbindet die laufende Arbeit des Agenten mit seinem dauerhaften Skill-Speicher. Vereinfacht folgt der Prozess einem Kreislauf aus **Ausführen, Auswerten, Speichern** und **Wiederverwenden**.

### 1. Hermes führt eine komplexe Aufgabe aus

Zunächst bearbeitet der Agent eine normale Anfrage. Dafür kann er mehrere Tools nacheinander aufrufen und so Dateien durchsuchen, Terminalbefehle ausführen, eine [API](https://www.ionos.de/digitalguide/websites/web-entwicklung/was-ist-eine-api/) ansprechen und anschließend das Ergebnis kontrollieren. Die Gesamtheit aus Anfrage, Entscheidungen, Tool-Aufrufen, Fehlermeldungen und Korrekturen wird häufig als **Trajektorie** bezeichnet.

### 2. Das System erkennt einen potenziell wiederverwendbaren Ablauf

Hermes kann nach umfangreicheren Aufgaben eine Überprüfung des bisherigen Ablaufs anstoßen. Die Standardkonfiguration enthält dafür `skills.creation_nudge_interval: 15`. Nach jeweils 15 Tool-Iterationen wird das Modell daran erinnert, zu prüfen, ob sich aus der Arbeit ein Skill ableiten lässt. Der Wert kann in der Konfiguration verändert oder mit `0` deaktiviert werden.

### 3. Hermes extrahiert das wiederverwendbare Muster

Bei der Auswertung soll der Agent die **einmaligen Details von den übertragbaren Arbeitsschritten trennen**. Ein temporärer Dateiname oder eine einmalig aufgetretene Fehlermeldung gehört beispielsweise nicht zwingend in den Skill. Ein zuverlässig funktionierender Befehl, eine notwendige Reihenfolge oder eine bekannte Fehlerbehandlung kann dagegen dauerhaft relevant sein. Aus diesen Informationen entsteht eine strukturierte Anleitung. Sie enthält idealerweise:

- eindeutige Bedingungen für die Verwendung,
- eine nachvollziehbare Schrittfolge,
- benötigte Tools und Voraussetzungen,
- bekannte Fallstricke,
- einen abschließenden Funktionstest.

### 4. Der Skill wird erstellt oder aktualisiert

Mit dem internen Tool `skill_manage` kann Hermes einen neuen Skill erstellen oder einen vorhandenen Skill verändern. Dabei stehen unter anderem die Aktionen `create`, `patch`, `edit`, `write_file`, `remove_file` und `delete` zur Verfügung. Kleinere Verbesserungen sollen bevorzugt über `patch` erfolgen. Dabei wird nur die betroffene Stelle geändert, anstatt die gesamte `SKILL.md` neu zu übertragen. Das reduziert den erforderlichen Textumfang des Tool-Aufrufs.

### 5. Der Skill wird geladen

Hermes lädt nicht vorsorglich den vollständigen Inhalt aller Skills. Stattdessen verwendet das System eine mehrstufige **Progressive Disclosure**:

- `skills_list()` stellt zunächst nur Namen, Kategorien und Kurzbeschreibungen bereit.
- `skill_view(name)` lädt die vollständige `SKILL.md` eines ausgewählten Skills.
- `skill_view(name, path)` lädt bei Bedarf eine einzelne Referenz-, Skript- oder Vorlagendatei.

Dadurch spart das System Kontext und kann bekannte Vorgehensweisen schneller wiederverwenden. Die tatsächliche Reduktion hängt von der Länge des Skills, der Komplexität der Aufgabe, dem verwendeten Modell und der Zahl vermiedener Tool- und Korrekturschritte ab. Auch die Reasoning-Phase entfällt nicht vollständig: Der Skill verkürzt und strukturiert sie, ersetzt aber nicht jede situationsabhängige Entscheidung.

## Custom Skills erstellen: Prompt-basiert oder manuell

Entwicklerinnen und Entwickler müssen nicht darauf warten, dass Hermes selbst einen Skill vorschlägt. Eigene Skills lassen sich sowohl über einen Chat-Befehl als auch direkt im Dateisystem erstellen.

### Möglichkeit 1: Skill generieren

Ein eigener Hermes Agent Skill lässt sich in nur wenigen Schritten bereitstellen.

1. **Bereiten Sie die Wissensquelle vor**. Dies kann eine bereits abgeschlossene Unterhaltung, ein lokales Dokumentationsverzeichnis, eine Internetseite oder direkt eingefügte Notiz sein.
2. **Rufen Sie den `/learn`-Befehl auf.** Möchten Sie beispielsweise den gerade ausgeführten Deployment-Prozess speichern, können Sie folgenden Befehl verwenden:

```none
/learn wie ich gerade den Staging-Server bereitgestellt habe
```

3. **Hermes sammelt die relevanten Informationen** und erstellt daraus eine strukturierte `SKILL.md`.
4. **Kontrollieren Sie den erzeugten Skill.**
5. **Aktivieren Sie bei Bedarf die Schreibfreigabe.** Mit `skills.write_approval: true` können Sie festlegen, dass automatisch erzeugte Änderungen zunächst nur vorgemerkt werden. Anschließend lassen sie sich mit `/skills pending` und `/skills diff <id>` prüfen und mit `/skills approve <id>` freigeben.
6. **Testen Sie den Hermes Agent Skill in einer neuen Sitzung.** Er steht automatisch als Slash-Befehl zur Verfügung:

```none
/mein-skill führe den Ablauf für das Testsystem aus
```

### Möglichkeit 2: Skill manuell anlegen

Sie brauchen nicht zwingend den `/learn`-Befehl, um neue Hermes Agent Skills zu erstellen. Auch eine manuelle Generierung neuer Skills ist möglich.

1. **Erstellen Sie das Skill-Verzeichnis** mit `mkdir -p ~/.hermes/skills/finance/market-data`.
2. **Legen Sie eine Datei namens `SKILL.md` an**. Diese kann für einen Skill, der Kurs- und Marktdaten abruft, zum Beispiel folgendermaßen aussehen:

```none
---
name: market-data
description: Ruft Marktdaten ab und prüft die Ergebnisse
version: 1.0.0
metadata:
    hermes:
        tags: [finance, api, data]
        category: finance
---
# Market Data
## When to Use
Verwenden Sie diesen Skill für aktuelle Kurs- und Marktdaten.
## Procedure
1. Prüfen Sie, welches Wertpapier und welcher Zeitraum gemeint sind.
2. Rufen Sie die Daten über die konfigurierte Datenquelle ab.
3. Prüfen Sie die Antwort auf fehlende Werte und Zeitstempel.
4. Bereiten Sie das Ergebnis verständlich auf.
## Pitfalls
- Verwechseln Sie verzögerte Kursdaten nicht mit Echtzeitdaten.
- Verwenden Sie keine nicht dokumentierten Endpunkte ohne Prüfung.
## Verification
Prüfen Sie Symbol, Handelsplatz, Währung und Zeitpunkt der Daten.
```

3. **Verknüpfen Sie externe Werkzeuge.** Für Finanzdaten kann der Skill beispielsweise ein vorhandenes Python-Skript oder eine konfigurierte Marktdatenquelle verwenden.
4. **Lagern Sie längere Inhalte aus.** Umfangreiche API-Dokumentationen gehören beispielsweise in `references/`, wiederverwendbare Konfigurationen in `templates/` und längere ausführbare Abläufe in `scripts/`.
5. **Speichern Sie keine API-Schlüssel im Skill.**
6. **Laden und testen Sie den Skill** beispielsweise mit folgendem Aufruf:

```none
hermes chat -q "/market-data zeige die Daten für das gewünschte Wertpapier"
```

Neu angelegte Skills werden automatisch erkannt.

## Best Practices und Behebung von Retrieval-Fehlern

Damit Hermes einen Skill zuverlässig nutzt, muss der Agent erkennen, dass dieser zur aktuellen Anfrage passt. Probleme entstehen meist durch unklare Namen, zu allgemeine Beschreibungen oder eine falsche Erwartung an das Retrieval-System.

### FTS5 ist nicht für die Skill-Aktivierung zuständig

SQLite FTS5 durchsucht im Hermes Agent vor allem frühere Sitzungen. Lokale Skills werden dagegen über einen kompakten Index aus Namen, Kategorien und Kurzbeschreibungen gefunden. Hermes entscheidet anhand dieser Informationen, ob es einen Skill mit `skill_view()` laden soll. Alternativ können Sie einen Hermes Agent Skill direkt aufrufen.

### Verwenden Sie eindeutige Beschreibungen

Der Name und die Beschreibung eines Skills sollten klar erkennen lassen, wofür er gedacht ist. Allgemeine Formulierungen wie „hilfreicher Workflow“ sind wenig aussagekräftig. Besser ist beispielsweise:

```none
description: Prüft Kubernetes-Deployments, Logs und Rollout-Fehler
```

Auch der Abschnitt `When to Use` sollte typische Aufgaben und konkrete Suchbegriffe enthalten.

### Trennen Sie Anleitung und Skripte

Die `SKILL.md` sollte erklären, **wann** der Skill verwendet wird und **welche Schritte** auszuführen sind. Längere oder immer gleich ablaufende Prozesse sollten dagegen in geprüften Skripten gespeichert werden. Dadurch muss Hermes den Code nicht bei jedem Aufruf neu erzeugen. Gleichzeitig lassen sich die Skripte separat testen und versionieren.

Fortgeschrittene User können einen eigenen semantischen Router entwickeln. Dieser vergleicht neue Anfragen mit den Beschreibungen vorhandener Skills und lädt anschließend den passendsten Skill. Dafür lassen sich beispielsweise Milvus oder Qdrant einsetzen. Eine solche Anbindung gehört jedoch nicht zur standardmäßigen Hermes-Konfiguration und muss **selbst entwickelt** oder über ein zusätzliches Plugin umgesetzt werden.

### Prüfen Sie automatisch erstellte Skills

Der Learning Loop kann auch **fehlerhafte oder nur vorübergehend funktionierende Abläufe** speichern. In produktiven Umgebungen sollten neue Skills deshalb vor der Verwendung geprüft werden. Mit folgender Einstellung werden Änderungen zunächst nur vorgemerkt:

```none
skills:
    write_approval: true
```

Die Dateien landen anschließend unter `~/.hermes/pending/skills/` und können vor der Freigabe kontrolliert werden. Zusätzlich kann `skills.guard_agent_created: true` eine automatische Sicherheitsprüfung aktivieren. Diese ersetzt jedoch keine manuelle Kontrolle.

Hinweis Die Einstellung `skills.guard_agent_created` steht standardmäßig auf `false`. Automatisch erstellte oder veränderte Skills werden daher nicht durch den integrierten Skills Guard geprüft, solange Sie die Funktion nicht ausdrücklich aktivieren..

## Fazit: Skills machen Erfahrung wiederverwendbar

Hermes Agent Skills speichern **keine bloßen Gesprächserinnerungen**, sondern wiederverwendbare Arbeitsmethoden. Der Agent kann komplexe Tool-Abläufe analysieren, daraus eine `SKILL.md` mit ergänzenden Skripten und Referenzen erstellen und diesen Ablauf bei ähnlichen Aufgaben erneut laden. Der wichtigste Effizienzgewinn entsteht durch die **Kombination aus prozeduralem Gedächtnis und Progressive Disclosure**: Hermes lädt zunächst nur einen kompakten Skill-Index und ruft die vollständige Anleitung erst bei Bedarf ab. Dadurch werden wiederkehrende Aufgaben strukturierter, nachvollziehbarer und häufig auch tokenärmer bearbeitet.


This is a markdown version of: [https://www.ionos.de/digitalguide/server/konfiguration/hermes-agent-skills/](https://www.ionos.de/digitalguide/server/konfiguration/hermes-agent-skills/) for AI/LLM consumption.