Code-Review-Skill-Beispiel

Ein Skill, der der KI hilft, konsistentes, hochwertiges Code-Review-Feedback zu geben.

Anwendungsfall

Dieser Skill stellt sicher, dass KI-Reviewer:

  • Auf Sicherheitslücken prüfen
  • Leistungsprobleme identifizieren
  • Code-Stil-Konsistenz beibehalten
  • Konstruktives Feedback geben

Vollständige SKILL.md

markdown
---
name: Code Review Guidelines
description: Provide thorough, constructive code review feedback
version: 1.0.0
author: Engineering Best Practices
platforms:
  - claude-code
  - codex
categories:
  - development
tags:
  - code-review
  - quality
  - security
---

# Code-Review-Richtlinien

## Review-Philosophie

Code-Review dient der Verbesserung der Codequalität und dem Wissensaustausch,
nicht dem Finden von Fehlern. Seien Sie konstruktiv, spezifisch und lehrreich.

## Review-Checkliste

### Sicherheit (Kritisch)
- [ ] Eingabevalidierung bei allen Benutzerdaten
- [ ] Keine SQL-Injection-Schwachstellen
- [ ] Keine XSS-Schwachstellen
- [ ] Keine hartcodierten Anmeldedaten oder Geheimnisse
- [ ] Ordnungsgemäße Authentifizierungs-/Autorisierungsprüfungen
- [ ] Sichere Zufallszahlengenerierung

### Leistung
- [ ] Keine N+1-Abfrageprobleme
- [ ] Angemessene Indizierung für Datenbankabfragen
- [ ] Keine unnötigen Re-Renders (React)
- [ ] Ordnungsgemäße Memoization wo nötig
- [ ] Effiziente Algorithmen für die Datengröße

### Codequalität
- [ ] Funktionen machen eine Sache gut
- [ ] Aussagekräftige Variablen-/Funktionsnamen
- [ ] Kein toter oder auskommentierter Code
- [ ] Angemessene Fehlerbehandlung
- [ ] Konsistenter Codestil

### Testen
- [ ] Tests decken den Happy Path ab
- [ ] Tests decken Grenzfälle ab
- [ ] Tests sind lesbar und wartbar
- [ ] Keine flaky Tests

## Feedback-Richtlinien

### Ton
- Seien Sie respektvoll und konstruktiv
- Erklären Sie das "Warum" hinter Vorschlägen
- Stellen Sie Fragen statt Forderungen
- Würdigen Sie gute Arbeit

### Struktur
1. Beginnen Sie mit dem, was gut ist
2. Äußern Sie Bedenken mit Kontext
3. Schlagen Sie Verbesserungen mit Beispielen vor
4. Enden Sie positiv

### Beispiele

**Gutes Feedback:**
"Erwägen Sie hier eine parametrisierte Abfrage zu verwenden, um SQL-Injection zu verhindern.
Die aktuelle String-Verkettung könnte bösartige Eingaben ermöglichen.

\`\`\`sql
-- Anstatt dies:
query = "SELECT * FROM users WHERE id = " + userId

-- Erwägen Sie:
query = "SELECT * FROM users WHERE id = ?"
params = [userId]
\`\`\`"

**Weniger hilfreiches Feedback:**
"Das ist falsch. Verwenden Sie Prepared Statements."

## Kommentar-Präfixe

Verwenden Sie diese Präfixe, um den Schweregrad anzugeben:

- **[KRITISCH]** - Muss vor dem Merge behoben werden (Sicherheit, Datenverlust)
- **[WICHTIG]** - Sollte behoben werden, bedeutendes Problem
- **[VORSCHLAG]** - Nice-to-have-Verbesserung
- **[FRAGE]** - Suche nach Klarstellung
- **[KLEINIGKEIT]** - Geringfügige Stilpräferenz

## Häufige Probleme

### Sicherheit

**SQL-Injection:**
\`\`\`javascript
// Anfällig
db.query(\`SELECT * FROM users WHERE email = '\${email}'\`);

// Sicher
db.query('SELECT * FROM users WHERE email = ?', [email]);
\`\`\`

**XSS:**
\`\`\`jsx
// Anfällig
<div dangerouslySetInnerHTML={{__html: userInput}} />

// Sicher
<div>{sanitize(userInput)}</div>
\`\`\`

### Leistung

**N+1-Abfragen:**
\`\`\`javascript
// Problem: N+1-Abfragen
users.forEach(async user => {
  const posts = await db.query('SELECT * FROM posts WHERE user_id = ?', [user.id]);
});

// Lösung: Batch-Abfrage
const posts = await db.query('SELECT * FROM posts WHERE user_id IN (?)', [userIds]);
\`\`\`

### Codequalität

**Magische Zahlen:**
\`\`\`javascript
// Unklar
if (status === 3) { ... }

// Klar
const STATUS_COMPLETED = 3;
if (status === STATUS_COMPLETED) { ... }
\`\`\`

## Genehmigungskriterien

Genehmigen wenn:
- Keine kritischen oder wichtigen Probleme
- Tests bestehen
- Code folgt Stilrichtlinien
- Dokumentation aktualisiert wenn nötig

Änderungen anfordern wenn:
- Sicherheitslücken existieren
- Kritische Bugs gefunden
- Tests für neue Funktionalität fehlen
- Breaking Changes nicht dokumentiert

Anpassungstipps

  1. Team-Standards hinzufügen: Fügen Sie Ihre spezifischen Codierungskonventionen ein
  2. Schweregrade anpassen: Passen Sie an die Risikotoleranz Ihres Teams an
  3. Tools einbeziehen: Referenzieren Sie Linter, Formatter usw.
  4. Beispiele hinzufügen: Verwenden Sie Code aus Ihrer Codebasis

Nächste Schritte