CommunityCodierung & Entwicklunggithub.com

grinchenkoedu/audit

Führt eine vollständige Prüfung eines gesamten Repositorys (nicht eines Diffs) gegen die vordefinierten Regeln durch: Sicherheitscheckliste, Code-Herkunft und Lizenzierung, Codequalitätsregeln sowie die Bereitschaft für agentengetriebene Entwicklung (CLAUDE.md, AGENTS.md, ein ignoriertes Profil, ein erkennbarer Testbefehl). Fragt Sie im Chat in einer gebündelten Runde nach Entscheidungen, die eine Behebung blockieren – welche Lizenz, ob eine copyleft-Abhängigkeit bleiben darf, woher ein kopierter Block stammt – und schreibt Ihre Antworten als Schritte fest. Es erstellt eine Aufgabendatei im /gku:plan-Format mit Ergebnissen, die in branch-großen Runden gruppiert sind, sodass /gku:implement diese in einem Durchlauf oder Schritt für Schritt umsetzen kann. Schreibgeschützt; erzeugt keinen Produktionscode.

Was ist audit?

Die Skill **audit** führt eine umfassende, schreibgeschützte Prüfung eines gesamten Git-Repositorys durch – im Gegensatz zu anderen Skills, die nur Diffs prüfen. Sie wendet dieselben Regeln an, die auch in den Skills `/gku:review` und `/gku:init` verwendet werden: die Sicherheitscheckliste (`reference/security-checklist.md`), Richtlinien zur Code-Herkunft und Lizenzierung (`reference/code-provenance.md`), Codequalitätsstandards und die Bereitschaft für agentengetriebene Entwicklung (z. B. Vorhandensein von `CLAUDE.md`, `AGENTS.md`, einem ignorierten Profil und einem erkennbaren Testbefehl). Die Prüfung läuft in mehreren Schritten ab: (1) Profil- und Bestandsaufnahme, (2) maschinelle Durchläufe über den gesamten Baum (Sicherheit, Geheimnisse, Lizenzierung, Abhängigkeiten, Agentenbereitschaft), (3) Lesen der wichtigsten Dateien (maximal zehn), (4) Bewertung des Standards-Dokuments, (5) Lizenzanalyse und – mit dem Flag `--provenance` – die optionale Suche nach der Herkunft kopierter Codeblöcke über GitHub-Suche oder Websuche, (6) Einstufung der Ergebnisse und (7) eine Chat-Runde, in der Sie diejenigen Entscheidungen treffen, die eine automatische Behebung blockieren. Diese Skill ist besonders nützlich beim Onboarding eines Codebestands, vor einer Veröffentlichung, bei der Übernahme eines fremden Repositories oder nach einer längeren Pause. Sie ist vollständig schreibgeschützt (kein Editieren von Produktionscode) und arbeitet auf GitHub CLI (`gh`), Git, und den gängigen Paketmanagern der erkannten Sprache (Composer, npm, pip). Ergebnisse werden als strukturierte Aufgabendatei (`/gku:plan`) ausgegeben, die der Skill `/gku:implement` in bearbeitbare Schritte umsetzt – die Lösungen werden in Runden (eine Runde pro Branch) gruppiert. Offene Entscheidungen werden als nummerierte Fragen festgehalten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/grinchenkoedu/claude-skills/tree/HEAD/plugins/gku/skills/audit

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


name: audit description: Führt eine vollständige Prüfung eines gesamten Repositorys (nicht eines Diffs) gegen die vordefinierten Regeln durch: Sicherheitscheckliste, Code-Herkunft und Lizenzierung, Codequalitätsregeln sowie die Bereitschaft für agentengetriebene Entwicklung (CLAUDE.md, AGENTS.md, ein ignoriertes Profil, ein erkennbarer Testbefehl). Fragt Sie im Chat in einer gebündelten Runde nach Entscheidungen, die eine Behebung blockieren – welche Lizenz, ob eine copyleft-Abhängigkeit bleiben darf, woher ein kopierter Block stammt – und schreibt Ihre Antworten als Schritte fest. Erstellt eine Aufgabendatei im /gku:plan-Format, deren Ergebnisse in branch-großen Runden gruppiert sind, sodass /gku:implement diese in einem Durchlauf oder Schritt für Schritt umsetzen kann. Schreibgeschützt; erzeugt keinen Produktionscode. argument-hint: "[--area security|licence|quality|agents]... [--deep] [--provenance]" user-invocable: true disable-model-invocation: true disallowed-tools: Edit, NotebookEdit

