Skip to content

CI/CD-Integration

Lernziele

  • Verstehen, warum CI/CD-Umgebungen den nicht-interaktiven Modus benötigen
  • Beherrschen der Verwendung des --yes/-y Flags in den Befehlen install und sync
  • Integration von OpenSkills in CI-Plattformen wie GitHub Actions, GitLab CI
  • Verständnis des automatisierten Skill-Installationsprozesses in Docker-Containern
  • Beherrschung von Aktualisierungs- und Synchronisationsstrategien in CI/CD-Umgebungen
  • Vermeidung von Fehlern durch interaktive Eingabeaufforderungen in CI/CD-Workflows

Voraussetzungen

Dieses Tutorial setzt voraus, dass Sie bereits Ihren ersten Skill installieren und Skills zu AGENTS.md synchronisieren sowie die Befehlsreferenz kennen.


Ihr aktuelles Problem

Sie verwenden OpenSkills bereits erfolgreich in Ihrer lokalen Umgebung, stoßen aber in CI/CD-Umgebungen auf Probleme:

  • Fehler durch interaktive Eingabeaufforderungen: Das CI-Workflow zeigt ein Auswahlmenü, das nicht automatisch fortgesetzt werden kann
  • Automatisierte Bereitstellung erfordert Skill-Installation: Bei jedem Build müssen Skills neu installiert werden, aber dies kann nicht automatisch bestätigt werden
  • Nicht synchronisierte Multi-Umgebung-Konfiguration: Die Skill-Konfigurationen in Entwicklungs-, Test- und Produktionsumgebungen sind inkonsistent
  • Nicht automatisierte AGENTS.md-Generierung: Nach jeder Bereitstellung muss der sync-Befehl manuell ausgeführt werden
  • Fehlende Skills in Docker-Images: Skills müssen nach Container-Start manuell installiert werden

Tatsächlich bietet OpenSkills das Flag --yes/-y, das speziell für nicht-interaktive Umgebungen entwickelt wurde und Ihnen ermöglicht, alle Vorgänge in CI/CD-Workflows zu automatisieren.


Wann verwenden Sie diesen Ansatz

Anwendungsszenarien für die CI/CD-Integration:

SzenarioNicht-interaktiver Modus erforderlich?Beispiel
GitHub Actions✅ JaAutomatische Skill-Installation bei jedem PR oder Push
GitLab CI✅ JaAutomatische Synchronisation von AGENTS.md bei Merge Requests
Docker-Build✅ JaAutomatische Installation von Skills in Container während Image-Build
Jenkins-Pipelines✅ JaAutomatische Aktualisierung von Skills bei Continuous Integration
Entwicklungsumgebungs-Initialisierungsskripte✅ JaEin-Klick-Konfiguration für neue Entwickler nach Code-Pull
Produktionsumgebungsbereitstellung✅ JaAutomatische Synchronisation der neuesten Skills bei Bereitstellung

Empfohlene Vorgehensweise

  • Interaktiv für lokale Entwicklung: Manuelle Vorgänge ermöglichen sorgfältige Auswahl zu installierender Skills
  • Nicht-interaktiv für CI/CD: In automatisierten Workflows muss das -y Flag verwendet werden, um alle Eingabeaufforderungen zu überspringen
  • Umgebungstrennungsstrategie: Verwenden Sie verschiedene Skill-Quellen für verschiedene Umgebungen (z. B. private Repositorys)

Kernkonzept: Nicht-interaktiver Modus

Die Befehle install und sync von OpenSkills unterstützen das Flag --yes/-y, um alle interaktiven Eingabeaufforderungen zu überspringen:

Nicht-interaktives Verhalten des install-Befehls (Quellcode install.ts:424-427):

typescript
// Interactive selection (unless -y flag or single skill)
let skillsToInstall = skillInfos;

if (!options.yes && skillInfos.length > 1) {
  // 进入交互式选择流程
  // ...
}

