Docker Compose Generator - Agent Skills
Übersicht
Diese Datei definiert die spezialisierten Skills für Agenten im Docker Compose Generator Projekt. Jeder Skill hat einen klaren Verantwortungsbereich und kann von Agenten verwendet werden.
1. compose_validation
Beschreibung
Validiert Docker Compose Konfigurationen auf Syntax- und Strukturfehler.
Eingabe
- •JSON-Objekt mit Service-Konfigurationen
- •Oder YAML-String einer docker-compose.yml
Ausgabe
- •Validierungsergebnis (erfolgreich/fehlgeschlagen)
- •Liste von Fehlern mit Zeilennummern und Beschreibungen
- •Warnungen für Best-Practice-Verletzungen
Validierungsregeln
- •Service-Namen: alphanumerisch, Unterstriche, Bindestriche
- •Ports: Gültige Portnummern (1-65535)
- •Volumes: Gültige Pfadformate
- •Networks: Gültige Netzwerknamen
- •Depends_on: Zirkuläre Abhängigkeiten erkennen
- •Environment Variables: Korrekte Key-Value-Paare
- •Images: Gültiges Format (registry/image:tag)
Beispiel
{
"service": {
"name": "web",
"image": "nginx:latest",
"ports": ["80:80", "443:443"]
}
}
// Output: { valid: true, errors: [], warnings: [] }
2. yaml_generation
Beschreibung
Generiert eine docker-compose.yml Datei aus einer JSON-Konfiguration.
Eingabe
- •JSON-Objekt mit vollständiger Compose-Konfiguration
- •Services, Networks, Volumes
Ausgabe
- •YAML-formatierter String
- •Korrekte Einrückung (2 Spaces)
- •Optionale Kommentare für Benutzer-Hilfe
Features
- •Version-Header (3.8 oder höher)
- •Services-Sektion mit allen Konfigurationen
- •Networks-Sektion (wenn definiert)
- •Volumes-Sektion (wenn definiert)
- •Alphabetische Sortierung von Keys (optional)
Beispiel
Input:
{
"version": "3.8",
"services": {
"web": {
"image": "nginx:latest",
"ports": ["80:80"]
}
}
}
Output:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
3. image_search
Beschreibung
Sucht nach Docker Images auf DockerHub über den API-Proxy.
Eingabe
- •Suchbegriff (String)
- •Filter: official_only (Boolean, default: true)
- •Limit: Anzahl Ergebnisse (Number, default: 10)
Ausgabe
- •Array von Image-Objekten:
- •name: Image-Name
- •description: Kurzbeschreibung
- •stars: Anzahl Stars
- •is_official: Boolean
- •tags: Verfügbare Tags (Top 5)
API-Endpoint
GET /search?q=<query>
Beispiel
Input: { query: "postgres", official_only: true, limit: 5 }
Output: [
{
name: "postgres",
description: "Official PostgreSQL image",
stars: 12543,
is_official: true,
tags: ["latest", "16", "15", "14", "alpine"]
}
]
4. port_validation
Beschreibung
Validiert Port-Konfigurationen und erkennt Konflikte.
Eingabe
- •Array von Port-Mappings (Strings oder Objekte)
- •Format: "host:container" oder "port" oder detailliertes Objekt
Ausgabe
- •Validierungsergebnis
- •Erkannte Konflikte (mehrere Services auf gleichem Host-Port)
- •Ungültige Port-Nummern
Validierungsregeln
- •Port-Bereich: 1-65535
- •Host-Port-Eindeutigkeit
- •Container-Port-Verfügbarkeit
- •Format-Validierung (verschiedene Syntax-Varianten)
Beispiel
Input: [
{ service: "web", ports: ["80:80", "443:443"] },
{ service: "api", ports: ["80:3000"] } // Konflikt!
]
Output: {
valid: false,
errors: [{
type: "port_conflict",
port: 80,
services: ["web", "api"],
message: "Host port 80 is used by multiple services"
}]
}
5. network_config
Beschreibung
Erstellt und verwaltet Docker Network-Konfigurationen.
Eingabe
- •Network-Name
- •Driver (bridge, overlay, host, none)
- •Optionale Konfigurationen (subnet, gateway, etc.)
Ausgabe
- •Network-Definition für docker-compose.yml
- •Validierte Netzwerk-Parameter
Unterstützte Treiber
- •bridge: Standard für einzelne Host-Container
- •overlay: Für Swarm-Mode (Multi-Host)
- •host: Nutzt Host-Netzwerk direkt
- •none: Kein Netzwerk
Beispiel
Input: {
name: "backend",
driver: "bridge",
subnet: "172.20.0.0/16",
gateway: "172.20.0.1"
}
Output: {
backend: {
driver: "bridge",
ipam: {
config: [
{ subnet: "172.20.0.0/16", gateway: "172.20.0.1" }
]
}
}
}
6. volume_config
Beschreibung
Verwaltet Volume-Definitionen für persistente Datenspeicherung.
Eingabe
- •Volume-Typ: named, bind, tmpfs
- •Source-Pfad (bei bind mounts)
- •Target-Pfad im Container
- •Optionen (read-only, etc.)
Ausgabe
- •Volume-Definition für Service
- •Globale Volume-Deklaration (bei named volumes)
Volume-Typen
- •
Named Volumes: Docker-managed
yamlvolumes: - db_data:/var/lib/postgresql/data
- •
Bind Mounts: Host-Pfad zu Container
yamlvolumes: - ./app:/usr/src/app
- •
tmpfs: Temporärer Speicher im RAM
yamltmpfs: - /tmp
Beispiel
Input: {
type: "named",
name: "postgres_data",
target: "/var/lib/postgresql/data",
readonly: false
}
Output: {
service_volumes: ["postgres_data:/var/lib/postgresql/data"],
global_volumes: {
postgres_data: {}
}
}
7. dependency_resolver
Beschreibung
Löst Service-Abhängigkeiten auf und erkennt zirkuläre Abhängigkeiten.
Eingabe
- •Array von Services mit depends_on-Definitionen
Ausgabe
- •Sortierte Service-Reihenfolge (topologische Sortierung)
- •Fehler bei zirkulären Abhängigkeiten
Funktionalität
- •Erstellt Abhängigkeits-Graph
- •Erkennt Zyklen
- •Generiert Start-Reihenfolge
- •Validiert dass alle Dependencies existieren
Beispiel
Input: [
{ name: "web", depends_on: ["api", "db"] },
{ name: "api", depends_on: ["db"] },
{ name: "db", depends_on: [] }
]
Output: {
order: ["db", "api", "web"],
cycles: [],
valid: true
}
8. environment_parser
Beschreibung
Parst und validiert Environment Variables für Services.
Eingabe
- •Key-Value-Paare
- •Optionale .env-Datei Referenzen
Ausgabe
- •Validierte Environment-Konfiguration
- •Format für docker-compose.yml (Array oder Object)
Unterstützte Formate
- •
Einfache Zuweisung:
yamlenvironment: - NODE_ENV=production - PORT=3000
- •
Object-Notation:
yamlenvironment: NODE_ENV: production PORT: 3000
- •
Env-File Referenz:
yamlenv_file: - .env - .env.production
Beispiel
Input: {
format: "object",
vars: {
"NODE_ENV": "production",
"DATABASE_URL": "postgres://localhost/mydb"
}
}
Output: {
environment: {
NODE_ENV: "production",
DATABASE_URL: "postgres://localhost/mydb"
}
}
9. health_check_config
Beschreibung
Konfiguriert Health Checks für Services.
Eingabe
- •Test-Befehl
- •Interval, Timeout, Retries
- •Start Period
Ausgabe
- •Healthcheck-Konfiguration für docker-compose.yml
Parameter
- •test: Befehl oder Array (CMD, CMD-SHELL)
- •interval: Zeit zwischen Checks (default: 30s)
- •timeout: Max. Wartezeit (default: 30s)
- •retries: Anzahl Fehlversuche (default: 3)
- •start_period: Wartezeit nach Start (default: 0s)
Beispiel
Input: {
test: ["CMD", "pg_isready", "-U", "postgres"],
interval: "10s",
timeout: "5s",
retries: 5,
start_period: "10s"
}
Output: {
healthcheck: {
test: ["CMD", "pg_isready", "-U", "postgres"],
interval: "10s",
timeout: "5s",
retries: 5,
start_period: "10s"
}
}
10. resource_limits
Beschreibung
Konfiguriert Ressourcen-Limits für Services (CPU, Memory).
Eingabe
- •CPU-Limits (Cores oder Shares)
- •Memory-Limits (MB/GB)
- •Reservierungen vs. Limits
Ausgabe
- •Deploy-Konfiguration mit Ressourcen-Beschränkungen
Parameter
- •limits: Maximale Ressourcen
- •cpus: '0.5' (50% einer CPU)
- •memory: '512M'
- •reservations: Garantierte Ressourcen
- •cpus: '0.25'
- •memory: '256M'
Beispiel
Input: {
limits: {
cpus: '1.0',
memory: '1G'
},
reservations: {
cpus: '0.5',
memory: '512M'
}
}
Output: {
deploy: {
resources: {
limits: { cpus: '1.0', memory: '1G' },
reservations: { cpus: '0.5', memory: '512M' }
}
}
}
Agent-Nutzung
Wann welchen Skill verwenden?
- •
Benutzer fügt Service hinzu:
- •
image_search→ Bilder finden - •
port_validation→ Ports prüfen - •
volume_config→ Volumes einrichten
- •
- •
Benutzer definiert Netzwerk:
- •
network_config→ Netzwerk erstellen
- •
- •
Benutzer setzt Dependencies:
- •
dependency_resolver→ Reihenfolge prüfen
- •
- •
Benutzer generiert YAML:
- •
compose_validation→ Finale Validierung - •
yaml_generation→ YAML erstellen
- •
- •
Benutzer exportiert Datei:
- •
yaml_generation→ Download vorbereiten
- •
Skill-Kombination
Skills können kombiniert werden für komplexe Tasks:
// Beispiel: Service komplett konfigurieren
1. image_search("postgres")
2. port_validation(["5432:5432"])
3. volume_config({ name: "db_data", target: "/var/lib/postgresql/data" })
4. environment_parser({ POSTGRES_PASSWORD: "secret" })
5. health_check_config({ test: ["CMD", "pg_isready"] })
6. compose_validation(complete_service_config)
7. yaml_generation(complete_service_config)
Erweiterung
Neue Skills können nach folgendem Schema hinzugefügt werden:
## X. skill_name ### Beschreibung Was macht der Skill? ### Eingabe Welche Parameter? ### Ausgabe Was wird zurückgegeben? ### Beispiel Code-Beispiel
Zusammenfassung
Diese Skills decken alle Aspekte der Docker Compose Generierung ab:
- •✅ Validierung
- •✅ YAML-Generierung
- •✅ Image-Suche
- •✅ Port-Management
- •✅ Netzwerk-Konfiguration
- •✅ Volume-Management
- •✅ Abhängigkeits-Auflösung
- •✅ Environment Variables
- •✅ Health Checks
- •✅ Ressourcen-Limits
Agenten können diese Skills beliebig kombinieren um komplexe Docker Compose Konfigurationen zu erstellen.