Files
2026-06-02 23:24:21 +02:00

6.1 KiB

Mémoire de Claude

Contexte persistant via les fichiers CLAUDE.md — comment les écrire et comment ils se chargent dans les monorepos.

← Retour à Claude Code Best Practice Claude

1. Écrire un bon CLAUDE.md

Un CLAUDE.md bien structuré est le moyen le plus impactant d'améliorer la sortie de Claude Code pour ton projet. Humanlayer propose un excellent guide couvrant ce qu'il faut inclure, comment le structurer et les pièges courants.


2. CLAUDE.md dans les grands monorepos

Quand tu travailles avec Claude Code dans un monorepo, comprendre comment les fichiers CLAUDE.md se chargent en contexte est crucial pour organiser efficacement les instructions de ton projet.

Chargement des CLAUDE.md dans les monorepos

Les deux mécanismes de chargement

Claude Code utilise deux mécanismes distincts pour charger les fichiers CLAUDE.md :

Chargement des ancêtres (vers le HAUT de l'arborescence)

Quand tu démarres Claude Code, il remonte vers le haut depuis ton répertoire de travail courant jusqu'à la racine du système de fichiers et charge chaque CLAUDE.md qu'il trouve en chemin. Ces fichiers sont chargés immédiatement au démarrage.

Chargement des descendants (vers le BAS de l'arborescence)

Les fichiers CLAUDE.md dans les sous-répertoires situés sous ton répertoire de travail courant NE sont PAS chargés au lancement. Ils ne sont inclus que lorsque Claude lit des fichiers dans ces sous-répertoires durant ta session. C'est ce qu'on appelle le chargement paresseux (lazy loading).

Exemple de structure de monorepo

Considère un monorepo typique avec des répertoires séparés pour différents composants :

/mymonorepo/
├── CLAUDE.md          # Instructions racine (partagées entre tous les composants)
├── frontend/
│   └── CLAUDE.md      # Instructions spécifiques au frontend
├── backend/
│   └── CLAUDE.md      # Instructions spécifiques au backend
└── api/
    └── CLAUDE.md      # Instructions spécifiques à l'API

Scénario 1 : Lancer Claude Code depuis le répertoire racine

Quand tu lances Claude Code depuis /mymonorepo/ :

cd /mymonorepo
claude
Fichier Chargé au lancement ? Raison
/mymonorepo/CLAUDE.md Oui C'est ton répertoire de travail courant
/mymonorepo/frontend/CLAUDE.md Non Chargé seulement quand tu lis/édites des fichiers dans frontend/
/mymonorepo/backend/CLAUDE.md Non Chargé seulement quand tu lis/édites des fichiers dans backend/
/mymonorepo/api/CLAUDE.md Non Chargé seulement quand tu lis/édites des fichiers dans api/

Scénario 2 : Lancer Claude Code depuis un répertoire de composant

Quand tu lances Claude Code depuis /mymonorepo/frontend/ :

cd /mymonorepo/frontend
claude
Fichier Chargé au lancement ? Raison
/mymonorepo/CLAUDE.md Oui C'est un répertoire ancêtre
/mymonorepo/frontend/CLAUDE.md Oui C'est ton répertoire de travail courant
/mymonorepo/backend/CLAUDE.md Non Branche différente de l'arborescence
/mymonorepo/api/CLAUDE.md Non Branche différente de l'arborescence

Points clés à retenir

  1. Les ancêtres se chargent toujours au démarrage — Claude remonte l'arborescence et charge tous les CLAUDE.md qu'il trouve. Cela garantit que tu as toujours accès aux instructions racine, valables pour tout le dépôt.

  2. Les descendants se chargent paresseusement — Les CLAUDE.md de sous-répertoire ne se chargent que lorsque tu interagis avec des fichiers dans ces sous-répertoires. Cela évite que du contexte non pertinent ne gonfle ta session.

  3. Les frères ne se chargent jamais — Si tu travailles dans frontend/, tu n'auras pas backend/CLAUDE.md ni api/CLAUDE.md chargés en contexte.

  4. CLAUDE.md global — Tu peux aussi placer un CLAUDE.md dans ~/.claude/CLAUDE.md dans ton dossier personnel, qui s'applique à TOUTES les sessions Claude Code, quel que soit le projet.

Pourquoi ce design fonctionne pour les monorepos

  • Les instructions partagées se propagent vers le bas — Le CLAUDE.md racine contient les conventions valables pour tout le dépôt, les standards de code et les patterns communs qui s'appliquent partout.

  • Les instructions spécifiques aux composants restent isolées — Les développeurs frontend n'ont pas besoin que des instructions spécifiques au backend encombrent leur contexte, et inversement.

  • Le contexte est optimisé — En chargeant paresseusement les CLAUDE.md descendants, Claude Code évite de charger potentiellement des centaines de kilo-octets d'instructions non pertinentes au démarrage.

Bonnes pratiques

  1. Mets les conventions partagées dans le CLAUDE.md racine — Standards de code, formats de messages de commit, templates de PR, et autres directives valables pour tout le dépôt.

  2. Mets les instructions spécifiques aux composants dans le CLAUDE.md du composant — Patterns propres au framework, architecture du composant, conventions de test propres à ce composant.

  3. Utilise CLAUDE.local.md pour les préférences personnelles — Ajoute-le à .gitignore pour les instructions qui ne devraient pas être partagées avec l'équipe.


Sources