Verify Code Skill (Verification Loop)
Implementiert eine selbst-korrigierende Code-Schleife: Schreiben, Bugs finden, verbessern. Basiert auf Anthropic's "Verification Loop" Best Practice.
Wann ausfuehren
- •Bei Code-Aufgaben wo Qualitaet wichtig ist
- •Wenn User sagt "verify-code", "code pruefen", oder "/verify-code"
- •Bei komplexen Funktionen mit vielen Edge Cases
- •Bei sicherheitskritischem Code
Workflow
1. Code schreiben (Erste Version)
Implementiere die angeforderte Funktion/Feature wie gewohnt.
code
## Erste Implementation [Code hier]
2. Selbst-Analyse durchfuehren
Analysiere den gerade geschriebenen Code auf genau 3 potenzielle Problem-Kategorien:
a) Edge Cases
- •Was passiert bei leerem Input?
- •Was bei null/undefined?
- •Was bei sehr grossen Werten?
- •Was bei unerwarteten Typen?
- •Was bei Concurrent Access?
b) Sicherheitsluecken
- •Input Validation?
- •SQL/Command Injection moeglich?
- •XSS Risiken?
- •Sensitive Daten exponiert?
- •Authentication/Authorization korrekt?
c) Performance-Probleme
- •Unnoetige Loops oder Rekursionen?
- •Memory Leaks moeglich?
- •Blocking Operations?
- •Fehlende Caching-Moeglichkeiten?
- •N+1 Query Probleme?
3. Probleme dokumentieren
code
## Gefundene Probleme ### Edge Cases 1. [Problem 1]: [Beschreibung] 2. [Problem 2]: [Beschreibung] ### Sicherheit 1. [Problem 1]: [Beschreibung] ### Performance 1. [Problem 1]: [Beschreibung]
Falls keine Probleme gefunden: Explizit bestaetigen warum der Code sicher ist.
4. Code neu schreiben
Schreibe den Code neu mit allen Fixes:
code
## Verbesserte Implementation [Verbesserter Code hier]
5. Verbesserungen erklaeren
code
## Aenderungen | Problem | Loesung | Zeile | |---------|---------|-------| | [Edge Case 1] | [Fix] | [L42] | | [Security Issue] | [Fix] | [L15] | | [Performance] | [Fix] | [L28] |
Beispiel-Ablauf
User Request
"Schreibe eine Funktion die User-Input validiert"
Erste Implementation
typescript
function validateEmail(email: string): boolean {
return email.includes('@');
}
Gefundene Probleme
Edge Cases:
- •Leerer String gibt false, aber keine hilfreiche Fehlermeldung
- •Null/undefined wirft TypeError
Sicherheit:
- •Regex fehlt - "test@" wuerde als gueltig erkannt
- •Keine Laengenbegrenzung (DoS durch sehr langen Input moeglich)
Performance:
- •Keine (einfache Funktion)
Verbesserte Implementation
typescript
function validateEmail(email: string | null | undefined): { valid: boolean; error?: string } {
if (!email) {
return { valid: false, error: 'Email ist erforderlich' };
}
if (email.length > 254) {
return { valid: false, error: 'Email ist zu lang' };
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
return { valid: false, error: 'Ungueltige Email-Adresse' };
}
return { valid: true };
}
Aenderungen
| Problem | Loesung | Zeile |
|---|---|---|
| Null/undefined | Null-Check mit Fehlermeldung | L2-4 |
| DoS durch langen Input | Laengenbegrenzung auf 254 Zeichen | L6-8 |
| Schwache Validierung | Proper Email Regex | L10-13 |
| Keine Fehlerdetails | Return-Objekt mit error Property | Alle |
Wichtige Regeln
- •IMMER den Loop komplett durchlaufen (nicht abkuerzen)
- •MINDESTENS 1 Problem pro Kategorie suchen (oder explizit begruenden warum keins existiert)
- •NIEMALS den ersten Code als "gut genug" akzeptieren
- •KONKRETE Fixes zeigen, nicht nur Probleme benennen
- •Bei trivialen Funktionen: Verkuerzte Analyse ok, aber trotzdem durchfuehren
Wann NICHT verwenden
- •Bei einfachen Einzeilern ohne Logik
- •Bei reinen Config-Aenderungen
- •Wenn User explizit "schnell" oder "quick fix" sagt
Typische Nutzung
User: /verify-code Implementiere eine Rate-Limiting Funktion
Response:
- •Erste Implementation schreiben
- •Edge Cases, Security, Performance analysieren
- •Probleme auflisten
- •Verbesserten Code schreiben
- •Aenderungen erklaeren