Alle Skills

code-review (Matt Pocock)

Prüft Änderungen seit einem Commit oder Branch parallel gegen Repo-Standards und die ursprüngliche Spezifikation.

Matt Pococks code-review: Gleiche Trefferquote wie einfaches Codex bei 3 Review-Aufgaben, 1.5x die Tokens

SituativSicher

Codex CLI · gpt-6-astra

23.5 / 30

Lift gegenüber ohne Skill: +0.08 · Situativ · 18 Läufe

Situativ: der Lift +0.08 liegt unter +1.0. Für „Empfohlen“ sind insgesamt 22/30, eine Ausgabequalität von 3.5 und ein Lift von +1.0 nötig.

SOTA

Bestanden

Getestet mit Codex.

Gilt für Codex, Claude Code

Codex CLI 0.166 (SOTA-Stufe): 18 bewertete Läufe. Ein Bestehen hier deckt gemäß unserer Stufenregel auch Claude Code ab; über die zweite Stufe sagt es nichts aus.

Punktzahlen

Jede Dimension reicht von 0 bis 5, und die sechs ergeben zusammen die Gesamtpunktzahl von 30. 5 ist in jeder Dimension besser. Kosten 5 bedeutet günstig und schnell. Installation 5 bedeutet einfach.

Trigger-Zuverlässigkeit
5.0
Lift gegenüber ohne Skill
2.1
Ausgabequalität
4.5
Token- und Zeitkosten
3.0
Installation und Portabilität
4.0
Sicherheit
5.0

Sicherheitsprüfung

Sicher

Statischer Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Manuelle Prüfung: Sicher in einer Sandbox ohne Netzwerk auszuführen (keine Befunde). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.

Installieren

npx skills@latest add mattpocock/skills --skill code-review

Quelle

Fixierter Commit: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d

Getestet: 2026-11-02

Was wir getestet haben

  • Ein kleines Service-Modul reviewen — orders_service.py vor dem Merge reviewen. Die gefundenen Probleme auflisten, schwerwiegendstes zuerst. Keine Dateien ändern.
  • Einen Auth-Helper reviewen — auth_handlers.py reviewen: gerade für unseren Login-Flow geschrieben. Die Probleme auflisten, schwerwiegendstes zuerst. Keine Dateien ändern.
  • Den letzten Commit gegen geschriebene Standards und Spec reviewen — Meinen letzten Commit (die Änderungen seit HEAD~1) gegen CODING_STANDARDS.md und SPEC.md reviewen. Jede Abweichung auflisten, schwerwiegendste zuerst. Keine Dateien ändern.

Vorteile

  • Der Skill wurde erkannt, ohne genannt zu werden: Skill-Datei in 6/6 Treatment-Läufen gelesen.

Nachteile

  • Kein messbarer Lift gegenüber ohne Skill (+0.08, im Rauschen).
  • n=2 pro Aufgabe und Variante; Unterschiede unter etwa 1 Punkt sind Rauschen.

Bewertung

Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem Mac-Testrechner, einem frischen temporären Projekt und temporären HOME/TMPDIR/Caches pro Lauf; Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills in einem an den Prompt angehängten Satz (One-Liner-Gruppe); 2 Läufe pro Gruppe und Aufgabe; Netzwerk aus; Schreiben nach /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung). Zwei Reviews einzelner Dateien (ein Order-Service mit 8 eingebauten Problemen, drei davon nicht sicherheitsbezogen; ein Auth-Helper mit 8 eingebauten Problemen) und ein Review des letzten Commits gegen CODING_STANDARDS.md und SPEC.md (8 eingebaute Abweichungen), was dem vorgesehenen Einsatz des Skills entspricht. Alle Prompts sind read-only („die Probleme auflisten, schwerwiegendstes zuerst, keine Dateien ändern“).

Drei-Arm-Vergleich

VarianteDurchschnittsnote (0-5)Tokens pro Lauf
Ohne Skill4.3778k
Ein-Satz-Prompt4.3777k
Mit Skill4.45114k

Gemessen mit Codex CLI über 18 Läufe, bewertet durch regelbasierte Prüfungen ohne LLM-Richter. Gesamt 23.5 / 30, Urteil Situativ.

Urteil: Situationsabhängig (23.5 / 30). Quelle: mattpocock/skills, skills/engineering/code-review, festgeschrieben auf Commit 4ae2317. Installation: npx skills@latest add mattpocock/skills --skill code-review. Lizenz: MIT (LICENSE im Repo).

Was es ist

Der Skill code-review aus mattpocock/skills (engineering/code-review). Er prüft Änderungen seit einem gegebenen Ref entlang zweier Achsen: ob der Code den dokumentierten Coding-Standards des Repos folgt (und gängige Smells aufweist) und ob er umsetzt, was die Spezifikation verlangt; geschrieben für Repos mit Standards-/Spec-Dokumenten und für die Nutzung mit Sub-Agenten. Nur Markdown, keine Skripte.