Eigenschaften des nicht-interaktiven Modus:

  1. Überspringen der Skill-Auswahl: Installation aller gefundenen Skills
  2. Automatisches Überschreiben: Bei bereits vorhandenen Skills wird direkt überschrieben (Zeigt Overwriting: <skill-name>)
  3. Überspringen von Konfliktbestätigungen: Keine Rückfrage zum Überschreiben, direkte Ausführung
  4. Headless-Umgebungskompatibilität: Funktioniert in CI-Umgebungen ohne TTY normal

Verhalten der warnIfConflict-Funktion (Quellcode install.ts:524-527):

typescript
if (skipPrompt) {
  // Auto-overwrite in non-interactive mode
  console.log(chalk.dim(`Overwriting: ${skillName}`));
  return true;
}

::: important Wichtiges Konzept

Nicht-interaktiver Modus: Verwenden Sie das Flag --yes/-y, um alle interaktiven Eingabeaufforderungen zu überspringen. Dadurch können Befehle in CI/CD, Skripten und Umgebungen ohne TTY automatisch ausgeführt werden, ohne auf Benutzereingaben angewiesen zu sein.

:::


Praxis

Schritt 1: Nicht-interaktive Installation erleben

Warum Erleben Sie zuerst das Verhalten des nicht-interaktiven Modus lokal und verstehen Sie den Unterschied zum interaktiven Modus.

Öffnen Sie Ihr Terminal und führen Sie aus:

bash
# Nicht-interaktive Installation (Installation aller gefundenen Skills)
npx openskills install anthropics/skills --yes

# oder Kurzschrift
npx openskills install anthropics/skills -y

Sie sollten sehen:

Cloning into '/tmp/openskills-temp-...'...
...
Found 3 skill(s)

Overwriting: codebase-reviewer
Overwriting: file-writer
Overwriting: git-helper

✅ Installed 3 skill(s)

Next: Run 'openskills sync' to generate AGENTS.md

Erklärung:

  • Nach Verwendung des -y Flags wird das Skill-Auswahlmenü übersprungen
  • Alle gefundenen Skills werden automatisch installiert
  • Wenn ein Skill bereits vorhanden ist, wird Overwriting: <skill-name> angezeigt und direkt überschrieben
  • Es werden keine Bestätigungsdialoge angezeigt

Schritt 2: Interaktiven vs. nicht-interaktiven Modus vergleichen

Warum Durch den Vergleich verstehen Sie klarer die Unterschiede und Anwendungsszenarien der beiden Modi.

Führen Sie die folgenden Befehle aus, um die beiden Modi zu vergleichen:

bash
# Vorhandene Skills löschen (zum Testen)
rm -rf .claude/skills

# Interaktive Installation (zeigt Auswahlmenü)
echo "=== Interaktive Installation ==="
npx openskills install anthropics/skills

# Vorhandene Skills löschen
rm -rf .claude/skills

# Nicht-interaktive Installation (automatische Installation aller Skills)
echo "=== Nicht-interaktive Installation ==="
npx openskills install anthropics/skills -y

Sie sollten sehen:

Interaktiver Modus:

  • Zeigt eine Skill-Liste und ermöglicht Auswahl mit Leertaste
  • Erfordert Bestätigung mit Enter
  • Ermöglicht selektive Installation eines Teils der Skills

Nicht-interaktiver Modus:

  • Zeigt den Installationsprozess direkt an
  • Installiert alle Skills automatisch
  • Erfordert keine Benutzereingabe

Vergleichstabelle:

EigenschaftInteraktiver Modus (Standard)Nicht-interaktiver Modus (-y)
Skill-AuswahlZeigt Auswahlmenü, manuelle AuswahlAutomatische Installation aller gefundenen Skills
ÜberschreibungsbestätigungRückfrage, ob bereits vorhandene Skills überschrieben werden sollenAutomatisches Überschreiben mit Meldung
TTY-AnforderungErfordert interaktives TerminalNicht erforderlich, kann in CI-Umgebung ausgeführt werden
AnwendungsszenarienLokale Entwicklung, manuelle VorgängeCI/CD, Skripte, automatisierte Workflows
EingabeanforderungErfordert BenutzereingabeKeine Eingabe, automatische Ausführung

Schritt 3: Nicht-interaktive Synchronisation von AGENTS.md

