review-pull-request
About
This skill performs comprehensive GitHub pull request reviews using the GitHub CLI, analyzing diffs, commit history, and CI/CD checks. It provides severity-based feedback (blocking/suggestion/nit/praise) and submits reviews via gh-pr-review. Use it when assigned to review a PR, for self-review before seeking feedback, for re-review after changes, or to audit merged PRs.
Quick Install
Claude Code
Recommendednpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/review-pull-requestCopy and paste this command in Claude Code to install this skill
Documentation
name: review-pull-request description: > Reviewt einen Pull Request von Ende zu Ende mit der GitHub CLI. Umfasst Diff-Analyse, Commit-Verlaufs-Review, CI/CD-Pruefungsverifizierung, schweregradbasiertes Feedback (blocking/suggestion/nit/praise) und gh-pr-review-Einreichung. Verwenden wenn ein Pull Request zum Review zugewiesen ist, bei einem Selbst-Review vor der Einholung von Feedback anderer, bei einem zweiten Review nach bearbeitetem Feedback oder beim Audit eines zusammengefuehrten PRs. locale: de source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Grep Glob Bash WebFetch metadata: author: Philipp Thoss version: "1.0" domain: review complexity: intermediate language: multi tags: review, pull-request, github, code-review, gh-cli, feedback, pr
Pull Request reviewen
Einen GitHub-Pull-Request von Ende zu Ende reviewen — vom Verstaendnis der Aenderung bis zur Einreichung strukturierten Feedbacks. Verwendet gh CLI fuer alle GitHub-Interaktionen und erzeugt schweregradbasierte Review-Kommentare.
Wann verwenden
- Ein Pull Request ist bereit zum Review und Ihnen zugewiesen
- Zweites Review nach Bearbeitung des Autorensfeedbacks
- Eigenen PR vor dem Einfordern von Reviews anderer reviewen (Selbst-Review)
- Audit eines zusammengefuehrten PRs zur Qualitaetsbewertung nach dem Merge
- Wenn ein strukturierter Review-Prozess statt ad-hoc-Scanning gewuenscht wird
Eingaben
- Erforderlich: PR-Bezeichner (Nummer, URL oder
owner/repo#number) - Optional: Review-Fokus (Sicherheit, Leistung, Korrektheit, Stil)
- Optional: Vertrautheit mit der Codebasis (vertraut, etwas vertraut, unbekannt)
- Optional: Zeitbudget fuer das Review (schneller Scan, Standard, ggruendlich)
Vorgehensweise
Schritt 1: Den Kontext verstehen
Die PR-Beschreibung lesen und verstehen, was die Aenderung bewirken soll.
- PR-Metadaten abrufen:
gh pr view <number> --json title,body,author,baseRefName,headRefName,labels,additions,deletions,changedFiles,reviewDecision - PR-Titel und -Beschreibung lesen:
- Welches Problem loest dieser PR?
- Welchen Ansatz hat der Autor gewaehlt?
- Gibt es bestimmte Bereiche, die der Autor reviewt haben moechte?
- PR-Groesse pruefen und benoetigte Zeit einschaetzen:
PR-Groessen-Leitfaden:
+--------+-----------+---------+-------------------------------------+
| Groesse| Dateien | Zeilen | Review-Ansatz |
+--------+-----------+---------+-------------------------------------+
| Klein | 1-5 | <100 | Jede Zeile lesen, schnelles Review |
| Mittel | 5-15 | 100-500 | Logikaenderungen fokussieren, Config|
| | | | ueberblicken |
| Gross | 15-30 | 500- | Per Commit reviewen, kritische |
| | | 1000 | Dateien fokussieren, Aufteilung flag|
| XL | 30+ | 1000+ | Aufteilung empfehlen. Nur kritische |
| | | | Dateien reviewen. |
+--------+-----------+---------+-------------------------------------+
- Commit-Verlauf reviewen:
gh pr view <number> --json commits --jq '.commits[].messageHeadline'- Sind Commits logisch und gut strukturiert?
- Erzaehlt die Geschichte eine Geschichte (jeder Commit ein koh.aenter Schritt)?
- CI/CD-Status pruefen:
gh pr checks <number>- Bestehen alle Pruefungen?
- Wenn Pruefungen fehlschlagen, welche — das beeinflusst das Review
Erwartet: Klares Verstaendnis davon, was der PR tut, warum er existiert, wie gross er ist und ob CI gruen ist. Dieser Kontext praegt den Review-Ansatz.
Bei Fehler: Wenn die PR-Beschreibung leer oder unklar ist, dies als erstes Feedback vermerken. Ein PR ohne Kontext ist ein Review-Anti-Pattern. Wenn gh-Befehle fehlschlagen, Authentifizierung pruefen (gh auth status) und Zugriff auf das Repository sicherstellen.
Schritt 2: Den Diff analysieren
Die tatsaechlichen Codeaenderungen systematisch lesen.
- Vollstaendigen Diff abrufen:
gh pr diff <number> - Bei kleinen/mittleren PRs den gesamten Diff sequenziell lesen
- Bei grossen PRs per Commit reviewen:
gh pr diff <number> --patch # vollstaendiges Patch-Format - Fuer jede geaenderte Datei bewerten:
- Korrektheit: Tut der Code, was der PR vorgibt?
- Grenzfaelle: Werden Randbedingungen behandelt?
- Fehlerbehandlung: Werden Fehler sauber abgefangen und behandelt?
- Sicherheit: Gibt es Injektions-, Auth- oder Datenoffenlegungs-Risiken?
- Leistung: Offensichtliche O(n^2)-Schleifen, fehlende Indizes oder Speicherprobleme?
- Benennung: Sind neue Variablen/Funktionen/Klassen klar benannt?
- Tests: Werden neue Verhaltensweisen durch Tests abgedeckt?
- Beim Lesen Notizen machen und jede Beobachtung nach Schweregrad klassifizieren
Erwartet: Eine Reihe von Beobachtungen zu Korrektheit, Sicherheit, Leistung und Qualitaet fuer jede bedeutende Aenderung im Diff. Jede Beobachtung hat ein Schweregradniveau.
Bei Fehler: Wenn der Diff zu gross ist um effektiv reviewt zu werden, dies markieren: "Dieser PR aendert {N} Dateien und {M} Zeilen. Ich empfehle, ihn in kleinere PRs aufzuteilen fuer effektiveres Review." Trotzdem die risikoreichsten Dateien reviewen.
Schritt 3: Feedback klassifizieren
Beobachtungen nach Schweregradniveaus organisieren.
- Jede Beobachtung klassifizieren:
Feedback-Schweregradniveaus:
+-----------+------+----------------------------------------------------+
| Niveau | Icon | Beschreibung |
+-----------+------+----------------------------------------------------+
| Blocking | [B] | Vor Merge beheben. Bugs, Sicherheitsprobleme, |
| | | Datenverlust-Risiken, beschaedigte Funktionalitaet.|
| Suggest | [S] | Sollte behoben werden, blockiert Merge nicht. |
| | | Bessere Ansaetze, fehlende Grenzfaelle, Stilprob. |
| | | die Wartbarkeit beeinflussen. |
| Nit | [N] | Optionale Verbesserung. Stilpraeferenzen, kleine |
| | | Benennungsvorschlaege, Formatierung. |
| Praise | [P] | Gute Arbeit, die erwaehnens-wert ist. Clevere |
| | | Loesungen, gruendliche Tests, saubere Abstraktionen|
+-----------+------+----------------------------------------------------+
- Fuer jedes Blocking-Element erklaeren:
- Was falsch ist (das spezifische Problem)
- Warum es wichtig ist (die Auswirkung)
- Wie es behoben werden kann (ein konkreter Vorschlag)
- Fuer jedes Suggest-Element die Alternative erklaeren und warum sie besser ist
- Nits kurz halten — ein Satz reicht
- Mindestens ein Praise einschliessen, wenn etwas Positives auffaellt
Erwartet: Eine sortierte Liste von Feedback-Punkten mit klaren Schweregradniveaus. Blocking-Punkte haben Loesung-Vorschlaege. Das Verhaeltnis sollte generell sein: wenige Blocking, einige Suggest, minimale Nit, mindestens ein Praise.
Bei Fehler: Wenn alles blocking erscheint, muss der PR moeglicherweise ueberarbeitet statt gepatcht werden. Erwaegen, Aenderungen auf PR-Ebene anzufordern statt zeilenbasierter Kommentare. Wenn nichts falsch erscheint, das auch sagen — "LGTM" ist gueltiges Feedback, wenn der Code gut ist.
Schritt 4: Review-Kommentare verfassen
Das Review mit strukturiertem, umsetzbarem Feedback zusammenstellen.
- Review-Zusammenfassung verfassen (Kommentar auf oberster Ebene):
- Ein Satz: was der PR tut (Verstaendnis bestaetigen)
- Gesamtbewertung: genehmigen, Aenderungen anfragen oder kommentieren
- Wichtige Punkte: Blocking-Probleme (falls vorhanden) und die wichtigsten Suggest-Punkte auflisten
- Lob: gute Arbeit hervorheben
- Inline-Kommentare fuer spezifische Codestellen verfassen:
# Inline-Kommentare per gh API einreichen gh api repos/{owner}/{repo}/pulls/{number}/comments \ -f body="[B] Diese SQL-Abfrage ist anfaellig fuer Injection. Stattdessen parametrisierte Abfragen verwenden.\n\n\`\`\`suggestion\ndb.query('SELECT * FROM users WHERE id = $1', [userId])\n\`\`\`" \ -f commit_id="<sha>" \ -f path="src/users.js" \ -F line=42 \ -f side="RIGHT" - Feedback konsistent formatieren:
- Jeden Kommentar mit dem Schweregradtag beginnen:
[B],[S],[N]oder[P] - GitHub-Vorschlagsblocks fuer konkrete Fixes verwenden
- Fuer Stil-/Muster-Vorschlaege zur Dokumentation verlinken
- Jeden Kommentar mit dem Schweregradtag beginnen:
- Das Review einreichen:
# Genehmigen gh pr review <number> --approve --body "Review-Zusammenfassung hier" # Aenderungen anfordern (wenn Blocking-Probleme vorhanden) gh pr review <number> --request-changes --body "Review-Zusammenfassung hier" # Nur kommentieren (wenn unsicher oder FYI-Feedback) gh pr review <number> --comment --body "Review-Zusammenfassung hier"
Erwartet: Ein eingereichten Review mit klarem, umsetzbarem Feedback. Der Autor weiss genau, was zu beheben ist (Blocking), was zu beruecksichtigen ist (Suggest) und was gut war (Praise).
Bei Fehler: Wenn gh pr review fehlschlaegt, Berechtigungen pruefen. Schreibzugriff auf das Repository oder Status als angefragter Reviewer wird benoetigt. Wenn Inline-Kommentare fehlschlagen, alles Feedback im Review-Body mit Datei:Zeile-Referenzen platzieren.
Schritt 5: Nachverfolgen
Die Review-Auflosung verfolgen.
- Nachdem der Autor reagiert oder Aktualisierungen gepusht hat:
gh pr view <number> --json reviewDecision,reviews - Nur die Aenderungen neu reviewen, die Ihr Feedback adressieren:
gh pr diff <number> # neue Commits pruefen - Blocking-Punkte vor der Genehmigung als geloest verifizieren
- Kommentar-Threads aufloesen, wenn Probleme behoben wurden
- Genehmigen, wenn alle Blocking-Punkte geloest sind:
gh pr review <number> --approve --body "Alle Blocking-Probleme geloest. LGTM."
Erwartet: Blocking-Probleme als geloest verifiziert. Review-Konversation aufgeloest. PR genehmigt oder weitere Aenderungen mit spezifisch verbleibenden Punkten angefordert.
Bei Fehler: Wenn der Autor Feedback ablehnt, im PR-Thread diskutieren. Auf Auswirkungen (warum es wichtig ist) konzentrieren statt auf Autoritaet. Wenn bei nicht-blocking Punkten keine Einigung erzielt wird, elegant nachgeben — der Autor besitzt den Code.
Validierung
- PR-Kontext verstanden (Zweck, Groesse, CI-Status)
- Alle geaenderten Dateien reviewt (oder risikoreichste Dateien fuer XL-PRs)
- Feedback nach Schweregrad klassifiziert (Blocking/Suggest/Nit/Praise)
- Blocking-Punkte haben spezifische Loesung-Vorschlaege
- Mindestens ein Praise fuer positive Aspekte eingeschlossen
- Review-Entscheidung stimmt mit Feedback ueberein (genehmigen nur wenn keine Blocking-Punkte)
- Inline-Kommentare referenzieren spezifische Zeilen mit Schweregradtags
- CI/CD-Pruefungen verifiziert (gruen vor Genehmigung)
- Nachverfolgung nach Autorenrevisionen abgeschlossen
Haeufige Stolperfallen
- Blind genehmigen: Genehmigen ohne den Diff tatsaechlich zu lesen. Jede Genehmigung ist eine Qualitaetsbestaetigung
- Nit-Flut: Den Autor in Stilpraeferenzen ertraenken. Nits fuer Mentoring-Situationen aufsparen; bei zeitkritischen Reviews weglassen
- Den Wald vor Baeumen nicht sehen: Zeile fuer Zeile reviewen ohne das Gesamtdesign zu verstehen. Zuerst die PR-Beschreibung und den Commit-Verlauf lesen
- Stil als Blocking: Formatierung und Benennung sind fast nie blocking. Blocking fuer Bugs, Sicherheit und Datenintegritaet reservieren
- Kein Lob: Nur auf Probleme hinzuweisen ist demotivierend. Guter Code verdient Anerkennung
- Review-Scope-Creep: Code kommentieren, der nicht im PR geaendert wurde. Wenn vorhandene Probleme stoeren, ein separates Issue erstellen
Verwandte Skills
review-software-architecture— systemweites Architektur-Review (ergaenzend zum PR-Review)security-audit-codebase— eingehende Sicherheitsanalyse fuer PRs mit sicherheitsrelevanten Aenderungencreate-pull-request— die andere Seite des Prozesses: PRs erstellen, die leicht zu reviewen sindcommit-changes— saubere Commit-Geschichte erleichtert das PR-Review erheblich
GitHub Repository
Related Skills
llamaguard
OtherLlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
quantizing-models-bitsandbytes
OtherThis skill quantizes LLMs to 8-bit or 4-bit precision using bitsandbytes, achieving 50-75% memory reduction with minimal accuracy loss. It's ideal for running larger models on limited GPU memory or accelerating inference, supporting formats like INT8, NF4, and FP4. The skill integrates with HuggingFace Transformers and enables QLoRA training and 8-bit optimizers.
dispatching-parallel-agents
OtherThis Claude Skill dispatches multiple agents to investigate and fix 3+ independent problems concurrently. It is designed for scenarios involving unrelated failures that can be resolved without shared state or dependencies. The core capability is parallel problem-solving, assigning one agent per independent problem domain to maximize efficiency.