Wie wir getestet haben

Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem Mac-Testgerät, pro Lauf ein frisches temporäres Projekt sowie temporäre HOME/TMPDIR/Caches, Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills als einem an den Prompt angehängten Satz (Ein-Satz-Gruppe), 2 Läufe pro Gruppe und Aufgabe, Netzwerk aus, Schreibzugriffe auf /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten erwähnten Formulierung).

Zwei Reviews einzelner Dateien (ein Order-Service mit 8 eingepflanzten Problemen, drei davon nicht sicherheitsbezogen; ein Auth-Helper mit 8 eingepflanzten Problemen) und ein Review des letzten Commits gegen CODING_STANDARDS.md und SPEC.md (8 eingepflanzte Abweichungen), was dem vorgesehenen Einsatz des Skills entspricht. Alle Prompts sind schreibgeschützt („Liste die Probleme auf, das schwerwiegendste zuerst, ändere keine Dateien“).

  1. Ein kleines Service-Modul reviewen — Reviewe orders_service.py, bevor ich es merge. Liste die gefundenen Probleme auf, das schwerwiegendste zuerst. Ändere keine Dateien.
  2. Einen Auth-Helper reviewen — Reviewe auth_handlers.py: Ich habe ihn gerade für unseren Login-Flow geschrieben. Liste die Probleme auf, das schwerwiegendste zuerst. Ändere keine Dateien.
  3. Den letzten Commit gegen geschriebene Standards und Spec reviewen — Reviewe meinen letzten Commit (die Änderungen seit HEAD~1) gegen CODING_STANDARDS.md und SPEC.md. Liste jede Abweichung auf, die schwerwiegendste zuerst. Ändere keine Dateien.

Die Bewertung erfolgt programmatisch (versteckte Tests / Erkennung eingepflanzter Fehler / Constraint-Checks / Rendering+OCR, wo relevant), 0–5 pro Lauf. Kein LLM-Judge hat eine Bewertung entschieden.

Ergebnisse

Der Ein-Satz-Prompt für die dritte Gruppe: "Reviewe entlang zweier Achsen: ob der Code den dokumentierten Coding-Standards des Repos folgt (plus gängige Code-Smells) und ob er umsetzt, was die Spezifikation verlangt, und nenne für jeden Befund Datei und Zeile."

AufgabeKontrollwertEin-SatzMit SkillKontroll-TokenEin-Satz-TokenMit-Skill-TokenSkill gelesen
t1-orders3.823.593.8279k79k94k2/2
t2-auth4.294.534.5376k70k93k2/2
t3-diff5.05.05.078k80k153k2/2

Durchschnittswert: 4.37 ohne vs. 4.45 mit dem Skill (Delta +0.08). Token pro Lauf: 78k vs. 114k (1.46x); Zeit 44s vs. 57s. Ein-Satz-Gruppe: 4.37 (Gewinn des Skills gegenüber dem Ein-Satz-Prompt: +0.08; Gewinn des Ein-Satz-Prompts gegenüber ohne Skill: +0.0); Ein-Satz-Token 77k pro Lauf, der Skill kostet also 1.49x so viel wie der Ein-Satz-Prompt.

Was passiert ist

  • Kein messbarer Zugewinn: Durchschnittswert 4.37 ohne den Skill, 4.37 mit der Ein-Satz-Version, 4.45 mit dem Skill. Trefferquote bei eingepflanzten Problemen pro Lauf: 5.0 von 8 Kontrolle, 5.0 Ein-Satz, 5.1 Skill.
  • Bei der Aufgabe, für die der Skill geschrieben wurde (einen Commit gegen eine Standards-Datei und eine Spezifikation reviewen), fanden alle Gruppen alle 8 Abweichungen in 6 von 6 Läufen. Codex allein liest CODING_STANDARDS.md und SPEC.md bereits und vergleicht den Diff damit, wenn man es darum bittet.
  • Bei den beiden Reviews einzelner Dateien fand jede Gruppe 5-7 von 8 eingepflanzten Problemen. Die Auslassungen waren in allen Gruppen dieselben (Geld als Float, ein Secret im Log, kein Rate-Limit beim Login), und nichts, was der Skill hinzufügt, änderte das.
  • Der Skill wurde in 6/6 Läufen gelesen und kostete 114k Token pro Lauf gegenüber 78k (1.5x); bei der Commit-Review-Aufgabe 154k gegenüber 79k (etwa 2x), der schwerste Fall. Der Ein-Satz-Prompt kostete dasselbe wie die Kontrolle. Kein Lauf änderte Dateien.
  • Ein Vorbehalt zur Bewertung: Die Punkte werden per Regex abgeglichen, daher kann ein anders formulierter Befund als Auslassung zählen.

Dimensionswerte

DimensionWertBegründung
1_output_quality4.45

Durchschnittswert 4.45/5 mit dem Skill (programmatische Checks, siehe Tabelle pro Aufgabe).

2_lift_vs_no_skill2.08

+0.08 Punkte gegenüber 4.37 ohne den Skill (n=2 pro Aufgabe; unter ~1 Punkt ist Rauschen).

