Beschreibung
Entdecken Sie GitHub-Repositorien, die eine SKILL.md-Datei enthalten, und erstellen Sie eine Shortlist, indem Sie SEART-CSV-Exporte (Repository-Listen) einlesen, jedes Repository auf passende Dateien scannen und die Ergebnisse in eine einzelne Ausgabe-CSV für die nachgelagerte Verarbeitung exportieren.
Dieses Skill ist für KI-Codierungsagenten und Automatisierungsskripte konzipiert, um wiederholbare, schreibgeschützte Mining-Durchläufe über große Repository-Sets mit ratenlimit-bewusstem Scannen und fortsetzbarer Ausführung durchzuführen.
Wann dieses Skill verwendet werden sollte
Verwenden Sie dieses Skill, wenn Sie:
- Einen Ordner mit SEART-generierten CSV-Dateien haben, die GitHub-Repository-Identifikatoren enthalten.
- Repositorien finden müssen, die
SKILL.mdenthalten (standardmäßig exakter Name). - Eine Shortlist-CSV für die spätere Verarbeitung exportieren müssen (Herunterladen, Parsen, Indizieren).
Verwenden Sie dieses Skill nicht zur Inhalts-Extraktion, Lizenz-Compliance-Prüfung, Schwachstellen-Scanning oder zum Ändern von Repositorien.
Eingaben
Erforderlich
-
SEART-CSV-Ordner
- Pfad zu einem Verzeichnis, das eine oder mehrere
.csv-Dateien enthält. - Jede CSV muss ausreichend Informationen enthalten, um einen GitHub-Repository-Identifikator in der Form
owner/repozu rekonstruieren.
- Pfad zu einem Verzeichnis, das eine oder mehrere
-
Ausgabe-CSV-Pfad
- Pfad, in den die Scanergebnisse geschrieben werden sollen.
Optionale Konfiguration
match_name: StandardSKILD.mdcase_sensitive: Standardtruesearch_paths: Standard["/SKILL.md"]- Sie können diese Liste erweitern, um bei Bedarf gängige Pfade einzuschließen.
include_negative_results: Standardtrue- Wenn
false, werden nur Repositorien ausgegeben, bei denen eine Übereinstimmung gefunden wurde.
- Wenn
max_repos: Standard0(bedeutet kein Limit)resume: Standardtrue- Ermöglicht das Fortsetzen ab einer vorherigen Ausgabedatei.
concurrency: Standard8min_stars: Standard0allow_forks: Standardtrueallow_archived: Standardtrue
Erwartetes CSV-Schema (SEART)
SEART-Exporte variieren. Dieses Skill unterstützt mehrere Muster. Ein Repo kann aus einem dieser Muster abgeleitet werden:
Bevorzugte Spaltenmuster
full_name(Beispiel:psf/requests)repo(Beispiel:psf/requests)repository(Beispiel:psf/requests)
Alternative Muster
ownerundname(kombinieren zuowner/name)orgundrepo_name(kombinieren zuorg/repo_name)repo_ownerundrepo_name(kombinieren zurepo_owner/repo_name)html_urloderurl(extrahieren Sieowner/repoaushttps://github.com/owner/repo)
Parsing-Regeln
- Leerzeichen entfernen.
.git-Suffix entfernen, falls vorhanden.https://github.com/owner/repo/...zuowner/reponormalisieren.- Deduplizieren von Repositorien über alle CSVs hinweg.
Wenn in einer CSV keine unterstützten Spalten gefunden werden, einen Eingabefehler protokollieren und mit den restlichen Dateien fortfahren.
Ausgaben
Ausgabe-CSV: skill_md_scan_results.csv
Eine einzelne CSV mit einer Zeile pro Repository (es sei denn, Sie konfigurieren die Ausgabe mehrerer Zeilen pro Übereinstimmungspfad).
Empfohlene Spalten
repo
owner/repokanonischer Identifikator.source_csv
Dateiname der ursprünglichen SEART-CSV (oderMEHREREwenn zusammengeführt).found
true|false.match_name
Die verwendete Dateinamenregel, normalerweiseSKILL.md.match_path
Der gefundene Pfad (Beispiel:/SKILL.md).default_branch
Name des Standardbranches, falls verfügbar.ref_scanned
Verwendeter Branch- oder Commit-Ref (Beispiel:HEADodermain).match_url
Kanonische URL zur Datei, falls gefunden.match_sha
Git-Blob-SHA, falls verfügbar.match_size_bytes
Größe, falls verfügbar.scan_method
contents_api | code_search | sparse_checkout | local_clone.http_status
Statuscode von API-Aufrufen, wo zutreffend.error_type
none | not_found | rate_limited | auth | network | invalid_repo | other.error_message
Kurze Fehlerdetails, keine Geheimnisse enthalten.scanned_at_utc
ISO-Zeitstempel für den Scan.stars(optional)fork(optional)archived(optional)
Shortlist-CSV (optional)
Wenn include_negative_results=false, wird die Ausgabe selbst zur Shortlist. Andernfalls generieren Sie eine zweite Datei:
skill_md_shortlist.csv, die nurfound=trueenthält.
Fähigkeiten
1) SEART-CSV-Ordner einlesen
- Alle
.csv-Dateien in einem Verzeichnis finden (rekursiv optional). - Repository-Identifikatoren mit robuster Spaltenerkennung extrahieren.
- Deduplizieren und in eine kanonische Repo-Liste normalisieren.
2) Repositorien auf SKILL.md scannen
Dieses Skill verwendet eine abgestufte, ratenlimit-bewusste Strategie:
Tier A (bevorzugt): GitHub Contents API
Am schnellsten und günstigsten, wenn der genaue Pfad bekannt ist.
- Kandidatenpfade (Standard
/SKILL.md) gegen den Standard-Branch-Ref prüfen. - 200 als gefunden, 404 als nicht gefunden erfassen.
Tier B (optional): GitHub-Code-Suche (Dateinamensuche innerhalb des Repos)
Nur verwenden, wenn:
- Sie
SKILL.mdin Unterverzeichnissen finden möchten. - Sie Groß-/Kleinschreibungs-unabhängige Übereinstimmung wünschen.
- Die Pfade der Contents API unbekannt sind.
Empfohlene Abfrageform:
repo:owner/repo filename:SKILL.md
Tier C (Fallback): Flacher Checkout mit Sparse Checkout
Nur verwenden, wenn APIs nicht verfügbar sind, ratenlimitiert sind oder Sie GitHub Enterprise ohne Such-APIs unterstützen müssen.
- Einen gefilterten Klon durchführen, der vollständige Historie und große Blobs vermeidet, wo möglich.
- Sparse Checkout verwenden, um nur Kandidatenpfade abzurufen.
3) Ergebnisse in Ausgabe-CSV exportieren
- Inkrementell (streaming) schreiben, um Datenverlust zu vermeiden.
- Deterministische Spalten sicherstellen.
- Fortsetzungsmodus unterstützen, indem bereits gescannte Repos übersprungen werden.
Arbeitsablauf
Schritt 0: Vorbedingungen
- Nur Leseoperationen.
- Stellen Sie sicher, dass Sie eine GitHub-Authentifizierung für höhere Ratenlimits haben, wenn Sie viele Repos scannen.
Umgebungsoptionen (in Prioritätsreihenfolge aufgelöst):
--github-tokens ghp_tok1,ghp_tok2CLI-Flag — Komma-separierte Liste für Multi-Token-Rotation (5000 req/Std. pro Token)--github-token ghp_tokCLI-Flag — Einzel-Token-OverrideGH_TOKENS=ghp_tok1,ghp_tok2— Umgebungsvariable, Komma-separiert (neue Multi-Token-Variable)GH_TOKEN=ghp_tok— Umgebungsvariable, Einzel-Token (rückwärtskompatibel)GITHUB_TOKEN=ghp_tok— Umgebungsvariable, Fallback-Einzel-Token- GitHub CLI
gh auth login— für interaktive Nutzung - Nicht authentifiziert — nur 60 Kern-Requests/Std. (nicht geeignet für Bulk-Scans)
Wenn mehrere Token bereitgestellt werden, wählt der TokenPool in src/github_client/ automatisch:
- Das Token mit dem höchsten verbleibenden Kontingent bei jeder Anfrage.
- Aktualisiert das Pro-Token-Kontingent aus
X-RateLimit-*-Antwort-Headern. - Rotiert zum nächsten verfügbaren Token, wenn das aktuelle erschöpft ist.
- Schläft bis zur frühesten Reset-Zeit, wenn alle Token erschöpft sind.
- Wirft
RateLimitExhaustedError, wenn die Wartezeit das konfigurierbare Maximum überschreiten würde.
Schritt 1: Die Repo-Liste aus SEART-CSVs erstellen
- Eingabe-CSVs auflisten.
- Für jede CSV:
- Repo-Spalten erkennen.
owner/repoextrahieren und normalisieren.source_csvnachverfolgen.
- Über alle Dateien hinweg deduplizieren.
Schritt 2: Preflight-Prüfungen
- Token-Präsenz validieren (warnen, wenn nicht authentifiziert).
- Optional den Ratenlimit-Status abfragen und konservative Gleichzeitigkeit einstellen.
Schritt 3: Jedes Repository scannen
Für jedes owner/repo:
- (Optional) Repo-Metadaten abrufen:
- Existenz des Repos bestätigen.
- Standard-Branch, archiviert, Fork, Sterne erfassen.
- Filter anwenden (Sterne, Forks, archiviert).
- Mit Tier A nach
SKILL.mdscannen. - Wenn aktiviert und nötig, Tier B für tiefere Suche ausführen.
- Wenn aktiviert und nötig, Tier C als Fallback ausführen.
- Eine einzelne beste Übereinstimmung (oder alle Übereinstimmungen, falls konfiguriert) erfassen.
- Die Ergebniszeile sofort schreiben.
Schritt 4: Shortlist erstellen
- Filtern, wo
found=true. - Shortlist-CSV exportieren.
Schritt 5: Zusammenfassungsbericht
Am Ende berichten:
- Gesamtzahl der gescannten Repos.
- Gefundene Anzahl und Prozentsatz.
- Fehleraufschlüsselung nach
error_type. - Effektive Scanrate und etwaige Ratenlimitierungen.
Verwendungsbeispiele
Beispiel A: Nur exakten Root-Pfad scannen (schnell)
- Eingaben:
seart_dir = data/seart_csvs/search_paths = ["/SKILL.md"]
- Ausgabe:
outputs/skill_md_scan_results.csv
Beispiel B: SKILL.md überall im Repo finden
- Eingaben:
- Code-Suche aktivieren.
case_sensitive=false
- Ausgabe:
outputs/skill_md_scan_results.csvoutputs/skill_md_shortlist.csv
Beispiel C: Teilscan fortsetzen
- Wenn
outputs/skill_md_scan_results.csvbereits existiert, überspringen Sie bereits vorhandene Repos und fahren fort.
Betriebliche Einschränkungen und Schutzmaßnahmen
Nur-Lesen
- Keine Commits pushen, keine PRs öffnen, keine Issues erstellen oder Repository-Inhalte ändern.
- Nicht in Benutzerverzeichnisse außerhalb des gewählten Ausgabeordners schreiben.
Ratenlimits und höfliches Scannen
- Contents-API-Prüfungen gegenüber Klonen bevorzugen.
- Begrenzte Gleichzeitigkeit und exponentiellen Backoff bei:
403sekundären Ratenlimits429zu viele Anfragen
- Teilergebnisse kontinuierlich speichern.
Datenminimierung
- Keine vollständigen Repositorien herunterladen, es sei denn, der Fallback ist erforderlich.
- Keine Token, Cookies oder rohe Authentifizierungsheader in Protokollen oder Ausgabe-CSV speichern.
Reproduzierbarkeit
scanned_at_utcundref_scannederfassen.- Konfiguration (Pfade, Groß-/Kleinschreibung, aktivierte Stufen) zusammen mit den Ausgaben speichern.
Fehlerbehandlungsregeln
Repository-Parsing-Fehler
- Wenn eine Zeile nicht als
owner/repogeparst werden kann, verwerfen Sie sie und protokollieren Sie eine Zusammenfassung der Zeilen-Parsing-Fehler pro CSV.
Fehlende oder private Repositorien
- Wenn Repo 404 oder nicht zugänglich ist:
error_type=invalid_repoodererror_type=authfound=false
Vorübergehende Fehler
- Netzwerk-Timeouts, 5xx-Antworten:
- Wiederholung mit Backoff
- Wenn immer noch fehlschlägt,
error_type=networksetzen und fortfahren
Ratenlimitierung
- Wenn ratenlimitiert:
- Gleichzeitigkeit reduzieren
- Backoff und Wiederholung
- Wenn immer noch blockiert,
error_type=rate_limitederfassen
Vorgeschlagene Standardkonfiguration
match_name = "SKILL.md"case_sensitive = truesearch_paths = ["/SKILL.md"]include_negative_results = trueresume = trueconcurrency = 8- Aktivierte Stufen:
- Tier A: an
- Tier B: aus (nur bei Bedarf aktivieren)
- Tier C: aus (nur bei Bedarf aktivieren)
Abschlusskriterien
- Ausgabe-CSV existiert und enthält eine Zeile pro gescanntem Repo (oder nur gefundenen Repos, wenn konfiguriert).
found=true-Zeilen enthalten eine funktionierendematch_urlundmatch_path.- Scan ist ohne Duplizierung von Zeilen fortsetzbar.
- Zusammenfassungsstatistiken werden gemeldet und Fehleraufschlüsselung ist verfügbar.
Hinweise zur nachgelagerten Verarbeitung
Die von diesem Skill erstellte Shortlist ist als Eingabe für eine spätere Pipeline-Stufe gedacht, zum Beispiel:
- Herunterladen und Parsen von
SKILL.md-Inhalten - Extrahieren von strukturierten Abschnitten (Description, Capabilities, Workflow, Constraints)
- Erstellen eines Datensatzes von agentenauffindbaren Skills pro Repository
Nachgelagerte Stufen sollten den Inhalt von SKILL.md als nicht vertrauenswürdige Eingabe behandeln und extrahierten Text vor der Verwendung bereinigen.