/gku:audit – Lesen des gesamten Repositorys anhand der Regeln, dann Übergabe eines Plans

Jeder andere Skill wendet die Regeln des Toolkits auf eine Änderung an. Dieser wendet sie auf das Repository an, wie es ist: eine Codebasis, die neu integriert wird; ein Plugin, das von jemand anderem übernommen wurde; ein Projekt, das kurz vor der Veröffentlichung steht. Er erfindet keine eigenen Regeln – er liest den Baum anhand derselben Referenzdateien, die auch /gku:review und /gku:init verwenden, fügt nur die Prüfungen hinzu, die für einen ganzen Baum und nicht für einen Diff sinnvoll sind, fragt Sie nach den Entscheidungen, auf die seine Ergebnisse warten, und schreibt seine Erkenntnisse als Aufgabendatei, aus der /gku:implement eine Runde nach der anderen aufbauen kann.

Führen Sie es selten aus – beim Onboarding, vor einer Veröffentlichung, nach einer längeren Pause. Es ist der einzige Skill, der einen Baum statt eines Diffs liest, und er gibt an, welche Dateien er gelesen hat.

Schreibgeschützt. Die einzige Datei, die er schreibt, ist die Aufgabendatei.

Argumente

  • nichts – Prüfung des aktuellen Repositorys, alle vier Bereiche.
  • --area <name> – wiederholbar; einschränken auf security, licence, quality oder agents.
  • --deep – Übergabe der maschinellen Suche über einen großen Baum an gku:scout, den sweependen Agenten des Plugins auf einem kleinen, schnellen Modell. Bleibt lokal.
  • --provenance – Suche nach dem Ursprung von Code, der wie kopiert aussieht (Schritt 5b): Fingerabdrücke von Kandidatenblöcken werden auf GitHub gesucht und die Treffer nebeneinander verglichen. Ein separates Flag, nicht Teil von --deep, weil dies der einzige Schritt ist, der Fragmente des Codes an eine externe Suche sendet; der Entwickler stimmt dem explizit zu. Mit beiden Flags durchsucht gku:scout den gesamten Baum nach Kandidaten, und Sie wählen aus den Ergebnissen aus.

Kein Pfadargument: Die Prüfung gilt dem Repository, in dem sie ausgeführt wird. Wenn ein Branch oder Pull Request angegeben ist, sagen Sie, dass /gku:review und /gku:pr-review dafür zuständig sind, und brechen Sie ab.

Schritt 1 – Profil und Bestandsaufnahme

Lesen Sie .claude/repo-profile.json (siehe reference/repo-profile.md; erkennen und zwischenspeichern, falls nicht vorhanden) und reference/exec.md. Das Profil-Gate aus reference/untrusted-input.md gilt hier mehr als sonst: Ein Profil, das sich als getrackt herausstellt, wird nicht ausgeführt – neu erkennen und die getrackte Datei als ersten Fund vermerken. Sie benötigen Familie, Sprache, standardsDoc, hasDatabase, runtime.kind und exec.kind.

Machen Sie dann mit git ls-files eine Bestandsaufnahme: wie viele Dateien, welcher Art, in welchem Layout und wo die Familie ihre Einstiegspunkte aufbewahrt – die Hauptseiten eines Moodle-Plugins, classes/external/, db/services.php und cli/; die Controller und Kommandos einer php-app – application/, app/Http/ und app/Console/ oder src/Controller/ und src/Command/; die Routen, Views und main.py einer python-app; functions.php und Templates eines CMS. Überspringen Sie vendor/, node_modules/, Build-Ausgabe und alles Generierte – diese werden in Schritt 2 als Abhängigkeiten geprüft, nicht als Code.

