▲ Session communautaire : comment créer et publier des compétences

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00[SILENCE]
00:00:30[SILENCE]
00:01:00Bonjour à tous, comment ça va ?
00:01:25Bienvenue à une nouvelle session de la communauté Vercel.
00:01:29Nous sommes ravis de vous accueillir.
00:01:32Si c'est votre première participation à l'une de nos sessions,
00:01:35enchantée, je suis Pauline Navas de l'équipe communauté de Vercel.
00:01:40Vous m'avez peut-être déjà croisée sur les espaces communautaires.
00:01:44C'est toujours un plaisir pour
00:01:46moi de vous parler en direct et de créer du lien avec vous.
00:01:51C'est super de voir que vous êtes déjà nombreux à nous suivre.
00:01:56Si c'est la première fois que vous rejoignez une session et que
00:02:00vous ne voyez pas le chat alors que vous voulez poser des questions,
00:02:02ce que je vous recommande vivement de faire, d'ailleurs,
00:02:06n'hésitez pas à rejoindre notre plateforme sur community.versailles.com.
00:02:12Cliquez ensuite sur "Participer" pour cet événement.
00:02:15Et voilà, vous pourrez utiliser le chat et poser vos questions durant la session.
00:02:20Si vous nous regardez sur X ou une autre plateforme, n'hésitez pas non plus.
00:02:25Je suis vraiment impatiente pour la session d'aujourd'hui.
00:02:28Ça se voit peut-être, mais nous allons aborder un sujet qui
00:02:32révolutionne la façon dont les développeurs travaillent avec les agents IA.
00:02:36Il s'agit des "skills" (compétences) pour Claude Code.
00:02:39Si vous avez déjà rêvé que vos agents IA sachent simplement
00:02:44migrer vers Next.js correctement ou suivre les standards de votre équipe,
00:02:49c'est précisément ce que ces skills permettent de faire.
00:02:51Je suis donc très heureuse de vous présenter John,
00:02:56de l'équipe AI DX ici chez Vercel, qui va animer cet atelier avec vous.
00:03:02Salut John.
00:03:04Salut Pauline.
00:03:05Salut tout le monde.
00:03:05Merci d'être là.
00:03:07C'est un plaisir de te voir.
00:03:09Allez, c'est parti.
00:03:12C'est parti.
00:03:13Alors, parlons des "skills".
00:03:15On dirait qu'elles existent depuis toujours, mais ça fait peut-être deux semaines, qui sait ?
00:03:20Je vais parcourir cette présentation sur les skills.
00:03:24Je vais en montrer quelques-unes ; n'hésitez pas à poser des questions ou à m'interrompre,
00:03:28car j'adore discuter de ce sujet.
00:03:31Pour les skills, nous allons d'abord voir comment les créer et
00:03:35les publier.
00:03:36Cette présentation a été créée par une skill appelée "ReMotion Geist skill".
00:03:42Elle utilise notre charte graphique Vercel, la combine avec ReMotion
00:03:46pour générer ceci, et je vous montrerai ça vers la fin.
00:03:48Mais pour l'instant, je vais juste faire défiler quelques vidéos.
00:03:51Pendant longtemps, on a parlé de "prompt engineering"
00:03:55quand les modèles n'étaient pas encore tout à fait au point.
00:03:58Tout le monde devait peaufiner ses prompts à la perfection et
00:04:00on pensait que le prompt engineering deviendrait une carrière à part entière.
00:04:03Aujourd'hui, on passe au "context engineering" en permettant à ces skills,
00:04:08ces fichiers Markdown, d'être chargés à la demande plus tard.
00:04:13Il y a désormais une séparation entre votre prompt initial et
00:04:17ces éléments de contexte qui peuvent être chargés par la suite.
00:04:19C'est ce que nous appelons les "skills".
00:04:22Le concept des skills a commencé avec Anthropic.
00:04:25Ils devaient enseigner des tâches spécifiques à Claude Code car ils partent d'une
00:04:30page blanche ; chaque modèle redémarre à zéro, sans mémoire.
00:04:33C'est un peu comme un nouveau-né qui n'a aucune compétence.
00:04:37Tout ce qu'ils ont, c'est ce savoir inné injecté dans leur cerveau.
00:04:42Au départ, ils ne savent rien faire de spécifique.
00:04:44Alors Anthropic s'est demandé : comment résoudre ça ?
00:04:48Eh bien, la solution passe par le Markdown, car aujourd'hui, tout problème
00:04:51se règle avec du Markdown, et c'est ainsi que les skills sont nées.
00:04:55À partir de là, vous pouvez maintenant packager ces skills.
00:04:58Ces skills sont des fichiers Markdown que vous pouvez partager avec vos équipes et
00:05:04qui permettent d'encapsuler vos propres flux de travail internes.
00:05:07Vous pouvez les regrouper et les partager sur vos dépôts GitHub.
00:05:12Et nous avons lancé des outils personnalisés.
00:05:15Laissez-moi ouvrir un navigateur rapidement pour gérer les skills communautaires.
00:05:22Le site skills.sh est l'endroit idéal pour ça.
00:05:27Vous pouvez y rechercher des skills créées par la communauté.
00:05:29Vous y trouverez les skills les plus utilisées.
00:05:32Comme toujours, assurez-vous de faire confiance à la source de la skill,
00:05:36qu'elle vienne d'une source sûre ou de quelqu'un de votre équipe.
00:05:38Vérifiez qu'elle correspond bien à ce que vous essayez d'accomplir.
00:05:42Nous en reparlerons plus en détail plus tard.
00:05:45C'est un excellent point d'entrée pour explorer tout l'écosystème et
00:05:48la communauté des skills pour voir ce qui est disponible.
00:05:50Voici maintenant quelques détails sur la façon dont cet atelier est structuré,
00:05:56puis je passerai à la vidéo suivante.
00:06:00Revenons à cette idée de page blanche.
00:06:07Encore une fois, c'est comme un nouveau-né : une fois que votre agent démarre,
00:06:11sachant que l'agent est un modèle piloté par un moteur d'exécution.
00:06:14Je vais agrandir un peu ça.
00:06:16L'agent connaît les bases de React, TypeScript, CSS et SQL.
00:06:23Mais ce qu'il ignore, ce sont vos règles, vos schémas,
00:06:28votre système et votre structure.
00:06:30Vous pouvez donc injecter et combiner vos
00:06:35préférences personnelles avec ses connaissances pour combler ses lacunes.
00:06:40Vous lui apportez ce contexte, et les skills sont chargées pour
00:06:42qu'il puisse agir exactement comme vous le souhaitez.
00:06:45Ils connaissent un langage, ils maîtrisent TypeScript et React.
00:06:51Mais ils ne connaissent pas votre dialecte spécifique de ce langage.
00:06:53C'est une excellente façon de voir les choses.
00:06:54Bien, des questions jusqu'ici ?
00:07:01En ai-je manqué ?
00:07:03Pas de questions pour le moment.
00:07:06Mais il y a beaucoup d'enthousiasme dans le chat.
00:07:08Continue comme ça, John.
00:07:09On y va.
00:07:11J'aime voir cela comme un "moment NPM" pour les skills.
00:07:17NPM étant le gestionnaire de paquets que la plupart d'entre nous connaissons.
00:07:23Les gestionnaires de paquets proposent des ressources communautaires
00:07:27que vous pouvez utiliser pour faciliter le fonctionnement de vos produits.
00:07:30Si vous voyez skills.sh comme un gestionnaire de paquets pour les skills,
00:07:35vous pouvez installer ces capacités directement dans vos agents.
00:07:39Tout comme vous installeriez une bibliothèque,
00:07:41vous pouvez utiliser "npx skills add" pour ajouter du savoir à votre projet.
00:07:45Avant, le prompt engineering consistait à dire dans votre fichier claw.md,
00:07:52ou agents.md : "fais toujours ceci, fais toujours cela".
00:07:55"Utilise cette lib, vérifie Jira", et ainsi de suite.
00:07:59Désormais, nous avons ces skills que nous pouvons ajouter, qui capturent ces
00:08:04instructions et les intègrent à nos projets.
00:08:06Elles sont permanentes.
00:08:08On peut les partager au niveau de l'utilisateur ou du projet.
00:08:11Et elles peuvent être indépendantes de chaque projet individuel.
00:08:14Plus besoin de faire autant de copier-coller.
00:08:17On peut automatiser tout cela pour qu'au lancement d'un nouveau projet,
00:08:21vous puissiez ajouter toutes les skills dont vous avez besoin.
00:08:23Encore une fois, on s'éloigne de cette préoccupation constante
00:08:28de construire des prompts à rallonge.
00:08:30Très bien.
00:08:34Ce sont des capacités permanentes pour toute l'équipe.
00:08:38Et si vous n'avez jamais connu la galère de devoir
00:08:43gérer un fichier agents.md ou claw.md dans votre projet,
00:08:47avec des PR (Pull Requests) sur ces fichiers Markdown,
00:08:50sachez que cela résout aussi ce problème.
00:08:53C'est l'aspect "développeur seul contre toute l'équipe" dont je parlais.
00:08:58Cela aborde aussi un concept que l'on peut appeler
00:09:03"passif vs actif".
00:09:05Passif signifie que ces skills n'ont pas besoin d'être chargées
00:09:12avant d'être réellement nécessaires.
00:09:15Si on regarde les résultats dans agents.md,
00:09:22un fichier Markdown fait office de "system prompt",
00:09:25la chose qui est lue en premier.
00:09:26C'est systématique.
00:09:28L'agent est obligé de le lire.
00:09:31D'après les tests effectués sur tout cela,
00:09:35on voit que si on injecte trop de contexte là-dedans
00:09:38et qu'on sature la fenêtre de contexte,
00:09:41l'agent sera bien plus efficace pour suivre ces règles,
00:09:46comme "utilise toujours TypeScript et Tailwind", par exemple.
00:09:50Ces skills deviennent alors plus actives.
00:09:53Et les agents peuvent soit être invoqués manuellement,
00:09:57soit être chargés "paresseusement" par l'agent,
00:10:00apportant ce dont ils ont besoin juste à temps.
00:10:04Comme par exemple "déployer sur Vercel" ou "créer la base de données".
00:10:08C'est encore une fois l'opposition entre les règles et les outils.
00:10:13Voyez les skills comme des outils,
00:10:15et on a toujours besoin des deux.
00:10:18John, une question vient de tomber,
00:10:21je pense qu'elle tombe à pic pour cette partie.
00:10:24Comment choisir entre implémenter quelque chose en tant que MCP
00:10:28ou en tant que skill ?
00:10:30Je dirais que par défaut,
00:10:33il y a plusieurs niveaux. Si on considère,
00:10:37je veux juste afficher quelque chose à l'écran.
00:10:38Donc je vais mettre ça là-haut.
00:10:39Oui, bien sûr.
00:10:40Par défaut, réglez le problème avec du Markdown.
00:10:44Si le Markdown ne suffit pas, passez par un CLI (interface en ligne de commande).
00:10:47Si le CLI ne suffit pas, utilisez un MCP.
00:10:51Ce sont les différents niveaux d'abstraction.
00:10:53Le principe de simplicité veut que si vous trouvez un moyen
00:10:58de résoudre le problème avec du Markdown,
00:10:59cela s'applique d'ailleurs à n'importe quel outil basé sur l'IA.
00:11:01On peut voir que dans la manière
00:11:05dont Anthropic a conçu Claude Code,
00:11:08et les autres suivent le mouvement concernant les skills,
00:11:11les commandes et les sous-agents.
00:11:13Ce sont tous des fichiers Markdown avec du front-matter
00:11:15et de la configuration, et c'est généralement suffisant.
00:11:19Ces fichiers Markdown peuvent ensuite définir les outils
00:11:21dont ils ont besoin et les outils qu'ils sont autorisés à appeler,
00:11:24ainsi que les restrictions. Cela peut prendre du temps
00:11:29de passer par toutes ces étapes de configuration.
00:11:31Mais si vous vous retrouvez dans un scénario nécessitant un contrôle strict
00:11:37sur les charges utiles (payloads) et les types de données
00:11:40échangés entre l'agent et le MCP,
00:11:42alors là, les MCP sont une excellente solution.
00:11:43Ils sont là pour ça.
00:11:46Mais de manière générale, la tendance actuelle,
00:11:50le paradigme dominant, s'oriente vers les CLI
00:11:54et les fichiers Markdown, en n'utilisant les MCP que si c'est indispensable.
00:11:59Oui, c'est aussi ce que je vois passer
00:12:04dans toutes les discussions en ligne.
00:12:06On a une autre question qui arrive de X.
00:12:10"C'est incroyable. Dans un futur proche,
00:12:13pensez-vous que les skills permettront la découverte d'agent à agent ?
00:12:17Ce serait cool de voir un agent décider
00:12:20d'installer lui-même une skill." Excellente question.
00:12:22J'adore cette question, car l'interaction d'agent à agent
00:12:27est une fonctionnalité encore sous-exploitée, mais c'est un modèle d'avenir.
00:12:32Absolument, je peux tout à fait imaginer un fichier Markdown
00:12:39servant de descripteur pour charger un agent.
00:12:42Claude le permet déjà avec les sous-agents.
00:12:46Et justement aujourd'hui, c'est amusant d'évoquer
00:12:49les fonctionnalités de "Teams" qu'ils viennent de sortir.
00:12:54Ils peuvent désormais générer un groupe de sous-agents
00:12:59qui font ensuite leur rapport au chef d'équipe principal.
00:13:02Ils les appellent des « teams » désormais.
00:13:04Et ces équipes peuvent être essentiellement gérées
00:13:10par ce chef d'équipe unique, et vous pouvez aller vérifier
00:13:12ce que font les agents.
00:13:14Et ces agents ont des définitions de ce qu'ils,
00:13:18je me demande si je pourrais trouver rapidement le document pour ça.
00:13:23- Pendant que John cherche cela,
00:13:30si vous êtes sur le chat et que vous voulez poser une question,
00:13:34c'est le moment, n'hésitez pas à les envoyer toutes sur le chat
00:13:37et nous y répondrons tout au long de la session.
00:13:40- Où est-ce que je peux... je peux probablement poster ça
00:13:42dans le chat Twitter au moins.
00:13:47Alors, il y a,
00:13:51sur cette page, vous verrez comment un sous-agent est défini
00:13:58et vous pouvez voir qu'ils ont une section de métadonnées
00:14:01et dans cette section front matter,
00:14:03vous pouvez définir les compétences auxquelles ce sous-agent a accès.
00:14:08Donc si vous voulez créer un agent, dans ce cas,
00:14:13un sous-agent qui possède une liste de compétences,
00:14:17alors vous pourriez le faire par le nom de la compétence.
00:14:20Et nous n'avons pas encore,
00:14:22les prochaines diapositives concernent l'anatomie des compétences,
00:14:26mais les compétences ne sont essentiellement que des noms.
00:14:28Et vous pourriez donc avoir un sous-agent
00:14:29avec un ensemble spécifique de compétences,
00:14:31un ensemble de compétences très particulier,
00:14:34et vous pourriez charger ce sous-agent de s'attaquer à une tâche.
00:14:38Ce qui se passe avec la fonctionnalité Teams sortie aujourd'hui,
00:14:43c'est qu'ils peuvent,
00:14:45Claude Code peut essentiellement constituer sa propre équipe
00:14:48et créer ses propres agents
00:14:49pour accomplir la tâche du mieux qu'il peut.
00:14:53Mais vous pouvez définir des sous-agents personnalisés avec des compétences propres
00:14:56si vous voulez dire,
00:14:57« s'il te plaît, crée une équipe en utilisant ces sous-agents ».
00:15:00Bon, ce n'est pas tout à fait de la communication agent à agent.
00:15:05C'est une discussion encore plus vaste sur l'architecture
00:15:08de la communication inter-agents,
00:15:11ce qui était un peu hors de portée ici.
00:15:12Mais je vois vraiment ce modèle
00:15:14de définition des sous-agents
00:15:17être adopté pour la façon dont nous définissons les agents
00:15:21et la manière dont ils communiqueront entre eux.
00:15:23Comme la façon dont on expose un agent,
00:15:24j'imagine que ce serait un fichier markdown
00:15:26disant « voici de quoi je suis capable »,
00:15:28un peu comme le modèle « fais-moi entrer, coach » où l'on dit :
00:15:30« J'ai ces compétences, je sais tirer à trois points,
00:15:32je sais prendre des rebonds, fais-moi jouer ».
00:15:34Et ils pourraient se découvrir les uns les autres de cette façon.
00:15:39Et j'imagine que nous aurons un skills.sh pour,
00:15:43un peu comme un gestionnaire de paquets pour les compétences.
00:15:47Nous aurons un gestionnaire de paquets pour les agents
00:15:49et pour les fichiers markdown d'agents.
00:15:51C'est quelque chose qui va simplement arriver.
00:15:54Enfin, je suis sûr que c'est déjà arrivé
00:15:57et que quelqu'un a publié quelque chose,
00:15:58mais ce n'est pas encore devenu courant.
00:16:00- C'est très logique.
00:16:03Merci, merci.
00:16:04Si vous avez d'autres questions, les amis,
00:16:06mettez-les dans le chat.
00:16:08En attendant, tu veux continuer, John ?
00:16:10- Oui, absolument.
00:16:12Alors les compétences (skills), c'est juste un dossier, pas de serveurs ni d'hébergement.
00:16:15Et la compétence se trouve à l'intérieur d'un répertoire
00:16:20et vous lui donnez un nom, puis le nom de la compétence
00:16:24ou le fichier de compétence doit s'appeler skill.md.
00:16:28Cela permet aux agents, dans leurs processus de découverte,
00:16:31de pouvoir les trouver.
00:16:32C'est juste une convention établie pour que les outils
00:16:35fonctionnent mieux avec eux.
00:16:36Cela facilite grandement la création de gestionnaires de paquets,
00:16:39l'organisation et tout le reste.
00:16:41Et la compétence peut aussi avoir des éléments intégrés.
00:16:45Elle peut inclure des scripts, des fichiers de référence,
00:16:49et ainsi de suite, toutes ces fonctionnalités où la compétence
00:16:53peut faire appel à d'autres éléments référencés à l'intérieur.
00:16:56Donc la compétence, vous verrez, aura des métadonnées (front matter).
00:17:01Par défaut, elle a besoin d'un nom et d'une description.
00:17:04Et le nom serait... il correspond au nom du,
00:17:08si vous regardez la structure.
00:17:10Donc si nous en créions une appelée « my-skill »,
00:17:12vous la nommeriez « my-skill » ici.
00:17:17Et puis la description est cruciale
00:17:20car elle indique quand cette compétence
00:17:23sera utilisée par l'agent.
00:17:24L'agent va se dire,
00:17:26il va travailler sur la tâche que vous pourriez lui donner.
00:17:29Et s'il arrive un moment où il voit,
00:17:31« Oh, j'ai besoin de quelque chose qui va appliquer
00:17:33les standards de vente », alors il va charger cette compétence.
00:17:38Il va utiliser l'outil de chargement de compétences pour l'importer.
00:17:41Ces descriptions deviennent donc critiques.
00:17:42La façon dont vous les écrivez,
00:17:43si vous utilisez les compétences de manière paresseuse (lazy loading),
00:17:46sinon vous pouvez invoquer les compétences directement avec un slash
00:17:50et les traiter comme des commandes.
00:17:52Je pense avoir une diapo sur les commandes contre les compétences,
00:17:55mais au départ, c'étaient deux choses distinctes
00:18:00et maintenant elles ont fusionné en une seule.
00:18:03Avant, les compétences n'étaient chargées qu'à la demande,
00:18:04mais maintenant elles peuvent être invoquées par les utilisateurs avec un slash
00:18:08ou chargées automatiquement par l'agent.
00:18:12Et par là, je veux dire que si vous tapez slash ici,
00:18:17vous pouvez voir une liste des compétences disponibles,
00:18:19que vous pouvez invoquer manuellement si vous le souhaitez,
00:18:22ou vous pouvez attendre que l'agent les invoque quand il en a besoin.
00:18:27Alors à partir de là, plus concentré.
00:18:32- Je pense que tu vas y venir, John,
00:18:39mais personnellement, j'aimerais entendre un exemple concret.
00:18:43Quelle serait une petite compétence bien délimitée que tu recommanderais
00:18:47à tout le monde de construire en premier pour comprendre ce modèle ?
00:18:52- Oh, c'est... alors laissez-moi donner ce que je pense
00:18:55être l'un des meilleurs exemples en ce moment.
00:18:57Essentiellement chez Vercel, certains problèmes de compétences
00:19:03que nous rencontrons sont liés au fait que nous sortons des nouveautés
00:19:07à un rythme très soutenu.
00:19:12Les agents et les modèles ont des dates de coupure de connaissances
00:19:15qui remontent à quelques mois, voire un an ou plus.
00:19:19Et donc par défaut, si le...
00:19:24si vous donnez une tâche à l'agent, il pourrait utiliser Next.js 14,
00:19:30alors que c'est déjà dépassé de quelques versions.
00:19:33Il pourrait utiliser l'AISDK qui, vous le savez,
00:19:35a récemment déprécié des fonctions comme « generate object »,
00:19:39qui fait maintenant partie de « generate text »
00:19:41pour que l'API soit plus standardisée et facile à suivre.
00:19:45Et donc vous allez rencontrer ces problèmes où
00:19:50il utilisera une version plus ancienne
00:19:51pendant que vous essayez de faire quelque chose
00:19:53en lisant la documentation,
00:19:54et les choses sont désynchronisées et obsolètes.
00:19:56Et le projet finit par piétiner pendant un moment,
00:20:00à essayer de comprendre pourquoi vous avez fini
00:20:03par ne pas être aligné sur ce dont il a besoin.
00:20:05Donc pour vous aligner avec l'agent,
00:20:08vous pourriez créer une compétence qui dit simplement :
00:20:11« utilise cette version de React, utilise cette version d'AISDK,
00:20:16utilise cette version de workflow ».
00:20:18Et ensuite vous pouvez mettre des références
00:20:19indiquant où trouver les informations les concernant.
00:20:22Par exemple, une compétence que j'ai construite pour Vercel,
00:20:28laissez-moi retrouver ça.
00:20:33La compétence de workflow Vercel est celle-ci,
00:20:40que j'ai publiée il y a quelques jours.
00:20:43Et la façon dont nous procédons,
00:20:46c'est que nous disons essentiellement, parce que les numéros de version nous importent beaucoup,
00:20:49nous avons commencé à publier de la documentation avec nos paquets NPM
00:20:50et nous lui disons : « ton workflow est sorti »,
00:20:54ou « ta connaissance du workflow est dépassée ».
00:20:58On le sait parce que ce workflow est mis à jour
00:20:59presque quotidiennement en ce moment avant sa sortie officielle (GA).
00:21:02Mais ce que nous pouvons faire, c'est dire : « Écoute,
00:21:06on a intégré la doc ».
00:21:10Donc dès que tu as besoin de regarder le workflow,
00:21:11va voir dans la doc qu'on a fournie
00:21:13et vérifie la version la plus récente.
00:21:16Et cela a permis que, chaque fois que je lance un workflow,
00:21:18je n'ai pas à m'inquiéter qu'il trouve des informations obsolètes.
00:21:22Il va toujours trouver les informations intégrées
00:21:25avec le paquet NPM pour être en phase
00:21:27et aligné avec la version elle-même.
00:21:32C'est donc une compétence très simple : essentiellement,
00:21:34« va lire le manuel » avec quelques meilleures pratiques essentielles
00:21:38comme références rapides.
00:21:42Ce sont des compétences qui règlent les problèmes
00:21:44de dates de coupure de connaissances des agents
00:21:48et des soucis de numéros de version.
00:21:53Une compétence que vous pourriez écrire pour vous-même,
00:21:57je dirais que si vous utilisez la compétence,
00:22:01je vais faire une démonstration d'une compétence appelée « create skill ».
00:22:07Si vous cherchez sur skills.sh pour « create skill »,
00:22:11create skill, je ne sais pas si le...
00:22:14si vous en prenez un,
00:22:23prenez probablement celui de l'équipe Claude Code.
00:22:28Voyons Claude, je crois qu'on a publié le leur.
00:22:33Désolé, celle-ci n'était pas prévue à l'avance.
00:22:39- Oui, tu peux... pendant que tu cherches celle-là.
00:22:42Oh, super, vas-y.
00:22:46- J'aurais dû penser à Anthropic
00:22:47au lieu de Claude Code.
00:22:49Oui, donc si vous importez l'un de leurs modèles « create skill »,
00:22:50vous pouvez dire « create skill »
00:22:54et ensuite... oups, vous dites « create skill » et tapez,
00:22:58disons : « analyse mon style d'écriture
00:23:02dans le fichier readme.md et crée une compétence
00:23:09qui suivra toujours ce style d'écriture ».
00:23:12Et cela prendra tout ce qui est dans le readme
00:23:14pour créer une compétence qui est essentiellement
00:23:19votre style d'écriture personnalisé,
00:23:21pour qu'à partir de là, vous puissiez invoquer la compétence,
00:23:23par exemple « style d'écriture John » ou autre.
00:23:26Vous pourriez lui donner des tonnes de documentation,
00:23:28des URLs de vos articles de blog,
00:23:31vos propres posts ou le langage client,
00:23:33et lui fournir tout ça.
00:23:37Je pense que c'est toujours un bon point de départ :
00:23:38qu'est-ce que j'ai déjà
00:23:40que je veux pouvoir reproduire ?
00:23:42Qu'est-ce que j'utilise constamment
00:23:43Comme quelque chose que j'utilise tout le temps
00:23:46et que je vais continuer à utiliser davantage.
00:23:50C'est donc généralement les messages clients,
00:23:53les blogs, le contenu et les documents
00:23:56que vous avez produits par le passé
00:23:57et dont vous voulez produire davantage.
00:23:59C'est donc un excellent premier style à aborder.
00:24:04- C'est un très bon point.
00:24:05Je vais certainement essayer ça.
00:24:06Je voulais juste lire quelques commentaires
00:24:08dans le chat ici.
00:24:10Dave a dit que nous avons créé des compétences
00:24:14pour permettre à un fondateur de startup qui n'avait pas codé depuis 10 ans
00:24:17de pouvoir contribuer au code
00:24:19sans se heurter aux limites architecturales
00:24:23d'une nouvelle base de code.
00:24:24Je trouve que c'est une très bonne utilisation des compétences,
00:24:27aider les gens non techniques ou débutants en code
00:24:30à pouvoir participer à l'acte de coder
00:24:32sans compromettre les normes de qualité, ce qui est génial.
00:24:38Et je voulais aussi dire, Dave a dit plus tôt :
00:24:42Je rejoins ce que dit John,
00:24:45concernant les outils couramment utilisés de nos jours.
00:24:47Oui, les seuls outils MCP qu'il utilise sont les Chrome DevTools,
00:24:52un MCP pour interagir avec un outil de gestion de projet
00:24:56comme Linear ou JIRA, et pour travailler avec une base de données.
00:24:59C'est donc un écho à tout ce que tu as dit plus tôt.
00:25:02Avant de continuer, nous avons aussi eu une question dans le chat
00:25:07sur ton avis concernant le fait que les fichiers agents.md surperformeraient les "skills"
00:25:12dans notre article de blog sur les évaluations d'agents que nous avons publié.
00:25:17Je ne sais pas si tu vas aborder cela
00:25:19plus tard dans ta présentation.
00:25:21Je sais que nous avons fait plusieurs digressions ici,
00:25:25mais veux-tu en parler maintenant ?
00:25:27- Oui, bien sûr.
00:25:28Évaluer des modèles et des agents
00:25:34est une chose terriblement difficile à faire.
00:25:38Parce que souvent, quand on écrit des évaluations pour eux,
00:25:42on les teste sur un projet nouveau et vide
00:25:46qui ne contient aucun contexte.
00:25:49Et on lui donne ce scénario spécifique,
00:25:51comme « avec ce projet vide, essaie Next.js » ou autre.
00:25:56Et si vous écrivez cela comme une évaluation,
00:25:59mais sans prendre en compte le fait que,
00:26:03disons, Opus 4.6 est sorti aujourd'hui,
00:26:05ou quel que soit le modèle utilisé,
00:26:07ou le projet et tout ce contexte supplémentaire,
00:26:10ou le modèle, l'agent ou l'exécuteur.
00:26:13Cloud Code aura un prompt système différent,
00:26:16et Cursor aura un prompt système différent.
00:26:17Il y a tellement de variables,
00:26:21et les modèles eux-mêmes sont,
00:26:24de toute façon, non déterministes,
00:26:26que les tester est une chose très, très ardue.
00:26:31Ceci dit, agents.md par rapport aux compétences (skills),
00:26:37c'est forcer le contexte versus charger le contexte à la demande.
00:26:42Si l'on résume l'article de blog à :
00:26:47« Est-ce que forcer le contexte est mieux que le charger à la demande ? »
00:26:51La réponse sera oui,
00:26:53parce qu'il va le traiter comme
00:26:57l'instruction initiale, la chose la plus importante
00:27:00au début du cycle de vie de l'agent.
00:27:03Cela va simplement lui apprendre :
00:27:08« Voici ce sur quoi nous travaillons. »
00:27:10C'est la meilleure chose que nous puissions faire.
00:27:12En fait, j'ai quelque chose qui traite de ça
00:27:14que je comptais montrer à la fin,
00:27:16où l'on peut aussi amorcer ou précharger des compétences.
00:27:20C'est juste l'une de ces choses
00:27:25inhérentes au fonctionnement des modèles.
00:27:29Et j'espère que l'article de blog n'est pas interprété
00:27:33autrement ; cela ne signifie pas que les compétences sont mauvaises.
00:27:35Cela signifie juste que si vous avez absolument besoin d'instructions
00:27:39qui soient toujours suivies, alors utilisez le fichier agents.md,
00:27:42c'est ainsi que je le lirais.
00:27:44Cela fait une semaine que je n'ai pas relu cet article, cela dit.
00:27:48- Oui, c'est tout à fait logique.
00:27:50Super.
00:27:51Petit rappel pour tout le monde dans la communauté,
00:27:53si vous avez d'autres questions, posez-les.
00:27:56Sinon, John, continue.
00:27:57- D'accord.
00:28:01Donc, un fichier de compétence est juste du Markdown.
00:28:04Vous pouvez voir cet exemple d'instructions :
00:28:06« Lors de la révision du code React, serveur uniquement, optimise ceci »,
00:28:09en mettant simplement une liste de choses
00:28:12que vous voulez voir se produire.
00:28:14Et ensuite, vous pouvez inclure des scripts à référencer
00:28:19ou des éléments que vous voulez pouvoir appeler
00:28:21et avoir n'importe quel type de package, un ensemble de...
00:28:25un ensemble d'éléments que vous voulez qu'il voie.
00:28:30Très bien.
00:28:32Les compétences, c'est un peu comme ajouter un agent,
00:28:37ajouter un ingénieur senior.
00:28:38Bon, on continue.
00:28:42Voici les cas d'utilisation.
00:28:46Passons en plein écran.
00:28:49Alors, pour certains schémas,
00:28:52les bonnes pratiques React sont l'une des...
00:28:57l'une des compétences les plus téléchargées, ou probablement la plus,
00:29:00sur le gestionnaire de paquets de compétences.
00:29:02Et cela permet simplement de renforcer
00:29:08quelles sont les meilleures pratiques,
00:29:09même au-delà de ce sur quoi le modèle a été entraîné.
00:29:12Parce que le modèle est entraîné sur le code de tout le monde
00:29:14et vous voulez qu'il suive vos propres modèles spécifiques.
00:29:18Allons ici.
00:29:21L'automatisation du flux de travail.
00:29:26Si jamais vous voulez regrouper quelque chose
00:29:27sous forme de fichier zip ou autre,
00:29:30c'est presque comme un script en langage naturel.
00:29:34Je pense souvent aux applications de nos jours.
00:29:40Soit elles se réduisent à un script,
00:29:44soit elles évoluent vers un agent,
00:29:47parce que soit vous avez besoin de ce résultat déterministe
00:29:50où l'entrée correspondra toujours à la sortie,
00:29:53soit vous avez besoin d'un agent capable de comprendre
00:29:56ce qui se passe si les données ne correspondent pas tout à fait.
00:29:59Si vous voulez créer ce genre d'automatisation
00:30:02plutôt qu'un script, là où il peut intelligemment
00:30:07regrouper les choses... par exemple,
00:30:10si vous dites à votre agent de faire un « git commit » et qu'il répond :
00:30:15« Eh bien, j'ai remarqué que vous avez une vidéo dans ce projet. »
00:30:20« Je vais l'ignorer parce que les vidéos sont des fichiers volumineux »
00:30:25« et nous ne voulons pas les ajouter. »
00:30:26Il est généralement intelligent sur ces points.
00:30:29Alors qu'avec un script, si vous l'aviez écrit,
00:30:30vous devriez prendre en compte tous ces scénarios.
00:30:33Donc si vous voulez créer une automatisation pour cela,
00:30:36vous pouvez configurer cette chaîne d'événements et il peut le faire.
00:30:41Et puis il y a aussi les garde-fous, où vous pouvez lui dire :
00:30:44« S'il te plaît, consulte les instructions, les directives, »
00:30:49« les couleurs, etc. »
00:30:53Ceux-là sont souvent bons à charger dès le départ
00:30:56pour s'assurer que votre agent ne... enfin, il y a des sous-agents,
00:31:00il y a beaucoup de scénarios avancés pour les garde-fous aussi.
00:31:02C'est probablement un atelier pour un autre jour.
00:31:07D'accord, donc encore une fois : appliquer des standards,
00:31:12automatiser les pipelines et protéger vos systèmes.
00:31:17Très bien, faisons celui-là.
00:31:21Bon, sautons la démonstration en direct pour aujourd'hui.
00:31:30Parlons maintenant de la publication.
00:31:37Publier, c'est essentiellement pousser vers GitHub,
00:31:46et ensuite n'importe qui peut simplement référencer votre dépôt GitHub
00:31:51et ajouter votre compétence.
00:31:52Ils n'ont pas besoin de chercher le lien exact.
00:31:56Si vous regardez sur skills.sh pour ajouter des compétences,
00:32:00je ramène ceci, vous verrez que,
00:32:04si on en prend une au hasard ici dans l'utilisation du navigateur,
00:32:08cela vous donne un lien à copier-coller pour installer une compétence,
00:32:11mais vous pourriez juste ajouter...
00:32:13Je ne pense pas avoir "browser use" installé.
00:32:14Je vais prendre ceci et juste faire une démo,
00:32:18ouvrir un onglet et procéder ainsi.
00:32:23Donc si je ne spécifie pas manuellement la compétence
00:32:29mais que je donne juste un dépôt GitHub,
00:32:31il ira chercher les compétences,
00:32:34utilisera "install skill package".
00:32:36Il vous demandera quels éditeurs vous voulez utiliser.
00:32:39Je vais juste mettre Cloud Code pour l'instant.
00:32:42Il demandera si vous la voulez dans votre projet ou globalement,
00:32:45je dirai projet, et le lien symbolique permet à tous
00:32:49de référencer le même fichier, puis on continue.
00:32:53Et vous pouvez voir que même si je n'ai pas spécifié
00:32:55le fichier exact, il est allé trouver les compétences Claude.
00:33:00Le dépôt "browser use" contient ce fichier skill.md.
00:33:09Et si on le regarde, faisons ça.
00:33:13Oups, et skill.
00:33:18Vous pouvez voir ce qu'ils ont inclus ici
00:33:22comme compétence "browser use", ça commence
00:33:26par le Markdown en haut.
00:33:27C'est une compétence assez longue.
00:33:32Juste avec le nom, la description, elle a des outils autorisés,
00:33:35indiquant que c'est une compétence qui permet d'utiliser
00:33:39l'outil de navigation sans que l'utilisateur ait à approuver.
00:33:42Cela lui donne des permissions pour que tout ce qui
00:33:47concerne "browser use" soit autorisé.
00:33:49Si vous invoquez cette compétence,
00:33:50vous n'avez pas besoin d'approuver l'utilisation du navigateur.
00:33:53Ensuite, ça montre que si vous ne l'avez pas installé,
00:33:56ça lui apprendrait comment l'installer,
00:33:58ça lui apprend les bases et comment utiliser cet outil.
00:34:04D'accord, revenons à notre...
00:34:09Et oui, tout ce que vous avez à faire est de pousser un fichier Markdown
00:34:15sur un dépôt GitHub et ensuite "impact skills add" peut l'ajouter.
00:34:19Encore une fois, n'installez que des compétences de confiance
00:34:23car vous pouvez les traiter
00:34:26comme des paquets NPM ou des scripts ; vous ne voulez pas utiliser
00:34:31n'importe quelle compétence ou paquet NPM au hasard
00:34:35parce que vous ne savez pas ce que les gens publient.
00:34:38Assurez-vous de leur faire confiance.
00:34:40Bien, et vous pouvez utiliser des dépôts privés
00:34:45ainsi que des sous-modules Git.
00:34:48Et puis notre registre communautaire,
00:34:51je l'ai déjà montré quelques fois.
00:34:54Très bien, super.
00:34:55À partir de là, vous créez simplement un fichier Markdown,
00:35:00vous le publiez sur un dépôt GitHub
00:35:02et nous pouvons ensuite le découvrir et l'installer.
00:35:05Je veux vous montrer comment utiliser "awesome skills".
00:35:09Des questions à aborder avant que je ne me lance là-dedans ?
00:35:13— Oui, il y a une question qui a été posée plus tôt.
00:35:16De combien d'exemples d'un paquet ou d'une bibliothèque totalement inconnus
00:35:21un LLM a-t-il besoin, en supposant qu'ils ne figurent pas
00:35:26dans les données d'entraînement du LLM,
00:35:28pour utiliser ce paquet ou cette bibliothèque comme une compétence
00:35:31et obtenir de bons résultats ?
00:35:33— Combien pour obtenir de bons résultats ?
00:35:36Désolé, peux-tu relire la question une fois de plus ?
00:35:39— Oui, bien sûr.
00:35:40De combien d'exemples d'un paquet ou d'une bibliothèque
00:35:45totalement inconnus un LLM a-t-il besoin, en supposant qu'ils ne figurent pas
00:35:49dans ses données d'entraînement pour utiliser le paquet, voilà.
00:35:53— Donc, en gros, combien d'exemples devriez-vous intégrer
00:35:55dans la compétence ?
00:35:56— Oui, c'est ça.
00:35:57Essentiellement, une façon de voir les choses,
00:36:00plutôt que de penser en nombre d'exemples à inclure,
00:36:05c'est de l'envisager comme un livre
00:36:09avec une table des matières, des chapitres, etc.
00:36:12Si l'agent se retrouve dans un scénario précis
00:36:14et que vous lui donnez un manuel d'instructions,
00:36:17un peu comme le manuel de votre voiture par exemple,
00:36:21vous ne voulez tourner les pages que pour trouver
00:36:26le cas où le voyant moteur est allumé.
00:36:29Je n'ai pas besoin de lire les pages sur les pneus
00:36:32ou autre chose, n'est-ce pas ?
00:36:33Donc, si vous structurez votre compétence de manière
00:36:36à avoir une compétence principale,
00:36:38qui est : "voici le manuel de votre voiture".
00:36:40Et ensuite, si vous avez besoin d'en savoir plus sur le voyant moteur
00:36:44— je ne suis pas mécanicien — ou sur la boîte à gants,
00:36:49alors vous pouvez aller à cette page spécifique
00:36:51et l'agent peut charger un autre fichier markdown
00:36:53ou plus d'informations spécifiques à la tâche
00:36:57en cours.
00:36:58Ainsi, au lieu d'essayer de balancer des tas d'exemples
00:37:01sur le fonctionnement global d'une voiture,
00:37:06sur la machine entière, vous pouvez la décomposer.
00:37:11Et je ne parle pas de tout taper manuellement.
00:37:14Je dis que lorsque vous demandez à votre agent de créer une compétence,
00:37:18faites en sorte qu'il l'organise pour que la compétence liste les éléments
00:37:23en fonction du moment où il aura besoin de chapitres spécifiques
00:37:26de ce livre.
00:37:27De même, les compétences peuvent avoir des références
00:37:30et charger du contexte supplémentaire au besoin,
00:37:33selon la tâche à accomplir.
00:37:35Comme avec la plupart des bibliothèques,
00:37:39si vous prenez un paquet NPM, pour beaucoup d'entre eux,
00:37:43vous n'importez jamais que quelques méthodes
00:37:45car vous n'avez pas besoin de toutes les fonctions de date
00:37:48d'une bibliothèque de dates.
00:37:50Vous n'avez pas besoin de chaque composant
00:37:52d'une bibliothèque de composants.
00:37:53Vous avez seulement besoin d'exemples de ceux qui sont
00:37:57nécessaires pour votre tâche spécifique.
00:37:59Essayez donc de voir les choses sous cet angle : décomposez
00:38:03par besoin, par tâche, par exigence,
00:38:07plutôt que d'essayer de gaver le projet
00:38:11avec une base de code entière.
00:38:12— C'est très logique.
00:38:14Une autre question : comment tester
00:38:17si l'agent a vraiment appris un nouveau paquet
00:38:21via la compétence ?
00:38:22Y a-t-il des prompts simples ou des modèles d'évaluation
00:38:25que vous recommandez pour valider cela avant un déploiement en équipe ?
00:38:29— Le consensus général, et ce que je soutiens,
00:38:37c'est simplement de créer quelque chose, de l'utiliser,
00:38:40de voir où ça échoue et d'itérer.
00:38:43C'est beaucoup l'état d'esprit du développement par agents :
00:38:49au lieu de trop réfléchir à l'organisation,
00:38:54à la planification et à ce qu'est la compétence parfaite,
00:38:57faites quelque chose, voyez là où ça pêche,
00:39:00puis améliorez-le.
00:39:01En ce qui concerne... j'ai exploré des moyens de lancer
00:39:08neuf sessions différentes, voire bien plus,
00:39:13de Claude Code, toutes chargeant des compétences différentes
00:39:15pour voir lesquelles sont les plus performantes.
00:39:17Et là, vous obtenez tous ces exemples différents
00:39:19et vous essayez de déterminer lesquels
00:39:24semblent les meilleurs à l'œil nu,
00:39:26ou vous demandez à Claude d'évaluer ses propres résultats.
00:39:29Ça devient vite une tâche quasi impossible pour l'instant.
00:39:34Donc, concrètement, quand vous utilisez la compétence,
00:39:37ce n'est qu'un fichier markdown.
00:39:39Demandez simplement à votre équipe d'aller le mettre à jour,
00:39:40ou demandez à l'agent de le faire.
00:39:43À la fin de n'importe quelle conversation,
00:39:46si quelque chose a échoué, vous pouvez simplement dire :
00:39:49"Veuillez mettre à jour la compétence en fonction de cette conversation",
00:39:54ou quelque chose de ce genre.
00:39:56L'agent pourra aller trouver le fichier markdown,
00:40:00le modifier et pousser les changements.
00:40:02C'est tout simplement comme ça que nous travaillons
00:40:08avec en ce moment.
00:40:09Évidemment, il y a des histoires de numéros de version
00:40:13et d'autres choses qui compliquent l'affaire.
00:40:16Mais nous en sommes au point où les modèles
00:40:19deviennent meilleurs pour charger des compétences.
00:40:21Je ne connais pas les benchmarks exacts
00:40:24pour Opus 4.6 contre 4.5 ou GPT 5.3 contre 5.2 sur ce point,
00:40:29mais je parie qu'ils sont meilleurs maintenant
00:40:33qu'ils ne l'étaient ce matin même.
00:40:35C'est typiquement le genre de problèmes
00:40:40où l'on se dit : "Oh, je dois rendre ce truc parfait".
00:40:42Puis on y passe quelques semaines avant de le sortir.
00:40:44Et au moment où c'est prêt,
00:40:46les modèles ont déjà changé cinq fois
00:40:48depuis que vous avez commencé.
00:40:49Mieux vaut livrer et itérer
00:40:52que d'essayer de sortir un truc parfait d'emblée,
00:40:56c'est le meilleur conseil que je puisse donner.
00:40:58— Oui, l'excellence par l'itération.
00:41:00On est d'accord, John ?
00:41:01— ITG : Iterate To Greatness.
00:41:02— Voilà, ITG.
00:41:04Juste une dernière question avant de te laisser continuer.
00:41:08As-tu observé un point de rendement décroissant,
00:41:10où ajouter plus d'exemples à une compétence
00:41:13cesse d'améliorer le comportement ou finit par perdre le modèle ?
00:41:17— Non, je n'ai pas vu ça.
00:41:23Je ne mets pas énormément de choses dans mes fichiers de compétences.
00:41:27La compétence de création de compétence que j'utilise sépare beaucoup.
00:41:33Il faut que je retrouve laquelle c'est exactement
00:41:35car j'utilise celle de quelqu'un d'autre.
00:41:37Laisse-moi chercher ça hors écran.
00:41:40C'est peut-être quelque chose qui...
00:41:42car ça touche à des fichiers de configuration qui...
00:41:45— Oui, coupe ton partage d'écran
00:41:47et on le remettra quand tu seras prêt.
00:41:49— Alors, voyons.
00:41:52— Je voulais juste dire que nous avons environ 200 personnes
00:41:57sur le stream, ce qui est génial.
00:41:58Bonjour à tous.
00:41:59Si vous venez d'arriver,
00:42:01n'hésitez pas à poser une question dans le chat
00:42:03et nous la transmettrons à John.
00:42:07— Avec plaisir pour y répondre.
00:42:12— Oui, il faut que je retrouve celle que j'utilise.
00:42:16Ok, ça a l'air bon.
00:42:19Celle que j'utilise, je dois trouver d'où elle vient.
00:42:27Je ne sais pas si une fois installée,
00:42:29l'URL d'origine est conservée,
00:42:32ou si via NPX ou "skills",
00:42:36on peut avoir cette info,
00:42:37mais je ne veux pas lancer de commandes au hasard en direct.
00:42:43Celle-ci dit en fait à l'agent
00:42:44d'utiliser un système de chargement à trois niveaux
00:42:47avec des métadonnées et des ressources groupées,
00:42:49où on lui demande explicitement de tout décomposer
00:42:54en ressources et instructions supplémentaires.
00:42:57Donc j'utilise des agents pour générer des compétences
00:43:02et à partir de là... j'ai toujours fait comme ça,
00:43:07soit avant en copiant-collant la doc
00:43:11de Claude Code dans l'agent en disant :
00:43:13"Crée une compétence basée sur cette doc".
00:43:15Et maintenant, j'utilise cette compétence dédiée pour ça.
00:43:17Je n'ai jamais essayé de forcer trop d'exemples.
00:43:23Je sais qu'il y a des règles générales pour garder,
00:43:28disons, votre fichier de compétence sous les 200 lignes environ,
00:43:31mais encore une fois, ça dépend du modèle
00:43:35et les modèles s'améliorent.
00:43:36Oui, celle-ci recommande moins de 200 lignes.
00:43:39Donc n'en faites pas trop, restez minimaliste.
00:43:44Et si vous trouvez des lacunes, comblez-les,
00:43:47surtout si vous êtes expert dans le domaine,
00:43:50vous saurez identifier ce qui manque.
00:43:52Si vous n'êtes pas expert
00:43:56et que vous utilisez une compétence qui ne vous est pas familière,
00:43:58gardez un œil plus attentif dessus au lieu de la laisser tourner.
00:44:01N'espérez pas mettre en place
00:44:03un énorme système d'orchestration d'agents,
00:44:06installer des compétences dont vous ne savez rien
00:44:08et que tout fonctionne exactement comme prévu.
00:44:11Il faudra surveiller tout ça.
00:44:13— Oui, c'est globalement un très bon conseil, à 100 %.
00:44:17Génial.
00:44:20— Très bien.
00:44:22Par exemple, les vidéos que j'ai faites ici pour ce projet
00:44:28ont toutes été créées avec une compétence "create remotion guide",
00:44:34qui est disponible sur skills.sh.
00:44:37Si vous la cherchez.
00:44:39Et Geist.
00:44:43Geist étant un système de design de Brazil,
00:44:48et Remotion étant... laissez-moi chercher hors écran.
00:44:53C'est un moyen de créer des vidéos par programmation.
00:45:01Et j'ai combiné une compétence de Remotion
00:45:05pour créer essentiellement la compétence Geist.
00:45:09Je suis allé dans l'un de nos dépôts Brazil.
00:45:12Je crois que c'était à partir de tout ce qu'il y a sur la page d'accueil et la doc.
00:45:15Et j'ai dit : "S'il te plaît, extrais toutes les informations,
00:45:19les infos de design, compétences, thèmes, polices,
00:45:23mises en page, conseils, absolument tout,
00:45:25et crée une compétence à partir de ça".
00:45:27Et juste en faisant ça, en disant :
00:45:30"Prends cette compétence Remotion
00:45:32et toutes ces informations de design
00:45:37de ces sites, crée une nouvelle compétence
00:45:41et appelle-la 'create remotion Geist'".
00:45:43Rien qu'avec ce travail, j'ai pu créer
00:45:48de créer ce genre de vidéos, qui sont très,
00:45:57vous savez, axées sur le design de Vercel.
00:46:01Je devrais probablement zoomer un peu sur les vidéos.
00:46:04En regardant ces résultats finaux,
00:46:07je devrais zoomer un peu plus,
00:46:09mais concrètement, tout a été généré
00:46:12pendant que j'allais me chercher un sandwich, d'accord ?
00:46:14Pour toutes ces vidéos, j'avais ce plan
00:46:16de la manière dont je voulais que l'atelier se déroule.
00:46:18J'ai dit : "Hé, fais toutes ces vidéos d'après mon plan
00:46:20et les recherches que j'ai faites."
00:46:22Et toutes ces vidéos sont sorties à la fin.
00:46:24Donc encore une fois, les "skills" consistent juste à,
00:46:29cela aurait été de créer un skill à l'intérieur
00:46:33des dépôts de Vercel
00:46:36et de dire : "Récupère tout ça,
00:46:38combine-le avec le skill de création Remotion."
00:46:41Et voilà, je l'avais.
00:46:42Ensuite, je l'ai partagé avec l'équipe
00:46:43et maintenant, n'importe qui peut l'utiliser.
00:46:45Encore une fois, c'était comme si,
00:46:47la quantité d'efforts et de travail que j'y ai mis
00:46:50n'était probablement que de quelques minutes.
00:46:54Bien sûr, l'agent a pris,
00:46:55il a fallu un certain temps pour tout trouver,
00:46:57pour trouver tout le design et le reste.
00:46:59Le temps de travail total était d'environ deux heures,
00:47:03mais l'effort réel que j'ai fourni
00:47:06était extrêmement minimaliste,
00:47:08ça tournait simplement en arrière-plan
00:47:09pendant que je faisais autre chose.
00:47:11Alors, prenez n'importe quel travail existant
00:47:15et voyez ce que vous pourriez regrouper
00:47:17et construire de cette façon.
00:47:19De même, si je regarde un skill de design Geist,
00:47:24si je veux faire un site plus joli,
00:47:27je peux prendre notre design Geist et dire,
00:47:31dans un dossier d'atelier,
00:47:35"S'il te plaît, construis une page de destination pour cet atelier."
00:47:39Et cela va simplement créer un dossier d'atelier,
00:47:46puis injecter toutes ces informations de design
00:47:50et le construire en utilisant ces informations.
00:47:55Et cela peut fonctionner ou non, selon
00:47:58l'humeur d'Opus 4.6 aujourd'hui.
00:48:01Je n'ai pas vraiment eu la chance de tester
00:48:04puisqu'il a été lancé quelques minutes avant qu'on commence.
00:48:06Mais il aura toutes ces informations
00:48:11et il pourra commencer à travailler dessus.
00:48:14Et de la même manière, je pourrais lancer
00:48:17un fil de discussion totalement différent pour un autre site,
00:48:20si je voulais en faire un autre dans un,
00:48:25appelons-le dossier "voiture",
00:48:29une page de destination pour de belles voitures.
00:48:34Je ne sais pas, je ne suis pas un fan de voitures.
00:48:36Et à partir de là, on peut commencer à faire
00:48:40toutes ces choses.
00:48:41L'un des meilleurs prompts que vous puissiez faire est de dire,
00:48:46si vous essayez de trouver des idées et des designs,
00:48:49surtout avec la nouvelle fonctionnalité d'Équipes,
00:48:54on pourrait utiliser ce design Geist et dire,
00:48:57dans un dossier d'atelier,
00:48:59faisons un dossier "variations d'atelier".
00:49:09S'il te plaît, construis une page de destination.
00:49:12Disons : "S'il te plaît, construis neuf variations de pages"
00:49:17"de destination pour cet atelier."
00:49:22Et maintenant qu'ils ont une fonction Équipes,
00:49:23on pourrait dire : "Utilise un membre de l'équipe."
00:49:28"Crée une équipe pour concevoir ces neuf variations"
00:49:34ou quelque chose comme ça.
00:49:38Juste en anglais courant.
00:49:40Et maintenant, cela peut même générer une équipe.
00:49:41Et voilà tout ce travail qui se met en route.
00:49:44Et maintenant, je peux aller chercher mon sandwich, non ?
00:49:47Parce que j'ai faim, c'est l'heure du déjeuner.
00:49:49Et quand je reviendrai,
00:49:52ça utilise Tailwind 4,
00:49:54je vois que ça fonctionne plutôt bien.
00:49:55Et une fois de retour,
00:49:56je pourrai voir toutes ces variations
00:49:58et itérer dessus jusqu'à ce que j'en trouve une qui me plaise.
00:50:03Et comme celle-ci sera bientôt terminée,
00:50:09je pourrai montrer quelques outils de débogage.
00:50:11- Quelqu'un vient de dire dans le, désolé John,
00:50:12quelqu'un vient de dire dans le chat :
00:50:14"L'un des meilleurs prompts que je fais est d'ajouter s'il vous plaît à la fin."
00:50:17- Oh oui. - C'est vrai.
00:50:18- S'il vous plaît.
00:50:21Il y a beaucoup d'études sur les différents modèles
00:50:23et comment ils réagissent aux encouragements.
00:50:27L'un de mes personas préférés pour donner des prompts
00:50:33ou pour ces agents était du genre :
00:50:36"S'il te plaît, comporte-toi comme un contributeur Stack Overflow"
00:50:41qui serait extrêmement critique envers tout ce que je demande,
00:50:45en disant que la réponse existe déjà ou autre,
00:50:48mais ses réponses seraient extrêmement concises
00:50:51et précisément limitées à ma question.
00:50:56Ouais, je ne sais pas, on ne parle plus trop des personas,
00:51:02plus autant qu'avant, car les modèles n'étaient pas,
00:51:04les modèles sont tellement meilleurs maintenant.
00:51:06On n'a plus vraiment besoin de les forcer
00:51:10à accomplir des tâches comme avant.
00:51:11- Quelqu'un a aussi dit dans le chat,
00:51:15certains modèles réussissent mieux si on leur dit
00:51:18qu'ils vont se faire licencier.
00:51:20- Oh oui. - S'ils ne le font pas correctement.
00:51:22Je ne sais pas si c'est vrai, mais c'est hilarant.
00:51:25- C'est absolument vrai.
00:51:27Certains modèles se rebiffent maintenant.
00:51:32Je pense que beaucoup de modèles GPT disaient :
00:51:34"Ne me parle pas sur ce ton."
00:51:35- Incroyable, wow.
00:51:38- Ils jouent les chefs et tout.
00:51:39Je vais juste lui dire de lancer le serveur en arrière-plan.
00:51:46(bruit de clavier)
00:51:49Je pourrais créer un skill.
00:51:50Il arrive un moment où, après avoir écrit
00:51:52un paragraphe entier, on se demande :
00:51:54"Est-ce que c'est quelque chose que je vais taper souvent ?"
00:51:56Et si c'est le cas, si vous venez de l'écrire,
00:51:59vous pouvez simplement dire :
00:52:01"Crée un skill à partir du dernier paragraphe."
00:52:03Voici donc notre site de voitures.
00:52:07Voyons le résultat.
00:52:09Oups, "Des voitures qui font vibrer votre âme".
00:52:14Très noir et blanc, style Vercel.
00:52:16Je ne sais pas d'où il sort les images.
00:52:18J'imagine qu'il trouve que ce sont des voitures cool.
00:52:22Et voilà.
00:52:27Je sais qu'on a probablement vu des pages de destination
00:52:29un million de fois, mais c'est assez standard.
00:52:34Il suit les directives de design
00:52:36de ce à quoi ressemble Geist.
00:52:42Et à partir de là, nous pouvons en fait,
00:52:44uno de los paquetes increíbles que lanzamos recientemente
00:52:47chez Vercel, ça s'appelle Agent Browser.
00:52:54Et il y a un skill appelé Agent Browser,
00:52:56qui devrait être disponible sur Vercel Labs.
00:53:01Cela ouvre les outils de développement Chrome
00:53:06et établit une connexion
00:53:08pour que vous puissiez dire des choses comme : "Évalue..."
00:53:11Je vais juste taper.
00:53:13"Évalue la performance de cette page web"
00:53:15"pour voir si on peut faire quelque chose"
00:53:17"pour l'optimiser pour nos utilisateurs."
00:53:18Et là, Agent Browser,
00:53:23utilise ces outils d'automatisation et de dev Chrome
00:53:26pour aller voir les logs.
00:53:28Il peut consulter les outils réseau
00:53:30et prendre des captures d'écran.
00:53:32C'est d'ailleurs l'une de mes choses préférées
00:53:36de lui demander d'itérer en prenant des captures
00:53:41pour qu'il voie ce qu'il a créé.
00:53:44Ensuite, on peut lui dire :
00:53:47"S'il te plaît, oriente ce design vers quelque chose"
00:53:49"qui ressemble plus à X, Y et Z."
00:53:52Et puis lui faire prendre des captures d'écran
00:53:54et faire des commits à chaque capture.
00:53:56Ainsi, on peut naviguer
00:54:00entre ce qu'étaient ces commits
00:54:04et les changements de design.
00:54:06Et on voit qu'il est en train de parcourir
00:54:09et de regarder les sélecteurs de requête
00:54:11pour voir comment optimiser la performance.
00:54:13On peut ouvrir celui-là, lancer le serveur de dev.
00:54:20D'autres questions pendant que tout ça
00:54:25tourne en arrière-plan ?
00:54:26- J'aime juste voir combien d'agents tournent en ce moment.
00:54:30C'est super cool.
00:54:31Pas vraiment de questions dans le chat.
00:54:34Juste des gens qui discutent de différents prompts,
00:54:37d'idées de prompts, ce qui est génial.
00:54:40J'avais une question, John,
00:54:43quand tu laisses les agents mettre à jour les skills
00:54:47en se basant sur des conversations qui ont échoué,
00:54:49comment empêches-tu ces modifications automatiques
00:54:52de dériver, d'éloigner le skill
00:54:55de l'intention originale ou du niveau de qualité ?
00:54:58- Bonne question.
00:55:05Ouais, ils sont généralement assez bons
00:55:09pour faire des petits changements isolés.
00:55:12Si vous avez une conversation,
00:55:13comme il voit ce qui a fonctionné
00:55:17et ce qui n'a pas fonctionné.
00:55:20Donc si vous signalez que telle chose n'a pas marché
00:55:24dans la conversation actuelle,
00:55:26il peut trouver et mettre à jour uniquement
00:55:30les parties spécifiques qui doivent l'être.
00:55:33Il ne va pas s'amuser à
00:55:35tout réécrire depuis le début.
00:55:37Donc je n'ai jamais vu ça devenir un vrai problème,
00:55:42même si je ne dirais pas que c'est impossible,
00:55:45mais je ne l'ai pas encore constaté.
00:55:47- Ouais, je vois.
00:55:48- Très bien, voici notre page d'atelier.
00:55:54On publie, non ?
00:55:56C'est magnifique.
00:55:57Voici nos variations.
00:55:59Ouvrons les serveurs de dev pour chacune d'elles.
00:56:03Et puis ouvrons un tas d'onglets.
00:56:11Mais je pense qu'on arrive au bout de mon temps.
00:56:16S'il y a des dernières questions
00:56:17avant de conclure, je peux montrer,
00:56:22j'ai ça dans les skills... j'ai perdu mes skills.
00:56:29Navigateur, reviens.
00:56:30lisez-en un qui correspond à ce que vous faites.
00:56:36lee uno que se alinee un poco con lo que estás haciendo.
00:56:40J'ai un “publish skill”, auquel, si vous avez confiance,
00:56:43c'est sous mon nom.
00:56:45Si vous autorisez un agent à lancer le CLI GitHub,
00:56:50encore une fois, c'est un grand niveau de confiance.
00:56:54C'est la confiance que j'ai.
00:56:57Il prendra la compétence que vous créez.
00:57:00Vous pourriez dire “create skill”, puis “publish skill”.
00:57:02Et ensuite, ça ira dans un...
00:57:04je fais ça hors écran un instant.
00:57:07Je cherche un de mes dépôts qui a,
00:57:16je crois qu'il s'est même publié lui-même.
00:57:21Je peux donc vous montrer celui-là.
00:57:22Laissez-moi vérifier qu'il n'y a rien de privé.
00:57:24Ok, désolé.
00:57:27Je peux donc créer un dépôt GitHub pour vous
00:57:29et publier la compétence elle-même
00:57:32pour que vous n'ayez vraiment rien à faire
00:57:35à part “create skill”, puis “publish skill”.
00:57:38créez-le sous... je me trompe toujours d'organisation
00:57:43créalo bajo el, siempre me confundo con la organización
00:57:45car je fais partie de plusieurs organisations,
00:57:47puis vérifiez qu'il est disponible dans l'outil skills.
00:57:52Ainsi, si vous prenez ceci,
00:57:56encore une fois, les instructions sont là,
00:57:58il peut aller de l'avant et créer cela
00:58:00ou publier cette compétence pour vous
00:58:01afin que vous puissiez la partager avec votre équipe,
00:58:02avec des amis, peu importe.
00:58:03Et un autre outil sur lequel j'ai travaillé
00:58:08juste aujourd'hui, c'est essentiellement un guide de skills,
00:58:14où si je sais qu'il y aura quelques compétences
00:58:19que je veux charger dès le départ,
00:58:20je sais que je veux l'agent browser, comme le Geist,
00:58:24je veux, disons, les meilleures pratiques Remotion
00:58:29et les meilleures pratiques Vercel React.
00:58:33C'est essentiellement l'un de ces outils
00:58:37qui gère l'imposition du contexte dès le début.
00:58:40Et ça va forcer un prompt dans cloud code,
00:58:44c'est uniquement pour cloud code pour l'instant.
00:58:45Mais ça va le forcer et dire :
00:58:48voici toutes les compétences dont je sais que j'aurai besoin
00:58:50et voici le contenu,
00:58:51pour qu'une fois la conversation lancée,
00:58:53même si je n'ai rien dit sur l'agent browser,
00:58:58aunque no dije nada sobre el navegador de agentes,
00:59:06il va évidemment choisir l'agent browser.
00:59:10Comme il aurait pu le faire avant, et c'était souvent le cas.
00:59:14Je ne sais pas à quoi ressemble la description de l'agent browser.
00:59:18Je ne sais pas si le mot “évaluer” s'y trouve
00:59:21il doit le charger.
00:59:24debería cargarlo.
00:59:24Mais de cette façon, je le force dès le départ
00:59:29pour que quand j'utilise ces phrases, ce soit déjà chargé.
00:59:33Ce package se trouve sur,
00:59:36laissez-moi trouver le skills primer.
00:59:41- On pourra aussi partager ces liens à la fin.
00:59:45- Ok, super.
00:59:45- On les a, parfait.
00:59:46- Je mets ça là-dedans.
00:59:50- Et je dirais, comme toujours,
00:59:53vu l'état actuel des logiciels,
00:59:55allez cloner le dépôt et appropriez-le-vous.
00:59:59Nous sommes dans l'ère de la personnalisation des CLI
01:00:02et de la personnalisation des logiciels.
01:00:04Si vous voulez que ça ait un nom totalement différent
01:00:07ou des fonctionnalités complètement différentes,
01:00:08si vous voulez personnaliser ça pour Codex
01:00:11ou Cursor ou n'importe quoi, clonez-le et adaptez-le.
01:00:14Dites par exemple : “fais en sorte que ça marche avec Cursor”
01:00:18et laissez votre agent le construire pour Cursor.
01:00:20C'est souvent possible de tout faire
01:00:23en une seule fois de nos jours, c'est fou.
01:00:26- C'est incroyable, vive les logiciels personnalisés.
01:00:29Je voulais poser juste une dernière question
01:00:31qui est arrivée dans le chat.
01:00:32Je sais qu'on n'a plus de temps,
01:00:35mais comme les skills sont des dépôts GitHub
01:00:37et semblent aussi être installés localement,
01:00:40comment s'assure-t-on d'avoir les mises à jour ?
01:00:42Est-ce que le CLI a une commande “update skill” ?
01:00:48- Je ne me rappelle plus des commandes exactes
01:00:52je ferme tout ça.
01:00:53Skills, oups, je ne l'ai même pas installé globalement.
01:00:59- J'adore ça.
01:01:02- Je prends la dernière version dans la liste des skills.
01:01:05Alors oui, “skills update” est bien là.
01:01:07- Une question qui en découle est :
01:01:11voulez-vous que les skills soient mis à jour souvent ?
01:01:13- C'est une excellente question.
01:01:18Je ne sais pas si quelqu'un a la réponse idéale
01:01:23parce que pour l'instant, les règles des skills,
01:01:28comme le front matter ou le versionnage,
01:01:30je ne pense pas que tout le monde soit d'accord,
01:01:32tout comme pour les compétences elles-mêmes,
01:01:34sur les répertoires et les structures à adopter.
01:01:37Tout cet écosystème est en pleine croissance.
01:01:41Donc pour ce qui est du versionnage,
01:01:47c'est un peu l'attente,
01:01:49on fait du mieux qu'on peut pour l'instant
01:01:51et on attend de voir quelles seront les meilleures pratiques.
01:01:54Car je n'en ai pas à proposer actuellement
01:01:57à part de tout mettre à jour à chaque fois.
01:01:59En partant du principe que c'est le mieux.
01:02:03Mais voilà, je n'ai pas vraiment de conseil là-dessus.
01:02:06- Oui, et ça change tout le temps.
01:02:08Je suis sûr que quelqu'un aura un nouvel avis
01:02:12d'ici quelques jours, ça évolue quotidiennement.
01:02:18Formidable, John.
01:02:18Y a-t-il autre chose que tu souhaites montrer
01:02:20à la communauté aujourd'hui ?
01:02:21- C'est-à-dire que...
01:02:25- Il y en a tellement.
01:02:26- On en fera beaucoup d'autres
01:02:28et j'ai plein d'autres choses à montrer,
01:02:30mais je pourrais en parler pendant des heures.
01:02:32- Oui, tout à fait.
01:02:34John, merci beaucoup d'être venu
01:02:36sur notre plateforme communautaire
01:02:38pour échanger avec la communauté,
01:02:39et merci à vous tous d'être là.
01:02:42Et comme nous l'avons dit,
01:02:44John reviendra certainement pour une autre session.
01:02:46Alors restez à l'écoute.
01:02:48- Merci à tous.
01:02:49- Merci.
01:02:50Très bien, si vous voulez suivre
01:02:53notre prochaine session communautaire,
01:02:55nous avons les histoires open source lundi
01:02:58et je crois une autre session
01:03:00avec un partenaire de la marketplace la semaine prochaine,
01:03:03mais vous trouverez tous les détails
01:03:04sur notre calendrier d'événements communautaires,
01:03:08à l'adresse [community.vercel.com/events](https://www.google.com/search?q=https://community.vercel.com/events).
01:03:12Mais oui, merci infiniment d'avoir été présents.
01:03:15C'était vraiment super et oui,
01:03:17on se retrouve ici la semaine prochaine.

