Parameterübergabe und -empfang bei Skills

Skills erhalten keine expliziten Parameter wie traditionelle Funktionen; stattdessen nehmen sie Eingabeinformationen über Claudes Kontext wahr.

Das Verständnis dieses Mechanismus der „impliziten Parameterübergabe“ ist der Schlüssel zum Schreiben praktischer Skills.


Skills: Wie man Parameter erhält

Wenn Claude einen Skill liest, wird der gesamte Gesprächskontext zu den Parametern des Skills.

Das bedeutet, dass die Aussagen des Nutzers, hochgeladene Dateien und historische Gesprächsaufzeichnungen alle als Eingabequellen für den Skill dienen können.

Eingabequellen Beispiel Beschreibung
Aktuelle Nachricht des Nutzers „Hilf mir, diese PDF zu verarbeiten“ Die direkteste Eingabe
Hochgeladene Dateien Nutzer hat report.pdf hochgeladen Über Pfad oder Inhalt übergeben
Historischer Gesprächsverlauf Zuvor besprochene Datenformate Im Kontext referenzierbar
Systemvariablen Aktuelles Datum, Pfad des Arbeitsverzeichnisses Automatisch von Claude wahrgenommen

Erwartete Eingabe in SKILL.md deklarieren

In SKILL.md können Beschreibungen in natürlicher Sprache Claude mitteilen, welche Informationen aus dem Kontext extrahiert werden sollen.

Das Folgende ist ein Skill-Beispiel für die Verarbeitung von CSV-Dateien, das zeigt, wie Eingabeerwartungen in den Anweisungen deklariert werden:

Beispiel

---
name: csv-analyzer
description: Vom Benutzer hochgeladene CSV-Dateien analysieren und statistische Zusammenfassungen ausgeben. Wird ausgelöst, wenn der Benutzer CSV- oder tabellarische Datenanalyse erwähnt.
---

# CSV-Analysator

## Eingabeanforderungen

Der Benutzer sollte die folgenden Informationen bereitstellen (aus dem Gesprächskontext entnommen):
- **Dateipfad**: Der Pfad der hochgeladenen CSV-Datei (befindet sich unter/mnt/user-data/uploads/)
- **Analyseziel**(Optional): Was der Benutzer wissen möchte, wie z. B."Nullwerte finden"、"statistische Verteilung"
- **Ausgabeformat**(Optional): Tabelle, Diagramm oder Textzusammenfassung

Wenn die oben genannten Informationen nicht eindeutig sind, bestätigen Sie diese proaktiv mit dem Benutzer, bevor Sie ausführen.

Die "Eingabeanforderungen" in einem Skill sind für Claude selbst geschrieben. Claude extrahiert proaktiv Informationen aus dem Kontext basierend auf dieser Spezifikation oder fragt den Benutzer nach Klärung, wenn die Informationen unzureichend sind.


Strukturierte Parameter über Skripte empfangen

Wenn ein Skill Python- oder Shell-Skripte enthält, werden Parameter über Kommandozeilenargumente oder Standardeingabe übergeben.

Dies ist genau dasselbe wie die Parameterbehandlung in gewöhnlichen Skripten.

Beispiel

# Dateipfad: scripts/analyze.py
import argparse
import pandas as pd

def main():
    # Kommandozeilenargumente definieren
    parser = argparse.ArgumentParser(description="Skript zur CSV-Dateianalyse")
    parser.add_argument("file",        help="Erforderlich: CSV-Dateipfad")
    parser.add_argument("--col",       help="Optional: Geben Sie den Spaltennamen an, der analysiert werden soll")
    parser.add_argument("--limit", type=int, default=10,
                        help="Optional: Maximale Anzahl der anzuzeigenden Zeilen, Standard 10")
    args = parser.parse_args()

    # Datei lesen
    df = pd.read_csv(args.file)

    # Spalten nach Bedarf filtern
    if args.col:
        df = df[[args.col]]

    # Statistische Informationen ausgeben
    print(df.head(args.limit).to_string())
    print("\n--- Statistische Zusammenfassung ---)
    print(df.describe())

if __name__ == "__main__":
    main()

Wie Claude dieses Skript in SKILL.md aufruft:

Beispiel

## Analyse ausführen

Nachdem der Dateipfad ermittelt wurde, führen Sie den folgenden Befehl aus:

```bash
python scripts/analyze.py <Dateipfad> [--col <Spaltenname>] [--limit <Anzahl der Zeilen>]
```

Zeigen Sie dem Benutzer die Befehlszeilenausgabe an und geben Sie eine textliche Interpretation.

Spezifikationen zur Behandlung von Dateipfadparametern

Vom Benutzer hochgeladene Dateien befinden sich einheitlich unter/mnt/user-data/uploads/Pfad.

Verwenden Sie in Skill-Skripten immer absolute Pfade für den Dateizugriff, um Fehler bei der Pfadauflösung zu vermeiden.

Beispiel

import os

# Korrekt: Absoluten Pfad verwenden
UPLOAD_DIR = "/mnt/user-data/uploads"
file_path = os.path.join(UPLOAD_DIR, "report.csv")

# Falsch: Verwendung eines relativen Pfads (schlägt aufgrund unterschiedlicher Arbeitsverzeichnisse fehl)
# file_path = "uploads/report.csv"

# Prüfen, ob die Datei existiert
if not os.path.exists(file_path):
    print(f"Fehler: Datei existiert nicht → {file_path}")
    exit(1)

Parametervalidierung: Eingabe vor der Ausführung überprüfen

Vor der Ausführung sollten Skill-Skripte immer überprüfen, dass die Schlüsselparameter gültig sind.

Dies verhindert Laufzeitabstürze, die durch fehlende Parameter oder Formatfehler verursacht werden.

Beispiel

# Dateipfad: scripts/validate_input.py
import sys
import os

def validate_csv_input(file_path: str) -> bool:
    """Überprüfen, ob die CSV-Dateieingabe gültig ist"""

    # Prüfen, ob der Dateipfad angegeben wurde
    if not file_path:
        print("Fehler: Dateipfad nicht angegeben")
        return False

    # Prüfen, ob die Datei existiert
    if not os.path.exists(file_path):
        print(f"Fehler: Datei existiert nicht → {file_path}")
        return False

    # Dateierweiterung überprüfen
    if not file_path.lower().endswith(".csv"):
        print(f"Fehler: Dateityp wird nicht unterstützt, erwartet .csv, tatsächlich → {file_path}")
        return False

    # Dateigröße prüfen (warnen, wenn 100MB überschritten werden)
    size_mb = os.path.getsize(file_path) / (1024 * 1024)
    if size_mb > 100:
        print(f"Warnung: Datei ist groß ({size_mb:.1f} MB), Verarbeitung kann langsam sein")

    return True

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Verwendung: python validate_input.py <Dateipfad>")
        sys.exit(1)

    ok = validate_csv_input(sys.argv[1])
    sys.exit(0 if ok else 1)

Fehlermeldungen bei der Parametervalidierung sollten klar angeben, was erwartet wurde und was tatsächlich empfangen wurde, damit Claude dem Benutzer leicht konkrete Gründe nennen kann.

Andere Erweiterungen