Mit großen Codebasen zu arbeiten bringt andere Herausforderungen mit sich als kleinere Projekte. Aus unserer Erfahrung beim Skalieren der eigenen Cursor-Codebase und den Einblicken von Kundinnen und Kunden, die riesige Codebasen managen, haben wir nützliche Muster entdeckt, um mit der steigenden Komplexität umzugehen. In diesem Guide gehen wir einige Techniken durch, die sich für große Codebasen als besonders hilfreich erwiesen haben.

Nutze Chat, um dich schnell mit unbekanntem Code vertraut zu machen

Sich in einer großen Codebase zurechtzufinden, besonders wenn sie neu für dich ist, kann herausfordernd sein. Oft greppst du, suchst und klickst herum, um die spezifischen Teile der Codebase zu finden, die du suchst. Mit Chat kannst du direkt Fragen stellen, um das Gesuchte zu finden, und bekommst eine detaillierte Erklärung, wie es funktioniert. Hier holen wir uns Hilfe, um Implementierungsdetails zur Codebase-Indizierung in Cursor zu finden, und bitten sogar um ein paar Beispiele, damit es leichter zu verstehen ist.

Schreib Regeln für domänenspezifisches Wissen

Wenn du jemanden neu in deine Codebase onboardest, welchen Kontext würdest du geben, damit die Person direkt sinnvolle Beiträge leisten kann? Deine Antwort auf diese Frage ist wahrscheinlich auch für Cursor wertvoll. In jeder Organisation oder jedem Projekt gibt es latentes Wissen, das in der Doku nicht vollständig erfasst ist. Regeln effektiv zu nutzen, ist der beste Weg, sicherzustellen, dass Cursor das volle Bild bekommt. Wenn du zum Beispiel Anweisungen dafür schreibst, wie ein neues Feature oder ein neuer Service implementiert wird, schreib am besten eine kurze Regel dazu, um das für die Zukunft festzuhalten.
Boilerplate
---
description: Add a new VSCode frontend service
---

1. **Interface Definition:**
   - Definiere ein neues Service-Interface mit `createDecorator` und stell sicher, dass `_serviceBrand` enthalten ist, um Errors zu vermeiden.

2. **Service Implementation:**
   - Implementiere den Service in einer neuen TypeScript-Datei, erweitere `Disposable` und registriere ihn als Singleton mit `registerSingleton`.

3. **Service Contribution:**
   - Erstelle eine Contribution-Datei, um den Service zu importieren und zu laden, und registriere ihn im Main-Entrypoint.

4. **Context Integration:**
   - Aktualisiere den Context, um den neuen Service aufzunehmen, sodass er in der gesamten Anwendung zugänglich ist.
Wenn es gängige Formatierungsmuster gibt, an die sich Cursor unbedingt halten soll, kannst du Regeln basierend auf Glob-Patterns automatisch anhängen.
Formatting
---
globs: *.ts
---
- Verwende bun als Package-Manager. Siehe [package.json](mdc:backend/reddit-eval-tool/package.json) für Scripts
- Verwende kebab-case für Dateinamen
- Verwende camelCase für Funktions- und Variablennamen
- Verwende UPPERCASE_SNAKE_CASE für hardcodierte Konstanten
- Bevorzuge `function foo()` gegenüber `const foo = () =>`
- Verwende `Array<T>` statt `T[]`
- Verwende named exports statt default exports, z. B. (`export const variable ...`, `export function `)

Bleib nah am Planerstellungsprozess

Für größere Änderungen kann es Cursor deutlich bessere Ergebnisse liefern, wenn du überdurchschnittlich viel Zeit in einen präzisen, klar abgegrenzten Plan steckst. Wenn du nach ein paar Varianten desselben Prompts immer noch nicht das gewünschte Ergebnis bekommst, zoom raus und erstelle einen detaillierteren Plan von Grund auf – so, als würdest du ein PRD für eine:n Kolleg:in schreiben. Oft ist der schwierige Teil herauszufinden, welche Änderung überhaupt gemacht werden sollte – eine Aufgabe, die Menschen gut liegt. Mit den richtigen Anweisungen können wir Teile der Implementierung an Cursor delegieren. Eine Möglichkeit, AI zur Unterstützung der Planerstellung zu nutzen, ist der Ask-Modus. Um einen Plan zu erstellen, aktiviere in Cursor den Ask-Modus und kippe den gesamten Kontext rein, den du aus deinen Projektmanagement-Tools, internen Docs oder losen Gedanken hast. Überleg dir, welche Dateien und Dependencies es in der Codebase gibt, die du auf jeden Fall einbeziehen willst. Das kann eine Datei sein, die Code enthält, mit dem du integrieren willst, oder auch ein ganzer Ordner. Hier ist ein Beispiel-Prompt:
Planning prompt
- create a plan for how we shoud create a new feature (just like @existingfeature.ts)
- ask me questions (max 3) if anything is unclear
- make sure to search the codebase

@Past Chats (my earlier exploration prompts)

here's some more context from [project management tool]:
[pasted ticket description]
Wir bitten das Modell, einen Plan zu erstellen und Kontext zu sammeln, indem es der Person Fragen stellt, frühere Explorations-Prompts referenziert und auch die Ticketbeschreibungen einbezieht. Ein Thinking-Model wie claude-3.7-sonnet, gemini-2.5-pro oder o3 wird empfohlen, da es die Intention der Änderung versteht und einen Plan besser synthetisieren kann. Darauf aufbauend kannst du den Plan iterativ mit Cursor ausarbeiten, bevor du mit der Implementierung startest.

Wähl das richtige Tool für den Job

Eine der wichtigsten Skills, um Cursor effektiv zu nutzen, ist, das richtige Tool für den Job zu wählen. Denk darüber nach, was du erreichen willst, und wähl den Ansatz, der dich im Flow hält.
ToolUse caseStärkeLimitation
TabSchnelle, manuelle ÄnderungenVolle Kontrolle, schnellEinzeldatei
Inline EditGezielt scoped Änderungen in einer DateiFokussierte ÄnderungenEinzeldatei
ChatGrößere, mehrdateiige ÄnderungenSammelt Kontext automatisch, tiefe ÄnderungenLangsamer, kontextlastig
Jedes Tool hat seinen Sweet Spot:
  • Tab ist dein Go-to für schnelle Änderungen, bei denen du am Steuer sitzen willst
  • Inline Edit glänzt, wenn du gezielte Änderungen an einem bestimmten Codeabschnitt brauchst
  • Chat ist perfekt für größere Änderungen, bei denen Cursor den breiteren Kontext verstehen soll
Wenn du den Chat-Modus nutzt (der sich etwas langsamer anfühlen kann, aber extrem mächtig ist), hilf ihm zu helfen, indem du guten Kontext lieferst. Nutze @files, um auf ähnlichen Code zu verweisen, den du nachbauen willst, oder @folder, um ein besseres Verständnis deiner Projektstruktur zu geben. Und hab keine Angst, größere Änderungen in kleinere Chunks zu zerlegen – neue Chats zu starten hilft, die Dinge fokussiert und effizient zu halten.

Wichtigste Erkenntnisse

  • Schränk Änderungen ein und versuch nicht, zu viel auf einmal zu machen
  • Füg relevanten Kontext hinzu, wann immer du kannst
  • Nutz Chat, Inline Edit & Tab jeweils für das, worin sie am besten sind
  • Erstell häufig neue Chats
  • Plan mit dem Ask mode, implementier mit dem Agent mode