CommunityCodierung & Entwicklunggithub.com

agentdock

Sichere MCP-Laufzeitumgebung für KI-Agenten zur Bedienung lokaler Maschinen, Server und Container mit Multi-Device-Orchestrierung.

Was ist agentdock?

AgentDock ist eine sichere MCP-Laufzeitumgebung, die es KI-Agenten ermöglicht, lokale Maschinen, Server und Container zu betreiben und dabei Multi-Device-Orchestrierung zu nutzen. Es stellt eine standardisierte Schnittstelle (MCP) zur Verfügung, über die Agenten mit verschiedenen Systemressourcen interagieren können, ohne direkten, unsicheren Zugriff zu erhalten. Die Plattform unterstützt die Erstellung und Verwaltung von sogenannten „Skills“ – portablen Anleitungen für Modelle, die beschreiben, wie bestimmte Aufgaben ausgeführt werden. Diese Skills bestehen aus einem portablen Kernvertrag und optionalen Host-Anpassungen, sodass sie unabhängig von der AgentDock-Installation funktionieren. AgentDock eignet sich besonders für Entwickler und DevOps-Ingenieure, die KI-Agenten sicher in ihre Infrastruktur integrieren möchten, und bietet Werkzeuge wie das Skill-Authoring, um neue Fähigkeiten zu erstellen, zu validieren und zu installieren.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add uvwt/agentdock

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Skill Authoring

Erstellen oder verwalten Sie First-Party-Skills für AgentDock. Der Skill selbst ist ein vom Modell lesbares Dokument; die Tools übernehmen die eigentliche Überprüfung, Bearbeitung, Befehlsausführung, Paketierung, Installation und Validierung.

Ein Ziel-Skill sollte aus zwei Teilen bestehen:

Portabler Kernvertrag
+
Optionale Host-Adapter-Beschreibung

Nach dem Entfernen der AgentDock-spezifischen Adapter-Beschreibung müssen der Geschäftsprozess des Skills, die paketinternen Referenzen, der Umgebungsvariablenvertrag und die Hilfsskripte weiterhin vollständig nutzbar sein.

Wann verwenden

Verwenden Sie diesen Skill für:

  • Erstellen neuer First-Party-Skills;
  • Ändern, Refactoren oder Upgraden vorhandener Skills;
  • Anpassen von Auslösebeschreibungen, Haupttext, Referenzmaterialien oder Hilfsskripten;
  • Ergänzen von Tests, Beispielen, Sicherheitseinschränkungen und Portabilitätsprüfungen;
  • Erhöhen der Version und Durchführen der Quellcode- sowie der aktuell aktivierten Versionsvalidierung.

Verwenden Sie diesen Skill NICHT für die formelle Sicherheitsüberprüfung von Drittanbieter-Skills, die Konfiguration echter Anmeldedaten oder das Rollback installierter Versionen. Diese gehören zu skill-installation.

Kernprinzipien

  1. Definieren Sie zuerst, wann das Modell diesen Skill auswählen soll, bevor Sie den Haupttext schreiben.
  2. Ein Skill beschreibt nur Methoden, Grenzen und Tool-Auswahl; er übernimmt keine einheitliche Ausführungsverantwortung.
  3. Der Kernvertrag eines Skills muss host-unabhängig sein; Dateien im Paket verwenden relative Pfade, die Umgebung wird vom laufenden Host injiziert.
  4. Einfache Skills bestehen bevorzugt nur aus einer SKILL.md; Referenzen, Skripte oder Tests werden nur hinzugefügt, wenn unbedingt nötig.
  5. Nach Änderungen am Haupttext, Referenzen, Skripten oder Verhalten muss die semantische Version erhöht werden.
  6. Inhalte mit gleichem Namen und gleicher Version müssen unveränderlich bleiben.
  7. Umgebungswerte, Gerätezustände und Laufzeitdaten dürfen nicht in das Skill-Paket gelangen.
  8. Alle Validierungen müssen auf der aktuell installierten und aktivierten Version basieren, nicht nur auf dem Quellverzeichnis.
  9. First-Party-Skills müssen den lint-Check dieses Skills bestehen, nicht nur die Paketinstallationsvalidierung.