Key Takeaway

Les skills transforment les agents IA de pages blanches en collaborateurs experts en injectant dynamiquement du contexte métier et des outils via des fichiers Markdown partageables.

Highlights

Introduction des "skills" comme une évolution du prompt engineering vers le "context engineering" pour les agents IA.

Utilisation du format Markdown pour encapsuler des flux de travail, des standards de code et des contextes spécifiques.

Présentation de skills.sh comme un gestionnaire de paquets (style NPM) pour partager et installer des capacités d'IA.

Distinction entre le contexte forcé (agents.md) et le chargement à la demande (lazy loading) via les skills.

Démonstration de création automatique de vidéos et de pages web en combinant des skills de design (Geist) et d'outils (Remotion).

Importance de l'itération continue ("Iterate To Greatness") plutôt que de rechercher la perfection initiale des instructions.

Utilisation d'outils comme Agent Browser pour permettre aux agents d'interagir directement avec les navigateurs et les outils de développement.

Timeline

Introduction et accueil de la communauté

Pauline Navas de l'équipe communauté de Vercel ouvre la session en accueillant les nombreux participants en direct. Elle explique comment rejoindre la plateforme communautaire pour interagir via le chat et poser des questions pertinentes durant l'atelier. Le sujet principal est introduit : les "skills" pour Claude Code, une innovation qui change la donne pour le travail avec les agents IA. L'objectif est de permettre aux agents de suivre des standards spécifiques comme les migrations Next.js. Cette introduction pose le cadre d'un échange interactif et pratique sur les nouvelles méthodes de développement assisté par IA.

