CommunityCodierung & Entwicklunggithub.com

rizqirizqi/astroidal

Überprüft Code mit Astroidal, der KI-Code-Review-Karte, Bewertung und Hilfe. Verwende es, wenn der Benutzer ein Code-Review, Pull-Request-Review, Fehlersuche, Sicherheitsüberprüfung, Architektur-Review, UX-Flow-Review anfordert oder Astroidal ausführen möchte. Funktioniert für eine Änderung, einen Commit, gestagte oder ungestagte Bearbeitungen sowie für eine Reihe von Pull-Requests.

Was ist astroidal?

Astroidal ist ein KI-gestütztes Code-Review-Tool, das als Karte, Bewerter und Helfer fungiert. Es analysiert den Blast Radius einer Code-Änderung, bewertet die Überprüfbarkeit und priorisiert die Ergebnisse. Das Tool erstellt Diagramme und Tabellen in Dateien und liefert eine kurze Zusammenfassung als Chat-Antwort. Es unterstützt verschiedene Code-Review-Formate wie einzelne Änderungen, Commits, gestagte oder ungestagte Bearbeitungen sowie Stapel von Pull-Requests. Astroidal kann mit lokalen Installationen über `npx`, `PATH` oder eine lokale Kopie ausgeführt werden und bietet spezifische Befehle für verschiedene Anwendungsfälle, wie die Analyse von Pull-Requests, Branches oder Commits. Es integriert sich mit `gh` und `glab` für GitHub- und GitLab-Workflows, ohne die Plattformen jedoch zu überlasten. Die Suche nach Bugs erfolgt über eine detaillierte Schnittstelle, die gelesene Pakete und eine Bug-Katalog-Datei verwendet. Gefundene Probleme werden in einer JSON-Datei strukturiert mit Schweregrad, Pfad, Zitat und Empfehlung dokumentiert. Abschließend bewertet Astroidal die Ergebnisse (`rank`) und gibt eine kurze Zusammenfassung aus, die entweder „Passed“ oder „Fix first“ signalisiert.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rizqirizqi/astroidal/tree/HEAD/.agents/skills/astroidal

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 astroidal?

Astroidal ist die KI-Code-Review-Karte, der Bewerter und Helfer. Es zeichnet den Blast Radius und bewertet, was du beweisen kannst. Kartiere die Änderung, durchsuche sie nach echten Fehlern und bewerte dann die Ergebnisse. Die Tabelle und das Diagramm leben in Dateien. Die Chat-Antwort ist eine kurze Zusammenfassung in Prosa, die eine Person einfügen kann.

Der Fehlerkatalog ist references/review-lenses.md, neben dieser Datei. Lies ihn, bevor du einen Fund bewertest. Er befindet sich nicht in .astroidal/.

Füge Astroidal nicht als Abhängigkeit hinzu. Bearbeite nicht package.json, Lockfiles, pyproject.toml, go.mod oder Cargo.toml, um es zu installieren.

Ausführung

Löse den Befehl in dieser Reihenfolge auf:

  1. astroidal, falls es bereits im PATH ist
  2. npx --yes astroidal

Wenn der Paketname nicht heruntergeladen werden kann und der Benutzer auf eine lokale Kopie verweist, führe npx --yes <Pfad-zum-Astroidal-Paket> oder node <Pfad>/dist/cli.js aus.

Installiere das Skill einmal pro Repository:

npx --yes astroidal init

Übergib --global, um es einmal für jedes Repository auf diesem Rechner zu installieren:

npx --yes astroidal init --global

Eine globale Installation wird aktualisiert, wenn eine neuere Version von Astroidal graph oder rank ausführt, solange diese Skill-Dateien noch die von Astroidal geschriebenen sind. Ein bearbeitetes Skill bleibt erhalten, bis init --force ausgeführt wird. Führe init erneut aus, um eine Projektinstallation zu aktualisieren.

Bereich auswählen

Führe graph einmal aus. Lies den bereichshinweis, den es ausgibt. Wenn dieser Bereich falsch ist, führe es einmal mit dem untenstehenden Flag erneut aus. Führe es danach nicht erneut aus.