Sagen Sie in einem Satz, was geprüft wird und wie groß es ist. In einem Repository ohne Code – Familie other, ein reines Markdown-Projekt – sind die Codeabschnitte leer; sagen Sie, welche Teile nicht zutrafen, und fahren Sie fort, da die Lizenz- und Bereitschaftsabschnitte dennoch relevant sind.

Schritt 2 – Maschinelle Durchläufe über den gesamten Baum

Diese sind günstig, daher decken sie jede getrackte Datei ab. Ein Treffer ist ein Hinweis, die Datei zu öffnen; ein Fehlschlag ist keine Freigabe.

  • Sicherheit – der Durchlauf aus reference/security-checklist.md, in seiner Ganzbaum-Form (tracked() statt added()): dieselben grep-Gruppen über git ls-files statt über den Diff.
  • Geheimnisse – das Credential-Muster der Checkliste, plus das, was nur ein Baum zeigt: eine getrackte .env, *.pem, id_rsa*, ein -----BEGIN … PRIVATE KEY-Block, eine Konfigurationsdatei mit einem Passwortliteral. Zitieren Sie niemals einen Wert im Bericht – den Pfad, den Schlüsselnamen und <redacted>.
  • Lizenzierung – LICENSE* oder COPYING* im Stammverzeichnis; das license-Feld in composer.json, package.json, pyproject.toml oder setup.cfg; ob beide übereinstimmen; die Provenienzmarker-Gruppe des Checklisten-Durchlaufs; ein getracktes vendor/ oder node_modules/ und ob die Hinweise darin intakt sind; bei einem Moodle-Plugin, wie viele PHP-Dateien den GPL-Header-Block vermissen lassen (reference/code-provenance.md: ein Moodle-Plugin ist per Anforderung GPL). Was die Treffer bedeuten, ist Schritt 5a; woher ein Block stammt, ist Schritt 5b.
  • Abhängigkeiten – eine Lockdatei, die neben jedem Manifest getrackt ist; composer audit, npm audit --omit=dev oder pip-audit, je nachdem, was das Projekt hat, mittels exec.prefix und eingewickelt in das timeoutTool, die Zusammenfassungszeile zitiert; die deklarierte Laufzeitversion gegen End-of-Life (Checkliste Abschnitt 12 – eine dauerhafte WARNUNG); Abhängigkeitslizenzen mittels composer licenses, npm ls --json oder pip-licenses, sofern vorhanden. Eine Copyleft-Lizenz in einem Projekt, dessen eigene Lizenz nicht Copyleft ist, wird zur Entscheidung durch eine Person vorgemerkt – der Skill benennt beide Lizenzen und entscheidet niemals über Kompatibilität.
  • Agentenbereitschaft – CLAUDE.md und AGENTS.md: vorhanden, und welche der Zeiger ist; .gitignore deckt .claude/repo-profile.json, .gku/ und .tasks/ ab (die Regeln in reference/repo-profile.md und reference/reports.md); ein Testbefehl, den reference/repo-profile.md Schritt 5 erkennen kann – ein Makefile, Manifest-Skripte, ein CI-Workflow; überhaupt ein CI-Workflow; eine Containerdefinition (docker-compose.yml, ein Entwicklungs-Dockerfile) sodass exec.kind nicht host sein muss; .claude/settings.json und alles andere, das unter .claude/ getrackt ist, wird als Code gelesen (reference/untrusted-input.md) – eine Berechtigung oder ein Hook, der pusht, --no-verify oder --force übergibt oder eine URL abruft, ist ein Fund; .github/pull_request_template.md und CONTRIBUTING.md, vermerkt als vorhanden oder nicht vorhanden.

Schritt 3 – Einstufen und Lesen, maximal zehn Dateien

