Communitygithub.com

nkurunziza-saddy/pick-library

Wählt die richtige Bibliothek für eine Frontend-Aufgabe aus einer kuratierten, auf Wartungsstatus geprüften Liste – anstatt selbst zu bauen oder ein verwaistes Paket zu installieren. Verwende es, wenn der User fragt „was soll ich für … verwenden”, „gibt es eine Bibliothek für …” oder ein Paket nennt, und wenn du im Begriff bist, einen Toast, ein Command-Menü, einen Drawer, einen Date-Picker, eine Tabelle, eine virtuelle Liste, Drag-and-Drop, ein Diagramm, einen OTP-Eingabe, eine animierte Zahl, einen Theme-Switch, eine Formularvalidierung … zu bauen.

Was ist pick-library?

Dieses Skill ("Pick a library") hilft KI-Agenten, die optimale Frontend-Bibliothek für eine gegebene Aufgabe auszuwählen, indem es einem strukturierten Entscheidungsbaum folgt. Es priorisiert zuerst bereits installierte Abhängigkeiten, dann native Browser-Plattform-APIs und schließlich eine kuratierte, statusgeprüfte Katalogliste. Ziel ist es, Bundle-Größe und technische Schulden zu minimieren, indem Doppelungen und veraltete Pakete vermieden werden. Das Skill unterstützt gängige Entwicklungsumgebungen wie Claude Code, Cursor, Codex und andere KI-gestützte Editoren, die SKILL.md-Dateien interpretieren. Es führt den Agenten durch eine Reihe von Schritten: Überprüfung von `package.json` auf vorhandene Bibliotheken, Prüfung nativer Plattformlösungen (z. B. `<dialog>`, `popover`, `Intl`) und schließlich die Konsultation eines Katalogs (`references/catalogue.md`). Bevor eine Empfehlung ausgesprochen wird, führt es eine Live-Prüfung via `npm view` durch, um den aktuellen Wartungsstatus, die Lizenz und Kompatibilität zu verifizieren. Das Skill enthält zudem eine Tabelle mit häufigen Anti-Patterns und deren empfohlenen Alternativen sowie eine detaillierte Formatvorlage für die Ausgabe der Antwort.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Wähle eine Bibliothek

Vor jeder Entscheidung wende product-ui §1 (das Geschmacks-Tagebuch und die Präzedenz) und §5 (welches Skill wofür zuständig ist) an. Eine Tagebuch-Regel, die eine Bibliothek nennt, gewinnt.

Wenn ohne Aufgabe aufgerufen, frage in einer einzigen Zeile danach und stoppe.

Entscheidungsreihenfolge

Gehe diese Schritte von oben nach unten durch. Stoppe beim ersten Schritt, der die Aufgabe vollständig löst.

  1. Was ist bereits installiert? Lese package.json. Wenn eine aufgeführte Bibliothek oder ein Konkurrent die Aufgabe bereits erledigt, verwende sie. Markiere einen besseren Fund in einer Zeile und tausche niemals eine Abhängigkeit ungefragt aus. Warum: Eine zweite Bibliothek für denselben Zweck verdoppelt das Bundle und die Konventionen.
  2. Löst die Plattform es vollständig? Überprüfe die Tabelle unten. Warum: Die Plattform hat keine Bundle-Kosten, keinen Upgrade-Pfad und kein Abwanderungsrisiko.
  3. Hat die Liste einen Eintrag? Öffne references/catalogue.md, finde die Kategorie und nimm den mit Standard markierten Eintrag. Empfehle eine Bibliothek, kein Menü.
  4. Wird dieser Eintrag gewartet? Überprüfe die Status-Spalte. Wenn dort Nicht gewartet steht, empfehle sie niemals; verwende den im Eintrag genannten Ersatz.
  5. Nichts passt? Sage „Diese Aufgabe ist nicht in der Liste“, wähle dann aus deinem eigenen Wissen und führe die untenstehende Überprüfung dafür durch. Warum: Ein ungeprüftes Paket ist der übliche Weg, wie veralteter Code ins Projekt gelangt.

„Vollständig lösen“ bedeutet, dass jede Anforderung der Aufgabe erfüllt ist, einschließlich Tastatur-, Fokus- und Screenreader-Verhalten. Wenn eine Anforderung nicht erfüllt ist, gehe zu Schritt 3.

Plattform zuerst