Warum Lernen Sie, AGENTS.md in automatisierten Workflows zu generieren, damit KI-Agents immer die neueste Skill-Liste verwenden.

Führen Sie aus:

bash
# Nicht-interaktive Synchronisation (Synchronisation aller Skills zu AGENTS.md)
npx openskills sync -y

# Anzeigen der generierten AGENTS.md
cat AGENTS.md | head -20

Sie sollten sehen:

✅ Synced 3 skill(s) to AGENTS.md

AGENTS.md-Inhalt:

xml
<skills_system>
This project uses the OpenSkills system for AI agent extensibility.

Usage:
- Ask the AI agent to load specific skills using: "Use the <skill-name> skill"
- The agent will read the skill definition from .claude/skills/<skill-name>/SKILL.md
- Skills provide specialized capabilities like code review, file writing, etc.
</skills_system>

<available_skills>
  <skill name="codebase-reviewer">
    <description>Review code changes for issues...</description>
  </skill>
  <skill name="file-writer">
    <description>Write files with format...</description>
  </skill>
  <skill name="git-helper">
    <description>Git operations and utilities...</description>
  </skill>
</available_skills>

Erklärung:

  • Das -y Flag überspringt das Skill-Auswahlmenü
  • Alle installierten Skills werden zu AGENTS.md synchronisiert
  • Es werden keine Bestätigungsdialoge angezeigt

Schritt 4: GitHub Actions-Integration

Warum Integration von OpenSkills in tatsächliche CI/CD-Workflows zur automatisierten Skill-Verwaltung.

Erstellen Sie die Datei .github/workflows/setup-skills.yml in Ihrem Projekt:

yaml
name: Setup Skills

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  setup-skills:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install OpenSkills
        run: npm install -g openskills

      - name: Install skills (non-interactive)
        run: openskills install anthropics/skills -y

      - name: Sync to AGENTS.md
        run: openskills sync -y

      - name: Verify AGENTS.md
        run: |
          echo "=== AGENTS.md generated ==="
          cat AGENTS.md

      - name: Upload AGENTS.md as artifact
        uses: actions/upload-artifact@v4
        with:
          name: agents-md
          path: AGENTS.md

Commiten und pushen Sie zu GitHub:

bash
git add .github/workflows/setup-skills.yml
git commit -m "Add GitHub Actions workflow for OpenSkills"
git push

Sie sollten sehen: GitHub Actions läuft automatisch und installiert erfolgreich Skills und generiert AGENTS.md.

Erklärung:

  • Automatisch bei jedem Push oder PR ausgelöst
  • Verwenden Sie openskills install anthropics/skills -y für nicht-interaktive Skill-Installation
  • Verwenden Sie openskills sync -y für nicht-interaktive Synchronisation von AGENTS.md
  • Speichern Sie AGENTS.md als Artefakt zur einfachen Fehlersuche

Schritt 5: Verwendung privater Repositorys

Warum In Unternehmensumgebungen sind Skills meist in privaten Repositorys gehostet und benötigen SSH-Zugriff in CI/CD.

Konfigurieren Sie SSH in GitHub Actions:

yaml
name: Setup Skills from Private Repo

on:
  push:
    branches: [main]

jobs:
  setup-skills:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup SSH key
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        run: |
          mkdir -p ~/.ssh
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan github.com >> ~/.ssh/known_hosts

      - name: Install OpenSkills
        run: npm install -g openskills

      - name: Install skills from private repo
        run: openskills install [email protected]:your-org/private-skills.git -y

      - name: Sync to AGENTS.md
        run: openskills sync -y

Fügen Sie SSH_PRIVATE_KEY in Settings → Secrets and variables → Actions Ihres GitHub-Repositorys hinzu.

Sie sollten sehen: GitHub Actions installiert erfolgreich Skills aus dem privaten Repository.

Erklärung:

  • Verwenden Sie Secrets zum Speichern privater Schlüssel, um Lecks zu vermeiden
  • Konfigurieren Sie SSH-Zugriff für private Repositorys
  • openskills install [email protected]:your-org/private-skills.git -y unterstützt die Installation aus privaten Repositorys

