AgentSkillsCN

verify-code

编写代码、查找 Bug、重新编写。输入“/verify-code”、“code pruefen”或“verification loop”。

SKILL.md
--- frontmatter
name: verify-code
description: "Schreibt Code, findet Bugs, schreibt neu. Run '/verify-code', 'code pruefen', oder 'verification loop'."

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:

  1. Leerer String gibt false, aber keine hilfreiche Fehlermeldung
  2. Null/undefined wirft TypeError

Sicherheit:

  1. Regex fehlt - "test@" wuerde als gueltig erkannt
  2. Keine Laengenbegrenzung (DoS durch sehr langen Input moeglich)

Performance:

  1. 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

ProblemLoesungZeile
Null/undefinedNull-Check mit FehlermeldungL2-4
DoS durch langen InputLaengenbegrenzung auf 254 ZeichenL6-8
Schwache ValidierungProper Email RegexL10-13
Keine FehlerdetailsReturn-Objekt mit error PropertyAlle

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:

  1. Erste Implementation schreiben
  2. Edge Cases, Security, Performance analysieren
  3. Probleme auflisten
  4. Verbesserten Code schreiben
  5. Aenderungen erklaeren