Quand je travaille avec Claude Code, le moment le plus coĂ»teux nâest pas toujours celui oĂč lâIA Ă©crit du code. Câest celui oĂč je dois lui expliquer, une fois de plus, ce quâelle doit faire ensuite : relancer les tests, regarder lâerreur, corriger le fichier, vĂ©rifier que rien dâautre nâest cassĂ©.
Pendant longtemps, jâai traitĂ© chaque Ă©tape comme un nouveau prompt. Puis jâai commencĂ© Ă regarder le problĂšme autrement : si je connais lâobjectif, les outils disponibles et la façon de vĂ©rifier le rĂ©sultat, pourquoi est-ce que je dois encore rĂ©diger chaque instruction Ă la main ?
Le problĂšme : lâIA attend toujours le prochain prompt
Le workflow classique ressemble Ă ceci :
Moi â Claude â rĂ©sultat â moi â nouveau prompt â Claude...
Je demande de chercher les bugs. Claude trouve un problÚme. Je lui demande de le corriger. Il modifie le code. Je lui demande de relancer les tests. Un test échoue. Je lui demande de regarder pourquoi. Et ainsi de suite.
Ce fonctionnement marche, mais il fait de lâhumain le moteur de chaque transition. LâIA sait produire une action ; elle ne sait pas nĂ©cessairement quelle action vient aprĂšs, ni Ă quel moment elle peut considĂ©rer le travail comme terminĂ©.
Le problĂšme nâest donc pas seulement la qualitĂ© du prompt. Câest lâabsence de processus entre deux prompts.
Prompt engineering vs loop engineering
Le prompt engineering cherche à formuler la meilleure demande possible. Le loop engineering cherche à définir le systÚme qui va générer les demandes suivantes selon les résultats obtenus.
Prompt engineering :
Toi â Claude â rĂ©sultat â toi â nouveau prompt
Loop engineering :
Toi â objectif + rĂšgles + validations
â
Claude â action â test â correction
â â
âââââââ nouvel essai ââââ
La différence est importante. Dans le premier modÚle, tu pilotes Claude étape par étape. Dans le second, tu conçois une boucle qui sait quoi vérifier et comment réagir lorsque la vérification échoue.
La boucle minimale
Une boucle dâingĂ©nierie nâa pas besoin dâĂȘtre compliquĂ©e. Elle doit simplement rĂ©pondre Ă cinq questions :
- Quel est lâobjectif ? Une condition de rĂ©ussite observable.
- Quelles actions sont autorisées ? Les outils, les fichiers et les commandes disponibles.
- Comment vĂ©rifier le rĂ©sultat ? Tests, lint, build, navigateur, capture dâĂ©cran ou revue.
- Que faire en cas dâĂ©chec ? Lire lâerreur, choisir une cause, modifier le minimum, puis recommencer.
- Quand sâarrĂȘter ? SuccĂšs, limite dâitĂ©rations ou dĂ©cision humaine nĂ©cessaire.
Cela donne la boucle générale utilisée par les agents :
Rassembler le contexte
â
Effectuer une action
â
Vérifier le résultat
â
Réessayer ou terminer
La partie la plus souvent oubliĂ©e est la vĂ©rification. Sans elle, on nâa pas une boucle : on a une suite dâactions gĂ©nĂ©rĂ©es par une IA qui espĂšre avoir raison.
Un exemple concret : fiabiliser une application vibe-codée
Supposons que je veuille terminer une application générée rapidement avec Lovable, Cursor ou Claude Code. Je pourrais écrire :
Cherche les bugs.
Corrige le formulaire.
Relance les tests.
Corrige le nouveau problĂšme.
Câest comprĂ©hensible, mais ce nâest pas encore un workflow autonome. Je prĂ©fĂšre dĂ©finir un contrat de boucle :
Objectif :
Tous les tests passent et aucune erreur ESLint ne subsiste.
Ă chaque cycle :
1. Lire les erreurs actuelles.
2. Sélectionner une seule cause racine.
3. Modifier le minimum de code nécessaire.
4. Exécuter les tests concernés.
5. VĂ©rifier quâaucune rĂ©gression nâa Ă©tĂ© introduite.
6. Consigner le changement dans PROGRESS.md.
7. Recommencer si une validation échoue.
ArrĂȘt :
- les tests et le lint réussissent ;
- aprĂšs 15 cycles ;
- ou lorsquâune dĂ©cision fonctionnelle humaine est nĂ©cessaire.
La consigne ne dit pas seulement quoi coder. Elle dĂ©crit le comportement attendu de lâagent pendant toute la durĂ©e du travail.
Ce que cela change pour le développeur
Le développeur ne disparaßt pas de la boucle. Son rÎle se déplace.
- Il dĂ©finit lâobjectif au lieu de dicter chaque geste.
- Il choisit les critĂšres dâacceptation au lieu de se contenter dâun rĂ©sultat plausible.
- Il fournit les outils qui permettent Ă lâIA de vĂ©rifier son travail.
- Il fixe les limites et les décisions qui restent humaines.
- Il conserve une mémoire du travail pour la prochaine session.
On se rapproche dâun mĂ©lange entre CI/CD, tests automatisĂ©s, gestion de projet et supervision dâagent. Le bon livrable nâest plus seulement du code : câest du code accompagnĂ© de preuves quâil rĂ©pond Ă la condition de rĂ©ussite.
La boucle ne remplace pas le jugement
Une boucle peut vĂ©rifier quâun test passe. Elle ne peut pas dĂ©cider seule si le test mesure le bon comportement. Elle peut rĂ©duire le nombre dâerreurs ESLint. Elle ne sait pas si la fonctionnalitĂ© reste comprĂ©hensible pour un utilisateur.
En une phrase
Le prompt engineering consiste Ă bien demander une tĂąche. Le loop engineering consiste Ă construire un systĂšme qui poursuit, vĂ©rifie et corrige cette tĂąche jusquâĂ un rĂ©sultat dĂ©montrable.
Dans la documentation actuelle de Claude Code, ce principe apparaĂźt notamment avec /goal, qui maintient une session active jusquâĂ ce quâune condition de rĂ©ussite soit satisfaite. Câest une commande, mais surtout une nouvelle maniĂšre de penser le travail avec lâIA.