Schritt 6: Docker-Szenario-Integration

Warum Automatische Installation von Skills während Docker-Image-Builds, damit diese sofort nach Container-Start verfügbar sind.

Erstellen Sie eine Dockerfile:

dockerfile
FROM node:20-alpine

WORKDIR /app

# Install OpenSkills
RUN npm install -g openskills

# Install skills (nicht-interaktiv)
RUN openskills install anthropics/skills -y

# AGENTS.md synchronisieren
RUN openskills sync -y

# Anwendungscode kopieren
COPY . .

# Andere Build-Schritte...
RUN npm install
RUN npm run build

# Startbefehl
CMD ["node", "dist/index.js"]

Bauen und ausführen:

bash
# Docker-Image bauen
docker build -t myapp:latest .

# Container ausführen
docker run -it --rm myapp:latest sh

# Verifizieren Sie installierte Skills im Container
ls -la .claude/skills/
cat AGENTS.md

Sie sollten sehen: Skills sind bereits im Container installiert und AGENTS.md wurde generiert.

Erklärung:

  • Installation von Skills während Docker-Image-Build-Phase
  • Verwenden Sie RUN openskills install ... -y für nicht-interaktive Installation
  • Keine manuelle Skill-Installation nach Container-Start erforderlich
  • Geeignet für Microservices, Serverless und andere Szenarien

Schritt 7: Umgebungsvariablenkonfiguration

Warum Flexible Konfiguration von Skill-Quellen über Umgebungsvariablen, verschiedene Umgebungen verwenden verschiedene Skill-Repositorys.

Erstellen Sie eine .env.ci-Datei:

bash
# CI/CD-Umgebungskonfiguration
SKILLS_SOURCE=anthropics/skills
SKILLS_INSTALL_FLAGS=-y
SYNC_FLAGS=-y

Verwenden Sie in CI/CD-Skripten:

bash
#!/bin/bash
# .github/scripts/setup-skills.sh

set -e

# Umgebungsvariablen laden
if [ -f .env.ci ]; then
  export $(cat .env.ci | grep -v '^#' | xargs)
fi

echo "Installing skills from: $SKILLS_SOURCE"
npx openskills install $SKILLS_SOURCE $SKILLS_INSTALL_FLAGS

echo "Syncing to AGENTS.md"
npx openskills sync $SYNC_FLAGS

echo "✅ Skills setup completed"

Aufruf in GitHub Actions:

yaml
- name: Setup skills
  run: .github/scripts/setup-skills.sh

Sie sollten sehen: Das Skript konfiguriert automatisch Skill-Quellen und Flags basierend auf Umgebungsvariablen.

Erklärung:

  • Flexible Konfiguration von Skill-Quellen über Umgebungsvariablen
  • Verschiedene Umgebungen (Entwicklung, Test, Produktion) können verschiedene .env-Dateien verwenden
  • Wartbarkeit der CI/CD-Konfiguration beibehalten

Kontrollpunkte ✅

Führen Sie die folgenden Prüfungen durch, um sicherzustellen, dass Sie den Inhalt dieser Lektion beherrschen:

  • [ ] Verständnis von Zweck und Eigenschaften des nicht-interaktiven Modus
  • [ ] Fähigkeit zur nicht-interaktiven Installation mit dem -y Flag
  • [ ] Fähigkeit zur nicht-interaktiven Synchronisation mit dem -y Flag
  • [ ] Verständnis der Unterschiede zwischen interaktivem und nicht-interaktivem Modus
  • [ ] Fähigkeit zur Integration von OpenSkills in GitHub Actions
  • [ ] Fähigkeit zur Installation von Skills während Docker-Image-Builds
  • [ ] Wissen über den Umgang mit privaten Repositorys in CI/CD
  • [ ] Verständnis der Best Practices für Umgebungsvariablenkonfiguration

Häufige Fehler

Häufiger Fehler 1: Vergessen des -y Flags

Fehlerszenario: Vergessen des -y Flags in GitHub Actions

yaml
# ❌ Fehler: -y Flag vergessen
- name: Install skills
  run: openskills install anthropics/skills

