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
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
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
# 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
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)
Andere ErweiterungenFehlermeldungen 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.