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:
astroidal, falls es bereits imPATHistnpx --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.
| Anfrage | Befehl |
|---|---|
| Aktuelle Bearbeitungen, einschließlich unverfolgter Dateien | npx --yes astroidal graph |
| Dieser Branch oder sein Pull-Request, wenn der Arbeitsbaum verschmutzt ist | npx --yes astroidal graph --base <Standard-Branch> |
| Ein sauberer Feature-Branch | npx --yes astroidal graph |
| Pull-Request-Nummern oder URLs | npx --yes astroidal graph --pr 12,18,24 |
| Alle offenen Pull-Requests | npx --yes astroidal graph --open |
| Offene Pull-Requests nach Autor, Label oder Base | npx --yes astroidal graph --open --author NAME --label NAME --base BRANCH |
| Der aktuelle Pull-Request und der Stack darunter | npx --yes astroidal graph --stack |
| Ein Commit | npx --yes astroidal graph --commit SHA |
| Nur gestagte Änderungen | npx --yes astroidal graph --staged |
| Ungestagte Änderungen und unverfolgte Dateien | npx --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:
.astroidal/packets/bug-map.md.astroidal/packets/architecture.md.astroidal/packets/security.md.astroidal/packets/performance.md.astroidal/packets/ux.md.astroidal/packets/correctness.mdreferences/review-lenses.mdneben 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.