CommunityCodierung & Entwicklunggithub.com

coreyyangsmith/msr-skills-md

Name: Mining Software Repositories – Beschreibung: Verwenden beim Erstellen von Skripten zum Mining von GitHub-Repositorien.

Was ist msr-skills-md?

Dieses Skill ist für KI-Codierungsagenten und Automatisierungsskripte konzipiert, die wiederholbare, schreibgeschützte Mining-Durchläufe über große Repository-Sets mit ratenlimit-bewusstem Scannen und fortsetzbarer Ausführung durchführen. Es entdeckt und erstellt eine Shortlist von GitHub-Repositorien, die eine `SKILL.md`-Datei enthalten, indem es SEART-CSV-Exporte (Repository-Listen) einliest, jedes Repository auf passende Dateien scannt und die Ergebnisse in eine einzelne Ausgabe-CSV für die nachgelagerte Verarbeitung exportiert. Der Mining-Prozess verwendet eine abgestufte, ratenlimit-bewusste Strategie: Tier A (bevorzugt) verwendet die GitHub Contents API für schnelle und kostengünstige Prüfungen, Tier B (optional) verwendet die GitHub-Code-Suche für flexible Pfad- und Groß-/Kleinschreibungssuche, und Tier C (Fallback) verwendet einen flachen Checkout mit Sparse Checkout, wenn APIs nicht verfügbar oder ratenlimitiert sind. Das Skill unterstützt die Fortsetzung von Teilscans, mehrere GitHub-Token für höhere Ratenlimits und einen konfigurierbaren Ausgabepfad mit detaillierten Ergebnisspalten wie Übereinstimmungs-URL, SHA, Dateigröße und Fehlertyp.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add coreyyangsmith/msr-skills-md

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

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.md enthalten (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

  1. 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/repo zu rekonstruieren.
  2. Ausgabe-CSV-Pfad

    • Pfad, in den die Scanergebnisse geschrieben werden sollen.

Optionale Konfiguration

  • match_name: Standard SKILD.md
  • case_sensitive: Standard true
  • search_paths: Standard ["/SKILL.md"]
    • Sie können diese Liste erweitern, um bei Bedarf gängige Pfade einzuschließen.
  • include_negative_results: Standard true
    • Wenn false, werden nur Repositorien ausgegeben, bei denen eine Übereinstimmung gefunden wurde.
  • max_repos: Standard 0 (bedeutet kein Limit)
  • resume: Standard true
    • Ermöglicht das Fortsetzen ab einer vorherigen Ausgabedatei.
  • concurrency: Standard 8
  • min_stars: Standard 0
  • allow_forks: Standard true
  • allow_archived: Standard true

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

  • owner und name (kombinieren zu owner/name)
  • org und repo_name (kombinieren zu org/repo_name)
  • repo_owner und repo_name (kombinieren zu repo_owner/repo_name)
  • html_url oder url (extrahieren Sie owner/repo aus https://github.com/owner/repo)

Parsing-Regeln

  • Leerzeichen entfernen.
  • .git-Suffix entfernen, falls vorhanden.
  • https://github.com/owner/repo/... zu owner/repo normalisieren.
  • 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/repo kanonischer Identifikator.
  • source_csv
    Dateiname der ursprünglichen SEART-CSV (oder MEHRERE wenn zusammengeführt).
  • found
    true|false.
  • match_name
    Die verwendete Dateinamenregel, normalerweise SKILL.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: HEAD oder main).
  • 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 nur found=true enthä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.md in 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_tok2 CLI-Flag — Komma-separierte Liste für Multi-Token-Rotation (5000 req/Std. pro Token)
  • --github-token ghp_tok CLI-Flag — Einzel-Token-Override
  • GH_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

  1. Eingabe-CSVs auflisten.
  2. Für jede CSV:
    • Repo-Spalten erkennen.
    • owner/repo extrahieren und normalisieren.
    • source_csv nachverfolgen.
  3. Ü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:

  1. (Optional) Repo-Metadaten abrufen:
    • Existenz des Repos bestätigen.
    • Standard-Branch, archiviert, Fork, Sterne erfassen.
    • Filter anwenden (Sterne, Forks, archiviert).
  2. Mit Tier A nach SKILL.md scannen.
  3. Wenn aktiviert und nötig, Tier B für tiefere Suche ausführen.
  4. Wenn aktiviert und nötig, Tier C als Fallback ausführen.
  5. Eine einzelne beste Übereinstimmung (oder alle Übereinstimmungen, falls konfiguriert) erfassen.
  6. 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.csv
    • outputs/skill_md_shortlist.csv

Beispiel C: Teilscan fortsetzen

  • Wenn outputs/skill_md_scan_results.csv bereits 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:
    • 403 sekundären Ratenlimits
    • 429 zu 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_utc und ref_scanned erfassen.
  • Konfiguration (Pfade, Groß-/Kleinschreibung, aktivierte Stufen) zusammen mit den Ausgaben speichern.

Fehlerbehandlungsregeln

Repository-Parsing-Fehler

  • Wenn eine Zeile nicht als owner/repo geparst 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_repo oder error_type=auth
    • found=false

Vorübergehende Fehler

  • Netzwerk-Timeouts, 5xx-Antworten:
    • Wiederholung mit Backoff
    • Wenn immer noch fehlschlägt, error_type=network setzen und fortfahren

Ratenlimitierung

  • Wenn ratenlimitiert:
    • Gleichzeitigkeit reduzieren
    • Backoff und Wiederholung
    • Wenn immer noch blockiert, error_type=rate_limited erfassen

Vorgeschlagene Standardkonfiguration

  • match_name = "SKILL.md"
  • case_sensitive = true
  • search_paths = ["/SKILL.md"]
  • include_negative_results = true
  • resume = true
  • concurrency = 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 funktionierende match_url und match_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.

Verwandte Skills