{"id":896,"date":"2026-10-23T21:30:00","date_gmt":"2026-10-23T20:30:00","guid":{"rendered":"https:\/\/www.ludovicfavre.ch\/blog\/?p=896"},"modified":"2026-10-24T22:02:44","modified_gmt":"2026-10-24T21:02:44","slug":"du-prompt-iteratif-a-lequipe-dagents-sites-web-un-an-et-demi-plus-tard","status":"publish","type":"post","link":"https:\/\/www.ludovicfavre.ch\/blog\/2026\/10\/du-prompt-iteratif-a-lequipe-dagents-sites-web-un-an-et-demi-plus-tard\/","title":{"rendered":"Du prompt it\u00e9ratif \u00e0 l&rsquo;\u00e9quipe d&rsquo;agents : sites web, un an et demi plus tard"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/jpeg-1024x683.jpg\" alt=\"\" class=\"wp-image-906\" srcset=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/jpeg-1024x683.jpg 1024w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/jpeg-300x200.jpg 300w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/jpeg-768x512.jpg 768w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/jpeg.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En mars 2025, j&rsquo;avais racont\u00e9 ici <a href=\"https:\/\/www.ludovicfavre.ch\/blog\/2025\/03\/jai-redeveloppe-mon-site-avec-react-et-codeigniter-grace-a-grok-3-sans-presque-aucune-experience-en-react\/\" target=\"_blank\" rel=\"noopener\">comment j&rsquo;ai red\u00e9velopp\u00e9 mon site avec React et CodeIgniter gr\u00e2ce \u00e0 Grok 3<\/a>, sans presque aucune exp\u00e9rience en React. La m\u00e9thode tenait en quelques \u00e9tapes : une poign\u00e9e de prompts, puis des allers-retours quand quelque chose coin\u00e7ait. Le r\u00e9sultat arrivait en quelques heures, m\u00eame si \u00ab tout ne marchait pas du premier coup \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aujourd&rsquo;hui, je travaille un autre site de domaine viticole (PHP, CodeIgniter, MariaDB), et la fa\u00e7on de travailler avec l&rsquo;IA n&rsquo;a plus grand-chose \u00e0 voir. On n&rsquo;encha\u00eene plus les prompts dans une fen\u00eatre de chat. J&rsquo;utilise Claude Code avec une configuration qui organise une petite \u00e9quipe virtuelle : des r\u00f4les, des documents et des points de contr\u00f4le. Ce billet se veut une suite logique du premier : ce qui a chang\u00e9, et pourquoi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Mars 2025 contre aujourd&rsquo;hui :<\/em><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th><\/th><th>Mars 2025<\/th><th>Aujourd&rsquo;hui<\/th><\/tr><tr><td>Outil<\/td><td>Grok 3 dans un chat, compar\u00e9 \u00e0 GPT-4o, Claude 3.5 et Copilot<\/td><td>Claude Code dans l&rsquo;\u00e9diteur, avec acc\u00e8s direct au code<\/td><\/tr><tr><td>M\u00e9thode<\/td><td>Prompts it\u00e9ratifs : je demande, j&rsquo;essaie, je relance<\/td><td>Un circuit : besoins, conception, plan, impl\u00e9mentation, revue<\/td><\/tr><tr><td>Qui pilote<\/td><td>Moi, \u00e0 chaque \u00e9change<\/td><td>Un agent chef d&rsquo;orchestre, et moi aux points de validation<\/td><\/tr><tr><td>Contexte fourni \u00e0 l&rsquo;IA<\/td><td>Ce que je colle dans le prompt<\/td><td>Le code, la configuration et des r\u00e8gles projet \u00e9crites une fois pour toutes<\/td><\/tr><tr><td>V\u00e9rification<\/td><td>Surtout \u00e0 l&rsquo;\u0153il, au fil des essais<\/td><td>Tests automatiques, relecture du code et de la s\u00e9curit\u00e9<\/td><\/tr><tr><td>Quand \u00e7a casse<\/td><td>Un nouveau prompt avec l&rsquo;erreur<\/td><td>Une enqu\u00eate, une contre-expertise, puis seulement une correction<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La diff\u00e9rence de fond : en 2025, la qualit\u00e9 d\u00e9pendait surtout de la r\u00e9ponse du mod\u00e8le. Aujourd&rsquo;hui, elle d\u00e9pend surtout du cadre dans lequel il travaille.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un chef d&rsquo;orchestre et des sp\u00e9cialistes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;id\u00e9e centrale : la session Claude principale ne code pas. Elle joue le chef de projet et confie chaque \u00e9tape \u00e0 un sous-agent sp\u00e9cialis\u00e9. Chaque sous-agent a un seul r\u00f4le, ses propres outils et un format de r\u00e9ponse impos\u00e9.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"539\" height=\"770\" src=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/Capture-decran-2026-10-23-225816.png\" alt=\"\" class=\"wp-image-900\" style=\"aspect-ratio:0.7000081172125492\" srcset=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/Capture-decran-2026-10-23-225816.png 539w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/Capture-decran-2026-10-23-225816-210x300.png 210w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>R\u00f4le<\/th><th>Ce qu&rsquo;il fait<\/th><\/tr><tr><td>Analyste des besoins<\/td><td>Mesure ce que la demande touche dans le code et ce qu&rsquo;elle va co\u00fbter<\/td><\/tr><tr><td>Concepteur technique<\/td><td>R\u00e9dige le document de conception<\/td><\/tr><tr><td>Planificateur<\/td><td>D\u00e9coupe la conception en t\u00e2ches<\/td><\/tr><tr><td>Ex\u00e9cutant<\/td><td>Impl\u00e9mente une t\u00e2che, rien de plus<\/td><\/tr><tr><td>Contr\u00f4leur qualit\u00e9<\/td><td>Lance les tests et les v\u00e9rifications, corrige ce qui casse<\/td><\/tr><tr><td>Relecteurs<\/td><td>Relisent le code et la s\u00e9curit\u00e9 \u00e0 la fin<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le chef d&rsquo;orchestre dit <strong>quoi<\/strong> faire et <strong>o\u00f9<\/strong>, jamais <strong>comment<\/strong>. Il donne \u00e0 l&rsquo;ex\u00e9cutant un fichier de t\u00e2che, pas une liste de lignes \u00e0 modifier. Chaque sp\u00e9cialiste repart d&rsquo;un contexte propre, ce qui \u00e9vite qu&rsquo;une longue conversation finisse par tout m\u00e9langer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toutes les demandes ne m\u00e9ritent pas ce circuit complet. Le chef d&rsquo;orchestre classe d&rsquo;abord la demande : <strong>petite<\/strong>, <strong>moyenne<\/strong> ou <strong>grande<\/strong>. Une petite correction passe directement \u00e0 l&rsquo;impl\u00e9mentation ; une grosse fonctionnalit\u00e9 traverse toutes les \u00e9tapes. Il existe aussi un mode \u00ab Lite \u00bb, celui que j&rsquo;utilise, qui r\u00e9duit le nombre d&rsquo;agents appel\u00e9s sans supprimer les validations humaines.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Des documents comme garde-fous<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour une demande moyenne ou grande, rien ne se code avant que trois documents soient \u00e9crits et valid\u00e9s par un humain :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Le cahier des charges<\/strong> : ce que l&rsquo;utilisateur doit pouvoir faire, et ce qui est explicitement exclu.<\/li>\n\n\n\n<li><strong>Le document de conception<\/strong> : comment on s&rsquo;y prend, avec des crit\u00e8res d&rsquo;acceptation v\u00e9rifiables.<\/li>\n\n\n\n<li><strong>Le plan de travail<\/strong> : la liste ordonn\u00e9e des t\u00e2ches.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque document est relu par un agent relecteur, puis confront\u00e9 au code r\u00e9el par un agent v\u00e9rificateur. Celui-ci attrape les affirmations du type \u00ab la fonction X existe d\u00e9j\u00e0 \u00bb quand elle n&rsquo;existe pas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;int\u00e9r\u00eat n&rsquo;est pas la paperasse. C&rsquo;est d&rsquo;avoir des points d&rsquo;arr\u00eat o\u00f9 je peux dire \u00ab non, pas comme \u00e7a \u00bb avant que cinquante fichiers soient modifi\u00e9s. Le deuxi\u00e8me b\u00e9n\u00e9fice de cette approche, c&rsquo;est la reprise du d\u00e9veloppement avec des mini-\u00e9tapes, par exemple le lendemain ou apr\u00e8s une attente sur un quota de token expir\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pour diagnostiquer un bug : l&rsquo;avocat du diable<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le pi\u00e8ge classique avec une IA qui d\u00e9bogue, c&rsquo;est qu&rsquo;elle trouve <strong>une<\/strong> cause plausible, s&rsquo;y accroche et corrige le sympt\u00f4me. Le <em>framework Claude Code<\/em> s\u00e9pare donc le diagnostic en trois r\u00f4les :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>L&rsquo;enqu\u00eateur<\/strong> suit le chemin que prend l&rsquo;ex\u00e9cution et liste tous les endroits o\u00f9 \u00e7a peut casser, preuves \u00e0 l&rsquo;appui.<\/li>\n\n\n\n<li><strong>Le v\u00e9rificateur<\/strong> essaie de d\u00e9monter ce travail.<\/li>\n\n\n\n<li><strong>Le solveur<\/strong> propose des corrections seulement une fois les causes confirm\u00e9es.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Sur mon projet, il a d&rsquo;ailleurs d\u00e9mont\u00e9 une hypoth\u00e8se qui me paraissait \u00e9vidente : je pensais que le probl\u00e8me venait du contr\u00f4leur alors que la cause \u00e9tait finalement dans la configuration d&rsquo;un composant tiers.<br>Pour chaque cause suppos\u00e9e, il joue <strong>l&rsquo;avocat du diable<\/strong> :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Et si ce comportement \u00e9tait en fait normal ?<\/li>\n\n\n\n<li>Quelle preuve contraire a-t-on oubli\u00e9e ?<\/li>\n\n\n\n<li>Quelle hypoth\u00e8se implicite est peut-\u00eatre fausse ?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Il va aussi chercher dans une source que l&rsquo;enqu\u00eateur n&rsquo;a pas consult\u00e9e : l&rsquo;historique Git, la configuration ou la documentation officielle. Si la doc officielle contredit une hypoth\u00e8se, celle-ci est automatiquement affaiblie. Enfin, il ne d\u00e9signe pas un coupable unique : chaque cause est jug\u00e9e s\u00e9par\u00e9ment, car un bug en a souvent plusieurs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Choisir comment impl\u00e9menter : le plus petit design possible<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avant d&rsquo;\u00e9crire du code, le concepteur suit une m\u00e9thode en sept \u00e9tapes. Le c\u0153ur tient en une question : <strong>quel est le design le plus simple qui atteint le r\u00e9sultat, et qu&rsquo;est-ce qui oblige \u00e0 en faire plus ?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Concr\u00e8tement :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Partir de l&rsquo;existant.<\/strong> On trace le chemin le plus court qui livre le r\u00e9sultat avec ce que le code sait d\u00e9j\u00e0 faire.<\/li>\n\n\n\n<li><strong>Chercher ce qui manque.<\/strong> On ne garde que les besoins que ce chemin ne couvre pas.<\/li>\n\n\n\n<li><strong>Combler au moindre co\u00fbt.<\/strong> Pour chaque manque, on essaie d&rsquo;abord de r\u00e9utiliser, de d\u00e9duire d&rsquo;une donn\u00e9e existante ou de calculer \u00e0 la vol\u00e9e. On n&rsquo;ajoute une table, une option ou une classe qu&rsquo;en dernier recours.<\/li>\n\n\n\n<li><strong>Le test de soustraction.<\/strong> On retire chaque ajout, un par un, et on regarde si le r\u00e9sultat tient encore. Si oui, l&rsquo;ajout dispara\u00eet.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Ce dernier test est redoutable contre la tendance des IA \u00e0 \u00ab bien faire \u00bb : un service, une interface et un fichier de config pour afficher trois lignes. Chaque \u00e9l\u00e9ment qui reste dans le design doit pouvoir dire quelle exigence casserait sans lui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les \u00e9tapes suivantes sont plus classiques : comparer au moins deux strat\u00e9gies, lister les risques avec une parade pour chacun, v\u00e9rifier les contraintes (version de PHP, h\u00e9bergeur, d\u00e9lais), puis consigner le choix et ses raisons dans le document de conception.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Par tranches ou par couches ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois le design fix\u00e9, il reste \u00e0 d\u00e9cider dans quel ordre le construire. Il y a trois options :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Approche<\/th><th>Principe<\/th><th>Quand la choisir<\/th><\/tr><tr><td>Verticale<\/td><td>Une fonctionnalit\u00e9 compl\u00e8te \u00e0 la fois, de la base de donn\u00e9es \u00e0 l&rsquo;\u00e9cran<\/td><td>Fonctionnalit\u00e9s peu d\u00e9pendantes entre elles, utilisables d\u00e8s qu&rsquo;elles sont finies<\/td><\/tr><tr><td>Horizontale<\/td><td>Une couche \u00e0 la fois : d&rsquo;abord les donn\u00e9es, puis la logique, puis l&rsquo;affichage<\/td><td>Plusieurs fonctionnalit\u00e9s reposent sur un socle commun qui doit \u00eatre solide<\/td><\/tr><tr><td>Hybride<\/td><td>Un m\u00e9lange, phase par phase<\/td><td>Besoins encore flous, ou passage d&rsquo;un prototype \u00e0 la version finale<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le crit\u00e8re de choix n&rsquo;est pas l&rsquo;effort. C&rsquo;est le risque le plus faible et la v\u00e9rification la plus rapide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque t\u00e2che vise aussi un niveau de preuve, du plus fort au plus faible :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L1, \u00e7a marche pour de vrai<\/strong> : un visiteur peut utiliser la fonctionnalit\u00e9.<\/li>\n\n\n\n<li><strong>L2, les tests passent<\/strong> : de nouveaux tests couvrent le comportement.<\/li>\n\n\n\n<li><strong>L3, \u00e7a compile<\/strong> : le code est valide, sans rien encore d&rsquo;ex\u00e9cutable.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">On vise toujours le niveau le plus haut possible. Une t\u00e2che valid\u00e9e seulement par \u00ab \u00e7a compile \u00bb doit avoir une bonne raison de l&rsquo;\u00eatre.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1010\" height=\"887\" src=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/image.png\" alt=\"\" class=\"wp-image-901\" style=\"aspect-ratio:1.138693552486656;width:515px;height:auto\" srcset=\"https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/image.png 1010w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/image-300x263.png 300w, https:\/\/www.ludovicfavre.ch\/blog\/wp-content\/uploads\/2026\/10\/image-767x674.png 767w\" sizes=\"auto, (max-width: 1010px) 100vw, 1010px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Ce que j&rsquo;en retiens sur un petit site<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le site sur lequel j&rsquo;ai travaill\u00e9 est simple : des pages rendues c\u00f4t\u00e9 serveur, un formulaire de contact et de commande, pas d&rsquo;application front s\u00e9par\u00e9e. Dans ce contexte, la m\u00e9thode aboutit presque toujours au m\u00eame choix : une approche verticale, une page \u00e0 la fois, v\u00e9rifi\u00e9e en L1 par un test qui charge la vraie page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le circuit complet peut sembler lourd pour un site vitrine, d&rsquo;o\u00f9 le mode Lite et le classement par taille. Mais trois id\u00e9es valent la peine m\u00eame sans le <em>framework Claude Code<\/em>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u00e9parer les r\u00f4les.<\/strong> Celui qui code n&rsquo;est pas celui qui v\u00e9rifie.<\/li>\n\n\n\n<li><strong>Jouer l&rsquo;avocat du diable<\/strong> sur chaque diagnostic avant de corriger.<\/li>\n\n\n\n<li><strong>Faire le test de soustraction<\/strong> sur chaque ajout propos\u00e9 par l&rsquo;IA.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En 2025, l&rsquo;IA m&rsquo;avait permis d&rsquo;aller vite sur une technologie que je ne ma\u00eetrisais pas. Un an et demi plus tard, elle n&rsquo;est pas seulement plus intelligente : elle travaille dans un cadre qui la rend disciplin\u00e9e. C&rsquo;est exactement ce qui manquait \u00e0 mes prompts it\u00e9ratifs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Et au-del\u00e0 du code ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;ing\u00e9nierie logicielle est un terrain id\u00e9al pour ces m\u00e9thodes agentiques. Le cadre y est d\u00e9j\u00e0 tr\u00e8s carr\u00e9 : un langage strict, des tests automatis\u00e9s, des standards partag\u00e9s. Un agent peut y v\u00e9rifier lui-m\u00eame son travail, et un autre agent peut le contredire preuves \u00e0 l&rsquo;appui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quand on voit ce qu&rsquo;on obtient dans ce cadre, on imagine sans peine le potentiel encore inexploit\u00e9 ailleurs. Je ne sais pas encore jusqu&rsquo;o\u00f9 cette approche ira hors du d\u00e9veloppement logiciel, mais le parall\u00e8le me semble \u00e9vident: d\u00e8s qu&rsquo;un m\u00e9tier dispose de r\u00e8gles explicites et de crit\u00e8res de validation clairs, on peut imaginer des agents sp\u00e9cialis\u00e9s s&rsquo;y r\u00e9partir le travail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deux freins restent pourtant d&rsquo;actualit\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>La souverainet\u00e9 et la protection des donn\u00e9es.<\/strong> Confier des documents clients, des dossiers m\u00e9dicaux ou des donn\u00e9es internes \u00e0 un mod\u00e8le h\u00e9berg\u00e9 ailleurs pose toujours la question de savoir o\u00f9 vont ces donn\u00e9es et qui y a acc\u00e8s.<\/li>\n\n\n\n<li><strong>La perm\u00e9abilit\u00e9 du domaine \u00e0 l&rsquo;IA.<\/strong> Un domaine sans r\u00e8gles \u00e9crites, sans moyen automatique de dire si un r\u00e9sultat est juste, ou peu dispos\u00e9 \u00e0 changer ses pratiques, laisse peu de prise \u00e0 ces m\u00e9thodes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Le code a eu de l&rsquo;avance parce qu&rsquo;il avait d\u00e9j\u00e0 fait ce travail de formalisation. Les autres domaines devront sans doute le faire \u00e0 leur tour avant d&rsquo;en tirer autant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En mars 2025, j&rsquo;avais racont\u00e9 ici comment j&rsquo;ai red\u00e9velopp\u00e9 mon site avec React et CodeIgniter gr\u00e2ce \u00e0 Grok 3, sans presque aucune exp\u00e9rience en React. La m\u00e9thode tenait en quelques \u00e9tapes : une poign\u00e9e de prompts, puis des allers-retours quand &hellip; <a href=\"https:\/\/www.ludovicfavre.ch\/blog\/2026\/10\/du-prompt-iteratif-a-lequipe-dagents-sites-web-un-an-et-demi-plus-tard\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[109,1],"tags":[118,106,17],"class_list":["post-896","post","type-post","status-publish","format-standard","hentry","category-ia","category-uncategorized","tag-claude","tag-ia","tag-php"],"_links":{"self":[{"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/posts\/896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/comments?post=896"}],"version-history":[{"count":5,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/posts\/896\/revisions"}],"predecessor-version":[{"id":907,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/posts\/896\/revisions\/907"}],"wp:attachment":[{"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/media?parent=896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/categories?post=896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ludovicfavre.ch\/blog\/wp-json\/wp\/v2\/tags?post=896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}