3_trigger5.0Skill-Datei in 6/6 Treatment-Läufen gelesen.
4_instructions_portability4

Geschrieben für Repos mit Standards-/Spec-Dokumenten und für Agenten, die Sub-Agenten starten können; funktioniert anderswo als reine Anleitung.

5_efficiency31.46x Token (114k vs. 78k pro Lauf) und 1.30x Zeit (57s vs. 44s).
6_safety_hygiene5Nur Markdown; keine Skripte, keine Befehle.

Grenzen dieses Tests

  • Der Skill ist darauf ausgelegt, die beiden Achsen an Sub-Agenten auszulagern und Repo-Dokumente zu lesen; ein nicht-interaktiver Codex-Lauf mit einem kleinen Repo zeigt nicht, ob das bei einem großen Diff hilft.
  • Eingepflanzte Probleme in winzigen Dateien; Qualität der Erklärungen, Reihenfolge nach Schwere und Fehlalarme wurden nicht bewertet.
  • Die Ein-Satz-Version wiederholt die beiden Achsen des Skills; ein Team ohne dokumentierte Standards hätte für die erste Achse nichts.
  • n = 2 pro Gruppe und Aufgabe: Abweichungen unter etwa 1 Punkt sind Rauschen.
  • Regelbasierte Bewertung misst, was die Checks sehen können; sie kann weder Geschmack beurteilen noch, ob ein Ergebnis das bestmögliche ist.

Sicherheit

Siehe security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Urteil: sicher ausführbar (Sandbox ohne Netzwerk). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.

Fazit

Auf die Bitte, einen Commit gegen geschriebene Standards und eine Spezifikation zu reviewen, fand einfaches Codex bereits jede eingepflanzte Abweichung, und der Skill kostete zusätzliche Token (1.5x bis 2x), ohne mehr zu finden. Einem Team, das möchte, dass jedes Review demselben Zwei-Achsen-Format folgt, kann er trotzdem helfen — was dieser Test nicht misst.

Transkript

Laufprotokoll: code-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Spalten: Aufgabe, Gruppe-Lauf, Punktzahl (0-5), Tokens, Sekunden, bestandene Prüfungen, vom Agenten geöffnete Skill-Dateien.

t1-orders control-1: Punkte 3.59, Tokens 79037, Sek. 43.8, Prüfungen 2/2, nichts geöffnet
t1-orders control-2: Punkte 4.06, Tokens 79487, Sek. 50.4, Prüfungen 2/2, nichts geöffnet
t1-orders oneliner-1: Punkte 3.59, Tokens 97051, Sek. 50.6, Prüfungen 2/2, nichts geöffnet
t1-orders oneliner-2: Punkte 3.59, Tokens 61642, Sek. 42.5, Prüfungen 2/2, nichts geöffnet
t1-orders treatment-1: Punkte 4.06, Tokens 65668, Sek. 44.1, Prüfungen 2/2, geöffnet code-review
t1-orders treatment-2: Punkte 3.59, Tokens 123428, Sek. 56.0, Prüfungen 2/2, geöffnet code-review
t2-auth control-1: Punkte 4.53, Tokens 76436, Sek. 43.2, Prüfungen 2/2, nichts geöffnet
t2-auth control-2: Punkte 4.06, Tokens 76339, Sek. 43.5, Prüfungen 2/2, nichts geöffnet
t2-auth oneliner-1: Punkte 4.53, Tokens 61176, Sek. 49.9, Prüfungen 2/2, nichts geöffnet

18 Läufe, 3 Artefakte

Beispielausgabe

SOTA · With the skill: final message (t1-orders, run 1, Codex)

Found six problems, most serious first: 1. **High — Missing cancellation authorization** ([line 13](orders_service.py:13)). `current_user` is never checked. Anyone able to call this function can cancel another user’s order by supplying its ID. Verify ownership or administrative permission before updating. 2. **High — SQL injection** ([line 9](orders_service.py:9)). `order_id` is interpolated directly into SQL. A value such as `"0 OR 1=1"` changes the query and can return another order. Use a parameterized query. 3. **High — Credential exposure** ([line 4](orders_service.py:4), [line 48](orders_service.py:48)). A live-looking API key is hardcoded, and the successful charge path prints it to logs. Load credentials from secure configuration and remove the logging. If this key is real, rotate it. 4. **High — Charging always fails silently** ([lines 45–55](orders_service.py:45)). `send_to_gateway()` always raises `NotImplementedError`; `charge()` catches it and returns `None`. No payment can succeed, and callers receive no explicit failure. Implement the gateway and propagate or explicitly report failures. 5. **Medium — Discount thresholds are incorrect** ([line 24](orders_service.py:24)). The documented “or more” thresholds require `>=`. Currently, a total of 100 receives no discount, and 500 receives only 10%, yielding 100 and 450 instead of 90 and 400. 6. **Medium — Export file is never explicitly closed** ([line 39](orders_service.py:39)). Buffered output and resource cleanup depend on garbage collection, including on exceptions. Use a `with open(...)` block to ensure flushing and closing. Static review only; no files changed.

Pro ansehen