00:00:00Bonjour à tous. Bienvenue au Vercel Community Livestream de cette semaine. Je suis Amy, et voici
00:00:26Jacob. Nous faisons partie de l'équipe communautaire ici chez Vercel. Juste un rappel, nous diffusons
00:00:31ceci sur X et YouTube, mais si vous voulez être sûr que nous voyions vos questions et commentaires
00:00:36dans le chat, allez sur la communauté et connectez-vous. C'est sur [community.vercel.com/live](https://community.vercel.com/live) et vous
00:00:43verrez que c'est le premier événement.
00:00:44Oui, à la fin de la session, nous aurons un peu de temps pour quelques questions. Si vous
00:00:49allez participer au chat pendant que vous regardez la session, n'oubliez pas de suivre
00:00:55notre code de conduite et oui, vous pouvez poser toutes les questions que vous avez en cours de route et
00:00:59nous nous assurerons de les poser. J'aimerais présenter notre invité. Nous avons Jon Lindquist ici pour
00:01:05nous montrer le nouveau plugin Vercel pour Claude Code. Salut, Jon.
00:01:09Salut, Jacob. Salut, Amy. Merci de m'avoir invité. Très bien. Commençons à partager
00:01:16mon écran tout de suite pour que nous puissions montrer ce qui se passe ici. Depuis un certain temps déjà, les
00:01:23compétences sont à la mode et tout le monde parle des compétences à utiliser pour améliorer vos projets
00:01:29et pour permettre à vos agents de faire des choses qu'ils ne sont normalement pas capables de faire. Maintenant, émergeant des
00:01:37compétences, la sorte de prochaine évolution de cela est ce que nous appelons les plugins. Et c'est quelque chose
00:01:43qui commence vraiment à prendre de l'ampleur. Il n'y a pas encore beaucoup de plugins et les gens sont encore
00:01:48en train d'explorer exactement comment les construire. J'ai construit la première version du plugin Vercel et ce
00:01:56dont j'aimerais parler, c'est pourquoi construire un plugin, quand devriez-vous construire un plugin, pourquoi un plugin
00:02:03plutôt que des compétences et comment ils se complètent, et toutes ces sortes de questions. Donc
00:02:09si vous avez des questions sur ce qu'est, j'en parlerai, mais ce qu'un plugin peut
00:02:16permettre pour vous, si vous devriez en construire un en interne ou personnellement, j'aimerais en discuter
00:02:22et nous en parlerons pendant la session d'aujourd'hui. Donc tout d'abord, un plugin est initialement
00:02:32lancé par Claude Code et Gemini également, mais ils ont adopté des approches très différentes. Et la
00:02:39standardisation des plugins est un effort continu. Et c'est quelque chose que nous espérons avoir,
00:02:44je pourrai en parler davantage bientôt, où un seul plugin peut fonctionner sur tous les éditeurs. Donc
00:02:49pour l'instant, nous parlons de Claude Code et le support de Cursor également. CodeX arrive très,
00:02:54très bientôt, sinon déjà aujourd'hui, et beaucoup d'autres aussi. Il y a un standard de plugin
00:03:01en cours d'élaboration. Nous pouvons donc nous attendre à ce que les plugins soient quelque chose que vous pouvez emballer et partager
00:03:08sur n'importe quel outillage que vous utilisez. Cela étant dit, vous connaissez peut-être les compétences
00:03:15car ce sont des fichiers markdown qui peuvent être chargés par votre agent pour lui donner des instructions supplémentaires.
00:03:23Soit vous l'invoquez manuellement, comme avec un slash pour appeler votre compétence, soit l'agent
00:03:29détecte, d'après la description, que la compétence doit être chargée. C'est donc très dépendant de l'invocation par l'utilisateur ou
00:03:36de la décision de l'agent basée sur une condition dans la description. Maintenant, le niveau supérieur d'un plugin
00:03:44est qu'ils possèdent ce qu'on appelle des crochets (hooks). Et si vous pensez à un plugin, ou si vous pensez à une session
00:03:53que vous avez avec Claude Code ou avec n'importe quel harnais d'agent, vous pouvez imaginer qu'ils ont des cycles de vie.
00:03:59Donc là, je suis dans le répertoire du plugin Vercel, je lance juste Claude Code ici, et je vais
00:04:07lui demander quels sont les crochets qu'il utilise. Et cela va lister les crochets
00:04:18qui définissent en quelque sorte un cycle de vie. Et un cycle de vie, c'est le moment où votre session commence, quand les outils
00:04:27comme avant que les outils ne soient appelés, après qu'ils ont été appelés, quand un utilisateur y insère du texte, et
00:04:33quand votre session se termine. Il y a tout un tas d'autres crochets là-dedans. Mais pour nos besoins
00:04:39dans le plugin Vercel, ce sont ceux que nous utilisons actuellement basés sur nos objectifs initiaux.
00:04:44Donc pour être clair, l'objectif initial du plugin Vercel était d'aider les gens à déployer
00:04:51des agents sur Vercel. L'idée est : comment allons-nous rendre les agents conscients de l'écosystème Vercel,
00:05:02comme tout ce qui se trouve sur la plateforme en rapport avec l'IA SDK, la passerelle (gateway).
00:05:11Et nos flux de travail (workflows) sont presque là. Donc tout ce qui concerne les workflows, et essentiellement,
00:05:19la CLI de Vercel a été beaucoup mise à jour. Et toutes ces choses concernant l'agent SDK, ou pardon,
00:05:26autour du déploiement d'agents sur Vercel. Ce sont toutes des choses qui ont été publiées ces derniers jours, dernières semaines,
00:05:33derniers mois. Et n'importe lequel de ces harnais d'agents comme Claude Code, ils ont ces limites de
00:05:39connaissances datant probablement d'il y a six mois à un an. Donc cela dépend du modèle, cela dépend
00:05:46de tout un tas de variables. Mais ce sont toutes des choses que tous ces agents ne connaissent pas
00:05:52parmi toutes les dernières nouveautés incroyables que nous avons publiées. Donc l'objectif du plugin Vercel
00:05:57est d'empêcher l'agent d'écrire du code en quelque sorte obsolète, des pratiques dépassées, et de le
00:06:06mettre à niveau avec tout ce qu'il y a de plus récent sur la plateforme Vercel. C'est donc
00:06:11un gain énorme car les modèles sont intelligents, mais ils ne sont tout simplement pas au courant de tout cela.
00:06:19Et au lieu de leur demander de faire des recherches à chaque fois, ou d'avoir un énorme
00:06:25ensemble de compétences pour chaque petite chose, si nous pouvons trouver un moyen d'imposer
00:06:32essentiellement à un agent de charger les meilleures informations sur la plateforme Vercel, alors c'est une grande victoire pour
00:06:38nous. Donc si vous regardez ces crochets dans le cycle de vie d'un agent, et encore une fois, il y en a beaucoup, beaucoup
00:06:45d'autres que nous pourrons exploiter à l'avenir ou que vous pourrez exploiter. Mais les principaux
00:06:49pour l'instant sont le début de session (session start). Et nous l'utilisons de différentes manières. Prutilisation d'outil,
00:06:56soumission du prompt utilisateur, post-utilisation d'outil et fin de session. Donc le début et la fin de session sont, vous savez, le début
00:07:03et la fin d'une conversation avec un agent. Et vous pouvez considérer que votre fichier agents.md ou cloud.md
00:07:12est typiquement la chose que vous faites au début de la session. Alors que pouvons-nous faire au début de la session pour
00:07:19la plateforme Vercel ? Ce que nous pourrions faire, c'est charger un fichier de la plateforme Vercel, ce qui signifie que
00:07:27si nous regardons, je vais juste dire décris vercel.md. Donc ce fichier est quelque chose que nous pouvons inclure
00:07:40au début de la session aux côtés d'un cloud.md. Essentiellement, vous pourriez avoir un plugin qui, si tout ce que vous
00:07:48voulez faire est de partager un fichier cloud.md et de donner à quelqu'un un moyen facile de
00:07:52l'installer. Vous pourriez construire un plugin dont le seul but est d'injecter ceci, c'est un graphe de connaissances
00:07:59de Vercel. Et c'est quelque chose que nous peaufinons continuellement. Nous cherchons
00:08:04des moyens de le compresser et de le rendre aussi petit que possible tout en gardant de bonnes performances
00:08:08et un équilibre entre ce qui devrait y figurer ou non. Il est très difficile
00:08:15de faire des évaluations sur tous les différents modèles et harnais. Mais nous
00:08:21comprenons peu à peu ces choses. Donc ce qu'il y a dedans, ce sont essentiellement les relations dans l'écosystème
00:08:28Vercel autour de l'IA, quand utiliser quels produits, quand appeler quelles choses
00:08:35comme une compréhension structurée de l'ensemble de l'écosystème Vercel. Donc le concept de... j'aime
00:08:44comment il appelle ça une table des matières. C'est comme le début d'un livre quand on commence une conversation.
00:08:50Et la façon dont nous avons structuré cela et y avons pensé, c'est si vous réfléchissez à : comment puis-je parler
00:08:56à un agent de certaines choses, j'ai un certain vocabulaire, ils ont un certain vocabulaire.
00:09:02Et si vous pouvez lui donner un glossaire de termes, les lier à des documents, les lier à des
00:09:07compétences, les lier à des choses qu'il devrait charger. Une fois que vous avez ces éléments, vous pouvez
00:09:12penser à quelles sont les choses que je vais dire et quelles sont les choses que l'agent
00:09:19devrait charger et appeler, et essayer de développer cette carte mentale dès le départ afin que je puisse juste
00:09:24parler naturellement et ne pas avoir à m'inquiéter de parler de, ou même de mentionner
00:09:30l'ASDK du tout. Et même sans mentionner aucune des fonctionnalités. Et si je peux juste trouver un
00:09:38moyen de dire simplement "construis-moi cette application et déploie-la". Et qu'ensuite tout soit géré dans
00:09:45le plugin. Excusez-moi, tout est géré dans le plugin pour qu'une magnifique
00:09:52application soit déployée sur Vercel et qu'ils puissent itérer à partir de là. Un peu comme la façon dont v0 et
00:09:57certains autres projets fonctionnent pour nous. Si nous pouvons juste faire en sorte que vous ayez une merveilleuse
00:10:02expérience, sans avoir à penser à l'écosystème. Et c'est une énorme victoire. Est-ce que
00:10:09ça fait sens ? Jacob, Amy, des questions initiales là-dessus ou quelque chose dans le chat ?
00:10:16Jacob, je crois que tu as une question pour ta réunion. Désolé, vraiment désolé. J'avais une question
00:10:24pour toi, John. Oui. Puisque ce plugin fonctionne comme une table des matières, est-ce pour cela qu'il n'a pas besoin de,
00:10:30pourquoi le plugin n'a pas besoin d'être constamment mis à jour à chaque fois qu'une nouvelle documentation
00:10:38sort ? Parce que c'est fondamentalement une collection d'URLs que les agents peuvent ensuite suivre pour trouver
00:10:43les docs à jour ? Ou est-ce que le plugin a un système de mise à jour immédiate ? Comment
00:10:49est-ce que cette approche fonctionne ? Oui. Donc essentiellement, si vous pensez au graphe de connaissances au départ,
00:10:58une grande partie de ce qu'il peut faire est simplement de pointer vers les dernières docs. Donc si vous réfléchissez à,
00:11:07c'est une question qui revient souvent avec les compétences et comment nous gérons les compétences par bibliothèques.
00:11:14Et si vous avez quelqu'un sur la version cinq de tel SDK et quelqu'un d'autre sur la version
00:11:18six du SDK, et que vous essayez de les influencer avec des compétences de versions différentes qui sont
00:11:22en conflit, comment faites-vous cela ? Et beaucoup repose sur ce que quelqu'un
00:11:31a installé, vous pouvez vérifier leur fichier package.json, vous pouvez vérifier la version. Et sur
00:11:36cette base, trouver un moyen intelligent de regarder quelles URLs de docs il devrait consulter et quelles
00:11:44compétences devraient être chargées et tout ce genre de choses. Et donc c'est une autre partie de la sorte
00:11:51de phase de préchargement au début de la session qui consiste juste à inspecter le projet de la personne.
00:11:58Et encore une fois, tout cela est local. Il regarde juste le projet pour voir quelles bibliothèques
00:12:02vous utilisez. Quelles configurations vous utilisez pour savoir comment vous orienter dans la bonne direction.
00:12:07L'une des erreurs les plus courantes est, par exemple, d'essayer d'utiliser "generate object" sur la dernière
00:12:12version d'un SDK alors que vous savez que l'API a changé. Donc, oui, il n'y a pas vraiment de... les plugins
00:12:21gèrent juste cela, vous ne devriez pas avoir à vous inquiéter si vous utilisez ceci sur un projet
00:12:27existant ou si vous l'utilisez sur un tout nouveau projet de pointe, le plugin devrait
00:12:32être capable de gérer cela, vous ne devriez pas avoir à vous soucier des numéros de version, vous ne devriez
00:12:34pas avoir à vous soucier des noms de paquets, vous ne devriez vous soucier de rien parce que
00:12:41laissez Vercel faire cela pour vous. D'accord. Et nous travaillons continuellement sur de... nous avons
00:12:49beaucoup plus d'idées sur la façon de mieux faire cela. Et le plugin continuera à se mettre à jour et à faire
00:12:54avancer cela. D'autres questions ?
00:12:58Oui, alors quelle est la portée totale du plugin ? Est-ce qu'il gère seulement les
00:13:04services Vercel ? Tout ce que je peux trouver dans le tableau de bord ? Ou est-ce aussi les bibliothèques open source
00:13:11que nous supportons comme Next.js, l'AISDK, les workflows, et ainsi de suite ?
00:13:16Oui, donc la portée initiale, ce que nous avons décidé au départ, c'est de couvrir autant que possible,
00:13:25et d'avoir chaque bibliothèque, tout sur la plateforme, enfin tout là-dedans,
00:13:32voir ce qui est le plus utilisé. En interne, nous demandons à tout le monde d'activer leur télémétrie, et
00:13:36vous pouvez choisir de partager la télémétrie. Et nous découvrirons quelles compétences sont réellement
00:13:40utilisées et lesquelles ne le sont pas. De cette façon, nous pourrons supprimer certaines choses dont nous pourrions
00:13:48avoir moins besoin ou en ajouter d'autres basées sur ce qui semble le plus utilisé. Évidemment
00:13:53Next.js, l'AISDK, et vous savez, les choses les plus populaires téléchargées devraient avoir le plus d'informations.
00:13:59C'est donc un équilibre au départ, où nous sommes intentionnellement allés assez loin avec la
00:14:08version initiale, et nous allons la réduire à quelque chose de beaucoup plus épuré, je suppose, pour
00:14:15la suite. Donc
00:14:16oui, ça a beaucoup de sens. Merci. Oui. Très bien. Donc oui, si vous
00:14:24construisez un plugin, et l'une des raisons pour lesquelles j'en parle en termes assez généraux
00:14:29c'est parce que je suis très porté sur le développement piloté par les agents. Et plutôt que de vous montrer
00:14:36exactement comment tout fonctionne, je pense qu'il est bien plus important d'apprendre comment en
00:14:40parler, et de retenir une partie de la terminologie. Ainsi, vous pouvez simplement demander à votre assistant IA
00:14:45de faire des choses similaires. Si vous dites à Claude Code de construire un plugin pour Claude
00:14:52Code, et que vous lui donnez les docs, il peut le faire. Il est donc bien plus important
00:14:58de discuter des concepts et des idées autour de cela que de trop creuser dans le code.
00:15:05Cela étant dit, le début de session est un excellent endroit pour injecter une sorte de table des matières
00:15:11de la plateforme, comme toutes les choses qui sont obsolètes par rapport aux choses qui
00:15:19sont importantes pour moi et qui sont obsolètes d'après les modèles ou pour la plupart des modèles. Donc
00:15:24c'est ce qui remet tout au niveau de : voici à quoi ressemble Vercel aujourd'hui. Et ainsi,
00:15:31même si c'est la seule chose qui se passe dans le plugin, il sait qu'il devrait aller
00:15:37vérifier les choses à l'avenir. Mais ce que nous sommes aussi capables de faire, et juste comme
00:15:44note secondaire, une raison pour laquelle on fait ça : chaque session dans Claude Code a son propre identifiant unique, ce qui
00:15:52vous permet, au fur et à mesure de la session, de vous assurer qu'il a, par exemple, un budget de compétences,
00:16:01et qu'il a les compétences qui ont déjà été chargées et des choses de cette nature. Nous pouvons donc
00:16:07mettre... vous pouvez écrire des choses dans l'environnement de la session, ou dans un espace de stockage de session
00:16:15où tout au long de cette session, au fur et à mesure, nous nous assurons de ne pas
00:16:20charger des choses qui ont déjà été chargées, ou d'éviter de dupliquer des efforts, parce que nous pouvons garder
00:16:26une trace de ce qui s'est déjà produit. C'est donc un autre aspect formidable. Un grand avantage de
00:16:30la session est qu'elle vous donne une chance de saisir un ID de session afin qu'à travers n'importe
00:16:35quel crochet futur, tout ce qui est exécuté à l'intérieur de la session, vous ayez
00:16:40un ID auquel vous accrocher et stocker des informations sur la session pour votre propre plugin.
00:16:47Claude Code fait aussi cela si vous regardez dans leur répertoire .claude avec les projets où
00:16:50vous pouvez voir des sessions et des choses là-dedans. Vous prenez donc ce même concept pour vos propres plugins
00:16:56et vos propres outils. Très bien, ceci étant dit, qu'est-ce que la préutilisation d'outil et nous allons parler de
00:17:05la pré et post-utilisation en même temps, ce que cela vous donne, c'est une chance
00:17:11de voir les modifications de fichiers. Donc en préutilisation, vous pouvez obtenir le contenu du fichier qui est
00:17:20sur le point de changer. Et il s'agit donc de lire des fichiers, écrire des fichiers,
00:17:29enfin lire des fichiers, éditer des fichiers, créer des fichiers. Et la préutilisation couvre aussi beaucoup d'autres
00:17:34outils utilisés, comme l'exécution de commandes dans bash. Vous avez donc cette opportunité de : avant que
00:17:40cette chose n'arrive, y a-t-il quelque chose que je veuille faire ? Par exemple, si nous voyons quelqu'un
00:17:47essayer de lancer une commande CLI Vercel spécifique, et que nous remarquons qu'il existe un meilleur
00:17:55moyen de le faire maintenant dans la CLI Vercel, comme par exemple l'option API que la CLI possède désormais et
00:18:00qui permet des requêtes bien plus avancées. Et la CLI de Vercel a été mise à jour. Si vous ne l'avez pas
00:18:05mise à jour récemment, elle a plein de super nouvelles fonctionnalités. Nous pouvons suggérer ces choses et
00:18:11dire que vous essayez de faire ceci, ou même vérifier si votre CLI Vercel est obsolète. Ce
00:18:17serait bien de la mettre à jour. Vous avez donc beaucoup plus d'options ici. Cela vous donne une chance de,
00:18:21vérifier s'il va faire un appel d'outil, que ce soit un appel CLI. C'est
00:18:27super important pour la CLI sandbox, pour la CLI workflow, pour toutes ces toutes nouvelles
00:18:34CLIs dont les modèles ne savent encore rien, parce qu'elles viennent de sortir après les
00:18:39limites de connaissances, pour s'assurer qu'ils font les choses correctement. C'est là que pour
00:18:47les appels d'outils, comme les appels bash, c'est pour les éditions de fichiers, ça devient vraiment intéressant avec les
00:18:52éditions de fichiers. Quelque chose que nous explorons davantage, c'est la comparaison de fichiers (diffing) : ce fichier ressemblait à ça,
00:18:59l'agent essaie de le faire ressembler à ceci. Est-ce que c'est le bon changement, par rapport à nos bibliothèques,
00:19:06est-ce correct ? Ou y a-t-il quelque chose de suspect là-dedans ? Et cela nous amène à,
00:19:11je vais reprendre l'exemple de : vous avez le SDK v6 installé et il essaie d'utiliser "generate
00:19:18object" comme API, ce qui est fréquent. Et si vous voyez cela à ce moment-là, comme "je vois
00:19:25que tu essaies d'utiliser generate object", arrêtons-nous et rappelons-leur à quoi ressemble réellement l'AISDK
00:19:32pour qu'avant même d'arriver aux tests ou au déploiement ou quoi que ce soit, vous l'ayez intercepté
00:19:36au moment exact où l'agent essayait de modifier le fichier. Et c'est l'une de ces
00:19:46choses où, si vous essayez de compter sur une compétence... les compétences sont comme des indices textuels du type
00:19:54si vous avez déjà essayé d'écrire dans votre cloud.md ou dans une compétence, comme "ne jamais valider (commit) tels
00:20:03fichiers" ou "ne jamais pousser (push) sans être dans une branche" ou quelque chose comme ça. Vous avez probablement
00:20:13vécu cela : ça ne vous protège pas toujours de ces erreurs. La préutilisation d'outil
00:20:21vous donne la chance de littéralement... elle peut empêcher ces choses d'arriver de manière programmatique
00:20:28et technique. Et vous pouvez lui donner différentes instructions et différents
00:20:32exemples de manières de le faire. C'est donc la grande différence ici entre les compétences, entre
00:20:41vos fichiers cloud.md et agents.md : c'est que vous pouvez réellement contrôler ce qui change et
00:20:47si, ou ce qui se passe. Et si vous voulez que cela arrive ou ce qui change, si vous
00:20:51voulez que cela change, c'est le point où ça devient génial. À partir de là,
00:21:01vous obtenez des capacités similaires en post-utilisation d'outil. L'opportunité de vérifier exactement ce qui a changé
00:21:07après qu'un fichier bash, une commande bash a été lancée, quelles sont les choses qui sont différentes maintenant qu'un
00:21:13outil a été appelé ? Cela ne vous permet pas d'empêcher quelque chose de
00:21:19se produire, mais vous permet de voir le résultat de ce qui s'est passé. Et si,
00:21:25s'il a changé quelque chose ou fait quelque chose d'inattendu, c'est une autre chance d'obtenir
00:21:31un diff et de se dire : ça a l'air bizarre. Disons à l'agent que ça nous semble louche.
00:21:38Ce sont donc deux énormes crochets de cycle de vie à connaître lors de la construction. Et pour nous, c'est
00:21:43encore une fois beaucoup de cela... tout tourne autour de cette limite de connaissances. C'est la
00:21:49chose contre laquelle Vercel doit en quelque sorte lutter parce que nous livrons vite, nous livrons souvent et
00:21:55nous poussons toutes ces nouvelles technologies si rapidement. Et c'est juste ce truc incroyable
00:22:00que nous voulons faire découvrir aux gens. Et c'est là qu'un plugin peut s'avérer très utile.
00:22:09Des questions à ce sujet ?
00:22:11Oui. Donc s'il utilise des chemins de fichiers pour décider quelles compétences injecter, cela signifie-t-il
00:22:21qu'on a beaucoup à gagner en limitant la portée des fichiers de nos projets pour qu'ils soient
00:22:27un peu plus à usage unique afin qu'il puisse déterminer plus précisément de quelles compétences
00:22:34il a besoin d'ajouter. Par exemple, si j'ai un gros fichier qui utilise peut-être cinq ou six
00:22:39de nos bibliothèques, et qu'il ne peut maintenant ajouter que trois compétences, ou qu'il ne sait pas
00:22:47lesquelles en se basant sur le chemin du fichier. Pensez-vous que cela devrait être une considération
00:22:51lors de la création de logiciels avec ces outils ?
00:22:54Je dirais que vous ne devriez pas avoir à vous soucier du code que l'agent écrit et que
00:23:02c'est aux auteurs de plugins. C'est aux auteurs de structures de faire en sorte que
00:23:12ces choses fonctionnent bien. Comme les personnes qui effectuent réellement les évaluations pour voir
00:23:17si cela fait une différence ou non. Alors que je pense qu'il est très facile de repasser
00:23:27en mode ingénieur et de se dire : je vais résoudre ça parce que c'est ce qu'un humain ferait.
00:23:33Et c'est certainement ce qu'un agent voudrait. C'est l'une des plus grandes tentations des développeurs
00:23:39en ce moment : la résolution de problèmes, comme trouver des problèmes qui n'en sont pas. Parce que
00:23:50si vous essayez de réparer quelque chose et que vous ne savez pas comment le tester, comme
00:23:53si vous savez comment tester cela contre un agent, alors allez-y. Si vous n'avez aucune envie
00:24:00de faire cela, alors laissez simplement les personnes qui construisent les plugins et les structures
00:24:05s'en occuper car les tests et les évaluations coûtent cher. Cela coûte
00:24:12beaucoup d'argent de faire tourner tous ces modèles contre ces changements. Cela prend beaucoup de temps
00:24:17et c'est une grosse galère. Donc, j'espère que personne n'aura à s'en soucier.
00:24:23Et je pense que je consacrerais mes efforts à d'autres choses pour l'instant. Ouais.
00:24:33Je vois, je vois. Donc, aucun intérêt à changer ma façon de construire les choses si la prochaine version
00:24:40du modèle est construite d'une manière qui rendrait toutes ces altérations inutiles,
00:24:47essentiellement.
00:24:48Oui. Et je pense, je veux dire, l'objectif final pour toutes les structures et pour Vercel est que
00:24:56vous n'ayez vraiment pas à réfléchir ou à regarder le code tant que ça. Je ne dis pas que
00:25:01c'est le cas actuellement. Je dis que c'est l'objectif final. C'est ce vers quoi
00:25:07nous tendons : vous voulez livrer de superbes logiciels. Vous voulez être capable de
00:25:11réfléchir, vous voulez laisser libre cours à vos idées et obtenir des variations pour voir lesquelles résonnent
00:25:19vraiment avec vous, puis l'épurer pour en faire quelque chose qui soit beau pour vous,
00:25:25votre famille ou vos clients. Nous voulons juste une belle expérience où
00:25:33vous ne vous demandez pas si vos fichiers sont trop gros. Si vous écrivez
00:25:39les bons modèles de conception ou quelles bibliothèques vous choisissez. Et je suis tout à fait d'accord.
00:25:48La tentation de se dire : utilisons tous ces modèles parce que les agents sont
00:25:53meilleurs avec. Faisons toutes ces choses. C'est définitivement quelque chose que nous
00:25:58expérimentons avec le plugin et les tests. Mais encore une fois, si vous ne pouvez pas le tester,
00:26:07il est si tentant de dire : j'ai fait ce changement et ça marche évidemment mieux maintenant.
00:26:18Et c'est l'un de ces pièges où, maintenant que vous avez fait ce changement, vous
00:26:23ne regardez pas comment cela fonctionnait avant et quel impact cela a ailleurs. Et oui,
00:26:28peut-être que ça a bien marché pour cette session unique... l'ingénierie est différente maintenant. Désolé,
00:26:35je deviens philosophique, je suppose. Oui, je pense que nous comprenons. D'accord.
00:26:44Un autre hook est la soumission du prompt utilisateur. C'est un point très important car il vous permet
00:26:50de prendre le texte tapé par l'utilisateur. Et s'ils mentionnent une bibliothèque, s'ils mentionnent
00:26:55un concept, s'ils mentionnent le mot "planning", alors importons
00:27:00la compétence "cron". C'est très similaire au fonctionnement des compétences, genre si l'utilisateur ou
00:27:07si quelque chose est détecté dans la conversation et correspond à la description. Mais cela
00:27:12vous donne en fait la chance d'exécuter une regex sur un prompt utilisateur. Et si vous détectez certains mots-clés
00:27:20ou motifs, chargez ces compétences, suggérez des choses à l'agent,
00:27:26comme peut-être poser plus de questions de suivi. C'est la partie interactive où
00:27:33vous avez la possibilité de dire : l'utilisateur a dit ça, peut-être devrions-nous obtenir plus de clarifications
00:27:38ou devrions-nous simplement charger tout ça et avancer. Vous pouvez faire
00:27:44des choses vraiment amusantes avec la soumission du prompt utilisateur si vous voulez avoir
00:27:48votre propre glossaire personnalisé ou langage de commandes, et que vous voulez
00:27:56préfixer des choses avec des signes dollar. Si ça commence par un signe dollar, alors fais ceci. Ou
00:28:00si quelque chose contient... c'est un peu comme écrire des petits scripts bash ou quelque chose
00:28:07à l'intérieur du prompt utilisateur : si vous détectez cela, vous pouvez exécuter un outil immédiatement et
00:28:13cela peut exécuter n'importe quel script bash, script node ou autre
00:28:20à l'intérieur de ce hook qui est en dehors du contexte de la session. Vous pouvez donc faire
00:28:28toutes sortes de choses ultra rapides là-dedans. Si vous voulez détecter le mot "commit"
00:28:37pour éviter que l'agent ne prenne plusieurs étapes pour valider quelque chose. À la place,
00:28:47vous avez juste un script qui fait le commit. Juste après le prompt
00:28:53de commit, vous pouvez dire à l'agent : "J'ai exécuté ce commit, ne t'en fais pas".
00:28:59Et vous pouvez faire gagner quelques tours à l'agent. Il y a des petites astuces vraiment
00:29:03intéressantes à faire pour vraiment accélérer s'il y a beaucoup de choses
00:29:09répétitives, plutôt que de demander à l'agent de le faire à chaque fois. C'est
00:29:15un projet amusant si vous voulez construire votre propre hook de prompt et
00:29:19créer votre propre langage pour parler à l'agent. Mais pour nous,
00:29:25c'est plutôt : s'ils ont dit ça, ils parlaient de ce concept, qu'est-ce que ça signifie
00:29:30dans la terminologie Vercel, donc on fait correspondre des mots spécifiquement comme
00:29:37"scheduling" avec les crons et les workflows. Et des mots comme "parallèle" ou "performance" ou autre,
00:29:45vous pouvez diriger l'agent vers des choses spécifiques que vous connaissez sur Vercel. C'est très
00:29:53amusant de jouer avec le prompt utilisateur si vous avez un week-end pour explorer ça.
00:29:58Et encore une fois, je le répète, il est tout à fait possible de venir ici et de dire :
00:30:03"aide-moi à construire un plugin Claude Code avec un hook de prompt qui détectera les signes dollar"
00:30:09"et si c'est le cas, exécute un commit à l'intérieur du hook pour que je puisse..."
00:30:14avec ce prompt, j'aurais pu construire ça, donc ne vous inquiétez pas trop pour
00:30:19le code, vous pouvez juste commencer à jouer avec. Bon, maintenant que tout cela
00:30:26est bien ficelé, la fin de session est l'occasion de nettoyer les fichiers ou tout ce que vous avez écrit
00:30:32pendant la session. Donc si vous avez commencé à noter quelles compétences ont été exécutées, ou
00:30:39des informations sur les résultats des outils appelés, ou n'importe quel type de
00:30:48budget ou de suivi pendant la session, c'est le moment d'aller faire le ménage.
00:30:51Il y a des choses fascinantes à faire à la fin de la session. Parce que ça s'exécute
00:30:57essentiellement sur le Ctrl+C, donc à la sortie. Vous pouvez lancer d'autres agents
00:31:05pour dire : d'accord, regarde tous les fichiers qui ont changé dans la session. Correspondent-ils à...
00:31:09nous ne faisons pas ça. C'est juste qu'il y a des choses vraiment intéressantes
00:31:13que l'on peut faire en fin de session. Ma session est finie. Cette session représente-t-elle
00:31:20un progrès dans ce projet ? Est-ce du superflu ? Examine tous les fichiers modifiés.
00:31:26Est-ce une duplication de choses déjà présentes dans le projet ? Si c'est le cas, va
00:31:30nettoyer et alerte l'utilisateur par une notification système ou par
00:31:37d'autres moyens puisque votre session est terminée. C'est vraiment très intéressant
00:31:43ce qu'on peut faire là. Bon. Ceci étant dit, je vais
00:31:50juste écrire une petite démo rapide ici. Je vais lancer une version de Claude Code avec
00:31:56le plugin Vercel par rapport à une version sans le plugin Vercel. Je vais utiliser
00:32:04"Claude dangerously skip permissions", je vais laisser le débug activé, je montrerai ça dans un instant.
00:32:08Et ce modèle sera réglé sur Haiku. C'est le modèle le plus rapide et le moins intelligent
00:32:13pour Claude Code. Et je vais dire : écris juste un tutoriel sur l'IA SDK.
00:32:26Et on verra ce qui se passe. On va comparer ça côte à côte.
00:32:30On voit déjà qu'il commence à charger la compétence. Et celle-ci a le plugin chargé.
00:32:37Si je veux démarrer une session sans aucun plugin chargé, il y a un flag de sources de
00:32:46paramètres qui permet de désactiver les sources ou paramètres au niveau utilisateur ou
00:32:53au niveau projet, essentiellement pour ignorer tout réglage. Comme ça je peux charger sans
00:32:59les plugins. Le "no flicker", oups. Ce "no flicker" est nouveau d'hier, c'est pratique pour
00:33:05avoir un défilement fluide dans Claude Code. Donc je l'active aussi. Et puis je
00:33:12vais régler le modèle sur Opus, le plus intelligent. Et si je donne le même prompt pour
00:33:20un tutoriel sur le SDK. Voici la version standard ici. Et nous allons
00:33:28comparer les résultats. Oh, oups, je n'avais pas supprimé le précédent. Recommençons.
00:33:36Lançons ceci et exécutons cela. Je faisais tourner ça ce matin
00:33:50et je n'ai pas nettoyé avant de commencer. Donc laissez-moi relancer ça.
00:33:56Juste pour faire une comparaison. Ouais.
00:34:01Très bien. Alors
00:34:04la grande différence ici est qu'on a Haiku 4.5 contre Opus 4.6, n'est-ce pas ? Celui-ci est
00:34:15un million de fois moins cher et beaucoup, beaucoup plus rapide. Et il contient bien plus
00:34:22d'informations sur Vercel. Donc même si vous comparez le coût budgétaire des tokens
00:34:32supplémentaires que nous incluons, entre Haiku et Opus... pendant que ça tourne,
00:34:38j'aurais dû dire de créer un fichier markdown. Je suppose qu'il est en train d'écrire du code,
00:34:45mais ce sera assez intéressant. Voyons voir. C'est une chose à noter sur l'une
00:34:59des approches que nous adoptons pour beaucoup de nos compétences, comme je l'ai dit avant,
00:35:05à cause du numéro de version, car les compétences peuvent changer, nous fixons
00:35:13les versions. Laissez-moi reformuler. Différentes versions de nos bibliothèques nécessiteraient
00:35:21différentes compétences. Beaucoup de nos compétences disent : s'il vous plaît, regardez node modules,
00:35:28où nous regroupons beaucoup de docs pour qu'elles soient aussi liées à la version. En regardant ici,
00:35:34vous voyez qu'il lisait en fait les docs locales. Et il continue
00:35:40en préparant ce tutoriel. Bon. Donnons-lui ça. Celui-ci n'a pas fait
00:35:53de recherche du tout. Ce sera intéressant. La dernière fois j'avais fait plus de recherches. Et
00:36:01je peux déjà voir qu'il utilise un modèle obsolète, Sonnet 4 au lieu de
00:36:074.6. C'est dépassé. Il a mentionné "generate object", ce qui n'est pas ce qu'on veut. On
00:36:15utilise la V6. Et il y a déjà plein de choses qui sont juste obsolètes. Je ne dirais pas qu'elles
00:36:23sont fausses, mais elles sont très datées si vous voulez les meilleures performances
00:36:28et les meilleures pratiques du SDK. Bon. Est-ce que ça a capté quelque chose
00:36:37ici ? Oui, on dirait que la compétence SDK a vu qu'il avait écrit un tutoriel initialement
00:36:51ici. Et la compétence a capté qu'il n'était pas à jour pour la V6, sans que je dise
00:36:58quoi que ce soit. Et maintenant il se met à jour. Il est passé de "generate object" à "generate text".
00:37:03Et il met tout à jour pour s'assurer d'utiliser les dernières versions. Bien,
00:37:10je peux comparer les deux. Je vais juste ouvrir une nouvelle session. Allons-y et comparons
00:37:23la précision du tutoriel sans plugin face au tutoriel avec le plugin Vercel. Et ce sera
00:37:44intéressant car chaque fois que j'ai fait ça avant, Opus écrivait un fichier markdown,
00:37:48cette fois il a fait des extraits de code. Ce sera amusant de voir la différence.
00:37:54Quand vous faites ça, surtout si vous avez d'autres compétences qui tournent en même temps
00:38:03que ce plugin, y a-t-il un risque de conflit qui ferait que des trucs obsolètes
00:38:10soient préférés, ou est-ce que le plugin va avoir une sorte de priorité ?
00:38:16Le plugin va essentiellement, je dirais, injecter de force des compétences basées sur ses motifs. Donc
00:38:27il y a toujours ce risque, tout n'est qu'une question de contexte,
00:38:34tous ces fichiers ne sont que du texte envoyé dans une session. Je dirais donc
00:38:41de n'utiliser que ce que vous voulez pour le projet en cours car, très rarement,
00:38:49on installe une compétence au niveau utilisateur à moins de la vouloir pour chaque projet.
00:38:58Et même pour le plugin Vercel, nous cherchons les meilleurs moyens possibles pour
00:39:06ne charger que ce dont vous avez besoin pour le projet en cours. On a plein d'idées là-dessus.
00:39:11Mais l'une des idées les plus probablement controversées est la suivante : quand est-ce
00:39:23qu'un utilisateur dirait qu'il a installé un plugin Vercel ? Quelle supposition faire ?
00:39:30S'ils installent le plugin Vercel, mais qu'ils sont sur la plateforme d'un concurrent et qu'ils ouvrent un
00:39:35projet là-bas ? Devrions-nous leur parler de nos trucs ? C'est très
00:39:42controversé, n'est-ce pas ? Si une personne voit ça et qu'elle ne voulait pas,
00:39:47et qu'elle n'est pas intéressée par une migration vers Vercel, elle sera très mécontente.
00:39:53Une autre sera ravie. C'est donc fascinant. Si vous adhérez à la théorie selon laquelle
00:39:59tout le monde va interagir avec des agents... quelle est l'étiquette d'un plugin pour
00:40:05informer les agents des nouveautés géniales de votre plateforme sans
00:40:15marcher sur les pieds des autres plateformes ? Il y a beaucoup de choses. C'est très pertinent
00:40:24par rapport à ce que je fais en ce moment : nous allons passer en GA avec Workflow très bientôt.
00:40:31J'écris donc des guides de migration. Si quelqu'un veut migrer depuis un concurrent de Workflow,
00:40:37on pourrait directement utiliser une compétence pour dire : migrez de ceci vers Workflow. Voici
00:40:43comment faire. Si vous voulez faire ça, à quel moment dans un agent devrais-je en informer
00:40:49quelqu'un ? Ça, c'est vraiment très intéressant pour moi. C'est une priorité absolue
00:40:55puisque c'est ce sur quoi je travaille en ce moment même. Mais oui, les conflits
00:41:00de contexte vont être un problème à l'avenir. Je ne sais pas comment essayer
00:41:07de déduire ce que l'utilisateur veut en fonction du contexte du projet et de ce qu'il a demandé.
00:41:14Ce serait génial : on pourrait techniquement regarder les conversations passées pour voir ce qu'il
00:41:19a fait. On pourrait regarder l'historique des commits. On pourrait dire au CLI GitHub : va voir
00:41:27n'importe quoi dans le projet. On peut faire plein de choses pour rassembler du contexte,
00:41:35mais c'est aussi franchir certaines limites, comme appeler des outils qu'ils n'ont pas demandé d'appeler.
00:41:40Plein de trucs super intéressants... il est bien plus simple de tout faire
00:41:46dans Vercel et d'avoir juste un agent avec un ensemble spécifique
00:41:53de règles et un plugin qui livre tout magnifiquement là-bas sans
00:42:00avoir à se soucier de tous ces conflits. Bref. J'espère l'avoir mentionné, oui.
00:42:05À quel stade de ce processus les compétences se trouvent-elles normalement ? Par exemple,
00:42:14si j'avais une compétence pour migrer de "Create React App" vers "Next.js" dans mon dossier de compétences,
00:42:19est-elle plus susceptible d'être invoquée automatiquement chaque fois que
00:42:26je suis sur un projet Create React App ? Alors que si j'ai le plugin Vercel ici, je peux
00:42:32décider quand elle sera invoquée et, si j'ai construit cette migration comme un plugin,
00:42:39je peux faire en sorte qu'elle ne se produise que si l'utilisateur le demande explicitement. Est-ce le bon
00:42:47modèle mental ?
00:42:52Je pense que oui. Nous avons discuté du
00:42:59concept de compétences "one-shot" ou à usage unique qui sont plutôt : je veux
00:43:06faire une tâche comme une migration. C'est une tâche spécifique, ou
00:43:12une compétence liée à une tâche que vous ne voulez charger à aucun autre moment, sauf pour cette tâche.
00:43:17Vous voulez qu'elle soit limitée à la tâche. Pas au projet.
00:43:22Pas à l'utilisateur, mais à la tâche. Ce sont des discussions que nous avons.
00:43:27Et je n'ai pas de réponse parfaite car actuellement, si vous avez une compétence
00:43:33chargée, elle va influencer la structure et les modèles en fonction
00:43:41du modèle et des autres compétences. C'est difficile à dire sans savoir exactement ce qu'il y a d'autre
00:43:47dans le projet. Mais oui, les compétences limitées à une tâche
00:43:55sont aussi une priorité. Une autre question me vient à l'esprit : quelle part
00:44:04de cette architecture de plugin est spécifique à Claude Code ? Si je voulais un comportement
00:44:12similaire dans Cursor ou Codex ou les autres, ont-ils leur propre format de plugin ? Me faut-il
00:44:18un plugin pour chacun d'eux ? Comment ça marche ?
00:44:25Oui. Nous devrions avoir des annonces bientôt sur les spécifications des plugins
00:44:33et le fait que tout le monde s'accorde enfin sur des plugins qui fonctionneront universellement avec
00:44:39une compatibilité croisée. Presque tout le monde est d'accord là-dessus.
00:44:45on peut s'attendre à ce qu'il fonctionne avec les autres dans peu de temps.
00:44:54Mais oui, c'est génial. Il y a déjà beaucoup trop de dossiers de compétences. Je suis
00:45:00vraiment content qu'on commence enfin à standardiser tout ça. Oui. Une fois que l'idée,
00:45:07enfin, j'ai adoré quand je parlais avec Anthropic des plugins, la raison pour laquelle
00:45:13ils ont choisi le mot "plugin" plutôt qu'"extension", c'est que plugin implique
00:45:18quelque chose qu'on branche et qu'on débranche. Donc, si vous créez un plugin
00:45:24avec un ensemble de compétences, et que vous ne voulez l'utiliser que pour
00:45:33une seule tâche, cela devrait être tout à fait faisable. Si je suis sur mon projet,
00:45:40que je suis designer, je ne veux pas que toutes mes compétences de design
00:45:46interfèrent avec celles de développeur. On veut pouvoir brancher juste ces éléments.
00:45:52Et je suis tout à fait d'accord avec ces concepts : chaque personne aura ses propres
00:45:59tâches, rôles et projets. Et ils voudront des plugins plus que des compétences,
00:46:05parce qu'ils voudront probablement organiser leurs propres plugins, créer leur propre
00:46:10ensemble de compétences et de hooks entièrement personnalisés à leur façon de travailler.
00:46:16Est-ce que ça veut dire que je devrais envisager de déconnecter le plugin Vercel
00:46:21si je travaille sur un projet qui n'est pas sur Vercel ?
00:46:25Je dirais qu'à l'heure actuelle, oui, parce qu'il est très agressif dans sa façon
00:46:34d'anticiper. J'espère que je ne m'attirerai pas d'ennuis en disant ça. Mais
00:46:39l'intention réelle du plugin Vercel est la suivante : si vous voulez charger votre
00:46:46agent et lui dire "construis-moi ça", alors cette chose apparaît presque
00:46:53magiquement sur Vercel. C'est l'objectif initial. On voit comment ça fonctionne
00:46:59et, d'après les retours, on fait marche arrière un peu car on voit qu'on doit
00:47:04mieux détecter ce qu'il y a dans le projet pour désactiver certaines choses.
00:47:09Et ça arrive très, très, très bientôt. Donc, vous savez, gardez-le probablement
00:47:15installé et activé parce qu'on y travaille activement, on en parlait
00:47:18encore ce matin. Donc...
00:47:23Je vois. C'est donc un compromis où peut-être qu'à l'avenir, il comprendra
00:47:29un peu mieux quand s'invoquer. Mais pour l'instant, le moyen pour l'utilisateur
00:47:36de contrôler l'invocation du plugin est de le brancher ou non pour une session.
00:47:42Oui. Et pour l'instant, si vous tapez juste "/plugin", vous pouvez aller dans vos plugins
00:47:48installés, naviguer avec Tab jusqu'au plugin que vous voulez désactiver.
00:47:54On peut mettre à jour, désinstaller, tout ce qu'on veut. Donc on peut le désactiver ainsi.
00:48:03Et il y a d'autres astuces plus avancées, comme configurer des fonctions ZSH
00:48:10personnalisées qui chargent des paramètres spécifiques selon l'utilisateur... c'est étrange,
00:48:17ce concept de profil de la personne devant l'ordinateur. Genre,
00:48:23quels sont tous les plugins qu'elle veut selon ce qu'elle regarde ? Il n'y a pas
00:48:29de solution parfaite pour ça. J'espère qu'on en trouvera une, cependant.
00:48:34C'est comme quand une Waymo arrive et ajuste tous les sièges pour vous
00:48:39au moment où vous montez dedans.
00:48:40Oui, exactement. Et je pense qu'à un certain point, j'imagine qu'on verra
00:48:49des agents vous poser plus de questions sur vous-même. J'ai l'impression que
00:48:57le concept d'identité de profil et de rôle est une pièce manquante. À moins de
00:49:05vouloir supposer que tout le monde est désormais le chef de projet de tout.
00:49:12Je ne vois pas ça arriver de sitôt. Je pense juste que certaines personnes ont
00:49:19de meilleures idées sur certains sujets que d'autres.
00:49:20Alors, oui, passons cela en revue. Voyons ce qui est intéressant.
00:49:33C'est curieux de voir qu'Opus révise Opus et qu'il se trompe encore, non ?
00:49:37Il recommande toujours "generate object" et la v6. Vérifions avec la doc.
00:49:50Il essaie de vérifier et il dit que ce que j'ai écrit est incorrect.
00:49:56C'est encore valide mais daté. Notre Haiku a recommandé les modèles
00:50:05les plus récents, et pour moi, c'est super important. Je ne sais pas combien
00:50:08de fois vous avez essayé d'utiliser un agent pour écrire quelque chose avec l'IA,
00:50:14et il dit : "Utilisons GPT-4o"... non, c'est vraiment vieux maintenant,
00:50:20et c'est loin de la qualité dont on a besoin. C'est le genre de choses qu'on peut
00:50:25détecter et dire : "Vérifie les derniers modèles dans la passerelle IA".
00:50:31On pourrait dire de détecter les derniers modèles, demander à l'utilisateur
00:50:36ce qu'il veut et les décrire. Alors qu'actuellement, ces agents proposent
00:50:43toujours GPT-4. C'était intéressant de noter, au passage, que Claude Code
00:50:49recommande de plus en plus le SDK d'Anthropic récemment, alors qu'avant non.
00:50:55On se dit que quelqu'est en train de modifier les prompts système en coulisses
00:51:03pour recommander leur propre SDK. Je ne les blâme pas, c'est le business. Bien.
00:51:13Oui, "generate object" est toujours là. C'était bien. Après avoir vérifié la doc,
00:51:19le tutoriel est plus précis. Plusieurs choses que j'ai cru inventées existent.
00:51:25C'est Opus qui réalise que ce sont des choses réelles... c'est Haiku
00:51:32avec un plugin. Et Opus, qui écrit le tutoriel, essaie de le valider.
00:51:39J'ai dû lui dire de regarder précisément la doc pour trouver ce que Haiku
00:51:44avec le plugin a fait d'un coup. Et si vous connaissez la différence entre Opus
00:51:53et Haiku, c'est important. Voici un diff de tout ce qu'il a réussi pour les défis.
00:52:04Bref, j'espère que cela démontre de façon simple l'un des scénarios.
00:52:15Le SDK AI, c'est bien plus. Pour des choses comme le workflow et le sandbox
00:52:21avec les technologies Vercel plus récentes qui sont incroyables, mais pas encore
00:52:28dans les données d'entraînement des modèles. Ces distinctions s'accentuent
00:52:35car les modèles ne les connaissent même pas. C'est à ça que sert le plugin Vercel.
00:52:41Si vous avez des questions, contactez-moi sur X ou ailleurs. J'adore en parler,
00:52:48ravi de répondre aux inquiétudes. C'est un travail en cours, on va
00:52:52itérer sans cesse jusqu'à ce que ce soit une expérience magique.
00:52:59J'espère que vous en voyez les débuts aujourd'hui. Si vous avez
00:53:04des questions, j'y répondrai. Si vous avez des idées de plugins à explorer,
00:53:14j'en parlerai avec plaisir. Voilà, à moins que quelqu'un veuille
00:53:20que j'approfondisse autre chose. C'est ce que j'avais prévu pour aujourd'hui.
00:53:25J'apprécie vraiment que tu aies pris le temps. C'est beaucoup d'infos.
00:53:28C'est un grand changement. On avance si vite avec tous ces outils IA.
00:53:33Oui, ça ne va pas ralentir, malheureusement.
00:53:38Une question : si les gens veulent contribuer ou s'ils trouvent un bug
00:53:41et veulent le signaler, quel est le meilleur moyen de vous contacter ?
00:53:49Oh, oui, le dépôt pour ça. Vercel slash, Vercel slash plugin ou est-ce
00:53:51Vercel slash Vercel plugin ?
00:53:58Oui, c'est vercel/vercel-plugin.
00:54:03Parfait. Je vais mettre ça dans le chat aussi pour que les gens l'aient.
00:54:10Merci. Oui, les issues dessus sont parfaites. Ça va changer rapidement.
00:54:14Je sais que j'ai approuvé une grosse PR juste avant cet appel.
00:54:20Génial. Très bien, Jacob, d'autres questions de ton côté ?
00:54:24Non, non, je pense qu'on a tout couvert pendant le stream. Oui, merci
00:54:30pour cette démo si complète et géniale. Je me sens prêt à construire
00:54:37mes propres plugins Claude maintenant. Au lieu de juste crier sur l'agent
00:54:42quand il décide de faire un force push sur main, je sais maintenant
00:54:45quels hooks lui dire d'utiliser pour qu'il ne recommence pas. C'est super utile.
00:54:51Les pre-tools sont tes amis, c'est ta meilleure défense contre ce que tu ne veux pas.
00:54:56Super. Merci beaucoup, John. Je t'en prie. Merci à tous.
00:55:01Et merci à tous de nous avoir rejoints. Retrouvez les prochaines sessions sur
00:55:05[community.vercel.com/events](https://community.vercel.com/events). À la prochaine !