CommunityCodierung & Entwicklunggithub.com

SkillDo CLI

Skilldo liest Ihre Codebasis und generiert eine SKILLS.md-Datei, damit KI-Agenten Ihre Bibliotheken problemlos nutzen können.

Was ist SkillDo CLI?

Skilldo ist eine CLI-Pipeline mit 7 Phasen, die automatisch SKILL.md-Dateien für Softwarebibliotheken erstellt. So können KI-Agenten (wie Claude Code, Cursor, Codex) Ihre Bibliotheken ohne manuelle Konfiguration korrekt verwenden. Die Pipeline extrahiert Metadaten aus Quellcode, Dokumentation, Abhängigkeiten und Versionen, erstellt eine kompakte Fakten-Wahrheitstabelle und generiert eine validierte SKILL.md. Tool wird von Anthropic, OpenAI, Gemini und lokalen Modellen über Ollama oder CLI-Tools unterstützt. Die Laufzeit beträgt ca. 15 Minuten (mit Replay ca. 5 Minuten), mit optionaler Testvalidierung und Überprüfung auf Genauigkeit und Sicherheit. Besonders nützlich für Entwickler von Open-Source-Bibliotheken oder internen Paketen, die ihre Tools für KI-Agenten bereitstellen möchten.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add SkillDoAI/skilldo

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

Was macht SkillDo CLI?

Skilldo ist eine 7-stufige LLM-Pipeline, die SKILL.md-Dateien für Softwarebibliotheken generiert: extrahieren → mappen → lernen → fakten → erstellen → überprüfen → testen

Die Stufen 1-3 sammeln Bibliotheks-Metadaten (Quelldateien, Dokumentation, Abhängigkeiten, Version). Stufe 4 (Fakten) extrahiert eine kompakte Wahrheitstabelle mit negativen Aussagen aus den Stufen 1-3. Stufe 5 generiert die SKILL.md. Stufe 6 überprüft auf Genauigkeit/Sicherheit. Stufe 7 validiert mit generiertem Testcode.

Installation

# Homebrew
brew install skilldoai/tap/skilldo

# Aus dem Quellcode
cargo install --path .

Schnellstart

# Generiert eine SKILL.md für das aktuelle Repository
skilldo generate

# Generiert für einen bestimmten Repository-Pfad
skilldo generate /pfad/zu/bibliothek

# Sprache explizit angeben
skilldo generate --language python

# Eine bestimmte Konfiguration verwenden
skilldo generate --config skilldo.toml

Konfiguration (skilldo.toml)

Skilldo verwendet TOML-Konfigurationsdateien. Platzieren Sie skilldo.toml im Repository-Stammverzeichnis oder verwenden Sie --config.

Minimale Konfiguration (ein Anbieter)

[llm]
provider_type = "anthropic"          # anthropic, openai, gemini, openai-compatible, chatgpt
model = "claude-sonnet-4-6"
api_key_env = "ANTHROPIC_API_KEY"  # Name der Umgebungsvariable, die den Schlüssel enthält

[generation]
max_retries = 10                # Wiederholungen bei Lint-/Testfehlern
# telemetry = true              # Opt-in: Loggt Läufe in ~/.skilldo/runs.csv

Überschreibungen pro Stufe (Modelle)

Verschiedene Modelle können für Überprüfungs- und Teststufen verwendet werden:

[llm]
provider_type = "anthropic"
model = "claude-sonnet-4-6"
api_key_env = "ANTHROPIC_API_KEY"

[generation]
enable_test = true
enable_review = true
test_mode = "thorough"          # thorough, quick, adaptive, minimal

[generation.review_llm]
provider_type = "openai"
model = "gpt-5.2"
api_key_env = "OPENAI_API_KEY"

[generation.test_llm]
provider_type = "openai"
model = "gpt-5.2"
api_key_env = "OPENAI_API_KEY"

Lokale Modelle (Ollama)

[llm]
provider_type = "openai-compatible"
model = "qwen3-coder:latest"
base_url = "http://localhost:11434/v1"
api_key_env = "none"            # Ollama benötigt keinen Schlüssel

CLI-Anbieter (bestehende CLI-Tools als LLM-Backend verwenden)

[llm]
provider_type = "cli"
model = "claude-sonnet-4-6"
cli_command = "claude"
cli_args = ["-p", "--no-session-persistence", "--output-format", "text", "--dangerously-skip-permissions"]
request_timeout_secs = 900

Unterstützte CLI-Tools: claude, codex, gemini. Der Prompt wird über stdin geleitet; die Antwort von stdout erfasst.

Optional: Deklarieren, wie das CLI System-Prompts nativ akzeptiert:

cli_system_args = ["--system-prompt-file"]  # für claude (liest aus temporärer Datei)
# cli_system_args = ["-s"]            # für codex

Wenn cli_system_args gesetzt ist, werden Anweisungen über den nativen Systemkanal übermittelt, anstatt in stdin eingefügt zu werden.

Benutzerdefinierte Basis-URL (Bedrock, Vertex AI, Proxies)

Alle Anbieter unterstützen optionale base_url für benutzerdefinierte Endpunkte:

# Anthropic über AWS Bedrock
[llm]
provider_type = "anthropic"
base_url = "https://bedrock-runtime.us-east-1.amazonaws.com"

# Gemini über Google Vertex AI
[llm]
provider_type = "gemini"
base_url = "https://us-central1-aiplatform.googleapis.com"

Container-Einstellungen (optional)

[generation.container]
runtime = "podman"              # docker oder podman
timeout = 120                   # Sekunden
cleanup = true
# setup_commands = ["apt-get update && apt-get install -y cmake"]  # Wird vor Abhängigkeiten/Tests ausgeführt

Befehle

skilldo generate [PFAD]

Generiert eine SKILL.md für ein Bibliotheks-Repository.

Wichtige Flags:

  • --language <SPRACHE> — Sprache erzwingen (python, javascript, rust, go, java). Auto-Erkennung, falls weggelassen
  • --config <PFAD> — Konfigurationsdateipfad (Standard: ./skilldo.toml oder ~/.config/skilldo/config.toml)
  • --model <MODELL> — LLM-Modell überschreiben
  • --provider <ANBIETER> — LLM-Anbieter: anthropic, openai, chatgpt, gemini, openai-compatible
  • --base-url <URL> — Basis-URL für openai-compatible Anbieter
  • -i, --input <PFAD> — Vorhandene SKILL.md als Referenz für Aktualisierungen verwenden
  • -o <PFAD> — Ausgabedatei (Standard: SKILL.md)
  • --debug-stage-files <VERZ> — Rohausgabe jeder Pipeline-Stufe zur Fehlerspeicherung speichern
  • --replay-from <VERZ> — Zwischengespeicherte Ausgaben von Extrahieren/Kartieren/Lernen aus vorherigem --debug-stage-files-Lauf laden, überspringt diese LLM-Aufrufe. Reduziert Iterationszeit von ~15 min auf ~5 min
  • --no-test — Testvalidierung überspringen
  • --no-review — Überprüfungsvalidierung überspringen
  • --no-security-scan — YARA/Unicode/Injection-Scan überspringen
  • --no-parallel — Extrahieren/Kartieren/Lernen sequenziell ausführen (für lokale Modelle)
  • --best-effort — Beenden mit 0 auch bei Fehlern
  • --telemetry / --no-telemetry — Laufprotokollierung umschalten
  • --container — Test-Agent in einem Container ausführen (Standard: direkt auf der Maschine mit uv/cargo)
  • --install-source <MODUS> — Wie der Test-Agent die Bibliothek zur Code-Validierung installiert: registry (von crates.io/PyPI/npm, Standard), local-install (lokal repomounten und über Paketmanager bauen), local-mount (Repo mounten und Modulpfad direkt setzen, kein Build-Schritt)
  • --source-path <PFAD> — Lokaler Quellpfad für die Modi local-install/local-mount
  • --test-mode <MODUS> — thorough testet ALLE Muster (Standard), quick testet bis zu 3 für schnelle Iteration, minimal testet 1, adaptive startet mit 1 und erweitert
  • --review-model <MODELL> / --review-provider <ANBIETER> — Modell/Anbieter nur für die Überprüfungsstufe überschreiben
  • --test-model <MODELL> / --test-provider <ANBIETER> — Modell/Anbieter nur für die Testcode-Generierungsstufe überschreiben
  • --max-retries <N> — Maximale Anzahl der Wiederholungen von Erstellen → Validieren, bevor aufgegeben wird (Standard: aus Konfiguration)
  • --skill-version <VER> — Eine bestimmte Bibliotheksversion im Frontmatter erzwingen (z. B. "2.1.0") anstelle der Auto-Erkennung
  • --version-from <STRATEGIE> — Wie die Version erkannt wird: package (Cargo.toml/pyproject.toml), git-tag, branch, commit
  • -q, --quiet — Informationsausgabe unterdrücken (nur Warnungen/Fehler)
  • -v, --verbose — Detaillierte Debug-Ausgabe anzeigen (entspricht RUST_LOG=debug)
  • --request-timeout <SEK> — LLM-Request-Timeout in Sekunden überschreiben (Standard: 120)
  • --dry-run — Mock-LLM-Client zum Testen verwenden (keine API-Aufrufe)

skilldo lint <PFAD>

Lintet eine SKILL.md auf strukturelle Fehler (Frontmatter, Abschnitte, Code-Blöcke).

skilldo review <PFAD>

LLM-gestützte Überprüfung einer vorhandenen SKILL.md auf Genauigkeit und Sicherheit.

Wichtige Flags:

  • --config <PFAD> — Konfiguration mit LLM-Einstellungen

skilldo config check --config <PFAD>

Validiert eine Konfigurationsdatei auf Korrektheit.

skilldo auth login|status|logout

Verwaltet OAuth-Tokens für Anbieter, die OAuth verwenden (z. B. ChatGPT).

Unterstützte Sprachen

