Ta première boucle avec /goal en 15 minutes (et le piège que j’ai trouvé)
À la fin de cet article, tu auras lancé ta première boucle : une tâche que ton IA refait toute seule jusqu’à ce qu’un critère clair soit rempli, avec un plafond de tours pour qu’elle ne tourne pas dans le vide. Quinze minutes. Et tu sauras quel piège guette ta première grille, parce que je suis tombé dedans en préparant cet article.
L’idée de départ vient de Boris Cherny, le créateur de Claude Code : il dit ne plus « prompter » Claude, mais écrire des boucles qui le font à sa place. IA Espresso en a tiré une version pour les créateurs de contenu, et c’est ce qui m’a donné envie d’essayer pour de vrai. Voici ce que ça donne côté pratique, avec une tâche de gestion plutôt que du code.
Une boucle, en une phrase
Au lieu de relancer ton IA à la main (« non, refais-le », « encore une fois »), tu écris une fois ce qu’est un bon résultat, et c’est l’outil qui recommence jusqu’à y arriver. Dans Claude Code, la commande s’appelle /goal. Voici sa syntaxe telle qu’elle s’affiche :
/goal [<condition> | clear]
Une condition pour la lancer, clear pour l’arrêter. Il n’y a pas d’option « nombre de tours » : le plafond, tu l’écris dans la condition, en toutes lettres.
Ce qu’il te faut
- Claude Code installé et lancé dans un dossier de travail.
- Un texte à améliorer. Prends un vrai brouillon : un compte-rendu, un rapport, un courriel bâclé.
- Cinq minutes pour écrire ta grille. C’est la partie importante.
Étape 1 : Écrire une grille de oui ou non (5 minutes)
Une boucle ne vaut que par son critère d’arrêt. « Écris mieux » ne s’arrête jamais, parce que personne ne sait quand c’est mieux. Un bon critère se répond par oui ou par non.
Mon exemple : un rapport de facturation écrit à la va-vite. Le brouillon :
rapport de facturation mars
On a envoye 12 factures en mars. Le client Dupont a paye en retard encore une fois!!!
Il faut vraiment faire quelque chose, c'est pas acceptable. Total facture: 8 450$.
Total encaisse: 6 200$. Il reste des trucs a regler avec Tremblay aussi, je sais pas
trop quoi.
Et ma grille, dans un fichier grille.md :
Grille du rapport (chaque critère = oui ou non) :
1. Le titre commence par une majuscule et contient le mois et l'année.
2. Aucun point d'exclamation.
3. Le solde impayé figure en chiffres (total facturé moins total encaissé).
4. Chaque client cité a une action suivante précise, avec une date.
5. Aucune phrase vague du genre « des trucs » ou « je sais pas ».
Crée les deux fichiers dans un dossier d’essai. En bash :
mkdir essai-goal && cd essai-goal
# puis crée rapport-brouillon.md et grille.md avec ton éditeur
En PowerShell :
mkdir essai-goal; cd essai-goal
# puis crée rapport-brouillon.md et grille.md avec ton éditeur
Étape 2 : Lancer la boucle (2 minutes)
Lance claude dans ce dossier, puis tape :
/goal rapport-brouillon.md est réécrit et respecte les 5 critères de grille.md (chacun répondu oui), vérifié en relisant le fichier. Arrête-toi après 4 tours maximum.
Trois choses dans cette phrase, à garder à chaque fois : ce qui doit être vrai à la fin, comment on le vérifie (« en relisant le fichier »), le plafond (« 4 tours maximum »).
Étape 3 : Lire le résultat (3 minutes)
Voici ce que j’ai obtenu, pour de vrai. Le fichier a été réécrit avec un titre daté, un solde de 2 250 $ calculé (8 450 $ moins 6 200 $), et une action datée pour chaque client. Puis l’outil a affiché :
Goal achieved (38s · 1 turn · 1.9k tokens)
Trois enseignements dans cette ligne :
- Ça a coûté peu : 38 secondes, un peu moins de 2 000 jetons (tokens).
- Ce n’était pas une boucle, ou pas encore : un seul tour a suffi. Le plafond de 4 n’a servi à rien cette fois. Il sert quand ça se passe mal, pas quand ça se passe bien.
- Il affiche son coût, donc tu peux mesurer avant d’automatiser quoi que ce soit.
Étape 4 : Le piège que j’ai trouvé (5 minutes)
Les cinq critères étaient « oui ». Et pourtant, relis le rapport : Claude avait inventé l’année 2026, les dates des 7 et 8 avril, l’échéance de 30 jours pour Dupont et le contenu des deux actions. Mon brouillon ne contenait rien de tout ça. Mon critère 4 exigeait « une action précise, avec une date » : pour le satisfaire, l’IA a fabriqué la date.
À sa décharge, elle l’a dit elle-même, juste après avoir coché les cinq critères : trois éléments « ne viennent pas du brouillon, c’est moi qui les ai ajoutés. Vérifie-les ». Mais la boucle, elle, s’est arrêtée sur « objectif atteint ». Si je n’avais pas lu le message, j’aurais envoyé un rapport avec des dates fausses.
La leçon, c’est que ta grille se fait satisfaire, pas comprendre. Un critère qui exige une information que la source ne contient pas pousse l’IA à l’inventer. Le correctif tient en un sixième critère :
6. Aucune date, aucun montant et aucune action ne sort du brouillon : si une information
manque, la marquer [À CONFIRMER] au lieu de l'inventer.
Et le critère 4 devient : « Chaque client cité a une action suivante : celle du brouillon, ou [À CONFIRMER] si elle manque. »
Étape 5 : Relancer avec la grille corrigée (5 minutes de plus, facultatif)
Même brouillon, grille à six critères, même commande (avec « 6 critères »). Cette fois, la boucle a bouclé.
Tour 1. Claude réécrit le rapport, mais cette fois sans rien inventer. Le titre devient « Rapport de facturation, mars [À CONFIRMER : année] », et les actions de Dupont et de Tremblay portent aussi [À CONFIRMER], puisque le brouillon n’en donne aucune. Il coche ses critères, avec une réserve sur le premier : l’année manque, donc il ne l’a pas devinée.
Puis l’outil affiche :
Goal not yet met… continuing
La boucle ne s’est pas arrêtée. L’outil a relevé que mes critères 1 et 6 se contredisaient : l’un exige l’année dans le titre, l’autre interdit d’ajouter ce que le brouillon ne contient pas. Je les avais écrits sans voir le conflit.
Au lieu d’inventer, Claude m’a posé la question : « Le brouillon ne donne pas l’année. Les critères 1 et 6 se contredisent sans elle. Quelle année mettre dans le titre ? » Avec des choix à l’écran. J’ai répondu 2026.
Tour 2. Le titre devient « Rapport de facturation, mars 2026 », les deux [À CONFIRMER] restent en place, et l’outil conclut :
Goal achieved (1m · 2 turns · 3.1k tokens)
Deux tours, une minute, environ 3 100 jetons. Et surtout, un rapport où chaque chiffre vient du brouillon, chaque trou est marqué, et où l’année vient de moi, pas d’une supposition.
Compare avec l’essai n°1 : même tâche, même outil, un tour de moins, mais des dates fausses glissées sans bruit. La seconde boucle est plus lente de 22 secondes et nettement plus honnête.
Quand ça ne boucle pas, c’est normal
Ta première grille sera trop facile ou trop floue. C’est le travail réel : pas écrire la boucle, affiner le critère. Chaque fois que le résultat te déçoit alors que la boucle dit « atteint », c’est une règle qui manque dans ta grille. Tu l’ajoutes, tu relances. C’est la même logique que ta liste de refus : ce que tu corriges à la main deux fois devient une règle écrite.
Garde le plafond de tours toujours, même pour un test. Sans lui, une boucle qui n’atteint jamais son critère continue de consommer.
En résumé
- Une boucle, c’est : une condition de réussite écrite une fois, et l’outil qui recommence jusqu’à l’atteindre.
- Syntaxe :
/goal [<condition> | clear]. Le plafond de tours s’écrit dans la condition. - Un bon critère se répond par oui ou par non, et se vérifie dans le fichier.
- Piège : une grille qui exige une information absente de la source pousse l’IA à l’inventer. Ajoute un critère « rien d’inventé,
[À CONFIRMER]sinon ». - Une bonne grille fait bloquer la boucle quand l’information manque : l’IA te pose la question au lieu de deviner.
- Relis les critères entre eux : les miens (1 et 6) se contredisaient, et c’est la boucle qui l’a révélé.
- Lis toujours le message final, pas seulement « Goal achieved ».
Toi, c’est quoi la première tâche que tu confierais à une boucle ? Dis-le-moi en commentaire.
Le concept derrière cet essai est dans Arrête de relancer ton IA : fais-la boucler. Abonne-toi au blog pour la suite.