Communitygithub.com

nkurunziza-saddy/pick-library

Sélectionne la bibliothèque appropriée pour une tâche front-end à partir d'une liste organisée et vérifiée, au lieu de coder manuellement ou d'installer un paquet abandonné. Utilisez-la lorsque l'utilisateur demande « qu'est-ce que je devrais utiliser pour… », « existe-t-il une bibliothèque pour… » ou nomme un paquet, et lorsque vous êtes sur le point de construire un toast, un menu de commandes, un tiroir, un sélecteur de date, un tableau, une liste virtuelle, du glisser-déposer, un graphique, une saisie OTP, un numéro animé, un sélecteur de thème, une validation de formulaire…

Qu'est-ce que pick-library ?

Le skill **Pick a Library** est un outil d'aide à la décision pour les agents d'IA de programmation (comme Claude Code ou Cursor). Il guide le choix de la bibliothèque front-end la plus adaptée à une tâche donnée, en s'appuyant sur un processus structuré et une liste vérifiée, plutôt que de suggérer des paquets au hasard ou obsolètes. Le skill vérifie d'abord ce qui est déjà installé dans le projet (`package.json`), puis examine si la plateforme (navigateur) offre une solution native (comme `<dialog>` pour les modales). Si aucune de ces options ne convient, il consulte un catalogue référencé (`references/catalogue.md`) pour trouver l'entrée par défaut, et vérifie son état de maintenance via `npm view`. Il évite strictement de recommander des bibliothèques non maintenues et fournit une réponse concise incluant la licence, le statut et la date de vérification. Le skill est conçu pour être utilisé dans des environnements de développement avec accès au système de fichiers local et à npm, et son objectif principal est d'empêcher l'installation de code abandonné tout en minimisant la duplication de dépendances.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nkurunziza-saddy/hmm-interfaces/tree/HEAD/pick-library

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Choisir une bibliothèque

Avant toute décision, appliquez product-ui §1 (le journal des goûts et des précédents) et §5 (quelle compétence possède quoi). Une règle de journal qui nomme une bibliothèque l'emporte.

Lorsqu'elle est invoquée sans tâche, demandez-en une en une seule ligne et arrêtez-vous.

Ordre de décision

Parcourez ces étapes de haut en bas. Arrêtez-vous à la première étape qui résout complètement la tâche.

  1. Qu'est-ce qui est déjà installé ? Lisez package.json. Si une bibliothèque répertoriée ou un concurrent fait déjà le travail, utilisez-la. Signalez un meilleur choix en une ligne, et ne changez jamais une dépendance sans qu'on vous le demande. Pourquoi : une deuxième bibliothèque pour le même travail double le bundle et les conventions.
  2. Est-ce que la plateforme le résout complètement ? Consultez le tableau ci-dessous. Pourquoi : la plateforme n'a aucun coût de bundle, ni de chemin de mise à jour, ni de risque d'abandon.
  3. La liste a-t-elle une entrée ? Ouvrez references/catalogue.md, trouvez la catégorie et prenez l'entrée marquée Par défaut. Recommandez une seule bibliothèque, pas un menu.
  4. Cette entrée est-elle maintenue ? Vérifiez la colonne statut. Si elle indique Non maintenu, ne la recommandez jamais ; utilisez le remplacement nommé dans l'entrée.
  5. Rien ne correspond ? Dites « cette tâche n'est pas dans la liste », puis choisissez à partir de vos propres connaissances et exécutez la vérification ci-dessous sur celle-ci. Pourquoi : un paquet non vérifié est la façon habituelle dont le code abandonné s'installe.

« Résout complètement » signifie que chaque exigence de la tâche est satisfaite, y compris le comportement au clavier, le focus et le lecteur d'écran. Si une exigence échoue, passez à l'étape 3.

Plateforme d'abord

TâcheRéponse de la plateformePasser à une bibliothèque lorsque
Modale<dialog> avec showModal()Vous avez besoin de dialogues empilés avec une sortie animée sur les navigateurs que vous supportez, ou d'une gestion de focus non modale
Popover, panneau déroulant, carte de type infobulleAttribut popover, plus positionnement ancré CSS là où c'est supportéVous avez besoin d'un retournement de collision partout, ou d'un menu à focus rotatif
Accordéon, divulgation<details name>Vous avez besoin d'un état contrôlé ou d'une hauteur animée au-delà de interpolate-size
Mode sombre sans basculeprefers-color-scheme, color-scheme, light-dark()L'utilisateur choisit le thème manuellement et il doit persister
Saisie de date, heure, mois<input type="date"> et ses homologuesVous avez besoin de plages, d'un calendrier personnalisé ou d'un aspect cohérent
Formatage de nombre, temps relatif, pluriels, listesIntl.NumberFormat, RelativeTimeFormat, PluralRules, ListFormatJamais. Utilisez toujours Intl
Code à usage unique, champ unique<input autocomplete="one-time-code" inputmode="numeric">Vous avez besoin d'une case par chiffre
Mouvement d'entrée, de sortie et de mise en pageTransitions CSS, @starting-style, WAAPI, Transitions de vueVous avez besoin de ressorts, de gestes ou d'animations de mise en page interruptibles
Validation de formulaireValidation par contrainte (required, pattern, setCustomValidity)Vous avez besoin de règles inter-champs ou asynchrones, ou d'un schéma typé
Sélection avec peu d'options<select>Vous avez besoin de recherche, de sélection multiple ou de lignes riches
En-têtes collants, défilement par accroche, listes paresseusesCSS position: sticky, scroll-snap, content-visibility: autoLa liste contient 1 000+ lignes

