Lektion 4 von 5·10 Min Lesezeit

Projekt-Workflows

Einzelne Dateien mit AI bearbeiten ist der Einstieg. Die wahre Produktivität entsteht, wenn AI ganze Workflows übernimmt — Multi-File-Edits, Codebase-weites Refactoring und AI-gestütztes Code Review.

Multi-File Edits

Der Composer Workflow

Cursors Composer (Cmd/Ctrl + I) ist das Werkzeug für Änderungen über mehrere Dateien:

Szenario: Neues Feature "User Notifications"

Prompt an den Composer:

"Implementiere ein Notification-System: 1) Supabase-Tabelle 'notifications' mit id, user_id, title, message, read, created_at. 2) Server Action zum Erstellen und Markieren als gelesen. 3) React-Komponente NotificationBell mit Badge-Count. 4) API Route für Echtzeit-Updates mit SSE. Nutze bestehende Patterns aus @folder:src/app/actions und @folder:src/components/ui."

Was Composer macht:

  1. Erstellt die Migration-SQL-Datei
  2. Erstellt Types in src/types/notifications.ts
  3. Erstellt Server Actions in src/app/actions/notifications.ts
  4. Erstellt die UI-Komponente in src/components/notifications/NotificationBell.tsx
  5. Erstellt die API Route in src/app/api/notifications/route.ts
  6. Aktualisiert den Layout, um NotificationBell einzubinden

Best Practices für Multi-File Edits

  • Scope begrenzen: Maximal 5–8 Dateien pro Composer-Session
  • Review jede Datei: Nicht blind akzeptieren — jede generierte Datei prüfen
  • Inkrementell: Lieber drei kleine Composer-Sessions als eine riesige
  • Git Commits: Nach jeder erfolgreichen Composer-Session committen

Codebase-weites Refactoring

Migration: JavaScript → TypeScript

"Migriere @file:src/lib/legacy/helpers.js zu TypeScript. Leite Types aus der Nutzung ab (schau in @folder:src/components, wie die Funktionen aufgerufen werden). Erstelle ein @file:src/types/helpers.ts für die Types. Aktualisiere alle Imports."

API-Version-Migration

"Migriere alle Aufrufe von /api/v1/ zu /api/v2/ im gesamten Projekt. Die v2-API nutzt camelCase statt snake_case für Response-Felder. Aktualisiere alle Types und Zugriffspatterns. Zeige mir zuerst, welche Dateien betroffen sind."

Dependency Update

"Aktualisiere alle Importe von 'date-fns' v2 auf v3. Die wichtigsten Breaking Changes: format() nutzt jetzt ein anderes Token-System, parseISO ist jetzt parse. Zeige mir die Änderungen, bevor du sie anwendest."

Code Review mit AI

AI als erster Reviewer

Bevor Sie einen Pull Request erstellen — lassen Sie AI Ihren Code reviewen:

"Reviewe die Änderungen in @git:staged. Prüfe auf: 1) TypeScript-Fehler und Type Safety 2) Potenzielle Security Issues 3) Performance-Probleme 4) Fehlende Error Handling 5) Inkonsistenzen mit dem bestehenden Code-Stil. Formatiere als Markdown-Checkliste."

Review-Checklist von AI

AI identifiziert typische Probleme:

  • Type Safety: any-Types, fehlende Null-Checks, unsichere Type Assertions
  • Error Handling: Try/Catch ohne spezifische Fehlerbehandlung, unbehandelte Promise-Rejections
  • Security: SQL-Injection-Möglichkeiten, XSS in dangerouslySetInnerHTML, fehlende Input-Validierung
  • Performance: N+1-Queries, fehlende useMemo/useCallback, unnötige Re-Renders
  • Conventions: Inkonsistente Benennung, fehlende Kommentare, abweichende Patterns

Pair Programming Patterns

AI als Pair Partner

Navigator-Pattern: Sie schreiben den Code, AI beobachtet und kommentiert:

"Ich implementiere jetzt die Zahlungslogik. Beobachte meinen Code in @file:src/lib/billing/checkout.ts und weise mich auf Probleme hin, sobald du sie siehst."

Driver-Pattern: AI schreibt den Code, Sie steuern die Richtung:

"Implementiere die nächste Funktion processRefund. Stoppe nach jeder Funktion und warte auf mein Feedback, bevor du weitermachst."

Ping-Pong-Pattern: Abwechselnd Code und Tests:

  1. Sie: "Schreibe die Funktion calculateDiscount"
  2. AI schreibt die Funktion
  3. Sie: "Schreibe Tests für Edge Cases"
  4. AI schreibt Tests — einige schlagen fehl
  5. Sie: "Fixe die Funktion basierend auf den fehlgeschlagenen Tests"
  6. AI korrigiert — alle Tests grün

Erkenntnis: AI Pair Programming funktioniert am besten, wenn Sie die Architektur vorgeben und AI die Implementierung übernimmt. Umgekehrt (AI entscheidet Architektur) führt oft zu generischen Lösungen.