AufgabePlattform-AntwortWechsel zu einer Bibliothek, wenn
Modal<dialog> mit showModal()Du gestapelte Dialoge mit animiertem Ausgang über alle von dir unterstützten Browser hinweg benötigst, oder nicht-modales Fokusmanagement
Popover, Dropdown-Panel, Tooltip-ähnliche Kartepopover-Attribut plus CSS-Ankerpositionierung, wo unterstütztDu überall Kollisions-Flipping oder ein Menü mit Roving-Fokus benötigst
Akkordeon, Offenlegung<details name>Du kontrollierten Zustand oder animierte Höhe über interpolate-size hinaus benötigst
Dunkelmodus ohne Umschalterprefers-color-scheme, color-scheme, light-dark()Der Benutzer wählt das Design manuell aus und es muss dauerhaft sein
Datums-, Uhrzeit- oder Monatseingabe<input type="date"> und seine GeschwisterDu Bereiche, einen benutzerdefinierten Kalender oder ein einheitliches Erscheinungsbild benötigst
Zahlenformatierung, relative Zeit, Pluralformen, ListenIntl.NumberFormat, RelativeTimeFormat, PluralRules, ListFormatNiemals. Verwende immer Intl
Einmalcode, Einzelfeld<input autocomplete="one-time-code" inputmode="numeric">Du ein Feld pro Ziffer benötigst
Ein-, Aus- und Layout-AnimationCSS-Übergänge, @starting-style, WAAPI, View TransitionsDu Federn, Gesten oder unterbrechbare Layout-Animation benötigst
FormularvalidierungConstraint-Validierung (required, pattern, setCustomValidity)Du feldübergreifende oder asynchrone Regeln oder ein typisiertes Schema benötigst
Select mit wenigen Optionen<select>Du Suche, Mehrfachauswahl oder umfangreiche Zeilen benötigst
Klebrige Kopfzeilen, Scroll-Snap, faule ListenCSS position: sticky, scroll-snap, content-visibility: autoDie Liste 1.000+ Zeilen enthält

Paare

KaputtGefixtWarum
Ein <div>-Modal mit handgeschriebener Focus-Falle<dialog> und showModal()Focus-Falle, Esc und träger Hintergrund sind kostenlos enthalten
npm i react-beautiful-dnd@dnd-kit/reactErsteres ist veraltet und wird nicht mehr gewartet
npm i vaul für einen DrawerBase UI Drawer oder <dialog> als Sheet gestyltVauls eigene README sagt, es sei nicht gewartet
Ein Toast, der aus einer Modal-Bibliothek gebaut wurdeBase UI ToastStapeln, Pause bei Hover und Wegwischen sind bereits gelöst
setInterval zählt eine Zahl hochNumberFlowZiffern rollen mit korrektem Layout und reduzierter Bewegung
5.000 <tr> auf einmal gerendertTanStack Virtual unter TanStack Table oder Virtuoso für ListenRendering-Kosten wachsen mit den Zeilen, nicht mit dem Viewport
new Intl.NumberFormat ersetzt durch ein WährungspaketIntl.NumberFormatLocale-Regeln sind im Browser enthalten

Überprüfe, bevor du empfiehlst

Führe dies für jedes Paket durch, ob gelistet oder nicht. Ein Katalogstatus kann älter sein als deine Sitzung.

npm view <pkg> time.modified license version
  • Gewartet: letzte Veröffentlichung innerhalb der letzten 12 Monate oder ein Repository-Push innerhalb der letzten 6 Monate mit einer veröffentlichten Version.
  • Langsam: funktionsvollständig, keine Veröffentlichung seit 12–24 Monaten, Repository beantwortet noch Issues. Verwendbar. Sage es ist langsam.
  • Nicht gewartet: archiviert, eine README, die das sagt, oder keine Veröffentlichung seit 24+ Monaten mit offenen Fehlern. Empfehle es niemals.
  • Lies die Lizenz. Melde alles, was nicht MIT, ISC, BSD oder Apache-2.0 ist (MPL-2.0 und AGPL benötigen einen Hinweis).
  • Überprüfe die Peer-Abhängigkeiten auf die React-Version des Projekts.

Antwortformat

Ein Block, kein Menü:

Base UI Toast für Toasts. Es stapelt, pausiert bei Hover und wischt weg. Nicht für alles, was eine Aktion benötigt; das bleibt auf dem Bildschirm. MIT, gewartet. npm i @base-ui/react.

Gib immer an: wofür es ist, wann es nicht verwendet werden soll, Lizenz, Status mit dem Datum, das du gesehen hast.

Bevor du abschließt

  • package.json wurde gelesen und die Auswahl dupliziert keine installierte Bibliothek.
  • Die Plattform-Antwort wurde überprüft und, falls übersprungen, ist der Grund eine Klausel.
  • npm view wurde auf die Auswahl ausgeführt und der Status in der Antwort ist der heutige, nicht der des Katalogs.
  • Nichts, das als Nicht gewartet markiert ist, wird empfohlen.

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…

Verwandte Skills