Die vollständige Spezifikation finden Sie unter references/skill-package-spec.md im Paket.

Standardablauf

1. Anforderungen und Auslösebedingungen verstehen

Klären Sie zunächst:

  • Welches Problem der Benutzer tatsächlich lösen möchte;
  • Bei welcher Anfrage das Modell diesen Skill auswählen soll;
  • Welche angrenzenden Aufgaben nicht zu diesem Skill gehören;
  • Welche echten Tools aufgerufen werden müssen;
  • Ob Hilfsskripte, Referenzmaterialien oder Tests benötigt werden;
  • Ob Netzwerkzugriff, Schreib-, Lösch-, Anmeldedaten- oder risikoreiche Aktionen involviert sind.

Verwenden Sie keine vagen Beschreibungen wie "Verwaltet den gesamten Lebenszyklus einer Fähigkeit". Die description muss es dem Modell ermöglichen, zuverlässig zu entscheiden, wann dieser Skill ausgewählt werden soll.

2. Zuständigkeitsgrenzen festlegen

Der Haupttext muss mindestens Folgendes beschreiben:

  • Anwendbare und nicht anwendbare Szenarien;
  • Objekte, die gelesen oder geändert werden;
  • Standardmäßig schreibgeschütztes Verhalten;
  • Bestätigungsregeln für Schreib- und destruktive Operationen;
  • Beweise, die bei Fehlern zurückgegeben werden müssen.

Ein Skill sollte um eine stabile Fähigkeitsgrenze herum organisiert sein. Wenn die Anforderungen bereits über mehrere unabhängige Zuständigkeiten verteilt sind, sollte der Skill in mehrere Skills aufgeteilt werden.

3. Quellverzeichnis erstellen

Normale First-Party- und Community-Skills werden standardmäßig im separaten agentdock-skills-Repository abgelegt:

skills/<skill-name>/

Nur Kern-Skills, die mit dem AgentDock-Installationspaket gebootet werden und stark an die Laufzeitversion gebunden sind, werden im Haupt-Repository von AgentDock abgelegt:

core-skills/<skill-name>/

Wählen Sie die Struktur nach Bedarf:

skills/<skill-name>/
└── SKILL.md
skills/<skill-name>/
├── SKILL.md
├── references/
├── scripts/
└── tests/
skills/<skill-name>/
├── SKILL.md
├── run.py
└── tests/

Erstellen Sie keine leeren Verzeichnisse um der Form willen und legen Sie keine normalen Integrationen wieder im Haupt-Repository von AgentDock ab.

4. Frontmatter schreiben

Aktuell von AgentDock offiziell geparst:

---
name: example-skill
description: Klare Erklärung, wann es verwendet wird und welches Problem es löst
version: 1.0.0
---

Anforderungen:

  • name verwendet einen stabilen, kurzen, vollständig kleingeschriebenen Bindestrich-Namen;
  • description deckt sowohl Auslöseszenarien als auch Fähigkeitsgrenzen ab;
  • version verwendet semantische Versionierung;
  • Nach dem Frontmatter muss ein nicht-leerer Markdown-Haupttext folgen;
  • Fügen Sie keine Umgebungsvariablen oder Ausführungsfelder hinzu, die der aktuelle Parser nicht unterstützt.

5. Portablen Kern schreiben

Der Haupttext und die Skripte des Ziel-Skills gehen standardmäßig nur von Folgendem aus:

  • Das aktuelle Arbeitsverzeichnis ist das Skill-Paket-Rootverzeichnis;
  • Paketinterne Ressourcen können über relative Pfade zugegriffen werden;
  • Umgebungsvariablen stammen aus der Umgebung des aktuellen Prozesses;
  • Der laufende Host ist verantwortlich für die Auswahl von Tools, das Wechseln von Verzeichnissen und das Injizieren von Umgebungen;
  • Es gibt keine Abhängigkeit vom Installationsverzeichnis, Statusverzeichnis oder von exklusiven Variablen von AgentDock.

