Changer le thème

Guide complet Cursor Rules : faire générer du code conforme par l'IA (config pratique incluse)

Easton editorial illustration: step-by-step assembly path

Je fixe le code que Cursor vient de générer, doigt suspendu au-dessus de Entrée — troisième tentative.

La première fois, il a utilisé var. La deuxième, un composant classe. Cette fois, il a supprimé tous les types TypeScript et empilé des any. Je efface tout, prêt à coder à la main.

Là, j’ai compris : l’IA n’est pas bête — on ne lui a jamais dit « nos règles ».

Au début avec Cursor, je pensais qu’elle « savait » ce qu’est du bon code. Puis l’équipe s’est plainte : « pourquoi tes composants Cursor ne ressemblent pas au nôtre ? » Il fallait des normes explicites.

Cet article règle ce problème. Cinq minutes pour configurer Cursor Rules, et l’IA produit du code conforme — bon stack, bon style, sans surprises.

Qu’est-ce que Cursor Rules ? Pourquoi en avoir besoin ?

L’essence de Cursor Rules : fixer les règles à l’IA

En bref, Cursor Rules est un fichier de configuration qui indique à l’IA vos normes de codage.

Comme le manuel remis aux nouveaux développeurs : stack, nommage, organisation des fichiers. Cursor Rules, c’est le même principe — le « guide d’onboarding » de l’IA.

Le mécanisme est direct : à chaque conversation, le contenu des règles est injecté dans le prompt. L’IA lit « ce projet utilise React Hooks, pas de composants classe » et génère en conséquence.

Sans Rules ? Mes erreurs au début

Ma première semaine avec Cursor, j’étais euphorique — l’IA code vite. Trois jours plus tard, le désastre :

Style incohérent. camelCase ici, PascalCase là, snake_case ailleurs. Impossible de s’y retrouver.

Mauvais stack. Je voulais des composants fonctionnels ; Cursor générait des class Component extends React.Component. Je disais « utilise Hooks », le fichier suivant revenait en arrière.

Normes ignorées. L’équipe exige des commentaires sur chaque fonction — code nu. Gestion d’erreurs : try-catch obligatoire, l’IA appelait l’API sans filet.

Deux jours de refactor ensuite, mains dans le plâtre.

Après configuration ? Le changement

Cinq minutes pour un fichier .cursorrules :

  • React 18 + TypeScript
  • Composants fonctionnels et Hooks uniquement
  • Nommage camelCase uniforme
  • Typage obligatoire, pas de any

Résultat ?

Chaque composant conforme. Cohérence +80 %, code review divisée par deux. L’équipe demandait : « comment tu fais pour que Cursor obéisse ? »

Les chiffres parlent : bien configurées, les Rules améliorent nettement la cohérence et réduisent le refactor. awesome-cursorrules dépasse 2000 stars — un vrai besoin des développeurs.

Configuration Cursor Rules (2026)

Ancien vs nouveau

Les tutoriels mentionnent .cursorrules ou .cursor/rules. Les deux existent, à des époques différentes.

Ancien (avant 2025) :
Un fichier .cursorrules à la racine, toutes les règles dedans. Simple.

Nouveau (recommandé 2026) :
Dossier .cursor/rules avec plusieurs .mdc par catégorie.

La migration est recommandée : règles modulaires et portées configurables. L’ancien format fonctionne encore, mais sera déprécié.

Mon conseil : nouveau projet → nouvelle méthode ; ancien → migrer quand vous avez le temps.

Deux niveaux : global vs projet

User Rules (global)

Vos préférences personnelles, tous projets confondus.

Chemin : File → Preferences → Cursor Settings → Rules → User Rules

Exemples :

  • « TypeScript partout »
  • « Pas de var, const ou let »
  • « async/await, pas de .then() »

Vos « obsessions de code » personnelles.

Project Rules (projet)

Normes spécifiques au projet courant.

Configuration :

  1. Créer .cursor à la racine
  2. Créer rules dedans
  3. Ajouter des .mdc : frontend.mdc, typescript-rules.mdc

