Le workflow de développement agentique : planifier, exécuter, vérifier
Un guide pratique pour passer de l'autocomplétion et du chat à la délégation de vraies tâches à des agents de code, avec briefs, boucles de rétroaction et revue.
par Patrick Kamtchueng Kom · Publié
L’autocomplétion et les erreurs collées dans une fenêtre de chat, c’est utile, mais ce n’est pas de la délégation. Les agents de code changent l’unité de travail : tu confies une tâche, et l’agent lit les fichiers, modifie le code, lance des commandes et te fait un compte rendu.
Quand ça marche, c’est comme travailler en binôme avec un junior infatigable. Quand ça ne marche pas, tu ramasses les dégâts de quelqu’un qui a réécrit la moitié de ton codebase avec une confiance totale. La différence, c’est rarement le modèle. C’est le workflow autour.
- PlanifierDimensionner la tâche, écrire le brief, réviser le plan de l'agent
- ExécuterL'agent travaille à l'intérieur des tests, des types et du lint
- VérifierTu vérifies le diff : fichiers, tests, puis code
↺ Commit quand c'est vert, jette sans hésiter, recommence avec la prochaine petite tâche
Le changement de mentalité : de taper à déléguer
Avec l’autocomplétion, tu es l’auteur. Avec un agent, tu te rapproches du rôle de tech lead : tu définis le travail, tu fixes les limites et tu révises le résultat.
🃏 Les trois compétences qui comptent le plus maintenant
Touchez une carte pour la retourner
Étape 0 : bien dimensionner la tâche
La taille de la tâche, c’est le meilleur indicateur de succès que je vois. Trop petite, et le brief ne vaut pas la peine : tape le code toi-même. Trop grosse, et l’agent perd le fil et te livre un diff de 40 fichiers impossible à réviser.
✅ Une tâche est bien dimensionnée quand…
0 / 4 complété
🎮 Déléguer ou garder?
1 / 9 · Pointage: 0
Confierais-tu ça à un agent comme une seule tâche?
Si une tâche est trop grosse, ne la confie pas telle quelle. Demande à l’agent de t’aider à la découper, puis délègue les morceaux un à la fois.
Étape 1 : écrire un vrai brief de tâche
Un prompt d’une ligne suffit pour les changements triviaux. Pour le reste, un court brief prend deux minutes et en sauve vingt.
- 1
Objectif
Ce qui doit être vrai quand la tâche est finie, et pourquoi.
- 2
Contraintes
Ce que l'agent ne doit pas faire ou doit respecter : aucune nouvelle dépendance, ne pas changer l'API publique, suivre le pattern du fichier X.
- 3
Critères d'acceptation
Des conditions concrètes et vérifiables. Idéalement, des commandes qui passent.
- 4
Fichiers pertinents
Où commencer à chercher, pour que l'agent n'erre pas.
Un brief pour une petite fonctionnalité :
## Objectif
Ajouter une pagination par curseur à GET /api/orders. L'app mobile
charge présentement toutes les commandes d'un coup et expire pour les
gros comptes.
## Contraintes
- Garder la forme de réponse existante; ajouter `nextCursor` au premier niveau.
- Aucune nouvelle dépendance.
- Suivre le pattern de pagination déjà utilisé dans `src/api/invoices.ts`.
- Ne pas modifier le schéma de la base de données.
## Critères d'acceptation
- Paramètre `limit`, par défaut 50, max 200.
- Paramètre `cursor` qui retourne la page suivante, triée par createdAt desc.
- Nouveaux tests dans `tests/api/orders.test.ts` qui couvrent : première page,
page suivante, dernière page (nextCursor null), curseur invalide (400).
- `npm test` et `npm run typecheck` passent.
## Fichiers pertinents
- src/api/orders.ts
- src/api/invoices.ts (pattern de référence)
- src/db/queries/orders.ts
Remarque la raison (pour que l’agent fasse des arbitrages sensés), le pattern de référence (pour qu’il n’en invente pas un) et une définition de « terminé » qu’une machine peut vérifier.
Un brief pour une correction de bug :
## Objectif
Corriger : les utilisateurs avec une apostrophe dans leur nom de famille
(ex. O'Brien) reçoivent une erreur 500 en modifiant leur profil.
## Reproduction
1. Créer un utilisateur avec le nom de famille « O'Brien ».
2. PATCH /api/profile avec n'importe quel changement.
3. Les logs du serveur montrent une erreur de requête dans updateProfile.
## Contraintes
- Corriger la cause racine, pas le symptôme. Pas de bricolage d'échappement.
- Ne pas toucher aux requêtes non reliées, même si elles se ressemblent.
Liste-les plutôt dans ton résumé et je déciderai.
## Critères d'acceptation
- Écrire D'ABORD un test qui échoue et reproduit le bug; montre-moi qu'il échoue.
- Ensuite, corriger et montrer le test qui passe.
- Toute la suite de tests passe.
## Fichiers pertinents
- src/services/profile.ts
- src/db/queries/users.ts
🧠 Teste tes briefs
Pointage: 0 / 4
1. Quel critère d'acceptation est le plus utile pour un agent?
2. Pourquoi inclure un fichier de référence comme src/api/invoices.ts?
3. Pourquoi donner la raison derrière l'objectif (« l'app mobile expire »)?
4. Dans un brief de correction de bug, qu'est-ce qui vient avant le correctif?
Étape 2 : donner le contexte du repo une seule fois
Tu ne devrais pas répéter « on utilise pnpm, pas npm » dans chaque brief. La plupart des agents chargent un fichier d’instructions à la racine du repo, souvent nommé quelque chose comme AGENTS.md ou CLAUDE.md. Vérifie dans la doc de ton outil le nom exact qu’il lit.
✕ À laisser de côté
- –De la longue prose
- –Des standards aspirationnels que personne ne suit
- –Tout ce qui change chaque semaine
- –Des lignes périmées que l'agent suivra avec confiance
✓ À inclure
- +Commandes : installer, lancer, tester (y compris un seul fichier), typecheck, lint, formatage
- +L'architecture en un paragraphe : les dossiers principaux et ce qu'ils contiennent
- +Conventions : nommage, gestion d'erreurs, emplacement des tests
- +Garde-fous : code généré, librairies vendorisées, migrations déjà appliquées à ne jamais toucher
- +Pièges : « le serveur de dev a besoin de Redis », « les dates sont en UTC »
Traite ce fichier comme du code : révise les changements, garde-le à jour, supprime les lignes mortes. Si l’agent répète la même erreur, ajoute une ligne ici plutôt que de te répéter dans chaque prompt.
Étape 3 : planifier d’abord, puis réviser le plan
Pour tout ce qui dépasse le trivial, demande un plan avant les modifications. Plusieurs agents ont un mode plan ou lecture seule; sinon, dis « Ne modifie aucun fichier pour l’instant. Lis le code pertinent et propose un plan. »
Un plan utile liste les fichiers qui vont changer et pourquoi, l’approche en quelques étapes, les suppositions et la façon de vérifier le changement. Le lire, c’est la revue la moins chère que tu feras jamais : attraper « je vais ajouter une nouvelle librairie de cache » ici coûte une phrase, pas une réécriture.
🃏 Drapeaux rouges dans un plan
Touchez une carte pour la retourner
Corrige le plan en langage clair; deux rondes, c’est normal. À la quatrième, la tâche est trop floue ou trop grosse : réécris le brief. La planification sert aussi à découper : « Propose une séquence de petites étapes fusionnables indépendamment pour aller d’ici à X. »
Étape 4 : exécuter dans une boucle de rétroaction serrée
Un agent sans vérificateur devine. Avec une suite de tests rapide, un typechecker et un linter, il voit ses propres erreurs et les corrige avant que tu regardes.
✅ Mise en place de la boucle de rétroaction
0 / 4 complété
Le TDD fonctionne étonnamment bien avec les agents
- RougeL'agent écrit un test qui échoue pour le comportement voulu
- RevueTu révises le test : c'est la spec
- VertL'agent le fait passer sans modifier le test
- RefactorL'agent nettoie avec les tests au vert
Une règle sur laquelle je suis strict : l’agent n’a pas le droit de modifier un test pour le faire passer, sauf si on s’est entendu que le test était faux. Écris-le dans le brief.
Étape 5 : de petits commits, et git comme bouton d’annulation
Les agents font beaucoup de changements très vite. C’est git qui rend ça sécuritaire.
✕ À éviter
- –Partir avec tes propres changements non commités mélangés
- –Laisser une longue exécution rouler sans points de contrôle
- –Sauver une mauvaise tentative parce qu'elle « marche presque »
- –Garder une branche en vie pour plusieurs tâches
✓ À faire
- +Partir d'un working tree propre
- +Commiter à chaque point de contrôle vert (je commite souvent moi-même après un coup d'œil)
- +Revenir au dernier bon commit et réécrire le brief
- +Une tâche, une branche, une pull request
Le code était peu coûteux à générer; ton attention, elle, ne l’est pas. Savoir jeter du travail, c’est une vraie compétence.
Étape 6 : faire rouler des agents en parallèle, prudemment
Deux ou trois agents sur des tâches indépendantes, c’est un vrai bond de productivité. La clé, c’est l’isolation : deux agents dans le même répertoire de travail vont se marcher sur les pieds.
Options d’isolation : des git worktrees séparés (chaque agent a son propre répertoire et sa branche sur le même repo; mon choix par défaut), des clones séparés si tes outils n’aiment pas les worktrees, ou des agents distants ou en sandbox si ton outil en offre.
Étape 7 : réviser les diffs d’agent efficacement
Le travail d’un agent doit être révisé, point. Le truc, c’est de le faire plus vite que d’écrire le code toi-même.
- 1
Lire le résumé sans rien croire encore
« Tous les tests passent », c'est une affirmation, pas un fait.
- 2
Lancer les vérifications
Tests, typecheck, lint, toi-même ou via la CI.
- 3
Parcourir la liste de fichiers
Tout fichier qui n'est pas évidemment lié à la tâche est un drapeau rouge. Commence par là.
- 4
Lire les tests avant l'implémentation
Affirment-ils quelque chose de significatif? Échoueraient-ils si la fonctionnalité brisait?
- 5
Lire l'implémentation
Cherche les modes d'échec ci-dessous, pas le style. Les formateurs s'occupent du style.
- 6
Vérifier ce qui manque
Gestion d'erreurs, cas limites des critères d'acceptation, docs ou types à mettre à jour.
Un diff trop gros pour être révisé confortablement, c’est un signal sur la taille de la tâche, pas une raison de survoler. Rejette-le et découpe la tâche.
Les modes d’échec courants et comment les attraper
Les patterns que je vois le plus, dans mon propre travail et avec les équipes que j’accompagne. Retourne chaque carte pour voir comment les attraper et les prévenir.
🃏 Modes d'échec des agents
Touchez une carte pour la retourner
Quand reprendre le volant
Déléguer, ce n’est pas abdiquer.
✅ Interviens quand…
0 / 5 complété
Reprendre le volant peut être partiel : règle toi-même la partie délicate, commite-la et redonne le reste.
## Objectif
J'ai implémenté la nouvelle logique de retry dans src/jobs/retry.ts (voir
le dernier commit). Applique le même pattern aux trois autres handlers de jobs.
## Contraintes
- Reproduire l'implémentation de retry.ts exactement; ne pas l'« améliorer ».
- Un commit par handler.
- Si un handler ne cadre pas proprement avec le pattern, arrête-toi et
dis-le-moi au lieu de l'adapter.
## Critères d'acceptation
- src/jobs/email.ts, src/jobs/export.ts, src/jobs/sync.ts utilisent withRetry.
- Les tests existants de chaque handler passent encore.
- Un nouveau test par handler pour le cas « échec, retry, puis succès ».
## Fichiers pertinents
- src/jobs/retry.ts (référence)
- tests/jobs/retry.test.ts (test de référence)
Tout mettre ensemble
- 1
Dimensionner
Pour que le diff soit révisable.
- 2
Écrire le brief
Objectif, contraintes, critères d'acceptation, fichiers pertinents.
- 3
Planifier
Et réviser le plan avant tout code.
- 4
Exécuter
Avec les tests, les types et le lint comme vérificateur.
- 5
Commiter
À chaque point vert; jeter sans hésiter.
- 6
Réviser
Liste de fichiers, tests, puis implémentation.
- 7
Reprendre le volant
Quand l'agent tourne en rond ou qu'il faut du jugement.
Rien d’exotique là-dedans. C’est déjà comme ça que les bonnes équipes délèguent à des humains; les agents font juste apparaître plus vite les étapes sautées.
Essaie ça sur ta prochaine tâche
✅ Ton premier cycle planifier-exécuter-vérifier
0 / 9 complété