Premiers pas avec /init
Partie théorique
Démarrer Claude Code dans un projet
Pour utiliser Claude Code sur un projet existant, placez-vous dans le répertoire du projet puis lancez la commande claude :
cd mon-projet
claude
Cela ouvre une session interactive. Vous pouvez aussi lui donner une instruction directe sans entrer dans le mode interactif :
claude "Explique la structure de ce projet"
Lancer claude depuis la racine du projet lui permet de voir tous les fichiers. Évitez de le lancer depuis un sous-dossier, sauf si vous travaillez spécifiquement sur cette partie.
La commande /init
La commande /init analyse automatiquement votre codebase et génère un fichier CLAUDE.md à la racine du projet.
Ce que /init analyse :
- La structure des fichiers et dossiers
- Les langages et frameworks utilisés
- Les dépendances (package.json, composer.json, requirements.txt…)
- Les patterns de code existants
Ce que /init génère dans CLAUDE.md :
- Un résumé du stack technique
- Les commandes pour démarrer, tester et builder le projet
- Les conventions de code détectées
Lancez toujours /init au démarrage d'un nouveau projet. Cela évite à Claude Code de redécouvrir le même contexte à chaque session.
Après la génération, éditez le fichier pour ajouter vos propres contraintes et précisions.
Le fichier CLAUDE.md
CLAUDE.md est un fichier Markdown placé à la racine du projet. Il est chargé automatiquement au démarrage de chaque session Claude Code. Il joue le rôle de mémoire permanente du projet.
CLAUDE.md n'est PAS un prompt. C'est un fichier de contraintes. Claude Code l'applique automatiquement à chaque code généré.
Vous pouvez avoir plusieurs CLAUDE.md imbriqués : un à la racine du projet, et d'autres dans les sous-répertoires pour des règles spécifiques à certaines parties du code.
Ce qu'on met dans CLAUDE.md :
- Le stack technique et les versions
- Les commandes : démarrer, tester, builder
- Les conventions de nommage et de style
- Les décisions d'architecture
- Les fichiers à ne jamais modifier
- Les problèmes connus et leurs contournements
Exemple de structure de CLAUDE.md :
# Mon Projet
## Stack technique
- PHP 8.2, Symfony 6.4
- MySQL 8.0
- PHPUnit pour les tests
## Commandes
- Démarrer: `symfony serve`
- Tests: `./vendor/bin/phpunit`
- Lint: `./vendor/bin/php-cs-fixer fix`
## Conventions
- snake_case pour les variables
- PSR-12 pour le style de code
- Toujours ajouter des tests pour les nouvelles fonctions
Ne mettez pas de secrets ou de clés API dans CLAUDE.md — ce fichier est commité dans git.
Premier échange avec Claude Code
Une fois dans la session interactive, vous pouvez demander toutes sortes de choses :
"Explique le fichier src/Controller/UserController.php"— analyse d'un fichier"Ajoute un test unitaire pour la méthode calculateTotal"— génération de code"Refactorise cette fonction pour la rendre plus lisible"— amélioration du code"Crée une classe PHP User avec les propriétés nom, email, age"— création de code
Soyez précis dans vos demandes. Précisez le fichier concerné, le comportement attendu, les contraintes. Claude Code est d'autant plus efficace que le contexte est clair.
Exemple pratique
Voici un exemple complet de CLAUDE.md pour un projet PHP Symfony :
# Application de gestion RH
## Stack technique
- PHP 8.2
- Symfony 6.4
- Doctrine ORM
- MySQL 8.0
- PHPUnit 11 pour les tests
- Twig pour les templates
## Commandes
- Démarrer le serveur: `symfony serve -d`
- Arrêter le serveur: `symfony server:stop`
- Tests unitaires: `./vendor/bin/phpunit`
- Tests avec coverage: `./vendor/bin/phpunit --coverage-html coverage/`
- Migrations: `php bin/console doctrine:migrations:migrate`
- Lint PHP: `./vendor/bin/php-cs-fixer fix --dry-run`
- Lint Twig: `php bin/console lint:twig templates/`
## Conventions
- snake_case pour les variables et propriétés
- PascalCase pour les noms de classes
- PSR-12 pour le style de code
- Toujours écrire un test pour chaque nouvelle méthode publique
- Les controllers ne doivent contenir que la logique de routing
- La logique métier va dans les Services (dossier src/Service/)
## Architecture
- src/Controller/ — controllers Symfony
- src/Entity/ — entités Doctrine
- src/Repository/ — repositories Doctrine
- src/Service/ — logique métier
- templates/ — templates Twig
## Fichiers à ne pas modifier
- config/packages/security.yaml — configuration de sécurité validée
- migrations/ — ne jamais modifier les migrations existantes
## Problèmes connus
- Le serveur de dev doit être lancé avec `symfony serve` et non `php -S`
- Les fixtures de test nécessitent `php bin/console doctrine:fixtures:load --env=test`
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Créer un CLAUDE.md pour un projet PHP
Dans ce TP, vous allez initialiser Claude Code sur un projet PHP et personnaliser son fichier de contexte.
Étape 1 — Créer la structure du projet
Créez un répertoire mon-projet-php avec quelques fichiers PHP pour simuler un projet réel.
mkdir mon-projet-php
cd mon-projet-php
mkdir src tests
Créez ensuite un fichier src/User.php minimal :
<?php
class User {
public function __construct(
private string $nom,
private string $email,
private int $age
) {}
public function getNom(): string {
return $this->nom;
}
}
Étape 2 — Lancer Claude Code et générer CLAUDE.md
Depuis la racine de mon-projet-php, lancez Claude Code puis utilisez /init :
Étape 3 — Lire le fichier généré
Claude Code a créé un CLAUDE.md automatique. Lisez-le pour voir ce qu'il a détecté :
cat CLAUDE.md
Observez ce que Claude Code a pu détecter : structure des dossiers, langage PHP, absence de dépendances (pas de composer.json).
Étape 4 — Personnaliser CLAUDE.md
Éditez le fichier CLAUDE.md pour ajouter votre stack, vos commandes et vos conventions. Voici les sections à compléter :
Étape 5 — Redémarrer et vérifier
Quittez la session Claude Code (tapez exit ou Ctrl+C), puis relancez-le. Vérifiez que Claude Code mentionne votre contexte dans ses réponses en lui demandant :
"Quelles sont les conventions de nommage de ce projet ?"
Claude Code doit répondre en utilisant les informations de votre CLAUDE.md.
Une solution — CLAUDE.md complet pour un projet PHP
Vous devez être connecté pour voir le contenu.