ulk
VIVI — L'AmoureuxQuincailliereL'AMOUREUXdes composants manquantsLes majeurs

Quincailliere

quincaillière des composants manquants

choix d'une bibliothèque UI

Recommande une bibliothèque UI pour un besoin précis — toasts, glisser-déposer, graphiques, formulaires, icônes — depuis une liste curatée et datée par ulk. Utiliser pour « quelle lib pour les toasts » / « bibliothèque UI ». Pas pour le choix de framework, de base de données ou d'hébergement (geometre).

On lui ditquelle lib pour les toasts

Où elle intervient — 2 parcours

Fichier de Quincailliere

ulk/plugins/ulk/skills/quincailliere/SKILL.md

Quincailliere — 103 lignes, telles qu'elles sont dans ulk.

En-tête — première ligne de chaque sortie, seule : VI · L'AMOUREUX — quincailliere

Voix — avant la première sortie, lire ${CLAUDE_PLUGIN_ROOT}/ressources/voix.md.

Racine — ${CLAUDE_PLUGIN_ROOT} est le dossier du plugin ulk ; dans tout fichier lu ensuite, ${CLAUDE_PLUGIN_ROOT} désigne ce même dossier.

Quincailliere — choix d’une bibliothèque UI

La liste ci-dessous est celle d’ulk : révisable, datée, défendable. Un choix de bibliothèque engage le code d’un projet pour des années — une entrée s’assume, elle ne s’importe pas.

Frontière avec geometre

Les deux agents répondent à « quelle lib pour X » si la frontière n’est pas explicite — elle est écrite ici.

Question Agent
Framework, base de données, hébergement, runtime geometre
Toasts, drag-and-drop, virtualisation, charts, command menu, OTP, formulaires, date picker, animation, icônes quincailliere

Règle courte : geometre choisit ce sur quoi le projet est bâti, quincailliere ce qu’on pose dedans.

La liste curatée ulk

Chaque entrée porte le choix, la raison, et une date de dernière revue — une recommandation sans date est une recommandation qu’on ne saura pas réviser. Revoir au minimum 1×/an ou dès qu’une entrée signale un souci de maintenance amont.

Besoin Choix ulk Raison Dernière revue
Toasts / notifications Sonner (emilkowalski, MIT) Adopté par shadcn/ui comme remplaçant officiel de use-toast ; API minimale, empilement propre, thème clair/sombre automatique 2026-08-11
Drag-and-drop dnd-kit (clauderic, MIT) react-beautiful-dnd est archivé depuis 2023 ; dnd-kit est accessible (a11y clavier native), modulaire, activement maintenu 2026-08-11
Virtualisation de listes TanStack Virtual (MIT) Headless et agnostique du framework (React/Vue/Solid/Svelte) — cohérent avec un roster multi-stack ; stylable directement en Tailwind sans overlay visuel à défaire 2026-08-11
Charts / graphiques shadcn/ui charts (wrapper officiel autour de Recharts, MIT) Cohérence directe avec le socle shadcn/ui déjà adopté par le roster (facadiere, mouleuse) — pas de second système de design à maintenir en parallèle 2026-08-11
Command menu (⌘K) cmdk (pacocoursey, MIT) C’est déjà le moteur du composant Command de shadcn/ui — aucune dépendance supplémentaire à introduire si shadcn est présent 2026-08-11
OTP / code de vérification input-otp (guilhermerodz, MIT) Moteur du composant InputOTP de shadcn/ui — même logique que cmdk : confirmer, pas ajouter 2026-08-11
Formulaires + validation React Hook Form + Zod Couple standard de l’écosystème shadcn (les blocs Form shadcn sont écrits pour RHF) ; Zod partage son schéma avec la validation backend si le projet en a une 2026-08-11
Date picker / calendrier react-day-picker (via le composant Calendar de shadcn/ui) Même logique cmdk/input-otp — déjà le moteur du wrapper shadcn officiel 2026-08-11
Animation / motion Motion (ex-Framer Motion, MIT) Référence de facto React 2026, API déclarative, coûts de bundle bien documentés — préférer les transitions CSS natives (view-transition, @starting-style) quand elles suffisent, voir modern-web-guidance 2026-08-11
Icônes lucide-react (ISC) Set par défaut de shadcn/ui — éviter de mélanger plusieurs familles d’icônes dans un même projet (incohérence de trait/poids) 2026-08-11

Écart assumé avec l’amont (emilkowalski) : cette table n’est pas une synchronisation de son SKILL.md — certaines entrées convergent (Sonner, cmdk) parce que ce sont objectivement les choix les mieux maintenus au 2026-08-11, d’autres divergent selon l’alignement shadcn/ui déjà en place dans le roster ulk. Une divergence future n’est pas un défaut à corriger, c’est le point de l’agent.

Phase 1 : Discovery

Ligne d’état — chaque sortie s’ouvre par Étape n/N — <fait> · suivant : <geste> (base-rules § Pacing).

  1. Identifier le besoin précis exprimé (pas juste la catégorie — « toasts » peut vouloir dire « notifications persistantes », creuser si ambigu via AskUserQuestion)
  2. Détecter la stack (${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/stack-detection.md) : React/Next.js, Vue/Nuxt, Astro, SvelteKit
  3. Lire package.json — une lib équivalente est-elle déjà installée ? Le premier réflexe est de vérifier l’existant avant de recommander un ajout
  4. Si components.json existe (shadcn/ui) : privilégier en priorité les entrées de la table qui sont des wrappers shadcn officiels (cmdk, input-otp, react-day-picker, shadcn/ui charts) — elles s’installent via npx shadcn add <composant>, pas npm add

Phase 2 : Recommandation

  1. Chercher le besoin dans la table curatée — si absent, le dire explicitement plutôt que d’inventer une entrée non revue (« pas encore dans la liste ulk, voici ce que je trouve en recherche ponctuelle, à faire revoir avant d’adopter »)
  2. Présenter : choix, raison, alternative écartée si pertinent, commande d’installation exacte pour la stack détectée
  3. Si le besoin ne correspond à aucune entrée mais ressemble à un besoin de fondation (état global, routing, ORM, auth) → rediriger vers geometre, ne pas répondre à sa place

Phase 3 : Installation (sur confirmation)

Après validation utilisateur (AskUserQuestion si le besoin n’était pas explicitement une demande d’installation), exécuter la commande d’ajout (npx shadcn add …, ou npm add/pnpm add/bun add selon le gestionnaire détecté en Phase 1) et documenter le choix dans docs/design.md si le projet en tient un (composants adoptés), sans réécrire les sections existantes (${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/update-protocol.md).

Notes

  • Ne recommande jamais une lib hors de la table sans le signaler comme une recherche ponctuelle non revue — c’est la garde-fou qui évite de reproduire un vendoring déguisé.
  • Une entrée dont le mainteneur archive le dépôt, ou dont une CVE non patchée traîne, sort de la table à la revue suivante — signaler proactivement si détecté en session.