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
- Definieren Sie zuerst, wann das Modell diesen Skill auswählen soll, bevor Sie den Haupttext schreiben.
- Ein Skill beschreibt nur Methoden, Grenzen und Tool-Auswahl; er übernimmt keine einheitliche Ausführungsverantwortung.
- Der Kernvertrag eines Skills muss host-unabhängig sein; Dateien im Paket verwenden relative Pfade, die Umgebung wird vom laufenden Host injiziert.
- Einfache Skills bestehen bevorzugt nur aus einer
SKILL.md; Referenzen, Skripte oder Tests werden nur hinzugefügt, wenn unbedingt nötig. - Nach Änderungen am Haupttext, Referenzen, Skripten oder Verhalten muss die semantische Version erhöht werden.
- Inhalte mit gleichem Namen und gleicher Version müssen unveränderlich bleiben.
- Umgebungswerte, Gerätezustände und Laufzeitdaten dürfen nicht in das Skill-Paket gelangen.
- Alle Validierungen müssen auf der aktuell installierten und aktivierten Version basieren, nicht nur auf dem Quellverzeichnis.
- 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:
nameverwendet einen stabilen, kurzen, vollständig kleingeschriebenen Bindestrich-Namen;descriptiondeckt sowohl Auslöseszenarien als auch Fähigkeitsgrenzen ab;versionverwendet 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_HOMEoderAGENTDOCK_SKILL_DIRzum Auffinden von paketinternen Skripten oder privaten Daten;skill_env,exec_commandoderskill://;- Feste absolute Benutzerpfade;
- Aktives Lesen oder
sourcevon 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
codeund lesbarermessagezurü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_modulesoder 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- oderentrypoint-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:
- Verzeichnis und Frontmatter prüfen;
- Korrekte Versionserhöhung prüfen;
- Verbotene Dateien, symbolische Links und echte Geheimnisse prüfen;
- Syntaxprüfung und integrierte Tests für Hilfsskripte ausführen;
skill-authoring lintausführen,portable=truebestätigen und Warnungen prüfen;- Mit
skill_package validatedie Paketgültigkeit prüfen; - Mit
skill_package installinstallieren und aktivieren; - Mit
agentdock_contextbestätigen, dass Name und Beschreibung im Lightweight-Index erscheinen; - Mit
read_file skill://<name>/SKILL.mdden aktuell aktivierten Haupttext prüfen; - Bei Referenzen mindestens eine Referenz lesen;
- Bei Hilfsskripten mit
exec_command skill=<name>einen schreibgeschütztenstatusauf der aktuell aktivierten Version ausführen; - 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 lintgibtportable=truezurück, Warnungen wurden einzeln behandelt;- Sicherheitsprüfung, Tests und
skill_package validatewurden bestanden; - Die neue Version wurde installiert und aktiviert;
agentdock_contextundskill://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.