Travailler avec de grandes bases de code pose des défis d’un autre ordre que les petits projets. En nous appuyant sur notre expérience de mise à l’échelle de la base de code de Cursor et sur les retours de clientes et clients qui gèrent des bases de code massives, on a dégagé des schémas utiles pour gérer la complexité croissante. Dans ce guide, on va parcourir quelques techniques qui se sont révélées pratiques pour les grandes bases de code.

Utilise Chat pour te mettre rapidement à niveau sur un code que tu ne connais pas

Parcourir une grande base de code, surtout si elle est nouvelle pour toi, peut être difficile. Tu passes souvent par du grep, des recherches et des clics un peu partout pour retrouver les parties précises qui t’intéressent. Avec Chat, tu peux poser des questions pour trouver ce que tu cherches et obtenir une explication détaillée de son fonctionnement. Ici, on se fait aider pour identifier les détails d’implémentation de l’indexation de la base de code dans Cursor, et on demande même quelques exemples pour faciliter la compréhension.

Écris des règles pour la connaissance métier

Si tu faisais onboarder un·e nouveau·elle collaborateur·rice sur ton codebase, quel contexte lui donnerais-tu pour qu’il ou elle puisse commencer à contribuer de manière utile dès le départ ? Ta réponse à cette question est probablement une info précieuse pour aider Cursor à comprendre ton projet. Dans chaque orga ou projet, il y a de la connaissance implicite qui n’est pas forcément entièrement capturée dans ta doc. Utiliser des règles efficacement est le meilleur moyen de s’assurer que Cursor voit l’ensemble du tableau. Par exemple, si tu écris des instructions pour implémenter une nouvelle fonctionnalité ou un nouveau service, pense à rédiger une courte règle pour la documenter et la pérenniser.
Boilerplate
---
description: Ajouter un nouveau service frontend VS Code
---

1. **Définition de l’interface :**
   - Défini une nouvelle interface de service avec `createDecorator` et assure-toi d’inclure `_serviceBrand` pour éviter les erreurs.

2. **Implémentation du service :**
   - Implémente le service dans un nouveau fichier TypeScript, étends `Disposable`, puis enregistre-le comme singleton avec `registerSingleton`.

3. **Contribution du service :**
   - Crée un fichier de contribution pour importer et charger le service, et enregistre-le dans le point d’entrée principal.

4. **Intégration au contexte :**
   - Mets à jour le contexte pour inclure le nouveau service, afin d’y accéder dans toute l’application.
S’il existe des conventions de formatage que tu veux que Cursor respecte, pense à auto-attacher des règles basées sur des glob patterns.
Formatting
---
globs: *.ts
---
- Utilise bun comme gestionnaire de paquets. Voir [package.json](mdc:backend/reddit-eval-tool/package.json) pour les scripts
- Utilise kebab-case pour les noms de fichiers
- Utilise camelCase pour les noms de fonctions et de variables
- Utilise UPPERCASE_SNAKE_CASE pour les constantes en dur
- Préfère `function foo()` à `const foo = () =>`
- Utilise `Array<T>` plutôt que `T[]`
- Utilise des exports nommés plutôt que des exports par défaut, p. ex. (`export const variable ...`, `export function `)

Reste au plus près du processus de création du plan

Pour des changements plus importants, investir plus de réflexion que d’habitude pour établir un plan précis et bien cadré peut améliorer significativement les résultats de Cursor. Si tu constates que tu n’obtiens pas le résultat voulu après quelques variantes du même prompt, pense à prendre du recul et à créer un plan plus détaillé depuis zéro, comme si tu rédigeais un PRD pour un collègue. Souvent, le plus dur est de déterminer quel changement doit être apporté, une tâche particulièrement adaptée aux humains. Avec les bonnes instructions, on peut déléguer certaines parties de l’implémentation à Cursor. Une façon d’utiliser l’IA pour renforcer la création du plan est d’utiliser le mode Ask. Pour créer un plan, active le mode Ask dans Cursor et déverse tout le contexte que tu as depuis tes outils de gestion de projet, tes docs internes ou tes idées en vrac. Réfléchis aux fichiers et dépendances dans la base de code que tu sais déjà vouloir inclure. Ça peut être un fichier contenant des portions de code avec lesquelles tu veux t’intégrer, ou même un dossier entier. Voici un exemple de 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]
On demande au modèle de créer un plan et de rassembler du contexte en posant des questions à l’humain, en se référant aux prompts d’exploration antérieurs ainsi qu’aux descriptions de tickets. L’utilisation d’un modèle de raisonnement comme claude-3.7-sonnet, gemini-2.5-pro ou o3 est recommandée, car ils comprennent l’intention du changement et synthétisent mieux un plan. À partir de là, tu peux affiner le plan de manière itérative avec l’aide de Cursor avant de commencer l’implémentation.

Choisis le bon outil pour la bonne tâche

L’une des compétences les plus importantes pour utiliser Cursor efficacement, c’est de choisir l’outil adapté. Réfléchis à ce que tu veux accomplir et choisis l’approche qui te maintient dans le flow.
ToolUse caseStrengthLimitation
TabModifications rapides et manuellesContrôle total, rapiditéFichier unique
Inline EditModifications ciblées dans un fichierModifications focaliséesFichier unique
ChatModifications plus larges, multi-fichiersRassemble automatiquement le contexte, modifications en profondeurPlus lent, dépendant du contexte
Chaque outil a son terrain de jeu idéal :
  • Tab est ton réflexe pour des modifications rapides où tu veux être aux commandes
  • Inline Edit brille quand tu dois apporter des changements ciblés à une section précise du code
  • Chat est parfait pour les changements plus importants où tu as besoin que Cursor comprenne le contexte plus large
Quand tu utilises le mode Chat (qui peut sembler un peu plus lent mais est incroyablement puissant), aide-le à t’aider en fournissant un bon contexte. Utilise @files pour pointer vers du code similaire que tu veux reproduire, ou @folder pour lui donner une meilleure compréhension de la structure de ton projet. Et n’aie pas peur de découper les gros changements en plus petits morceaux — démarrer de nouveaux chats aide à garder le cap et l’efficacité.

Points clés

  • Réduis la portée des changements et n’essaie pas d’en faire trop à la fois
  • Ajoute le contexte pertinent quand tu peux
  • Utilise Chat, Inline Edit et Tab pour ce pour quoi ils sont les meilleurs
  • Crée souvent de nouvelles conversations
  • Planifie avec Ask mode, implémente avec Agent mode