Wenn Skripte im Rootverzeichnis vorhanden sind, sollte das allgemeine Ausführungsbeispiel wie folgt aussehen:

printf '%s' '{"skill_action":"status"}' | python3 run.py

Folgendes darf NICHT als Kernvoraussetzung für die Ausführung angesehen werden:

  • ~/.agentdock/skill-store/installed/...;
  • Feste installierte Versionsnummern;
  • AGENTDOCK_DIR, AGENTDOCK_HOME oder AGENTDOCK_SKILL_DIR zum Auffinden von paketinternen Skripten oder privaten Daten;
  • skill_env, exec_command oder skill://;
  • Feste absolute Benutzerpfade;
  • Aktives Lesen oder source von privaten AgentDock-Umgebungsdateien.

AgentDock-Toolaufrufe können in einer separaten "AgentDock-Adapter/Validierungs"-Beschreibung erscheinen, aber nach dem Löschen dieses Teils muss der Skill weiterhin nutzbar sein.

6. Umgebungsvariablen deklarieren

Jeder Ziel-Skill, der konfiguriert werden muss, muss die Variablen im Haupttext explizit deklarieren:

## Umgebungsvariablen

| Variable | Typ | Erforderlich | Beschreibung |
|---|---:|---|
| EXAMPLE_BASE_URL | config | Ja | Dienstadresse |
| EXAMPLE_API_KEY | secret | Ja | API-Schlüssel |

Der Typ unterscheidet mindestens config und secret, und es muss angegeben werden, welche Fähigkeiten bei fehlenden Variablen nicht verfügbar sind.

Der Ziel-Skill deklariert nur Variablennamen und -zwecke, keine privaten AgentDock-Speicherpfade und speichert keine echten Werte. Hilfsskripte lesen Variablen nur aus der Umgebung des aktuellen Prozesses.

Bei der lokalen Validierung mit AgentDock werden die Umgebungswerte von skill_package env_set/env_unset/env_list verwaltet und vom skill-Kontext von exec_command in den aktuellen Unterprozess injiziert. Die Umgebung wird nicht in den Hauptprozess von AgentDock oder die Systemumgebung geschrieben.

7. Referenzmaterialien schreiben

Geeignete Inhalte für references/ sind:

  • Stabile Protokolldokumentation;
  • Längere Checklisten;
  • API-Feld- oder Fehlercodetabellen;
  • Hintergrundinformationen, die nicht jedes Mal vollständig geladen werden müssen.

Die Ziel-SKILL.md verwendet paketinterne relative Pfade, z. B.:

references/api.md

Verwenden Sie NICHT skill://<name>/... als Kernreferenzvertrag und verlassen Sie sich nicht auf das Installationsverzeichnis eines anderen Skills. AgentDock kann beim Validieren des aktuell aktivierten Pakets Ressourcen mit read_file skill://<name>/... lesen.

8. Hilfsskripte schreiben

Hilfsskripte sind optionale Ressourcen, nicht der Skill selbst. Wenn Skripte benötigt werden:

  • Eingabe als stdin JSON-Objekt;
  • Einheitliches Aktionsfeld der obersten Ebene mit skill_action;
  • Geheimnisse nur aus der Umgebung des aktuellen Prozesses lesen;
  • Keine Geheimnisse über Befehlszeilenargumente übergeben;
  • Ausgabe als strukturiertes JSON;
  • Fehler mit stabilem code und lesbarer message zurückgeben;
  • Zustandsprüfungen vorzugsweise schreibgeschützt;
  • Schreiboperationen befolgen die Benutzerbestätigungsregeln;
  • Logs und Fehler dürfen keine Geheimnisse preisgeben;
  • Dateien im Paket mit relativen Pfaden oder basierend auf dem eigenen Skriptverzeichnis lokalisieren.