Exemples :

  • « Projet Next.js 14 + TypeScript + Tailwind CSS »
  • « API RESTful »
  • « Composants dans components/, nommage PascalCase »

Priorité : règles projet > règles globales.

Portée d’application : ne pas tout charger

Fonctionnalité 2026 : contrôler quand une règle s’applique.

Dans un .mdc :

Always : toujours actif. Pour les règles core (« pas de var »). Attention au contexte saturé.

Auto Attached : selon le type de fichier. Ex. règles React sur .tsx, Python sur .py. Ma recommandation principale.

Agent Requested : l’IA décide selon la conversation. Règles auxiliaires.

Manual : sur demande explicite. Perf, tests, cas particuliers.

En pratique : 80 % Auto Attached, 10 % Always, 10 % le reste.

Nouveauté janvier 2026 : commande /rules

Le 8 janvier 2026, Cursor CLI ajoute /rules : créer et éditer les règles depuis le terminal, sans chercher les dossiers.

Voir l’annonce officielle.

Comment rédiger des Cursor Rules efficaces ?

La qualité des règles détermine si Cursor obéit.

Trois catégories de contenu

A. Technique et architecture

Décrire le projet :

Stack du projet :
- Frontend : React 18 + TypeScript 5.3
- State : Zustand
- Styles : Tailwind CSS 3.4
- Build : Vite 5.0
- Node.js : 18+

Architecture :

Normes d'architecture :
- Frontend/backend séparés
- API RESTful
- Structure :
  - components/ composants réutilisables
  - pages/ pages
  - utils/ utilitaires
  - hooks/ hooks personnalisés

Pourquoi autant de détails ?

J’avais écrit « React » sans version — parfois React 16, parfois 18. Les numéros de version ont tout réglé.

B. Normes de code

Normes de code :

Nommage :
- Composants : PascalCase (ex. UserProfile)
- Fichiers : kebab-case (ex. user-profile.tsx)
- Variables/fonctions : camelCase (ex. getUserData)
- Constantes : UPPER_SNAKE_CASE (ex. MAX_RETRY_COUNT)

Style :
- Composants fonctionnels uniquement
- const > let, pas de var
- Fonctions fléchées (sauf besoin de this)
- Typage TypeScript obligatoire

Longueur :
- Fichier max 300 lignes
- Fonction max 50 lignes

Commentaires :
- JSDoc sur les fonctions clés
- Commentaires inline sur la logique complexe
- Expliquer le « pourquoi », pas le « quoi »

C. Qualité et tests

Gestion d'erreurs :
- try-catch sur toutes les opérations async
- Messages d'erreur utilisateur clairs
- Ne pas avaler les erreurs — au minimum console.error

Performance :
- key sur les listes
- Virtualisation pour grandes listes
- width/height sur les images

Tests :
- Tests unitaires sur les utilitaires
- Couverture sur la logique métier critique

Principes d’or

Principe 1 : concret, exécutable, vérifiable

❌ « Bon code », « bonnes pratiques », « attention à la perf »

✅ :

  • « Composants fonctionnels, pas de classes »
  • « Props en interface, pas en type »
  • « async/await obligatoire, pas de .then() »

Des instructions, pas des vœux.

Principe 2 : max 500 lignes

Trop long = contexte saturé, compréhension difficile. Diviser :

  • frontend.mdc, backend.mdc, typescript.mdc, testing.mdc

Principe 3 : exemples de code

❌ « Composants fonctionnels avec types »

✅ :

Exemple de composant :

interface UserCardProps {
  name: string;
  email: string;
}

export const UserCard = ({ name, email }: UserCardProps) => {
  return (
    <div className="user-card">
      <h3>{name}</h3>
      <p>{email}</p>
    </div>
  );
};

Principe 4 : règles importantes en tête

  1. Stack et versions
  2. Style de code
  3. Organisation des fichiers
  4. Optimisations optionnelles

Erreurs courantes

Erreur 1 : trop vague

« Bonnes pratiques React » — lesquelles, 2016 ou 2024 ?