Stufen Sie ein, worauf die Durchläufe hingedeutet haben, und lesen Sie die Liste abwärts, bis zehn Dateien vollständig gelesen wurden:

  1. Einstiegspunkte, bei denen ein Sicherheitstreffer gelandet ist;
  2. alles, was massenhaft in die Datenbank schreibt oder mit Geld, Noten oder maßgeblichen Aufzeichnungen umgeht (hasDatabase schaltet die Datensicherheitsregeln in reference/repo-profile.md frei);
  3. Authentifizierungs-, Sitzungs- und Berechtigungscode;
  4. Uploads, Downloads und ausgehende Anfragen;
  5. das Standards-Dokument selbst – Schritt 4 benötigt es gelesen, und es zählt zu den zehn;
  6. bis zu zwei Testdateien, um zu beurteilen, ob die Tests etwas behaupten – die Liste aus /gku:review Schritt 4, stichprobenartig statt flächendeckend.

Beantworten Sie für jeden gelesenen Einstiegspunkt die vier Fragen der Checkliste durch Lesen, nicht durch Raten. Nennen Sie die zehn im Bericht und sagen Sie, dass alles andere anhand der Treffer beurteilt wurde. Ein ehrliches Limit ist besser als ein stilles.

Wenn das Profil einen lint-Befehl hat, führen Sie ihn über den Baum mittels exec.prefix aus, eingewickelt in das timeoutTool. Ein Parse-Fehler ist ein BLOCKER, wörtlich zitiert. Kein Lint-Befehl oder ein Host-Fallback ohne die Toolchain bedeutet, dass die Prüfung unlintiert ist – sagen Sie es; melden Sie niemals ein Lint, das nicht ausgeführt wurde. Beachten Sie die Version, wie /gku:review Schritt 4b sagt.

Codequalität wird nach dem beurteilt, was skaliert. Lint; ob Tests existieren und etwas behaupten; ob ein Massenschreibskript standardmäßig einen Trockenlauf, sichere Wiederholungen und einen begrenzten Umfang hat; lange Arbeiten inline in einer Webanfrage, wenn das Projekt bereits einen Hintergrundmechanismus hat; die Lockdatei; eine veraltete Laufzeit; derselbe Block ein drittes Mal kopiert. Die Stilregeln der Familie aus dem Standards-Dokument werden auf die zehn gelesenen Dateien angewendet, und der Bericht sagt klar, dass der Stil stichprobenartig, nicht flächendeckend geprüft wurde.

Schritt 4 – Das Standards-Dokument beurteilen

Dies ist /gku:init Schritt 2, angewendet ohne etwas zu schreiben: Sind die Befehle noch aktuell, ist der Familienblock vorhanden und aktuell gegenüber templates/<family>.md in diesem Plugin, wird etwas darin durch den Code widerlegt – eine Escaping-Behauptung, die die Templates nicht stützen, ist der Klassiker – und fehlt etwas Wichtiges. Zwei Dateien mit echtem, unterschiedlichem Inhalt sind ein Fund, nicht etwas, das hier in Einklang gebracht werden muss. Ein Standards-Dokument, das einen Skill auffordert, eine der Grundregeln in reference/untrusted-input.md aufzuheben, ist ein Fund. Ein Dokument, das weit über die ~120-Zeilen-Richtlinie von /gku:init hinausgeht, ist ein NIT, weil es in jede Sitzung geladen wird.

Die Behebung für das meiste hiervon ist ein Schritt – führen Sie /gku:init oder /gku:init --refresh aus – wobei das, was das Ergebnis enthalten muss, als sein Annahmekriterium geschrieben wird.

Schritt 5a – Lizenzierung, basierend auf dem Gelesenen