Empfohlene Eingabe:

{
  "skill_action": "status"
}

Allgemeine Ausführung im Skill-Paket-Rootverzeichnis:

python3 run.py

Bei der Validierung mit AgentDock wird mit exec_command mit skill: "<skill-name>" das aktuell aktivierte Verzeichnis mit einer separaten Umgebung gebunden, ohne die Version manuell zu parsen.

9. Portabilitäts-Lint ausführen

Die run.py dieses Skills bietet:

  • status: Meldet die Lint-Version und die Anzahl der Regeln;
  • lint: Überprüft den portablen Kern und die Host-Bindung des Ziel-Skills.

Beispieleingabe:

{
  "skill_action": "lint",
  "source": "/path/to/agentdock-skills/skills/example-skill"
}

Das Ergebnis enthält:

  • portable;
  • error_count;
  • warning_count;
  • Für jedes Problem: code, severity, Datei, Zeile, Beschreibung und Reparaturvorschlag.

Hartcodierte installierte Versionsverzeichnisse, Abhängigkeit von AgentDock-exklusiven Verzeichnisvariablen, aktives Lesen von AgentDock-Umgebungsdateien und feste absolute Benutzerpfade gelten als Fehler. AgentDock-exklusive Tools oder URIs, die in der Ziel-SKILL.md erscheinen, gelten als Warnung und müssen bestätigt werden, dass sie nur in optionalen Adapter-Beschreibungen vorhanden sind.

Beim Ausführen von Lint auf einem installierten Verzeichnis wird die vom AgentDock-Installer generierte .agentdock-install.json im Paket-Root ignoriert. Diese Datei gehört zur Host-Installationsquittung und nicht zum Skill-Paketinhalt; gleichnamige Dateien in anderen Verzeichnissen des Pakets werden normal gescannt.

Nach der Installation einer neuen Version von skill-authoring in AgentDock kann der Lint so ausgeführt werden:

exec_command
  skill: skill-authoring
  cmd: python3 run.py
  stdin: {"skill_action":"lint","source":"/path/to/source"}

Beim Erstellen oder Ändern von First-Party-Skills muss portable true sein; Warnungen müssen entweder behoben oder erklärt werden, warum sie zu einer optionalen Host-Adapter gehören.

10. Tests schreiben

Tests decken reale Risiken ab und berücksichtigen mindestens:

  • Frontmatter und Haupttext sind parsbaren;
  • Expliziter Fehler bei Eingabe, die kein JSON-Objekt ist;
  • Expliziter Fehler bei unbekanntem skill_action;
  • Bei fehlenden Umgebungsvariablen nur den Variablennamen melden, Wert nicht preisgeben;
  • Schreibgeschützte Zustandsprüfungen erzeugen keine Schreibvorgänge;
  • Verweigerung bei fehlender Bestätigung für destruktive Aktionen;
  • Logs und Fehler enthalten keine Geheimnisse;
  • Im Fehlerfall bei fehlender Plattform oder Abhängigkeit diagnostische Informationen zurückgeben;
  • Paketausführung mit relativen Befehlen vom Rootverzeichnis;
  • Skripte sind nicht von privaten AgentDock-Verzeichnissen abhängig.

11. Sicherheits- und Qualitätsprüfung

Vor dem Einchecken prüfen:

  • Keine echten Passwörter, Token, Cookies, Authentifizierungscaches oder Sitzungsdateien im Paket;
  • Keine .env, Caches, Datenbanken, Screenshots, heruntergeladene Dateien oder Ausführungsergebnisse;
  • Keine __pycache__, *.pyc, node_modules oder Kompilierungsartefakte;
  • Keine festen absoluten Benutzerpfade, symbolischen Links oder Pfadausbrüche;
  • Keine veralteten einheitlichen Ausführungsprotokolle, veralteten Umgebungstool-Beispiele oder alten Manifeste;
  • Netzwerkziele, Dateischreibvorgänge, Löschungen, Uploads und Berechtigungsänderungen sind klar beschrieben;
  • Abhängigkeitsinstallationen werden nicht versteckt ausgeführt.