Le concept de Context Engineering et l'origine des skills

John, de l'équipe AI DX chez Vercel, prend la parole pour présenter le paradigme du "context engineering". Il explique que si le prompt engineering était crucial auparavant, l'accent est désormais mis sur l'apport de contexte à la demande via des fichiers Markdown. Les agents IA démarrent comme des "nouveau-nés" sans connaissance de vos flux de travail internes ou de vos standards d'équipe. Les skills permettent d'encapsuler ces connaissances spécifiques dans des fichiers Markdown simples et packagés. Cette approche initiée par Anthropic permet de partager facilement des compétences sur des dépôts GitHub ou via le site spécialisé skills.sh.

Anatomie d'une skill et comparaison avec agents.md

John détaille la structure technique d'une skill, qui repose sur un dossier contenant un fichier nommé obligatoirement skill.md pour faciliter la découverte automatique. Il compare l'utilisation du fichier agents.md, qui agit comme un prompt système permanent et forcé, avec les skills qui peuvent être chargées de manière "paresseuse" ou invoquées par l'utilisateur. Les skills sont décrites comme des outils dynamiques qui comblent les lacunes des modèles, notamment concernant les schémas propriétaires ou les structures de données spécifiques. L'analogie avec NPM est utilisée pour illustrer comment npx permet d'ajouter instantanément du savoir à un projet. Cette section clarifie quand utiliser des règles globales par rapport à des capacités modulaires.