AnfrageBefehl
Aktuelle Bearbeitungen, einschließlich unverfolgter Dateiennpx --yes astroidal graph
Dieser Branch oder sein Pull-Request, wenn der Arbeitsbaum verschmutzt istnpx --yes astroidal graph --base <Standard-Branch>
Ein sauberer Feature-Branchnpx --yes astroidal graph
Pull-Request-Nummern oder URLsnpx --yes astroidal graph --pr 12,18,24
Alle offenen Pull-Requestsnpx --yes astroidal graph --open
Offene Pull-Requests nach Autor, Label oder Basenpx --yes astroidal graph --open --author NAME --label NAME --base BRANCH
Der aktuelle Pull-Request und der Stack darunternpx --yes astroidal graph --stack
Ein Commitnpx --yes astroidal graph --commit SHA
Nur gestagte Änderungennpx --yes astroidal graph --staged
Ungestagte Änderungen und unverfolgte Dateiennpx --yes astroidal graph --unstaged

Ein Stapel ist eine zusammengeführte Karte. Überprüfe die Pull-Requests nicht als separate Berichte.

GitHub

Rufe gh für das auf, was dieses Review noch benötigt. Die Karte hat bereits die lokalen Lesevorgänge durchgeführt, also liste nicht dieselben Dateien erneut auf, rufe keinen bereits gespeicherten Diff erneut ab und frage keine Checks ab. Einige gezielte Aufrufe sind in Ordnung, wie gh pr view, wenn ein Titel, eine Basis oder ein Body fehlt. Spam gh nicht und kommentiere keinen Pull-Request, genehmige ihn nicht und fordere keine Reviewer an.

GitLab

Rufe glab für das auf, was dieses Review noch benötigt. Die Karte hat bereits die lokalen Lesevorgänge durchgeführt, also liste nicht dieselben Dateien erneut auf, rufe keinen bereits gespeicherten Diff erneut ab und frage keine Pipelines ab. Einige gezielte Aufrufe sind in Ordnung, wie glab mr view, wenn ein Titel, eine Basis oder ein Body fehlt. Spam glab nicht und kommentiere keinen Merge-Request, genehmige ihn nicht und fordere keine Reviewer an.

Nach Fehlern suchen

Lies in dieser Reihenfolge:

  1. .astroidal/packets/bug-map.md
  2. .astroidal/packets/architecture.md
  3. .astroidal/packets/security.md
  4. .astroidal/packets/performance.md
  5. .astroidal/packets/ux.md
  6. .astroidal/packets/correctness.md
  7. references/review-lenses.md neben diesem Skill

Wende das Gate, die Spezifikationsprüfung und die Standardsprüfung aus dem Katalog an. Wende dann jeden Sprachabschnitt an, der mit einer Datei in den Hinzugefügten Zeilen übereinstimmt. Überspringe die anderen Sprachabschnitte.

Decke jeden geänderten Pfad in der Fehlerkarte ab. Beginne mit dem Abschnitt Hinzugefügte Zeilen. Dieser Abschnitt ist die Änderung, ein Block pro Pull-Request. Ein Symbolauszug kann leer sein, wenn der Diff remote abgerufen wurde, und bei einem Stack ist es nur die Spitze. Ein leerer Auszug ist fehlender Kontext, keine leere Änderung.

Höre nicht nach der ersten wahrscheinlichen Datei auf. Führe für jeden Nicht-Test-Quellblock in den Hinzugefügten Zeilen Folgendes durch:

  • Lies den gesamten Block, einschließlich der Zeilen darunter, wenn der Block angibt, dass sich weitere Zeilen in der Beweisdatei befinden.
  • Überprüfe diesen Block gegen den Katalog, nicht nur die Klasse, die mit dem Dateinamen übereinstimmt. Die fünf untenstehenden Klassen sind das Minimum.
  • Wenn eine Datei mehr als einen Pull-Request auflistet, überprüfe jeden Block. Der kartierte Body ist nur die Stack-Spitze.
  • Öffne die Datei, wenn der Block nicht ausreicht, um einen Fehler zu bestätigen oder abzulehnen.
  • Untersuche für jedes geänderte Symbol die One-Hop-Aufrufer und -Aufgerufenen, die die Karte auflistet, wenn die Änderung sie beeinträchtigen könnte.

Achte besonders auf einen falschen Branch, einen falsy- oder leeren Wert, der als fehlend behandelt wird, einen Off-by-One- oder Zeitzonenfehler, eine Sperre oder einen Status, der einen erneuten Versuch nach einem Fehler blockiert, eine URL oder Abfrage, die durch Verkettung erstellt wurde, eine Authz-Prüfung, die die falsche Identität verwendet, und einen Vertrag, den die One-Hop-Aufrufer noch auf die alte Weise verwenden. Eine hohe Auswirkungsbewertung ist kein Befund und entschuldigt nicht das Überspringen eines Blocks.