SpracheÖkosystemErkennung
Pythonpip/uv, pyproject.toml, setup.py*.py, pyproject.toml
JavaScript/TypeScriptnpm, package.json*.js, *.ts, package.json
Gogo modules, go.mod*.go, go.mod
Rustcargo, Cargo.toml*.rs, Cargo.toml
JavaMaven/Gradle, pom.xml, build.gradle*.java, pom.xml, build.gradle

Konfiguration (skilldo.toml)

Wichtige [generation]-Felder:

FeldWerteBeschreibung
languagepython, javascript (oder typescript/ts/js), rust, go, javaÜberschreibt die Auto-Erkennung
security_context"api-client" oder weglassenLockert den Sicherheitsscan für API-Client-SDKs, die Anmeldedaten/Auth diskutieren
redact_env_vars["VAR_NAME", ...]Umgebungsvariablenwerte werden in Testausgaben/Logs mit ***GESCHWÄRZT*** maskiert
custom_instructions"""..."""Repo-spezifische Anweisungen für die Erstellungsstufe (überschreibt Stil-/Inhaltsregeln)
enable_testtrue/falseTestvalidierung ein-/ausschalten (Standard: true)
enable_reviewtrue/falseÜberprüfungsvalidierung ein-/ausschalten (Standard: true)
test_modethorough/quick/minimal/adaptiveAlle/bis zu 3/1/1+ Muster testen
max_retriesintegerMaximale Anzahl Wiederholungen Erstellen→Validieren (Standard: 10)

Modellkommunikation

Das Modell meldet Unsicherheiten über HTML-Kommentare in der Ausgabe (vor der endgültigen SKILL.md entfernt):

  • <!-- SKILLDO-CONFLICT: beschreibung --> — Dokumentations- vs. Code-Konflikte gefunden
  • <!-- SKILLDO-UNVERIFIED: beschreibung --> — APIs, die das Modell nicht aus dem Quellcode verifizieren konnte

Zeigen Sie diese mit RUST_LOG=info oder RUST_LOG=debug an. CONFLICT wird auf info, UNVERIFIED auf warn protokolliert.

Häufige Workflows

Mit Anthropic generieren

source ~/.anthropic
skilldo generate --provider anthropic --model claude-sonnet-4-6

Mit OpenAI generieren

source ~/.openai
skilldo generate --provider openai --model gpt-5.2

Mit lokalem Ollama generieren

skilldo generate --provider openai-compatible --model qwen3-coder:latest --base-url http://localhost:11434/v1

Batch-Generierung (mehrere Repos)

for repo in /pfad/zu/repos/*/; do
  skilldo generate "$repo" --config shared-config.toml --best-effort
done

Für ein API-Client-SDK generieren

# skilldo.toml — für Bibliotheken, die API-Schlüssel/Auth diskutieren
[generation]
security_context = "api-client"
redact_env_vars = ["MY_API_KEY"]
export MY_API_KEY="..."  # für Testvalidierung erforderlich
skilldo generate . --config skilldo.toml

Schnelle Prompt-Iteration mit Replay

# Cache einmal erfassen
skilldo generate /pfad/zu/bib --debug-stage-files /tmp/cache -o /tmp/baseline.md

# An Prompts iterieren (nur Erstellungsstufe läuft, ~5 min vs ~15 min)
skilldo generate /pfad/zu/bib --replay-from /tmp/cache -o /tmp/variant.md

Pipeline-Stufen debuggen

skilldo generate . --debug-stage-files ./debug-output/
# Schreibt: 1-extract.md, 2-map.md, 3-learn.md, 4-create-raw.md, 4-create-system.md, facts.md,
#          5-review-*.txt, 6-normalized.md

Eine vorhandene SKILL.md überprüfen

skilldo review SKILL.md --config skilldo.toml

Telemetrie

Wenn telemetry = true, hängt jeder Lauf eine Zeile an ~/.skilldo/runs.csv an:

  • Zeitstempel, Sprache, Bibliotheksname, Version
  • Verwendete Modelle und Anbieter (generieren, überprüfen, testen)
  • Bestanden/fehlgeschlagen, Wiederholungsanzahl, Dauer, Fehlerdetails

Die Daten sind nur lokal – es wird nichts gesendet.

Fehlerbehebung

  • "Keine Testdateien gefunden" — eine Warnung, kein Fehler. Die Pipeline wird ohne testabgeleitete Muster fortgesetzt. Verwenden Sie --language, um zu überschreiben, wenn die Erkennung falsch ist.
  • Testfehler wiederholen sich — Versuchen Sie --test-mode minimal oder --no-test für einen ersten Durchlauf.
  • Ratenbegrenzung — Erhöhen Sie retry_delay in der Konfiguration oder wechseln Sie zu einem lokalen Modell.
  • OAuth-Fehler — Führen Sie skilldo auth status --config <pfad> aus, um den Token-Status zu überprüfen.
  • install_source-Fehler bei Nicht-Python — local-install/local-mount funktioniert nur für Python. Verwenden Sie für andere Sprachen das Standard-registry.

Dokumentation

Vollständige Dokumentation – Konfiguration, Sprachen, Architektur, Authentifizierung, Best Practices und Telemetrie: docs/

Verwandte Skills