Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Pick Ui Library

ASecurity

Pick the right library for a given frontend task from a curated, opinionated list — numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts, state, styling, and more. Only runs when explicitly invoked; it does not trigger on its own.

382 stars
0 votes
0 copies
0 views
Added 10/7/2026
designreactspringgitapidatabasefrontendperformance

Works with

api

Security Analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned 10/7/2026

$npx -y skills add Asymmetric-al/core --skill pick-ui-library --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pick Ui Library?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Pick Ui Library
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/asymmetric-al-pick-ui-library/badge)](https://www.skillsdirectory.com/skills/asymmetric-al-pick-ui-library)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: pick-ui-library
description: Pick the right library for a given frontend task from a curated, opinionated list — numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts, state, styling, and more. Only runs when explicitly invoked; it does not trigger on its own.
disable-model-invocation: true
---

# Picking The Right Library

<!-- CORE-OVERLAY-START -->

## This repository (Asymmetric-al/core)

This lookup skill is explicit-only. Core already chose Base UI and the
`base-maia` style in `packages/ui`. Keep `disable-model-invocation: true`.
Reconcile this overlay after upstream refreshes before running
`bun run skills:sync`.

### Triggers

- The user explicitly asks which library to use, or invokes `pick-ui-library`.
- Do not auto-route ordinary UI implementation through this skill.

### Workflow

1. Check the relevant `package.json` first. Prefer libraries already installed.
2. Do not churn Base UI / `base-maia` for an upstream pick.
3. If the task is already covered by `packages/ui`, use that shared component.
4. Do not install Zustand. Local state is `useState` / `useReducer`. Shared UI
   state is React Context. Server state stays on TanStack Query or
   `@asym/database` collections.
5. Command menus use `@asym/ui` `Command`. OTP fields use `@asym/ui`
   `InputOTP`. Do not add another `cmdk` or `input-otp` package.

### Checklist

- [ ] Invocation was explicit.
- [ ] Existing Core dependencies and Base UI ownership are preserved.

<!-- CORE-OVERLAY-END -->

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

### UI components & primitives

| Task                                                                    | Library                                                                                                        |
| ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Unstyled, accessible UI components (dialogs, popovers, menus, selects…) | [base-ui](https://base-ui.com)                                                                                 |
| Command menus (⌘K palettes)                                             | `@asym/ui` `Command` (`packages/ui/components/shadcn/command.tsx`). Do not add another `cmdk` tree.            |
| Toasts / notifications                                                  | [Sonner](https://sonner.emilkowal.ski)                                                                         |
| OTP / verification code inputs                                          | `@asym/ui` `InputOTP` (`packages/ui/components/shadcn/input-otp.tsx`). Do not add another `input-otp` package. |
| Customizable GUIs / control panels                                      | [Leva](https://github.com/pmndrs/leva) — [dialkit](https://joshpuckett.me/dialkit) is an alternative           |

### Motion & visuals

| Task                                                               | Library                                      |
| ------------------------------------------------------------------ | -------------------------------------------- |
| General-purpose animation (springs, layout animations, enter/exit) | [motion](https://motion.dev) (Framer Motion) |
| Animating numbers (counters, prices, stats)                        | [NumberFlow](https://number-flow.barvian.me) |
| Animated text components                                           | [torph](https://torph.lochie.me/)            |
| 3D globes                                                          | [Cobe](https://cobe.vercel.app)              |
| Dynamic OG images (HTML/CSS → SVG/PNG)                             | [Satori](https://github.com/vercel/satori)   |
| Syntax highlighting                                                | [shiki](https://shiki.style)                 |

Reach for motion when you need springs, layout animations, exit animations, or gesture-driven values. A simple hover or fade doesn't need it — plain CSS transitions are the right tool there.

### Charts

| Task                                              | Library                                             |
| ------------------------------------------------- | --------------------------------------------------- |
| Real-time / streaming charts                      | [Liveline](https://github.com/benjitaylor/liveline) |
| General charts (static or interactive dashboards) | [recharts](https://recharts.org)                    |

The split: if data points arrive live and the chart scrolls with time, use Liveline. Everything else is recharts.

### Interaction & performance

| Task                                      | Library                          |
| ----------------------------------------- | -------------------------------- |
| Drag and drop                             | [dnd kit](https://dndkit.com)    |
| Virtualization (long lists, large tables) | [Virtuoso](https://virtuoso.dev) |

### State & styling

| Task                                           | Library                                                                                     |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------- |
| State management                               | Local `useState` / `useReducer`; React Context for shared UI state. Do not install Zustand. |
| Constructing `className` strings conditionally | [clsx](https://github.com/lukeed/clsx)                                                      |
| Type-safe, variant-driven styling for Tailwind | [cva](https://cva.style)                                                                    |
| Theme switching / dark mode (no flash on load) | [next-themes](https://github.com/pacocoursey/next-themes)                                   |

The styling split: clsx for ad-hoc conditional classes; cva when a component has real variants (size, intent, state) that deserve a typed API. They compose — cva uses clsx-style inputs internally.

## Common mismatches to catch

- **Toasts built by hand or with a modal library** → Sonner exists for exactly this.
- **A `<div>`-based dropdown/dialog with manual focus handling** → base-ui, which handles accessibility, focus trapping, and dismissal.
- **Animating a number by re-rendering text** → NumberFlow handles digit transitions properly.
- **Rendering a 1,000+ row list directly** → Virtuoso before reaching for pagination hacks.
- **A `useState`-per-component web of props for shared state** → lift with `useState` / `useReducer`, or React Context for shared UI state. Do not install Zustand.
- **Template-literal className ternaries three conditions deep** → clsx (or cva if it's variant-shaped).

Attribution

Asymmetric-alAsymmetric-al
View sourceSee grades on GitHubMore from Asymmetric-al →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Responsive Design

Implement modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first breakpoint strategies. Use when building adaptive interfaces, implementing fluid layouts, or creating component-level responsive behavior.

401992 votes

Mermaid Diagrams

Creating and refining Mermaid diagrams with live reload. Use when users want flowcharts, sequence diagrams, class diagrams, ER diagrams, state diagrams, or any other Mermaid visualization. Provides best practices for syntax, styling, and the iterative workflow using mermaid_preview and mermaid_save tools.

2132 votes

sleek-design-mobile-apps

Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.

5821 votes

swiftui-design-skill

SwiftUI frontend visual design skill. Creates beautiful, distinctive iOS/macOS interfaces that avoid generic AI slop patterns. Covers design direction, layout systems, typography, color, spacing, brand integration, and design review. Use when designing new SwiftUI views, reviewing UI quality, creating iOS prototypes, choosing visual styles, improving app aesthetics, or when the UI looks generic or AI-generated.

1801 votes

Ios Hig

Use when designing iOS interfaces, implementing accessibility (VoiceOver, Dynamic Type), handling dark mode, ensuring adequate touch targets, providing animation/haptic feedback, or requesting user permissions. Apple Human Interface Guidelines for iOS compliance.

761 votes
View all in design →