Règles
Les règles fournissent des instructions système à l’Agent. Elles regroupent des prompts, des scripts et bien plus, ce qui facilite la gestion et le partage des flux de travail au sein de votre équipe.
Cursor prend en charge quatre types de règles :
Règles de projet
Stockées dans .cursor/rules, versionnées et limitées à votre base de code.
Règles utilisateur
Globales à votre environnement Cursor. Utilisées par l’Agent (Chat).
Règles d’équipe
Règles à l’échelle de l’équipe gérées depuis le tableau de bord. Disponibles avec les forfaits Team et Enterprise.
AGENTS.md
Instructions pour l’Agent au format markdown. Alternative simple à
.cursor/rules.
Fonctionnement des règles
Les grands modèles de langage ne conservent pas de mémoire entre les complétions. Les règles fournissent un contexte persistant et réutilisable au niveau du prompt.
Lorsqu'elles sont appliquées, le contenu des règles est inclus au début du contexte du modèle. L’IA bénéficie ainsi de directives cohérentes pour générer du code, interpréter les modifications ou faciliter les flux de travail.
Règles de projet
Les règles de projet sont stockées dans .cursor/rules sous forme de fichiers .mdc et sont versionnées. Elles s’appliquent selon des conventions de chemin, peuvent être invoquées manuellement ou incluses selon leur pertinence.
Utilisez les règles de projet pour :
- Documenter des connaissances spécifiques au domaine concernant votre base de code
- Automatiser des flux de travail ou des modèles propres au projet
- Standardiser les choix de style ou d’architecture
Structure d’un fichier de règle
Chaque règle est un fichier .mdc que vous pouvez nommer comme vous le souhaitez. Les règles de projet doivent utiliser l’extension .mdc. Un fichier .md classique placé dans .cursor/rules est ignoré par le système de règles, car il ne contient pas d’en-tête YAML permettant de définir description, globs et alwaysApply. Si vous préférez le markdown classique, utilisez plutôt AGENTS.md.
.cursor/rules/ react-patterns.mdc # Reconnu comme règle de projet api-guidelines.md # Ignoré (extension incorrecte) frontend/ # Organiser les règles dans des dossiers components.mdcAnatomie d'une règle
Chaque règle est un fichier markdown contenant des métadonnées dans l'en-tête YAML et du contenu. Définissez la façon dont les règles sont appliquées à l'aide du menu déroulant Type, qui modifie les propriétés description, globs et alwaysApply.
| Type de règle | Description |
|---|---|
Always Apply | S'applique à chaque session de chat |
Apply Intelligently | Lorsque l'Agent le juge pertinent selon la description |
Apply to Specific Files | Lorsqu'un fichier correspond à un motif spécifié |
Apply Manually | Lorsqu'elle est mentionnée avec @ dans le chat (p. ex., @my-rule) |
En interne, les trois champs de l'en-tête YAML interagissent pour déterminer quand une règle est incluse :
alwaysApply | description | globs | Comportement |
|---|---|---|---|
true | — | — | Toujours incluse. Les globs et la description sont ignorés. |
false | — | fourni | Ajoutée automatiquement lorsqu'un fichier correspondant est dans le contexte. |
false | fourni | omis | L'Agent lit la description et inclut la règle lorsqu'elle est pertinente. |
false | omis | omis | Incluse uniquement lorsque vous mentionnez la règle avec @ dans le chat. |
---alwaysApply: true---- Tous les fichiers sources doivent inclure l’en-tête de copyright de l’entreprise- En cas de doute sur les détails d’implémentation, lisez les fichiers sources concernés avant de proposer des modifications- Ne modifiez jamais les fichiers générés dans les répertoires `dist/` ou `build/`---globs: src/components/**/*.tsxalwaysApply: false---- Utilisez des exports nommés, pas des exports par défaut- Placez les styles dans un fichier CSS module à côté du composant- Limitez les composants à moins de 200 lignes. Extrayez les sous-composants dans le même répertoire lorsqu’un fichier dépasse cette taille- Préférez la composition au passage de props en cascade. Passez des children ou des render props plutôt que de faire transiter les données à travers plusieurs couches---description: RPC service conventions and patterns for the backendalwaysApply: false---- Define each service in its own file under `src/services/`- Always validate inputs at the service boundary before passing data to internal functions- Return structured error objects with a `code` and `message` field, never throw raw strings- Add a `@service-template.ts` reference file when creating a new service for the standard boilerplate---alwaysApply: false---- Every database migration must have both `up` and `down` functions so it can be fully reversed- Never alter a column type in-place. Add a new column, backfill, then drop the old one in a separate migration- Reference the template for the expected file structure@migration-template.sqlExemples de motifs glob
Utilisez globs pour limiter une règle à des fichiers ou répertoires spécifiques. Séparez plusieurs motifs par des virgules.
| Motif | Correspondances |
|---|---|
* | Tout segment unique de nom de fichier |
** | N’importe quel nombre de répertoires (récursivement) |
*.ts | Tous les fichiers .ts à la racine |
**/*.ts | Tous les fichiers .ts dans n’importe quel répertoire |
src/** | Tous les fichiers sous src/ |
src/**/*.tsx | Tous les fichiers .tsx sous src/ |
docs/**/*.md, docs/**/*.mdx | Fichiers .md et .mdx sous docs/ (séparés par des virgules) |
tailwind.config.* | tailwind.config avec n’importe quelle extension |
Créer une règle
Il existe deux façons de créer des règles :
/create-ruledans le chat : saisissez/create-ruledans Agent et décrivez ce que vous souhaitez. Agent génère le fichier de règle avec l’en-tête YAML approprié et l’enregistre dans.cursor/rules.- Depuis Personnaliser : ouvrez Personnaliser dans la barre latérale, accédez à Règles, puis cliquez sur Ajouter une règle. Un nouveau fichier de règle est alors créé dans
.cursor/rules. Dans Personnaliser, vous pouvez consulter toutes les règles et leur statut.
Bonnes pratiques
Les bonnes règles sont ciblées, exploitables et bien définies.
- Limitez les règles à 500 lignes maximum
- Divisez les règles volumineuses en plusieurs règles composables
- Fournissez des exemples concrets ou indiquez les fichiers concernés
- Évitez les consignes vagues. Rédigez les règles comme une documentation interne claire
- Réutilisez les règles lorsque vous répétez des prompts dans le chat
- Faites référence aux fichiers plutôt que d'en copier le contenu — les règles restent ainsi concises et ne deviennent pas obsolètes à mesure que le code évolue
Ce qu’il faut éviter dans les règles
- Copier des guides de style entiers : utilisez plutôt un linter. Agent connaît déjà les conventions de style courantes.
- Documenter toutes les commandes possibles : Agent connaît les outils courants comme npm, git et pytest.
- Ajouter des instructions pour des cas limites qui s’appliquent rarement : gardez les règles axées sur les conventions que vous utilisez souvent.
- Dupliquer ce qui existe déjà dans votre base de code : renvoyez vers des exemples de référence plutôt que de copier du code.
Commencez simplement. Ajoutez des règles uniquement lorsque vous constatez qu’Agent commet plusieurs fois la même erreur. N’optimisez pas à l’excès avant d’avoir identifié vos conventions.
Enregistrez vos règles dans git pour que toute votre équipe en bénéficie. Lorsque vous voyez Agent commettre une erreur, mettez à jour la règle. Vous pouvez même mentionner @cursor dans une issue ou une PR GitHub pour qu’Agent mette la règle à jour à votre place.
Format des fichiers de règles
Chaque règle est un fichier markdown contenant des métadonnées d’en-tête YAML et du contenu. Les métadonnées d’en-tête YAML contrôlent la manière dont la règle est appliquée. Le contenu constitue la règle elle-même.
---description: "This rule provides standards for frontend components and API validation"alwaysApply: false---...rest of the rule contentSi alwaysApply est défini sur true, la règle sera appliquée à chaque session de chat. Sinon, sa description sera présentée au Cursor Agent, qui déterminera si elle doit être appliquée.
Exemples
Cette règle définit des bonnes pratiques pour les composants frontend :
Lorsque vous travaillez dans le répertoire des composants :
- Utilisez toujours Tailwind pour la mise en forme
- Utilisez Framer Motion pour les animations
- Respectez les conventions de nommage des composants
Cette règle impose la validation des endpoints d’API :
Dans le répertoire API :
- Utilisez zod pour toutes les validations
- Définissez les types de retour avec des schémas zod
- Exportez les types générés à partir des schémas
Cette règle fournit un modèle pour les services Express :
Utilisez ce modèle lors de la création d’un service Express :
- Respectez les principes RESTful
- Incluez un middleware de gestion des erreurs
- Configurez une journalisation adaptée
@express-service-template.ts
Cette règle définit la structure des composants React :
Les composants React doivent respecter cette structure :
- Interface des props en haut
- Composant exporté nommé
- Styles en bas
@component-template.tsx
Cette règle automatise l’analyse de l’application :
Lorsqu’il vous est demandé d’analyser l’application :
- Lancez le serveur de développement avec
npm run dev - Récupérez les journaux de la console
- Suggérez des améliorations de performances
Cette règle aide à générer de la documentation :
Aidez à rédiger la documentation en :
- Extrayant les commentaires du code
- Analysant README.md
- Générant de la documentation markdown
Créez d’abord une propriété à activer ou désactiver dans @reactiveStorageTypes.ts.
Ajoutez une valeur par défaut à INIT_APPLICATION_USER_PERSISTENT_STORAGE dans @reactiveStorageService.tsx.
Pour les fonctionnalités bêta, ajoutez un commutateur dans @settingsBetaTab.tsx, sinon dans @settingsGeneralTab.tsx. Les commutateurs peuvent être ajoutés sous forme de <SettingsSubSection> pour les cases à cocher générales. Consultez le reste du fichier pour voir des exemples.
<SettingsSubSection label="Your feature name" description="Your feature description" value={ vsContext.reactiveStorageService.applicationUserPersistentStorage .myNewProperty ?? false } onChange={(newVal) => { vsContext.reactiveStorageService.setApplicationUserPersistentStorage( "myNewProperty", newVal, ); }}/>Pour l’utiliser dans l’application, importez reactiveStorageService et utilisez la propriété :
const flagIsEnabled = vsContext.reactiveStorageService.applicationUserPersistentStorage .myNewProperty;Des exemples sont disponibles auprès de fournisseurs et de frameworks. Des règles proposées par la communauté sont disponibles dans des collections participatives et des référentiels en ligne.
Règles d’équipe
Les forfaits Team et Enterprise permettent de créer et d’imposer des règles à l’échelle de toute l’organisation depuis le tableau de bord Cursor. Les administrateurs peuvent définir si chaque règle est obligatoire pour les membres de l’équipe.
Les règles d’équipe fonctionnent avec les autres types de règles et prévalent sur celles-ci afin de garantir le respect des normes de l’organisation dans tous les projets. Elles permettent d’appliquer des normes, pratiques et flux de travail de programmation cohérents à toute votre équipe, sans nécessiter d’installation ou de configuration individuelle.
Gestion des règles d’équipe
Les administrateurs d’équipe peuvent créer et gérer des règles directement depuis le tableau de bord de Cursor :
Une fois créées, les règles d’équipe s’appliquent automatiquement à tous les membres de l’équipe et sont visibles dans le tableau de bord :
Activation et application
- Activer cette règle immédiatement : Lorsqu’elle est cochée, la règle est active dès sa création. Lorsqu’elle est décochée, la règle est enregistrée comme brouillon et ne s’applique pas tant que vous ne l’activez pas ultérieurement.
- Imposer cette règle : Lorsqu’elle est activée, la règle est obligatoire pour tous les membres de l’équipe et ne peut pas être désactivée dans Personnaliser. Lorsqu’elle n’est pas imposée, les membres de l’équipe peuvent désactiver la règle dans la section Règles d’équipe de Personnaliser.
Par défaut, les règles d’équipe non imposées peuvent être désactivées par les utilisateurs. Utilisez Imposer cette règle pour éviter cela.
Format et application des règles d’équipe
- Contenu : les règles d’équipe sont du texte libre. Elles n’utilisent pas la structure de dossiers des règles de projet.
- Motifs glob : les règles d’équipe prennent en charge les motifs glob pour s’appliquer à des fichiers spécifiques. Lorsqu’un motif glob est défini (p. ex.,
**/*.py), la règle s’applique uniquement lorsque des fichiers correspondants sont présents dans le contexte. Les règles sans motif glob s’appliquent à chaque conversation. - Champ d’application : lorsqu’une règle d’équipe est activée (et non désactivée par l’utilisateur, sauf si elle est imposée), elle est incluse dans le contexte du modèle pour l’Agent (Chat) dans tous les dépôts et projets de l’équipe.
- Priorité : les règles sont appliquées dans cet ordre : règles d’équipe → règles de projet → règles utilisateur. Toutes les règles applicables sont fusionnées ; en cas de conflit, les sources antérieures prévalent.
Certaines équipes utilisent des règles imposées dans le cadre de processus internes de conformité. Bien que cette fonctionnalité soit prise en charge, les instructions de l’IA ne doivent pas constituer votre seul contrôle de sécurité.
Importer des règles
Vous pouvez importer des règles depuis des sources externes afin de réutiliser des configurations existantes ou d'importer des règles depuis d'autres outils.
Règles distantes (via GitHub)
Importez des règles directement depuis n’importe quel dépôt GitHub auquel vous avez accès, qu’il soit public ou privé.
- Ouvrez Personnaliser dans la barre latérale
- Accédez à Règles et cliquez sur Ajouter une règle
- Sélectionnez Règle distante (Github)
- Collez l’URL du dépôt GitHub contenant les règles. Cursor analysera tous les fichiers
.mdcdu dépôt. - Cursor récupérera et synchronisera les règles dans votre projet
Les règles seront placées dans .cursor/rules/imported/<repoName>. Elles conserveront également leurs chemins relatifs : dir/rule.mdc sera donc importé sous .cursor/rule/imported/<repoName>/dir/rule.mdc.
AGENTS.md
AGENTS.md est un simple fichier markdown qui permet de définir des instructions pour les agents. Placez-le à la racine de votre projet comme alternative à .cursor/rules pour les cas d’utilisation simples.
Contrairement aux règles de projet, AGENTS.md est un fichier markdown brut, sans métadonnées ni configurations complexes. Il est idéal pour les projets qui nécessitent des instructions simples et lisibles, sans la complexité des règles structurées.
Cursor prend en charge AGENTS.md à la racine du projet et dans les sous-répertoires.
# Instructions du projet## Style de code- Utilisez TypeScript pour tous les nouveaux fichiers- Privilégiez les composants fonctionnels dans React- Utilisez snake_case pour les colonnes de la base de données## Architecture- Suivez le modèle repository- Conservez la logique métier dans les couches de serviceAméliorations
Vous pouvez désormais utiliser des fichiers AGENTS.md imbriqués dans des sous-répertoires. Placez des fichiers AGENTS.md dans n’importe quel sous-répertoire de votre projet : ils seront automatiquement appliqués lorsque vous travaillez sur des fichiers de ce répertoire ou de ses sous-répertoires.
Cela permet de contrôler plus finement les instructions des Agents selon la partie de votre base de code sur laquelle vous travaillez :
project/ AGENTS.md # Instructions globales frontend/ AGENTS.md # Instructions spécifiques au frontend components/ AGENTS.md # Instructions spécifiques aux composants backend/ AGENTS.md # Instructions spécifiques au backendLes instructions des fichiers AGENTS.md imbriqués sont combinées à celles des répertoires parents, les instructions les plus spécifiques prévalant.
Règles utilisateur
Les règles utilisateur sont des préférences globales définies dans Personnaliser → Règles qui s’appliquent à tous les projets. Elles sont utilisées par Agent (Chat) et sont idéales pour définir un style de communication ou des conventions de programmation privilégiés :
Répondez de manière concise. Évitez les répétitions inutiles et les formulations superflues.FAQ
Vérifiez le type de règle. Pour Apply Intelligently, assurez-vous qu'une description est définie. Pour Apply to Specific Files, assurez-vous que le modèle de fichier correspond aux fichiers référencés.
Oui. Utilisez @filename.ts pour inclure des fichiers dans le contexte de votre règle. Vous pouvez également mentionner des règles avec @ dans le chat pour les appliquer manuellement.
Oui, vous pouvez demander à l'Agent de créer une règle pour vous.
Non. Les règles n'ont aucun impact sur Cursor Tab ou d'autres fonctionnalités d'IA.
Non. Les règles utilisateur ne sont pas appliquées à Inline Edit (Cmd/Ctrl+K). Elles sont uniquement utilisées par l'Agent (Chat).