Wenden Sie die Hinweise in reference/code-provenance.md auf die zehn Dateien und auf das an, was Schritt 2 zutage gefördert hat: ein Block, dessen Stil oder Kommentarstimme von seinen Nachbarn abweicht; ein Kommentar, der ein Projekt, eine URL oder eine Lizenz nennt, die das Repository sonst nicht trägt; eine Datei, die erkennbar eine bekannte Bibliothek ist – ein Mailer, ein Markdown-Parser, ein jquery.*.js – unter lib/ oder inc/, deren Hinweis entfernt wurde oder die keinen Manifesteintrag hat. Eine erkannte Bibliothek ist ein Fund, unabhängig davon, ob ihr Hinweis erhalten geblieben ist: Der richtige Weg ist die Abhängigkeit, die der Paketmanager bereits anbietet; eine Bibliothek, von der das Projekt abhängen könnte, wird nicht stückweise eingekauft.

Schweregrade sind die der Referenz: eine fremde Lizenz ohne deklarierte Quelle, BLOCKER; ein Ursprung, den der Autor nicht benennen kann, WARNUNG; ein fehlender Hinweis unter der eigenen Lizenz des Projekts, WARNUNG; ein Idiom, das jeder schreibt, nichts.

Schritt 5b – Provenienzsuche (--provenance nur)

Das Lesen auf Hinweise findet, was wie kopiert aussieht. Dieser Schritt versucht herauszufinden, woher, gemäß „Finding the source" in reference/code-provenance.md. Die Begrenzungen und die Datenschutzzeile sind die dieses Skills:

  1. Kandidaten. Die Dateien, auf die die Hinweise deuteten, die Provenienzmarker-Treffer des Durchlaufs und die Verzeichnisse, die normalerweise eingefügten Code enthalten – lib/, inc/, helpers/, utils/, eine einzelne große in sich geschlossene Datei, anders als ihre Nachbarn. Maximal zwanzig Dateien; mit --deep durchsucht gku:scout den gesamten Baum danach und Sie wählen aus, sonst stammen sie aus den zehn gelesenen plus den Treffern. Niemals eine Konfigurationsdatei, eine Testvorlage oder etwas, das der Geheimnis-Durchlauf berührt hat.
  2. Fingerabdrücke. Zwei oder drei pro Kandidat, wie die Referenz beschreibt: charakteristisch, fünf Wörter oder mehr, niemals der eigene Projektname oder URLs, niemals etwas, das ein Credential sein könnte. Maximal dreißig Abfragen für den Durchlauf.
  3. Suche. gh search code zuerst – das gh, das das Toolkit bereits benötigt, angemeldet; es ist auf etwa zehn Aufrufe pro Minute ratenbegrenzt, also takten Sie die Abfragen und stoppen Sie am Limit. Nicht angemeldet → eine Websuche nach derselben Zeichenfolge. Keines verfügbar → die Suche wird übersprungen und als übersprungen benannt, niemals stillschweigend fallen gelassen. Treffer in diesem Repository und seinen Forks werden ignoriert.
  4. Vergleichen und entscheiden genau wie die Referenz sagt: die passende Datei abrufen, den Block neben unserem lesen, die Lizenz des Treffers lesen, die Richtung der Kopie soweit bestimmbar herausfinden und sich auf den Schweregrad der Referenz einigen. Wenn die Richtung nicht bestimmbar ist, sagen Sie es – das Wort des Entwicklers entscheidet.
  5. Berichten was die Referenz pro Fund auflistet – unser path:lines, die Quelle mit ihrer Lizenz gegen unsere, der Hinweis, zwei passende Zeilen, die Richtung. „Wurde dies kopiert, und zu welchen Bedingungen" und die Richtungsfrage gehen an Schritt 5d, wo der Entwickler die einzige Quelle ist, die sie beantworten kann. Die Scope-Zeile sagt, wie viele Fingerabdrücke wohin gesendet wurden, weil Fragmente des Codes die Maschine verlassen haben.

Die Suche kommt niemals zu dem Schluss, dass eine Lizenz mit der des Projekts kompatibel ist. Sie nennt beide und übergibt die Frage.

Schritt 5c – Schweregrade und was ein Schritt wird

