Use when someone asks "what should I use for toasts / drag and drop / a command menu / a big list / animating a number", or is about to hand-roll a UI primitive that a good package already solves. Returns one opinionated pick per task from a curated list of libraries Emil Kowalski actually uses and trusts, with the npm specifier, instead of letting an agent invent a component or install an abandoned package. Best run when you explicitly ask for it. Do NOT use to debug or restyle a library already installed, to audit a dependency for CVEs or licensing, or to choose backend or data-layer packages.
> **Mirrored skill.** *Pick UI Library* by **Emil Kowalski** — originally
> [`pick-ui-library`](https://github.com/emilkowalski/skills/tree/70744e3816f1d93eafb697161a8b880a7384c5ff/skills/pick-ui-library) in
> [github.com/emilkowalski/skills](https://github.com/emilkowalski/skills). MIT licensed,
> © 2026 Emil Kowalski. Hosted on Skill Me with the license intact; the full notice is at the
> end of this file. Emil's deeper material: [animations.dev](https://animations.dev/).
>
> **Skill Me changes from the original:**
> - `disable-model-invocation: true` dropped with the frontmatter (inert over MCP); the author's manual-invocation sentence is carried in the description.
> - Added a dated freshness note naming the two npm specifiers that had drifted since publication — base-ui's package rename and dnd-kit's React adapter. Every other pick in the list was verified current against npm on 2026-07-30 and left untouched.
---
# Picking The Right Library
A lookup skill. When invoked with a task ("I need toasts", "what should I use for drag and drop?"), match the task to the curated list below and recommend the library. These are deliberate, taste-driven picks — don't substitute alternatives outside this list unless the user asks for one or the task genuinely isn't covered.
## How to use this
1. **Identify the task**, not the library the user named. "I need to show a dropdown" is a UI-primitives task (base-ui), even if they asked about something else.
2. **Check what's already installed.** Look at `package.json` first. If the project already uses a listed library, use it. If it uses a competitor (e.g. react-window instead of Virtuoso), flag the recommendation but don't churn the dependency without being asked.
3. **Recommend one library**, state what it's for in one sentence, and install/wire it up if that's part of the request. Don't present a menu of options when the list has a clear answer.
4. If the task isn't covered by the list, say so explicitly and recommend from your own knowledge — but be clear you've left the curated list.
## The list
… install to load the full skill