Paires

CasserCorrigerPourquoi
Une modale <div> avec un piège à focus écrit à la main<dialog> et showModal()Le piège à focus, Échap et l'arrière-plan inerte sont gratuits
npm i react-beautiful-dnd@dnd-kit/reactLe premier est déprécié et non maintenu
npm i vaul pour un tiroirBase UI Drawer, ou <dialog> stylisé comme une feuilleLe propre README de vaul dit qu'il est non maintenu
Un toast construit à partir d'une bibliothèque de modalesBase UI ToastL'empilement, la pause au survol et le balayage sont déjà résolus
setInterval comptant un nombreNumberFlowLes chiffres défilent avec une mise en page correcte et un mouvement réduit
5 000 <tr> rendues en une foisTanStack Virtual sous TanStack Table, ou Virtuoso pour les listesLe coût de rendu augmente avec les lignes, pas avec la fenêtre d'affichage
new Intl.NumberFormat remplacé par un paquet de devisesIntl.NumberFormatLes règles de locale sont livrées dans le navigateur

Vérifiez avant de recommander

Exécutez ceci sur n'importe quel paquet, qu'il soit répertorié ou non. Un statut de catalogue peut être plus ancien que votre session.

npm view <pkg> time.modified license version
  • Maintenu : dernière publication dans les 12 mois, ou un push de dépôt dans les 6 mois avec une version publiée.
  • Lent : fonctionnalités complètes, pas de publication depuis 12 à 24 mois, le dépôt répond toujours aux problèmes. Utilisable. Dites qu'il est lent.
  • Non maintenu : archivé, un README qui le dit, ou pas de publication depuis 24+ mois avec des dysfonctionnements ouverts. Ne le recommandez jamais.
  • Lisez la licence. Signalez tout ce qui n'est pas MIT, ISC, BSD ou Apache-2.0 (MPL-2.0 et AGPL nécessitent une note).
  • Vérifiez les dépendances par rapport à la version de React du projet.

Format de réponse

Un bloc, pas de menu :

Base UI Toast pour les toasts. Il s'empile, s'arrête au survol et se glisse. Pas pour tout ce qui nécessite une action ; cela reste à l'écran. MIT, maintenu. npm i @base-ui/react.

Donnez toujours : à quoi ça sert, quand ne pas l'utiliser, licence, statut avec la date à laquelle vous l'avez vu.

Avant de terminer

  • package.json a été lu, et le choix ne duplique pas une bibliothèque installée.
  • La réponse de la plateforme a été vérifiée et, si elle a été ignorée, la raison est une seule clause.
  • npm view a été exécuté sur le choix, et le statut dans la réponse est celui d'aujourd'hui, pas celui du catalogue.
  • Rien marqué Non maintenu n'est recommandé.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

nkurunziza-saddy/break

Stress-tests a piece of UI with worst-case data and every reachable state, then reports what broke with a numbered fix for each. Use it when the user types /break, or asks to "break this", "stress-test", "try the worst case", "what happens with long names", "check the empty and error states" or "find the edge cases" on a component or screen.

nkurunziza-saddy/layout

Structure and space in product UI on the web. It sets the spacing scale, grouping, alignment, density (compact or comfortable), hit areas, app shells (sidebar, toolbar, content, inspector), max widths, container-query responsiveness, dropdown and popover sizing, room for long and translated text, layout stability (no shift on load) and sticky elements that must not cover focus.

nkurunziza-saddy/motion

Builds motion for product UI on the web. It decides whether something should move at all, then why, which tool (CSS transition, WAAPI, Motion, spring), which properties, curve, duration, interruption, exit and reduced-motion path, and it writes the code. Also covers stagger and choreography, gestures (drag, flick, sheets), motion tokens and animation performance.

nkurunziza-saddy/surfaces

What product UI is made of on the web. It sets elevation levels with exact shadow recipes for light and dark mode, when to use a shadow and when a border, the transparent border for forced-colours mode, a small radius scale with concentric nesting, image outlines, every interactive state as a surface change (hover, pressed, selected, disabled, focus-visible), icons (one set, currentColor, outline and fill, stroke tha…

Skills associés