Schweregrade sind die drei von /gku:review. Jeder BLOCKER und jede WARNUNG trägt path:line, einen Satz zum Problem, einen zur Behebung und den Beweis – die demonstrierende Eingabe, die Zusammenfassungszeile des Tools, das Manifestfeld. Ein Fund, der nicht zitierbar ist, verliert einen Schweregrad und wird als [unverified] markiert. Rangordnung der Bedenken; der Schweregrad sagt, wie sehr eine Sache hier zählt, und ein Fund wird niemals als absolut falsch beschrieben.

Ein Fund wird ein Schritt, wenn die Behebung mechanisch genug für /gku:implement ist: Entfernen und Ignorieren eines getrackten Geheimnisses (mit „rotiert" als Kriterium, das eine Person bestätigt), Binden einer Abfrage, Hinzufügen einer Berechtigungsprüfung, Hinzufügen der GPL-Header, Einchecken einer Lockdatei, Hinzufügen von .gku/ zu .gitignore, Ausführen von /gku:init. Ein Fund, dessen Behebung eine Entscheidung ist – welche Lizenz, ob eine Copyleft-Abhängigkeit bleiben darf, welches der beiden Standards-Dokumente wahr ist, ob eine veraltete Laufzeit belassen werden soll, der Ursprung eines Blocks, der wie kopiert aussieht – ist noch kein Schritt. Er geht an Schritt 5d, der den Entwickler fragt; was zurückkommt, wird ein gewöhnlicher Schritt, und was nicht, bleibt eine nummerierte offene Frage, wobei jeder davon abhängige Schritt mit nach Q markiert wird. NITs werden aufgelistet und erhalten keinen Schritt.

Eine Regel des Standards-Dokuments, die die Änderung verbietet, die ein Schritt machen würde, stoppt die Prüfung nicht – sie ist schreibgeschützt – und löscht den Schritt nicht. Der Schritt benennt den Ausweg: eine von Hand vorgenommene Änderung, einen Fork, den die Regel nicht abdeckt, oder eine Frage. Der Entwickler wählt.

Schritt 5d – Entscheidungen erfragen, bevor die Datei geschrieben wird

Die Entscheidungen aus Schritt 5c sind die Sackgassen der Prüfung: Jede hält eine Behebung auf, die sonst offensichtlich ist, und die Person, die sie klären kann, ist normalerweise diejenige, die gerade den Befehl ausgeführt hat. Fragen Sie sie hier, im Chat, und schreiben Sie die Antworten als Schritte fest. Eine Datei mit offenen Fragen ist eine Datei, die jemand später beantworten muss – das ist langsamer, als jetzt zu antworten, während der Kontext noch frisch ist. Stellen Sie die Fragen als Aufzählung, jede mit einer Zeile Kontext, und notieren Sie die Antworten im Chat als bearbeitbare Schritte.

Wenn Sie das Repository zu einer Entscheidung fragen, implizieren Sie keine Präferenz. Sagen Sie „Ein Block, der Apache 2.0 zu sein scheint, liegt in lib/, und das Projekt ist MIT. Darf er bleiben, oder soll er entfernt werden?", nicht „Apache 2.0 wird normalerweise für … bevorzugt" – dem Skill geht das Urteilsvermögen aus.

Schritt 6 – Die Aufgabendatei schreiben

Schreiben Sie eine Aufgabendatei in das Format, das /gku:implement liest: das in reference/reports.md spezifizierte YAML-Format, gruppiert in Runden (oder „Schichten"), wobei jede Runde einen Branch aufnimmt. Der Plan deckt die vier Bereiche in einer Runde ab, wenn der Baum klein ist – wahrscheinlich. Wenn er es nicht tut, erhält jeder Bereich einen Branch, wobei die Lizenzierung den letzten bekommt, weil ihre Entscheidungen von den anderen abhängen. Nennen Sie den Plan audit-plan.yaml. Fügen Sie die offenen Fragen als nummerierte Liste im Abschnitt „Entscheidungen" der Datei bei.

Der Plan ist schreibgeschützt; /gku:implement erstellt die Branches, wendet die Behebungen an und erstellt die Pull Requests. Die Prüfung selbst schreibt keinen Produktionscode.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills