Aller au contenu
Développement medium

Claude Code : rules ciblées par dossier pour sortir les règles spécifiques de CLAUDE.md

9 min de lecture

Logo Claude Code - rules ciblées par dossier

Votre CLAUDE.md a bien grossi : conventions API, règles de tests, scripts d’infra, le tout mélangé. Claude lit l’ensemble à chaque session, et certaines règles polluent les zones où elles ne s’appliquent pas. Les rules ciblées (.claude/rules/*.md) règlent ce problème : vous sortez les règles trop spécifiques de CLAUDE.md et les chargez uniquement quand Claude touche la zone concernée, grâce au frontmatter paths.

  • Ce qui reste dans CLAUDE.md et ce qui part dans .claude/rules/
  • La syntaxe du frontmatter paths avec globs
  • Appliquer une rule ciblée sur lab-claude
  • Vérifier les rules chargées dans la session avec /memory

Dans quel contexte utiliser cette fonctionnalité ?

Section intitulée « Dans quel contexte utiliser cette fonctionnalité ? »
  • Votre CLAUDE.md dépasse 150 lignes et mélange plusieurs zones
  • Une règle ne s’applique qu’à un dossier (ex : tests/, app/api/)
  • Plusieurs équipes contribuent et veulent des règles locales
  • Vous voulez éviter que des règles de tests guident des changements côté API

Les deux mécanismes sont chargés en début de session, mais pas dans les mêmes conditions :

MécanismeChargé quandUsage recommandé
CLAUDE.mdÀ chaque session, en entierFaits toujours vrais : stack, commandes, conventions globales
.claude/rules/<nom>.md sans pathsÀ chaque session, en entierRègles transversales trop volumineuses pour CLAUDE.md
.claude/rules/<nom>.md avec pathsQuand Claude touche un fichier matchéRègles spécifiques à une zone (API, tests, migrations)

Règle simple :

  • Si la règle vaut pour tout le projet et tient en quelques lignes, gardez-la dans CLAUDE.md
  • Si elle ne vaut que pour un dossier précis, sortez-la dans .claude/rules/<zone>.md avec paths

Les rules vivent dans .claude/rules/ et sont découvertes récursivement. Chaque fichier Markdown couvre un sujet et peut être scopé avec un frontmatter YAML :

lab-claude/
├── CLAUDE.md
├── .claude/
│ ├── settings.json
│ └── rules/
│ ├── tests.md
│ └── api.md
└── ...

Exemple de rule ciblée sur les tests :

---
paths:
- "tests/**/*.py"
---
# Règles pour les tests
- Utiliser `TestClient` de FastAPI pour les tests d'endpoint
- Chaque endpoint a au moins un test de cas nominal et un test d'erreur
- Les fixtures vivent dans `tests/conftest.py`
- Ne pas mocker la validation Pydantic : tester le comportement réel

Sans paths, la rule se charge à chaque session. Avec paths, elle n’arrive en contexte que quand Claude lit un fichier qui matche le glob.

Quelques motifs utiles :

MotifCorrespond à
**/*.pyTous les fichiers Python du projet
app/**/*Tous les fichiers sous app/
tests/**/*.pyTous les tests Python
app/api/**/*.pyAPI uniquement
migrations/*.sqlFichiers SQL de migration à la racine de migrations/

Vous pouvez combiner plusieurs motifs et utiliser l’expansion accolade :

---
paths:
- "app/**/*.{py,pyi}"
- "tests/**/*.py"
---

Objectif : sortir les règles tests et les règles endpoints API de CLAUDE.md vers deux rules dédiées.

  1. Créez le dossier des rules

    Fenêtre de terminal
    cd ~/Projets/lab-claude
    mkdir -p .claude/rules
  2. Créez .claude/rules/tests.md

    ---
    paths:
    - "tests/**/*.py"
    ---
    # Règles pour les tests
    - Chaque endpoint a au moins un test de cas nominal et un test d'erreur
    - Utiliser `TestClient` de FastAPI pour les tests d'endpoint
    - Nom des fonctions de test : `test_<endpoint>_<cas>`
    - Pas de mock sur la validation Pydantic
  3. Créez .claude/rules/api.md

    ---
    paths:
    - "app/**/*.py"
    ---
    # Règles pour l'API
    - Chaque endpoint déclare son type de retour (`-> dict[str, str]`)
    - Statut HTTP explicite via `status_code=` si différent de 200
    - Documenter l'endpoint en une ligne (docstring)
    - Ne pas dupliquer la logique de `/health` : factoriser si besoin
  4. Allégez votre CLAUDE.md

    Retirez les sections “Tests” et “API” qui sont maintenant dans les rules. Gardez dans CLAUDE.md uniquement ce qui vaut pour tout le projet (stack, commandes de validation, conventions globales).

  5. Démarrez une session et vérifiez

    Fenêtre de terminal
    claude

    Puis dans la session :

    /memory

    Les rules sans paths apparaissent tout de suite. Les rules avec paths n’apparaissent que quand Claude lit un fichier qui matche.

La commande /memory liste les fichiers d’instructions actifs dans la session en cours : CLAUDE.md, CLAUDE.local.md et rules. C’est le réflexe à avoir quand Claude semble ignorer une règle.

La règle…Où la mettre
s’applique au projet entier et tient en 2 lignesCLAUDE.md
s’applique au projet entier mais fait 20+ lignes.claude/rules/<sujet>.md sans paths
ne concerne qu’un dossier.claude/rules/<zone>.md avec paths
est personnelle et ne doit pas être partagéeCLAUDE.local.md
est une procédure (pas un fait)à déplacer en skill
SymptômeCause probableCorrection
La rule n’apparaît pas dans /memoryFrontmatter mal fermé ou paths incorrectVérifier les trois tirets et la syntaxe YAML
Règle ignorée sur les nouveaux fichiersGlob trop restrictifPasser de app/*.py à app/**/*.py
CLAUDE.md toujours aussi longRègles transversales laissées dedansNe déplacer que les règles réellement ciblées
Rules contradictoires entre scopesRule utilisateur qui entre en conflit avec projet/memory pour voir les deux, trancher une bonne fois
  • J’ai créé le dossier .claude/rules/
  • J’ai au moins une rule avec paths fonctionnelle
  • J’ai allégé CLAUDE.md en retirant les règles déplacées
  • J’ai vérifié avec /memory que les rules sont chargées
  • Je sais quand garder une règle dans CLAUDE.md et quand la sortir
  • CLAUDE.md = faits globaux, .claude/rules/ = règles ciblées
  • Le frontmatter paths évite de polluer le contexte avec des règles non pertinentes
  • Chaque rule couvre un sujet, pour rester lisible et maintenable
  • /memory est l’outil de vérification incontournable
  • Les procédures ne vont pas dans les rules : elles vont dans les skills

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn