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 |
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.
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
-
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.
-
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.
-
Les frères ne se chargent jamais — Si tu travailles dans
frontend/, tu n'auras pasbackend/CLAUDE.mdniapi/CLAUDE.mdchargés en contexte. -
CLAUDE.md global — Tu peux aussi placer un CLAUDE.md dans
~/.claude/CLAUDE.mddans 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
-
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.
-
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.
-
Utilise CLAUDE.local.md pour les préférences personnelles — Ajoute-le à
.gitignorepour les instructions qui ne devraient pas être partagées avec l'équipe.