→ « React Hooks, useState/useEffect, état complexe en useReducer »

Erreur 2 : règles contradictoires

« TypeScript obligatoire » + « any autorisé » — l’IA hésite et ignore tout.

Erreur 3 : versions oubliées

React 16 (classes) vs React 18 (Hooks). Précisez : React 18.2+, TypeScript 5.3+, Node.js 18+.

Erreur 4 : dissertation

❌ « Nous choisissons TypeScript pour le typage statique… » (300 mots de plus)

✅ « TypeScript obligatoire, pas de any »

Cas pratique : React + TypeScript

Stack :

  • React 18
  • TypeScript 5.x
  • Tailwind CSS 3.x
  • Vite 5.x

Normes :

  • Composants fonctionnels
  • Typage strict, pas de any
  • Nommage uniforme
  • Gestion d’erreurs

Étape 1 : créer le fichier

mkdir -p .cursor/rules
cd .cursor/rules
touch react-typescript.mdc

Étape 2 : stack

# Règles projet React + TypeScript

## Stack

- React 18.2+
- TypeScript 5.3+
- Tailwind CSS 3.4+
- Vite 5.0+
- Node.js 18+

## Gestion des dépendances

- Gestionnaire : pnpm
- Ne pas utiliser npm ou yarn

Étape 3 : style de code

## Normes de code

### Composants

- Composants fonctionnels uniquement
- Nom PascalCase, fichier kebab-case
- Export nommé, pas de default

Exemple :

// ❌ Incorrect
export default function userProfile() { }

// ✅ Correct
export const UserProfile = () => { }

### TypeScript

- Typage obligatoire
- Props en interface, pas en type
- Pas de any — unknown ou type concret
- Type de retour explicite

Exemple :

interface UserCardProps {
  name: string;
  email: string;
  age?: number;
}

export const UserCard = ({ name, email, age }: UserCardProps): JSX.Element => {
  return (
    <div className="p-4 border rounded">
      <h3 className="text-lg font-bold">{name}</h3>
      <p className="text-gray-600">{email}</p>
      {age && <p>Age: {age}</p>}
    </div>
  );
};

### Nommage

- Variables/fonctions : camelCase
- Composants : PascalCase
- Constantes : UPPER_SNAKE_CASE
- Fichiers : kebab-case
- CSS : classes Tailwind, pas de CSS custom

### Async

- async/await uniquement
- Pas de chaînage .then()
- try-catch obligatoire

Exemple :

const fetchUserData = async (userId: string): Promise<User> => {
  try {
    const response = await fetch(`/api/users/${userId}`);
    if (!response.ok) throw new Error('Failed to fetch user');
    return await response.json();
  } catch (error) {
    console.error('Error fetching user:', error);
    throw error;
  }
};

Étape 4 : organisation

## Organisation

### Structure

src/
├── components/     # Composants réutilisables
├── pages/          # Pages
├── hooks/          # Hooks custom
├── utils/          # Utilitaires
├── types/          # Types TypeScript
├── services/       # Appels API
└── constants/      # Constantes

### Nommage des fichiers

- Composant : user-card.tsx
- Utilitaire : format-date.ts
- Types : user.types.ts
- Hook : use-user-data.ts

### Ordre des imports

1. React
2. Bibliothèques tierces
3. Composants internes
4. Utilitaires
5. Types
6. Styles

Étape 5 : qualité

## Qualité

### Erreurs

- try-catch sur les appels API
- Messages utilisateur clairs
- Logs d'erreur

### Performance

- key sur les listes
- Pas de nouvel objets/fonctions dans le render
- React.memo si pertinent
- width/height sur les images

### Code

- Fichier max 300 lignes
- Fonction max 50 lignes
- Commentaires sur logique complexe
- JSDoc sur fonctions clés

Étape 6 : fichier complet

Assemblez le tout dans .cursor/rules/react-typescript.mdc. Adaptez : Redux, React Query, règles métier.

Test

Prompt : « Crée un composant carte utilisateur avec nom, email et avatar »

Avant Rules :

export default function UserCard(props) {
  return <div>...</div>
}

