CLAUDE.md : le fichier mémoire IA de votre projet expliqué
By Learnia Team
CLAUDE.md : le fichier mémoire IA de votre projet expliqué
Chaque fois que vous démarrez Claude Code, il lit un fichier spécial appelé CLAUDE.md. Ce fichier est la mémoire de votre projet — un moyen de donner à Claude un contexte persistant sur votre base de code, vos conventions et vos préférences. Maîtrisez-le, et Claude devient un véritable expert de votre projet.
Qu'est-ce que CLAUDE.md ?
CLAUDE.md est un fichier Markdown qui fournit à Claude Code des instructions et un contexte spécifiques au projet. Considérez-le comme de la documentation d'intégration pour votre programmeur binôme IA.
Quand Claude Code démarre, il lit automatiquement :
- →CLAUDE.md du projet :
.claude/CLAUDE.mdouCLAUDE.mdà la racine de votre projet - →CLAUDE.md utilisateur :
~/.claude/CLAUDE.mdpour les préférences personnelles sur tous les projets - →Répertoires parents : les fichiers CLAUDE.md dans les dossiers parents (pour les monorepos)
Ce système en couches vous permet de définir des préférences globales tout en les remplaçant par projet.
Pourquoi CLAUDE.md est important
Sans CLAUDE.md, Claude Code :
- →Ne connaît pas vos conventions de codage
- →Peut suggérer des patterns qui ne correspondent pas à votre base de code
- →Nécessite des explications répétées de votre architecture
- →Pourrait toucher des fichiers qu'il ne devrait pas
Avec un CLAUDE.md bien conçu, Claude Code :
- →Suit les standards de codage de votre équipe
- →Comprend votre architecture et vos patterns
- →Sait quelles zones sont interdites
- →Fournit une assistance cohérente et adaptée au projet
Learn AI — From Prompts to Agents
Créer votre premier CLAUDE.md
Démarrage rapide avec /init
Le moyen le plus rapide de créer un CLAUDE.md est la commande /init :
> /init
Claude Code va :
- →Scanner la structure de votre projet
- →Identifier les frameworks, langages et patterns
- →Générer un fichier CLAUDE.md personnalisé
- →Vous demander si vous souhaitez le personnaliser
Création manuelle
Créez un fichier à la racine de votre projet :
touch CLAUDE.md
# ou
mkdir -p .claude && touch .claude/CLAUDE.md
Commencez avec ce template :
# Projet : [Nom de votre projet]
## Aperçu
[Brève description de ce que fait ce projet]
## Stack technique
- [Langage/Framework 1]
- [Langage/Framework 2]
- [Base de données]
- [Autres outils]
## Structure du projet
[Répertoires clés et leurs objectifs]
## Conventions
[Standards et patterns de codage à suivre]
## Notes importantes
[Ce que Claude doit savoir ou éviter]
Bonnes pratiques de structure du CLAUDE.md
1. Aperçu du projet
Commencez par la vue d'ensemble pour que Claude comprenne le contexte :
# Projet : Plateforme E-Commerce
## Aperçu
Une plateforme e-commerce B2B pour les distributeurs en gros. Gère la
gestion des stocks, le traitement des commandes et les vitrines multi-locataires.
## Contexte métier
- Utilisateurs principaux : Responsables d'entrepôt et équipes d'approvisionnement
- Pic d'utilisation : Lundi-Vendredi, heures ouvrables
- Flux critiques : Passage de commande, synchronisation des stocks, génération de factures
2. Stack technique
Soyez précis sur les versions et configurations :
## Stack technique
### Frontend
- Next.js 14 avec App Router
- TypeScript 5.3 (mode strict)
- Tailwind CSS 3.4
- React Query pour le data fetching
### Backend
- Node.js 20 LTS
- Express.js avec TypeScript
- Prisma ORM 5.x
- PostgreSQL 15
### Infrastructure
- Vercel (frontend)
- Railway (backend + base de données)
- Redis pour le cache
- S3 pour le stockage de fichiers
3. Structure du projet
Décrivez la structure de vos répertoires :
## Structure du projet
- **apps/web/** - Frontend Next.js
- **apps/api/** - Backend Express
- **packages/ui/** - Bibliothèque de composants partagée
- **packages/config/** - Configuration partagée
- **packages/types/** - Types TypeScript partagés
- **prisma/schema.prisma** - Schéma de base de données
- **prisma/migrations/** - Fichiers de migration
- **scripts/** - Scripts de développement et déploiement
### Répertoires clés
- `apps/web/app/`: Pages et layouts Next.js App Router
- `apps/api/src/routes/`: Gestionnaires d'endpoints API
- `packages/ui/src/components/`: Composants UI réutilisables
4. Conventions de codage
Définissez les standards que Claude doit suivre :
## Conventions de codage
### TypeScript
- Utiliser le mode strict, pas de `any` sans justification
- Préférer les interfaces aux types pour les formes d'objets
- Utiliser Zod pour la validation à l'exécution
### Composants React
- Composants fonctionnels uniquement
- Hooks personnalisés dans le répertoire `hooks/`
- Utiliser les exports nommés, pas les exports par défaut
### Nommage
- Composants : PascalCase (ex : `UserProfile.tsx`)
- Utilitaires : camelCase (ex : `formatDate.ts`)
- Constantes : UPPER_SNAKE_CASE
- Tables de base de données : snake_case
### Organisation des fichiers
- Un composant par fichier
- Co-localiser les tests : `Component.tsx` → `Component.test.tsx`
- Types partagés dans le répertoire `types/`
### Git
- Commits conventionnels : `feat:`, `fix:`, `docs:`, `refactor:`
- Nommage des branches : `feature/`, `fix/`, `chore/`
- Squash merge vers main
5. Notes importantes et restrictions
Dites à Claude ce qu'il faut éviter :
## Notes importantes
### Zones interdites
- **NE PAS** modifier `/apps/api/src/billing/` - géré par l'équipe paiement externe
- **NE PAS** changer le schéma de base de données sans créer une migration
- **NE PAS** commiter les fichiers `.env` ou exposer les clés API
### Considérations critiques
- Tous les endpoints API doivent valider les entrées avec des schémas Zod
- Les requêtes de base de données doivent utiliser des transactions Prisma pour les mises à jour multi-tables
- Les routes frontend nécessitent un middleware d'authentification
### Problèmes connus
- Les routes legacy `/api/v1/` sont dépréciées mais encore utilisées par l'application mobile
- La connexion Redis échoue parfois en dev - redémarrer avec `npm run redis:restart`
### Dépendances externes
- Les signatures webhook Stripe doivent correspondre à `STRIPE_WEBHOOK_SECRET`
- Les templates SendGrid sont gérés dans leur dashboard, pas dans le code
6. Tâches courantes
Fournissez des consignes pour les opérations fréquentes :
## Tâches courantes
### Ajouter un nouvel endpoint API
1. Créer le gestionnaire de route dans `apps/api/src/routes/`
2. Ajouter le schéma Zod dans `apps/api/src/schemas/`
3. Enregistrer la route dans `apps/api/src/index.ts`
4. Ajouter les tests dans `apps/api/src/routes/__tests__/`
### Créer une migration de base de données
```bash
cd apps/api
npx prisma migrate dev --name description_du_changement
Lancer les tests
npm run test # Tous les tests
npm run test:unit # Tests unitaires uniquement
npm run test:e2e # Tests de bout en bout
Développement local
npm run dev # Démarrer tous les services
npm run dev:web # Frontend uniquement
npm run dev:api # Backend uniquement
---
## Patterns avancés du CLAUDE.md
### Contenu dynamique avec des commandes
Incluez des données en direct de votre projet :
```markdown
## Dépendances actuelles
Dépendances principales depuis package.json :
- Voir `package.json` pour la liste complète
## Modifications récentes
Vérifiez les commits récents avec :
```bash
git log --oneline -10
### Instructions spécifiques à l'environnement
```markdown
## Notes d'environnement
### Développement
- Utiliser `.env.local` pour les surcharges locales
- Base de données : PostgreSQL local sur le port 5432
- L'API tourne sur http://localhost:3001
### Staging
- Base de données : Instance Railway staging
- Nécessite un VPN pour l'accès
### Production
- Ne jamais exécuter les migrations directement
- Les modifications nécessitent une revue de PR par 2 membres de l'équipe
Rôles et responsabilités de l'équipe
## Responsabilités de l'équipe
| Domaine | Responsable | Notes |
|---------|-------------|-------|
| Frontend | @frontend-team | Tout `/apps/web/` |
| API | @backend-team | Tout `/apps/api/` |
| Base de données | @data-team | Les modifications de schéma nécessitent une revue |
| Paiements | @billing-team | Externe - ne pas modifier |
| DevOps | @platform-team | CI/CD et infrastructure |
Intégration avec les commandes personnalisées
Référencez vos commandes slash personnalisées :
## Commandes personnalisées
Nous avons des commandes slash personnalisées pour les workflows courants :
- `/deploy-staging` - Déployer la branche actuelle sur staging
- `/db-migrate` - Exécuter les migrations de base de données en attente
- `/generate-types` - Régénérer les types TypeScript depuis Prisma
Voir `.claude/commands/` pour les détails d'implémentation.
Pour en savoir plus sur les commandes personnalisées, voir Commandes Slash personnalisées dans Claude Code : créez les vôtres.
Emplacements et priorité de CLAUDE.md
Claude Code lit plusieurs fichiers CLAUDE.md dans un ordre spécifique :
| Emplacement | Portée | Priorité |
|---|---|---|
~/.claude/CLAUDE.md | Utilisateur (tous les projets) | La plus basse |
| CLAUDE.md du répertoire parent | Racine du monorepo | Moyenne |
.claude/CLAUDE.md du projet | Projet courant | Haute |
CLAUDE.md du projet | Projet courant | La plus haute |
CLAUDE.md au niveau utilisateur
Créez ~/.claude/CLAUDE.md pour les préférences personnelles :
# Préférences personnelles
## Style de codage
- Je préfère les annotations de type explicites
- Utiliser des noms de variables descriptifs
- Ajouter des commentaires pour la logique complexe
## Communication
- Explique ton raisonnement brièvement
- Montre les diffs pour les modifications de fichiers
- Demande avant de faire de gros refactorings
## Outils que j'utilise
- VS Code avec raccourcis Vim
- iTerm2 sur macOS
- Préfère npm à yarn
Pattern Monorepo
Pour les monorepos, utilisez plusieurs fichiers CLAUDE.md :
- →my-monorepo/CLAUDE.md - Racine : conventions partagées
- →apps/web/CLAUDE.md - Spécifique au frontend
- →apps/api/CLAUDE.md - Spécifique au backend
- →packages/ui/CLAUDE.md - Spécifique à la bibliothèque de composants
CLAUDE.md racine :
# Monorepo : Ma Plateforme
## Conventions partagées
- Tous les packages utilisent TypeScript en mode strict
- Types partagés dans `/packages/types/`
- Utiliser les dépendances workspace : `"@myorg/ui": "workspace:*"`
CLAUDE.md spécifique à l'application :
# Application Frontend
Hérite du CLAUDE.md racine.
## Conventions supplémentaires
- Utiliser les patterns Next.js App Router
- Composants serveur par défaut
- Composants client marqués avec 'use client'
Gérer CLAUDE.md avec /memory
La commande /memory fournit une interface pour éditer les fichiers mémoire :
> /memory
Cela ouvre un menu interactif pour :
- →Voir le contenu actuel du CLAUDE.md
- →Éditer le CLAUDE.md du projet
- →Éditer le CLAUDE.md utilisateur
- →Voir ce que Claude retient
Mettre à jour la mémoire en cours de session
Vous pouvez également ajouter à la mémoire de Claude pendant une conversation :
> Retiens que nous migrons de REST vers GraphQL.
> Les nouveaux endpoints doivent utiliser GraphQL, mais maintenir la compatibilité REST.
Claude proposera d'ajouter ceci à votre CLAUDE.md.
Exemples de CLAUDE.md réels
Exemple 1 : SaaS React + TypeScript
# Projet : TaskFlow - SaaS de gestion de projet
## Aperçu
Une application de gestion de projet type Trello avec collaboration en temps réel.
## Stack technique
- Next.js 14 (App Router)
- TypeScript (strict)
- Prisma + PostgreSQL
- Socket.io pour le temps réel
- Tailwind + Radix UI
## Architecture
- Structure de dossiers par fonctionnalité : `/features/[feature]/`
- Chaque fonctionnalité a : components/, hooks/, api/, types/
- UI partagée dans `/components/ui/` (basée sur Radix)
## Conventions
- React Query pour l'état serveur
- Zustand pour l'état client
- Zod pour la validation (partagée entre client/serveur)
- Pas de type `any` - utiliser `unknown` et affiner
## Règles critiques
1. Toutes les écritures en base doivent être dans des transactions
2. Les événements temps réel passent par `/lib/realtime/emit.ts`
3. Ne jamais stocker de données sensibles dans l'état client
4. Toutes les routes API nécessitent un middleware d'authentification
Exemple 2 : Backend Python FastAPI
# Projet : API DataPipeline
## Aperçu
API REST pour la gestion de pipeline de traitement de données.
## Stack technique
- Python 3.11
- FastAPI + Pydantic v2
- SQLAlchemy 2.0 + PostgreSQL
- Celery + Redis pour les tâches asynchrones
- Docker Compose pour le développement local
## Structure du projet
- **src/api/** - Routes FastAPI
- **src/models/** - Modèles SQLAlchemy
- **src/schemas/** - Schémas Pydantic
- **src/services/** - Logique métier
- **src/tasks/** - Tâches Celery
- **src/utils/** - Utilitaires
## Conventions
- Annotations de type requises partout
- Docstrings pour les fonctions publiques (style Google)
- Async/await pour les opérations I/O
- Injection de dépendances via FastAPI Depends
## Commandes
- `make dev` - Démarrer le serveur de développement
- `make test` - Exécuter pytest
- `make lint` - Exécuter ruff + mypy
## Important
- Les tâches longues DOIVENT utiliser Celery, pas des endpoints synchrones
- Tous les endpoints nécessitent la documentation OpenAPI
- Migrations de base de données via Alembic uniquement
Exemple 3 : Application mobile (React Native)
# Projet : FitTrack Mobile
## Aperçu
Application de suivi fitness avec journalisation des entraînements et analyse de la progression.
## Stack technique
- React Native 0.73 + Expo SDK 50
- TypeScript
- React Query + Zustand
- React Navigation 6
## Conventions
- Composants fonctionnels avec hooks
- Styles : StyleSheet.create, pas inline
- Icônes : @expo/vector-icons uniquement
- Animations : Reanimated 3
## Notes de plateforme
- Tester sur iOS et Android avant la PR
- Utiliser Platform.select pour le code spécifique à la plateforme
- Gestion des zones sûres via react-native-safe-area-context
## Zones interdites
- Ne pas modifier les modules natifs sans l'approbation du tech lead
- Ne pas ajouter de dépendances natives sans vérifier la compatibilité Expo
- Les notifications push sont gérées par un service externe
## Tests
- Jest pour les tests unitaires
- Detox pour les E2E (exécution sur CI uniquement)
Résolution des problèmes CLAUDE.md
Claude ne suit pas les instructions
- →Vérifiez l'emplacement du fichier : Doit être
CLAUDE.mdou.claude/CLAUDE.mdà la racine du projet - →Vérifiez la syntaxe : Assurez-vous que le formatage Markdown est valide
- →Soyez précis : Des instructions vagues donnent des résultats vagues
- →Redémarrez la session : Claude charge CLAUDE.md au démarrage de la session
Instructions en conflit
Si le CLAUDE.md utilisateur et celui du projet sont en conflit, le projet l'emporte. Soyez explicite :
## Remplacement des préférences utilisateur
Pour ce projet, ignorer les préférences personnelles concernant :
- Nous utilisons Yarn, pas npm
- Nous utilisons des tabulations, pas des espaces
CLAUDE.md devient trop long
Restez concentré. Déplacez la documentation détaillée ailleurs :
## Documentation
- Documentation API : `/docs/api/`
- Architecture : `/docs/architecture.md`
- Intégration : `/docs/onboarding.md`
Claude peut lire ces fichiers quand nécessaire.
Points clés à retenir
- →
CLAUDE.md est la mémoire du projet : Il persiste le contexte entre les sessions pour que Claude comprenne votre projet en profondeur.
- →
Utilisez
/initpour commencer : Laissez Claude générer un CLAUDE.md initial, puis personnalisez-le. - →
Soyez précis et structuré : Des sections claires pour l'aperçu, la stack technique, les conventions et les restrictions.
- →
Superposez vos configurations : Niveau utilisateur pour les préférences personnelles, niveau projet pour les standards de l'équipe.
- →
Maintenez-le à jour : Mettez à jour CLAUDE.md à mesure que votre projet évolue — c'est de la documentation vivante.
Prêt à obtenir des sorties structurées de l'IA ?
Maintenant que Claude comprend votre projet grâce à CLAUDE.md, il est temps d'apprendre comment obtenir des réponses cohérentes et structurées.
Dans notre Module 2 — Sorties structurées, vous apprendrez :
- →Comment obtenir du JSON, des tableaux et des réponses formatées de manière fiable
- →Les techniques pour un formatage de sortie cohérent
- →La définition et la validation de schémas
- →Des exemples concrets de prompting structuré
Module 2 — Structured Outputs
Learn to get reliable, formatted responses like JSON and tables.
Weekly AI Insights
Tools, techniques & news — curated for AI practitioners. Free, no spam.
Free, no spam. Unsubscribe anytime.
→Related Articles
FAQ
Qu'est-ce que CLAUDE.md ?+
CLAUDE.md est un fichier markdown qui fournit à Claude Code un contexte projet persistant. Il contient les conventions de codage, les détails d'architecture et les instructions que Claude lit au démarrage.
Où placer CLAUDE.md ?+
Placez-le à la racine de votre projet sous le nom CLAUDE.md ou dans .claude/CLAUDE.md. Claude Code le détecte automatiquement et le lit au démarrage d'une session dans le répertoire de votre projet.
Que faut-il inclure dans CLAUDE.md ?+
Incluez l'aperçu du projet, la stack technique, les conventions de codage, la structure des fichiers, les commandes courantes et toutes les règles que Claude doit suivre. Concentrez-vous sur les informations qui aident Claude à prendre les bonnes décisions.
CLAUDE.md supporte-t-il plusieurs projets ?+
Oui. Chaque projet peut avoir son propre CLAUDE.md. Vous pouvez également avoir un fichier global ~/.claude/CLAUDE.md pour les préférences utilisateur qui s'appliquent à tous les projets.