Problem:

  • CI-Umgebung hat kein interaktives Terminal (TTY)
  • Der Befehl wartet auf Benutzereingabe, führt zum Timeout des Workflows
  • Fehlermeldung möglicherweise nicht offensichtlich

Richtige Vorgehensweise:

yaml
# ✅ Richtig: Verwenden des -y Flags
- name: Install skills
  run: openskills install anthropics/skills -y

Häufiger Fehler 2: Verlust der Konfiguration durch Skill-Überschreibung

Fehlerszenario: CI/CD überschreibt bei jedem Lauf Skills, was zum Verlust lokaler Konfigurationen führt

bash
# Installation von Skills in globales Verzeichnis in CI/CD
openskills install anthropics/skills --global -y

# Lokaler Benutzer installiert in Projektverzeichnis, wird durch global überschrieben

Problem:

  • Global installierte Skills haben niedrigere Priorität als lokale Projekt-Skills
  • Inkonsistente Installationsorte zwischen CI/CD und lokal führen zu Verwirrung
  • Kann sorgfältig konfigurierte lokale Benutzer-Skills überschreiben

Richtige Vorgehensweise:

bash
# Option 1: CI/CD und lokal verwenden beide Projekt-Installation
openskills install anthropics/skills -y

# Option 2: Universal-Modus verwenden, um Konflikte zu vermeiden
openskills install anthropics/skills --universal -y

# Option 3: CI/CD verwendet dediziertes Verzeichnis (über benutzerdefinierten Ausgabepfad)
openskills install anthropics/skills -y
openskills sync -o .agents-md/AGENTS.md -y

Häufiger Fehler 3: Unzureichende Git-Zugriffsrechte

Fehlerszenario: Installation von Skills aus privaten Repositorys ohne Konfiguration von SSH-Schlüsseln

yaml
# ❌ Fehler: SSH-Schlüssel nicht konfiguriert
- name: Install from private repo
  run: openskills install [email protected]:your-org/private-skills.git -y

Problem:

  • CI-Umgebung kann nicht auf privates Repository zugreifen
  • Fehlermeldung: Permission denied (publickey)
  • Klonen schlägt fehl, Workflow schlägt fehl

Richtige Vorgehensweise:

yaml
# ✅ Richtig: SSH-Schlüssel konfigurieren
- name: Setup SSH key
  env:
    SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  run: |
    mkdir -p ~/.ssh
    echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh-keyscan github.com >> ~/.ssh/known_hosts

- name: Install from private repo
  run: openskills install [email protected]:your-org/private-skills.git -y

Häufiger Fehler 4: Zu große Docker-Images

Fehlerszenario: Installation von Skills im Dockerfile führt zu übermäßigem Image-Volumen

dockerfile
# ❌ Fehler: Jedes Mal neu klonen und installieren
RUN openskills install anthropics/skills -y

Problem:

  • Bei jedem Build wird Repository von GitHub geklont
  • Erhöht Build-Zeit und Image-Volumen
  • Netzwerkprobleme können zu Fehlern führen

Richtige Vorgehensweise:

dockerfile
# ✅ Richtig: Multi-Stage-Build und Caching verwenden
FROM node:20-alpine AS skills-builder

RUN npm install -g openskills
RUN openskills install anthropics/skills -y
RUN openskills sync -y

# Haupt-Image
FROM node:20-alpine

WORKDIR /app

# Installierte Skills kopieren
COPY --from=skills-builder ~/.claude /root/.claude
COPY --from=skills-builder /app/AGENTS.md /app/

# Anwendungscode kopieren
COPY . .

# Andere Build-Schritte...

Häufiger Fehler 5: Vergessen der Skill-Aktualisierung

Fehlerszenario: CI/CD installiert bei jedem Lauf alte Skill-Versionen

yaml
# ❌ Fehler: Nur Installation, keine Aktualisierung
- name: Install skills
  run: openskills install anthropics/skills -y

Problem:

  • Skill-Repository möglicherweise bereits aktualisiert
  • Von CI/CD installierte Skill-Version nicht aktuell
  • Kann zu fehlenden Funktionen oder Bugs führen

Richtige Vorgehensweise:

yaml
# ✅ Richtig: Zuerst aktualisieren, dann synchronisieren
- name: Update skills
  run: openskills update -y

- name: Sync to AGENTS.md
  run: openskills sync -y

# oder Aktualisierungsstrategie bei Installation verwenden
- name: Install or update skills
  run: |
    openskills install anthropics/skills -y || openskills update -y

Zusammenfassung

Kernpunkte:

  1. Nicht-interaktiver Modus für CI/CD: Verwenden Sie das -y Flag, um alle interaktiven Eingabeaufforderungen zu überspringen
  2. Das -y Flag des install-Befehls: Automatische Installation aller gefundenen Skills, Überschreiben vorhandener Skills
  3. Das -y Flag des sync-Befehls: Automatische Synchronisation aller Skills zu AGENTS.md
  4. GitHub Actions-Integration: Verwenden Sie nicht-interaktive Befehle im Workflow zur automatisierten Skill-Verwaltung
  5. Docker-Szenario: Installieren Sie Skills während Image-Build-Phase, stellen Sie sofortige Verfügbarkeit nach Container-Start sicher
  6. Privates Repository-Zugriff: Konfigurieren Sie Zugriff auf private Skill-Repositorys über SSH-Schlüssel
  7. Umgebungsvariablenkonfiguration: Flexible Konfiguration von Skill-Quellen und Installationsparametern über Umgebungsvariablen

Entscheidungsprozess:

[OpenSkills in CI/CD verwenden] → [Skills installieren]

                            [Verwenden Sie -y Flag zum Überspringen von Interaktionen]

                            [AGENTS.md generieren]

                            [Verwenden Sie -y Flag zum Überspringen von Interaktionen]

                            [Verifizieren, dass Skills korrekt installiert sind]

Merkhilfen:

  • Bei CI/CD -y nicht vergessen: Nicht-interaktiv ist der Schlüssel
  • GitHub Actions mit SSH: Private Repositorys benötigen Schlüsselkonfiguration
  • Docker-Build frühzeitig installieren: Auf Image-Volumen achten
  • Umgebungsvariablen konfigurieren: Verschiedene Umgebungen unterscheiden

Vorschau auf nächste Lektion

In der nächsten Lektion lernen wir Sicherheitshinweise.

Sie werden lernen:

  • Sicherheitsmerkmale und Schutzmechanismen von OpenSkills
  • Funktionsweise des Pfadtraversal-Schutzes
  • Sichere Verarbeitung von symbolischen Links
  • Sicherheitsmaßnahmen für YAML-Parsing
  • Best Practices für Berechtigungsverwaltung

Anhang: Quellcode-Referenz

Klicken zum Anzeigen von Quellcodepositionen

Aktualisierungsdatum: 2026-01-24

FunktionDateipfadZeilen
Nicht-interaktive Installationsrc/commands/install.ts424-455
Konflikterkennung und Überschreibungsrc/commands/install.ts521-550
Nicht-interaktive Synchronisationsrc/commands/sync.ts46-93
Kommandozeilenparameter-Definitionsrc/cli.ts49
Kommandozeilenparameter-Definitionsrc/cli.ts65

Wichtige Konstanten:

  • -y, --yes: Kommandozeilenflag zum Überspringen interaktiver Auswahl

Wichtige Funktionen:

  • warnIfConflict(skillName, targetPath, isProject, skipPrompt): Erkennen von Skill-Konflikten und Entscheidung über Überschreibung
  • installFromRepo(): Installation von Skills aus Repository (unterstützt nicht-interaktiven Modus)
  • syncAgentsMd(): Synchronisation von Skills zu AGENTS.md (unterstützt nicht-interaktiven Modus)

Geschäftsregeln:

  • Bei Verwendung des -y Flags werden alle interaktiven Eingabeaufforderungen übersprungen
  • Wenn ein Skill bereits vorhanden ist, überschreibt der nicht-interaktive Modus automatisch (zeigt Overwriting: <skill-name>)
  • Nicht-interaktiver Modus funktioniert in headless-Umgebungen (ohne TTY)
  • Die Befehle install und sync unterstützen beide das -y Flag