Après Rules :

interface UserCardProps {
  name: string;
  email: string;
  avatarUrl: string;
}

export const UserCard = ({ name, email, avatarUrl }: UserCardProps): JSX.Element => {
  return (
    <div className="p-4 border rounded shadow">
      <img src={avatarUrl} alt={name} className="w-16 h-16 rounded-full" width="64" height="64" />
      <h3 className="text-lg font-bold mt-2">{name}</h3>
      <p className="text-gray-600">{email}</p>
    </div>
  );
};

Conforme du premier coup : composant fonctionnel, types, export nommé, Tailwind, dimensions image.

Techniques avancées et FAQ

Priorité des règles

Règles projet > règles globales

Global dit guillemets simples, projet dit doubles — le projet gagne.

Règles sous-dossier > parent

project/
├── .cursor/rules/general.mdc
└── frontend/
    └── .cursor/rules/react.mdc

Dans frontend/, react.mdc prime.

Appel manuel > déclenchement auto

Mention explicite d’une règle Manual → priorité même si scope Manual.

Gestion multi-fichiers

.cursor/rules/
├── core.mdc              # Stack (Always)
├── frontend.mdc          # Frontend (Auto Attached: *.tsx, *.ts)
├── backend.mdc           # Backend (Auto Attached: *.py, *.go)
├── testing.mdc           # Tests (Auto Attached: *.test.*)
└── performance.mdc       # Perf (Manual)

Débogage

Règles chargées ?

Demandez : « Quelles règles vois-tu ? » Pas listées → chemin, portée ou format incorrect.

Conflits

Deux règles contradictoires → l’IA peut tout ignorer. Trouvez le conflit, supprimez la règle faible ou précisez « override ».

L’IA désobéit

  1. Règles vagues → instructions précises
  2. Fichier trop long → règles importantes en tête
  3. Prompt contradictoire → « suis les règles du projet »
  4. Ajoutez des exemples, passez en Always

Ressources communautaires

awesome-cursorrules — 2000+ stars : React, Vue, Python, Go, Next.js, Astro, TypeScript, tests, Docker.

awesome-cursorrules-zh — règles fusionnées full-stack (React + FastAPI).

cursor.directory — bibliothèque web, 30+ frameworks.

dotcursorrules.com — cas pratiques et bonnes pratiques.

Conseil : partir du communautaire, ajuster après usage.

Collaboration

1. Git

git add .cursor/rules
git commit -m "Add Cursor rules for project standards"

Pull → règles chargées pour toute l’équipe.

2. README

## Développement avec Cursor

Règles dans `.cursor/rules` :
- React 18 + TypeScript
- Composants fonctionnels + Hooks
- Tailwind CSS
- Typage strict

Modifier les règles : discuter avec l'équipe d'abord.

3. Review trimestrielle

Règles obsolètes ? Nouvelles pratiques ? Retours équipe ? Document vivant.

Conclusion

En une phrase : fixez les règles, l’IA travaille bien.

Vous aussi, au début :

  • Composants au style incohérent
  • TypeScript avec des any cachés
  • Code « trop IA », pas humain

Ce n’est pas Cursor — c’est nous qui n’avons pas défini les règles.

Maintenant :

  1. Créer les fichiers.cursor/rules pour les nouveaux, .cursorrules en transition
  2. Stack explicite — versions, frameworks, outils
  3. Normes de code — nommage, style, erreurs, exemples
  4. ≤ 500 lignes — diviser si besoin
  5. Itérer — document vivant

Agissez :

  • Pas encore configuré ? 5 minutes pour le premier fichier
  • Déjà configuré ? Vérifiez la clarté, ajoutez des exemples
  • En équipe ? Versionnez dans Git

Dans un mois :

  • Code review ÷ 2
  • Style unifié
  • Onboarding accéléré
  • L’IA devient un vrai assistant

Ressources :

Configuration complète de Cursor Rules

Étapes complètes pour configurer Cursor Rules depuis zéro

⏱️ Estimated time: 30 min

  1. 1

    Step 1: Créer la structure des fichiers de règles

    Nouvelle méthode (recommandée 2026) :
    • Créer le dossier .cursor/rules à la racine du projet
    • Créer des fichiers .mdc dans rules (ex. react-typescript.mdc)
    • Ancienne méthode : fichier .cursorrules à la racine (sera déprécié)

    Exemple de commandes :
    mkdir -p .cursor/rules
    cd .cursor/rules
    touch react-typescript.mdc

    Choix du niveau :
    • User Rules : règles globales dans Cursor Settings → Rules → User Rules
    • Project Rules : règles projet dans .cursor/rules
    • Priorité : règles projet > règles globales
  2. 2

    Step 2: Rédiger les normes de stack et d'architecture

    Stack explicite (avec numéros de version) :
    • Frontend : React 18.2+, TypeScript 5.3+
    • Styles : Tailwind CSS 3.4+
    • Build : Vite 5.0+
    • Runtime : Node.js 18+

    Normes d'architecture :
    • Style d'API (RESTful/GraphQL)
    • Structure des dossiers (components/, pages/, utils/)
    • Stratégie frontend/backend séparés

    Exemple :
    # Règles projet React + TypeScript
    ## Stack
    - React 18.2+
    - TypeScript 5.3+
    - Tailwind CSS 3.4+
  3. 3

    Step 3: Définir les normes de code et la qualité

    Trois catégories de normes :

    A. Conventions de nommage
    • Composants : PascalCase (UserProfile)
    • Fichiers : kebab-case (user-profile.tsx)
    • Variables/fonctions : camelCase (getUserData)
    • Constantes : UPPER_SNAKE_CASE (MAX_RETRY_COUNT)

    B. Style de code
    • Composants fonctionnels uniquement, pas de classes
    • const en priorité, puis let, interdiction de var
    • async/await obligatoire, pas de .then()
    • Typage TypeScript obligatoire, pas de any

    C. Exigences qualité
    • try-catch pour les opérations async
    • key obligatoire pour les listes
    • width/height sur les images
    • Fichier max 300 lignes, fonction max 50 lignes

    Clé : fournir des exemples de code, pas seulement du texte
  4. 4

    Step 4: Définir la portée d'application des règles

    Quatre portées (nouveauté 2026) :

    • Always : toujours actif — à utiliser avec parcimonie (consomme le contexte)
    Ex. : interdiction de var

    • Auto Attached : déclenché selon le type de fichier (recommandé)
    Ex. : *.tsx applique les règles React
    Idéal pour 80 % des règles

    • Agent Requested : l'IA décide si la règle est nécessaire
    Pour les règles auxiliaires optionnelles

    • Manual : actif seulement sur demande explicite
    Ex. : règles perf ou tests

    Recommandation : 80 % Auto Attached + 10 % Always + 10 % Manual/Agent
  5. 5

    Step 5: Tester et optimiser les règles

    Processus de test :
    1. Après configuration, demander à Cursor un composant test
    2. Vérifier la conformité au code généré
    3. Si non conforme, vérifier que les règles sont chargées

    Débogage :
    • Demander à Cursor : « Quelles règles vois-tu ? »
    • Vérifier les chemins des fichiers
    • Vérifier la portée d'application
    • Chercher les conflits entre règles

    Optimisation :
    • Diviser si > 500 lignes
    • Mettre les règles importantes en tête
    • Préférer les exemples de code au texte
    • Éviter les règles contradictoires

    Problèmes courants :
    • L'IA ignore les règles → ajouter des exemples, passer en Always
    • Conflit de règles → clarifier la priorité, supprimer les règles faibles
    • Règles vagues → reformuler en instructions exécutables
  6. 6

    Step 6: Collaboration d'équipe et maintenance

    Versionner :
    git add .cursor/rules
    git commit -m "Add Cursor rules for project standards"

    Collaboration :
    • Onboarding : documenter l'emplacement et le contenu dans le README
    • Discussion : valider avec l'équipe avant modification
    • Review trimestrielle : vérifier l'obsolescence

    Maintenance continue :
    • Mettre à jour quand le stack évolue
    • Recueillir les retours de l'équipe
    • Ajouter les nouvelles bonnes pratiques
    • Traiter les règles comme un document vivant

    Ressources communautaires :
    • awesome-cursorrules : 2000+ stars, 30+ frameworks
    • awesome-cursorrules-zh : version optimisée pour développeurs chinois
    • cursorrules.org : bibliothèque en ligne
    • Partir des règles communautaires, puis adapter au projet