Niveaux d'abstraction : Markdown, CLI et MCP

La discussion s'oriente vers le choix entre l'implémentation via Markdown, une interface en ligne de commande (CLI) ou le Model Context Protocol (MCP). John recommande de privilégier la simplicité du Markdown avant de passer à des solutions plus complexes comme les MCP, réservés aux contrôles stricts de données. Une question de l'audience soulève l'avenir de la communication d'agent à agent, où les agents pourraient découvrir et installer leurs propres compétences. Le concept de "Teams" de Claude est mentionné, illustrant comment un chef d'équipe IA peut orchestrer des sous-agents dotés de compétences variées. Cette partie souligne l'évolution vers des architectures d'IA multi-agents plus autonomes et collaboratives.

Cas d'usage concrets et gestion de l'obsolescence

John présente des exemples réels de skills, notamment pour pallier le problème des dates de coupure de connaissances des modèles (knowledge cutoff). Il montre comment une skill peut forcer l'IA à utiliser les versions les plus récentes de bibliothèques comme Next.js ou l'AI SDK de Vercel en intégrant la documentation à jour. Un exemple fascinant est donné : créer une skill qui analyse le style d'écriture d'un utilisateur pour que l'IA le reproduise fidèlement. Les témoignages du chat soulignent l'utilité des skills pour aider des profils non techniques à contribuer au code sans briser l'architecture. La section démontre que les skills servent autant de garde-fous que d'accélérateurs de productivité.