Durchsuche alle diese Klassen:

  • Logik und Grenzfälle: falsche Branches, Off-by-One, verschluckte Fehler, Null-Abstürze
  • Datenverlust und Zustand: Migrationen, Wettlaufsituationen, partielle Schreibvorgänge, veralteter Cache
  • Gebrochene Verträge: API, Typen, Routen, exportiertes Verhalten, Schema-Konflikte
  • Sicherheitsfehler: Authz-Lücken, Injection, Geheimnisse, unsichere Vertrauensgrenzen
  • UX-Flow-Fehler: Sackgassen, fehlende Fehler-, Leer- oder Ladezustände, defekte Navigation

Suche nach wichtigen Problemen. Hinweise in den Paketen sind Tipps, keine Befunde. Ein Code-Geruch, eine lange Datei, ein fehlender Test oder eine Abhängigkeitsaktualisierung ist nur dann ein Befund, wenn das Gate des Katalogs bestanden wird. Ignoriere Formatierung, Benennung, Kommentare, Lob, Fragen und Refactorings, die keinen konkreten Fehler benennen.

Befunde schreiben

Schreibe .astroidal/findings.json:

{
  "findings": [
    {
      "pr": 12,
      "severity": "high",
      "description": "Was kaputt geht, in ein oder zwei Sätzen.",
      "path": "src/auth.ts",
      "line": 12,
      "quote": "die genaue Zeile aus der Datei kopiert",
      "recommendation": "Die spezifische Änderung, die den Fehler behebt.",
      "category": "security"
    }
  ]
}

severity ist critical, high oder medium, unter Verwendung des Gates im Katalog. critical ist ein Absturz, Datenverlust, Authz-Bypass, Injection oder Offenlegung von Geheimnissen auf einem Pfad, den Benutzer erreichen. high ist ein realistisches falsches Ergebnis, verlorener Schreibvorgang, Wettlaufsituation oder gebrochener Vertrag. medium ist ein realistischer Grenzfall, der fehlschlägt. quote ist eine genaue Zeile, die aus einem Hinzugefügte-Zeilen-Block, der kartierten Datei oder einem One-Hop-Nachbarn kopiert wurde. Setze pr auf den Pull-Request, der diese Zeile eingeführt hat, oder lasse es bei einer lokalen Änderung weg.

Sage, was kaputt geht, nenne das Symbol und gib die Änderung an, die den Fehler behebt. Sage bei Sicherheit und Architektur, warum diese Änderung Bestand hat. Mache keine Einschränkungen, wiederhole nicht die zitierte Zeile und reiche keine Frage ein. Ein leeres findings-Array ist nur gültig, nachdem die hinzugefügten Zeilen jeder Nicht-Test-Quelldatei gegen den Katalog geprüft wurden und keine davon einen wichtigen Fehler enthält.

Wenn geänderte Dateien aus einem Grund zusammengehören, den das Verzeichnis nicht bereits zeigt, benenne diese Gruppe. Das Diagramm zeichnet ein Verzeichnis eigenständig und zeichnet einen Import als Linie. Eine Gruppe ist für einen Ablauf, ein Feature oder einen gemeinsamen Vertrag, der diese Grenzen überschreitet.

{
  "findings": [],
  "groups": [
    {
      "name": "Zahlungslinks",
      "paths": ["apps/admin/lib/whatsapp.ts", "apps/admin/lib/proxied-link.ts"]
    }
  ]
}

Verwende einen kurzen Namen und mindestens zwei kartierte Pfade. Lasse groups weg, wenn nichts Extra zusammengehört.

Führe dann Folgendes aus:

npx --yes astroidal rank

Wenn rank einen Befund verwirft, weil das Zitat oder der Pfad falsch ist, korrigiere diesen Befund einmal und führe rank erneut aus. Erfinde keinen Ersatzfehler, um die Anzahl hochzuhalten. Führe rank kein drittes Mal aus.

Antworten

Schreibe eine kurze Zusammenfassung in Prosa im Chat. Eröffne mit einer Zeile, die die Person einfügen kann: Astroidal {Punktzahl} · Bestanden oder Astroidal {Punktzahl} · Zuerst beheben. Nenne dann die schwerwiegendsten Probleme und die zwei Ausgabepfade: .astroidal/review.md und .astroidal/constellation.html. Füge die Befundtabelle nicht ein. Erstelle das Diagramm nicht neu. Der Mensch entscheidet immer noch, ob zusammengeführt wird.

Verwandte Skills