Ausdrücklich verboten zu generieren oder wiederherzustellen:

  • agentdock.yaml;
  • skill_run;
  • skill_env_manage;
  • AGENTDOCK_OPERATION;
  • PLUGIN_* alte Protokolle;
  • Veraltete operation- oder entrypoint-Manifeste;
  • Einheitliche Skill-Ausführer oder alte Skill-Laufzeit.

Geräteprivate Zustände und AgentDock-Umgebungswerte gehören nur zum Host und nicht ins Paket.

12. Version erhöhen

  • Nur Korrektur von Tippfehlern im Haupttext ohne Auswirkung auf die Verhaltensentscheidung: Patch-Version erhöhen;
  • Hinzufügen kompatibler Fähigkeiten, Variablen, Aktionen oder Referenzen: Minor-Version erhöhen;
  • Ändern der Zuständigkeitsgrenzen, Entfernen bestehender Fähigkeiten oder Einführen inkompatibler Abläufe: Major-Version erhöhen.

Vor der Installation die aktuell installierte Version mit dem neuen Quellcode vergleichen. Nicht denselben Inhalt mit unterschiedlichen Versionen überschreiben.

13. Validierung und lokale Installation

Mindestens Folgendes ausführen:

  1. Verzeichnis und Frontmatter prüfen;
  2. Korrekte Versionserhöhung prüfen;
  3. Verbotene Dateien, symbolische Links und echte Geheimnisse prüfen;
  4. Syntaxprüfung und integrierte Tests für Hilfsskripte ausführen;
  5. skill-authoring lint ausführen, portable=true bestätigen und Warnungen prüfen;
  6. Mit skill_package validate die Paketgültigkeit prüfen;
  7. Mit skill_package install installieren und aktivieren;
  8. Mit agentdock_context bestätigen, dass Name und Beschreibung im Lightweight-Index erscheinen;
  9. Mit read_file skill://<name>/SKILL.md den aktuell aktivierten Haupttext prüfen;
  10. Bei Referenzen mindestens eine Referenz lesen;
  11. Bei Hilfsskripten mit exec_command skill=<name> einen schreibgeschützten status auf der aktuell aktivierten Version ausführen;
  12. Eine repräsentative Aktion mit geringem Risiko ausführen; wenn dies fehlschlägt, die tatsächliche Ursache protokollieren.

skill_package validate prüft, ob ein Paket legal installiert werden kann; der lint dieses Skills prüft die First-Party-Erstellungsqualität und Portabilität. Beide können einander nicht ersetzen.

Umgebungsvariablen

Dieser Skill selbst benötigt keine Umgebungsvariablen. Er erwartet, dass der zu schreibende Ziel-Skill seine eigenen Geschäftsvariablen deklariert, die vom laufenden Host in den aktuellen Unterprozess injiziert werden.

Fertigstellungskriterien

Ein Task gilt nur dann als abgeschlossen, wenn alle folgenden Bedingungen erfüllt sind:

  • Die Beschreibung ist stabil auslösbar und die Grenzen sind klar;
  • Der portable Kern ist nicht von privaten AgentDock-Verzeichnissen oder Tool-Parametern abhängig;
  • Paketinterne Skripte können vom Skill-Rootverzeichnis mit relativen Pfaden ausgeführt werden;
  • skill-authoring lint gibt portable=true zurück, Warnungen wurden einzeln behandelt;
  • Sicherheitsprüfung, Tests und skill_package validate wurden bestanden;
  • Die neue Version wurde installiert und aktiviert;
  • agentdock_context und skill:// zeigen die neue Version;
  • Die echte schreibgeschützte Validierung der aktuell aktivierten Version wurde bestanden;
  • Keine Geheimnisse, geräteprivate Zustände oder veraltete Architektur wurden importiert.

Verwandte Skills