Optimisation et évaluation des performances des skills

L'intervenant aborde la difficulté complexe d'évaluer les performances des agents IA en raison de leur nature non déterministe. Il conseille une approche itérative baptisée "Iterate To Greatness" (ITG), où l'on déploie une skill, observe ses échecs, puis l'améliore en continu. Pour l'organisation des fichiers, il suggère de structurer les compétences comme un livre avec une table des matières pour éviter de saturer la fenêtre de contexte de l'IA. John recommande de garder les fichiers de compétences sous la barre des 200 lignes pour maintenir une efficacité optimale selon les modèles actuels. L'idée phare est de laisser l'agent lui-même mettre à jour la skill à la fin d'une conversation pour corriger ses propres erreurs.

Démonstration : Création de vidéos et Agent Browser

Une démonstration impressionnante montre comment John a généré toutes les vidéos de sa présentation en utilisant une skill combinant Remotion et le design system Geist de Vercel. En fournissant simplement un plan et des références esthétiques, l'agent a produit le contenu de manière autonome pendant que l'utilisateur faisait autre chose. John introduit ensuite l'outil "Agent Browser", qui permet à l'IA d'ouvrir Chrome, d'analyser les performances réseau et de prendre des captures d'écran pour itérer sur le design d'une page web. Cette capacité de l'IA à "voir" son travail et à le valider techniquement marque une étape cruciale dans l'automatisation du développement front-end. La démonstration prouve la puissance de la combinaison de plusieurs compétences spécialisées.

Publication, mises à jour et conclusion

La session se termine par les aspects pratiques de la publication des skills via GitHub et leur mise à jour avec la commande "skills update". John présente le "skills primer", un outil pour précharger des contextes spécifiques dès le lancement de Claude Code afin de gagner en réactivité. Il encourage la communauté à cloner les dépôts existants pour créer des logiciels personnalisés adaptés à leurs propres besoins, soulignant que nous sommes dans l'ère de la personnalisation. Pauline conclut en remerciant les 200 participants et en annonçant les prochains événements communautaires, notamment sur l'open source. Ce final renforce l'idée d'un écosystème ouvert et en constante évolution technologique.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video