Aller au contenu principal
Retour au blog

Claude Code preview : retour terrain sur un projet Symfony 7.2

Flavien Métivier4 mars 20254 min

Le 24 février 2025, Anthropic annonçait Claude Code en limited research preview simultanément avec Claude 3.7 Sonnet — via un post sobre sur @AnthropicAI et une page de waitlist sur code.claude.com. Pas d'interface web, pas de GUI : un agent CLI qui tourne dans ton terminal, lit ta codebase, édite des fichiers et exécute des commandes bash. Une semaine après l'accès, j'ai posé Claude Code sur un projet Symfony 7.2 en condition réelle — avant tout guide canonique, avant toute best practice stabilisée. Voici le retour brut.

Installation : npm, une API key, c'est tout

Claude Code s'installe via npm. Prérequis : Node ≥ 18 et une clé API Anthropic avec des crédits disponibles. Aucun binaire natif, aucune image Docker officielle à cette date.

npm install -g @anthropic-ai/claude-code
export ANTHROPIC_API_KEY="sk-ant-api03-..."
claude --version
# claude-code 0.x.x

Deux minutes depuis un terminal vierge. La commande claude ouvre une session interactive dans le répertoire courant. L'agent ne connaît pas encore ton projet — il va l'explorer à la demande, fichier par fichier, en appelant des outils internes (read_file, list_directory, bash). C'est là que commencent les surprises.

Premier contact avec 80 000 lignes de Symfony

Le projet cible : une API Symfony 7.2 / PHP 8.4, architecture hexagonale, une quinzaine de bundles maison, environ 80 000 lignes. La première demande — « cartographie l'architecture de ce projet » — déclenche une exploration en cascade : src/, config/services.yaml, les handlers Messenger, les entités Doctrine. C'est impressionnant. Et immédiatement très coûteux en tokens.

La friction arrive vite : sans instruction explicite, Claude Code part dans tous les sens — vendor/ compris. Le contexte explose en quelques échanges. La parade retenue dès la deuxième session : un fichier CLAUDE.md à la racine du projet, lu automatiquement à chaque démarrage. C'est la seule forme de mémoire persistante disponible en preview.

# Contexte projet

## Stack
- PHP 8.4 / Symfony 7.2
- PostgreSQL 16, Redis 7
- Docker Compose (dev), déploiement CI sur VPS Debian 12

## Structure à explorer
- `src/` Domain / Application / Infrastructure
- `config/` services, routes, packages
- **Ne pas explorer** `vendor/`, `var/`, `.git/`

## Commandes disponibles
- `docker compose exec app php bin/console <cmd>`
- `docker compose exec app composer <cmd>`
- `docker compose exec app vendor/bin/phpunit <path>`

## Conventions
- Architecture hexagonale stricte
- CQRS via Symfony Messenger
- Tests PHPUnit + fixtures Alice

Votre équipe utilise Claude Code ?

Découvrir le workshop

Avec ce fichier en place, les sessions suivantes sont nettement plus propres : l'agent calibre ses lectures, évite les explorations inutiles et sait comment invoquer les commandes sans supposer un environnement local natif.

Les frictions d'une preview — sans filtre

  • Pas de persistance de session : chaque invocation claude repart de zéro. Le CLAUDE.md compense partiellement, mais ne remplace pas un vrai état persistant.
  • Coût opaque en temps réel : les tokens consommés s'affichent en fin de session seulement. Impossible de piloter le budget au fil de l'eau.
  • Friction Docker : si php bin/console n'existe pas en local, l'agent peut échouer silencieusement plutôt que de basculer automatiquement sur docker compose exec app php bin/console.
  • Éditions non atomiques : sur un refactor multi-fichiers, une session interrompue peut laisser la codebase dans un état incohérent — travailler systématiquement sur une branche dédiée.
  • Comportements instables : en research preview, les sorties varient d'une session à l'autre sur des prompts identiques. La documentation officielle n'existe pas encore vraiment.

Malgré ces aspérités, la valeur est réelle sur des tâches bornées : générer un test PHPUnit depuis un bug report précis, scaffolder un Command Symfony à partir d'une spec, auditer une classe service trop grosse. Le ROI dépend directement de la précision de l'instruction initiale — vague = exploration coûteuse et résultat moyen ; précis = livrable utile en quelques échanges.

En résumé : une preview honnête, à apprivoiser maintenant

Claude Code n'est pas encore un copilote de croisière pour une stack Symfony complexe. C'est un outil de chantier — puissant, perfectible, qui demande de l'adaptation et une discipline de contexte rigoureuse. Mais la trajectoire est claire : attendre la GA pour expérimenter, c'est prendre du retard sur un outil qui va redistribuer les cartes sur les tâches à faible valeur ajoutée du quotidien PHP.

Si tu veux structurer l'usage de Claude Code sur ta stack dès maintenant — patterns de prompts efficaces, gestion du contexte et des coûts API, intégration dans un workflow Symfony réel — j'anime un Workshop Claude Code pour équipes techniques. Contacte-moi pour les prochaines sessions.

Cet article vous a plu ? Partagez-le !

Votre équipe utilise Claude Code ?

Workshop intensif : votre équipe opérationnelle en 1 jour.