AgentSkillsCN

Skills

技能

SKILL.md

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

javascript
{
  "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

javascript
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

code
GET /search?q=<query>

Beispiel

javascript
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

javascript
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

javascript
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

  1. Named Volumes: Docker-managed

    yaml
    volumes:
      - db_data:/var/lib/postgresql/data
    
  2. Bind Mounts: Host-Pfad zu Container

    yaml
    volumes:
      - ./app:/usr/src/app
    
  3. tmpfs: Temporärer Speicher im RAM

    yaml
    tmpfs:
      - /tmp
    

Beispiel

javascript
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

javascript
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

  1. Einfache Zuweisung:

    yaml
    environment:
      - NODE_ENV=production
      - PORT=3000
    
  2. Object-Notation:

    yaml
    environment:
      NODE_ENV: production
      PORT: 3000
    
  3. Env-File Referenz:

    yaml
    env_file:
      - .env
      - .env.production
    

Beispiel

javascript
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

javascript
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

javascript
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?

  1. Benutzer fügt Service hinzu:

    • image_search → Bilder finden
    • port_validation → Ports prüfen
    • volume_config → Volumes einrichten
  2. Benutzer definiert Netzwerk:

    • network_config → Netzwerk erstellen
  3. Benutzer setzt Dependencies:

    • dependency_resolver → Reihenfolge prüfen
  4. Benutzer generiert YAML:

    • compose_validation → Finale Validierung
    • yaml_generation → YAML erstellen
  5. Benutzer exportiert Datei:

    • yaml_generation → Download vorbereiten

Skill-Kombination

Skills können kombiniert werden für komplexe Tasks:

javascript
// 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:

markdown
## 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.