FAQ

Quelle différence entre .cursorrules et .cursor/rules ?
.cursorrules est l'ancienne méthode (avant 2025) : un seul fichier à la racine du projet, toutes les règles regroupées.

.cursor/rules est la méthode recommandée en 2026 : plusieurs fichiers .mdc par domaine (frontend.mdc, backend.mdc), avec portée configurable (Always, Auto Attached, etc.).

La migration vers la nouvelle méthode est recommandée ; l'ancienne sera dépréciée. Nouveau projet : nouvelle méthode ; ancien projet : migration progressive.
Les règles sont écrites mais Cursor ne les respecte pas — que faire ?
Causes et solutions :

1. Règles trop vagues : instructions précises, ex. « composants fonctionnels, pas de classes » plutôt que « suivre les bonnes pratiques »
2. Fichier trop long : max 500 lignes, règles importantes en tête
3. Pas d'exemples : fournir du code correct
4. Mauvaise portée : vérifier Auto Attached ou Always
5. Conflit avec le prompt : dire explicitement « suis les règles du projet »

Débogage : demander « Quelles règles vois-tu ? » pour confirmer le chargement.
Comment choisir entre User Rules et Project Rules ?
User Rules (global) :
• Chemin : File → Preferences → Cursor Settings → Rules → User Rules
• Usage : préférences personnelles, ex. « TypeScript partout », « interdiction de var »
• S'applique à tous les projets

Project Rules (projet) :
• Chemin : fichiers .mdc dans .cursor/rules
• Usage : normes spécifiques, ex. « projet React 18 + Tailwind »
• Uniquement le projet courant

Priorité : règles projet > règles globales. Global pour les préférences communes, projet pour le stack et le métier.
Le fichier de règles dépasse 500 lignes — que faire ?
Diviser en plusieurs .mdc :

.cursor/rules/
├── core.mdc (stack central, Always)
├── frontend.mdc (frontend, Auto Attached: *.tsx)
├── backend.mdc (backend, Auto Attached: *.py)
├── typescript.mdc (règles TypeScript)
└── testing.mdc (tests, Auto Attached: *.test.*)

Principes :
• Par domaine (frontend/backend/tests)
• Auto Attached par type de fichier
• Règles core en Always, le reste à la demande
• Chaque fichier ≤ 500 lignes
Où trouver des modèles Cursor Rules prêts à l'emploi ?
Ressources recommandées :

1. awesome-cursorrules (GitHub 2000+ stars)
• 30+ frameworks (React, Vue, Python, Go, etc.)
• Copier-coller et adapter
• https://github.com/PatrickJS/awesome-cursorrules

2. awesome-cursorrules-zh
• Exemples fusionnés (React + FastAPI full-stack)
• https://github.com/LessUp/awesome-cursorrules-zh

3. cursorrules.org
• Bibliothèque web, aperçu et copie en ligne
• 30+ frameworks

Conseil : partir des règles communautaires, ajuster après usage réel.
Comment partager et maintenir Cursor Rules en équipe ?
Bonnes pratiques :

1. Versionner dans Git
git add .cursor/rules
git commit -m "Add Cursor rules"
Les membres chargent les règles au pull

2. Documenter dans le README
Emplacement, résumé, processus de modification
Formation à l'onboarding

3. Review trimestrielle
Règles obsolètes ? Nouvelles pratiques ? Retours équipe ?

4. Processus de modification
Discussion → accord → mise à jour → notification

Traiter les règles comme un document vivant.

9 min de lecture · Publié le: 10 janv. 2026 · Mis à jour le: 30 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog