Communitygithub.com

nkurunziza-saddy/pick-library

Escolhe a biblioteca certa para uma tarefa de frontend a partir de uma lista curada e com status verificado, evitando reinventar a roda ou instalar um pacote abandonado. Use quando o usuário perguntar "o que devo usar para…", "existe uma biblioteca para…", ou nomear um pacote, e quando você estiver prestes a construir um toast, menu de comando, gaveta, seletor de data, tabela, lista virtual, arrastar e soltar, gráfico, entrada OTP, número animado, alternador de tema, validação de formulário…

O que é pick-library?

Esta skill, chamada 'Pick a library', orienta o assistente de IA a selecionar a biblioteca frontend ideal para uma tarefa específica, seguindo uma ordem de decisão rigorosa. Ela prioriza o uso do que já está instalado no projeto (lendo o `package.json`) ou de APIs nativas da plataforma, evitando dependências desnecessárias. Caso essas opções não atendam, a skill consulta um catálogo curado (`references/catalogue.md`) para encontrar a biblioteca recomendada e verifica seu status de manutenção com `npm view` antes de sugerir. A skill é útil porque automatiza a decisão de escolha de pacotes, prevenindo a instalação de bibliotecas desatualizadas, abandonadas ou que duplicam funcionalidades existentes. Ela é compatível com assistentes como Claude Code, Cursor e Codex, e garante que a recomendação final inclua o propósito, quando não usar, licença e status atual da biblioteca.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Escolha uma biblioteca

Antes de qualquer decisão, aplique product-ui §1 (o diário de gosto e precedência) e §5 (qual skill é responsável pelo quê). Uma regra do diário que nomeie uma biblioteca tem precedência.

Quando invocado sem uma tarefa, peça uma em uma única linha e pare.

Ordem de decisão

Percorra estas etapas de cima para baixo. Pare na primeira que resolver completamente a tarefa.

  1. O que já está instalado? Leia o package.json. Se uma biblioteca listada ou concorrente já fizer o trabalho, use-a. Aponte uma escolha melhor em uma linha e nunca troque uma dependência sem ser solicitado. Por quê: uma segunda biblioteca para a mesma tarefa duplica o bundle e as convenções.
  2. A plataforma resolve completamente? Consulte a tabela abaixo. Por quê: a plataforma não tem custo de bundle, caminho de atualização nem risco de abandono.
  3. A lista tem uma entrada? Abra references/catalogue.md, encontre a categoria e pegue a entrada marcada como Default. Recomende uma biblioteca, não um menu.
  4. Essa entrada é mantida? Verifique a coluna de status. Se disser Unmaintained, nunca a recomende; use a substituição nomeada na entrada.
  5. Nada se encaixa? Diga "esta tarefa não está na lista", então escolha com base no seu próprio conhecimento e execute a verificação abaixo nela. Por quê: um pacote não verificado é a maneira usual de código abandonado entrar.

"Resolver completamente" significa que todos os requisitos da tarefa são atendidos, incluindo comportamento de teclado, foco e leitor de tela. Se um requisito falhar, vá para o passo 3.

Plataforma primeiro

TarefaResposta da plataformaMude para uma biblioteca quando
Modal<dialog> com showModal()Você precisar de diálogos empilhados com saída animada nos navegadores que você suporta, ou gerenciamento de foco não modal
Popover, painel suspenso, cartão tipo tooltipAtributo popover, mais posicionamento CSS anchor quando suportadoVocê precisar de virada de colisão em todos os lugares, ou um menu com foco circulante
Accordion, disclosure<details name>Você precisar de estado controlado ou altura animada além de interpolate-size
Modo escuro sem alternadorprefers-color-scheme, color-scheme, light-dark()O usuário escolher o tema manualmente e ele precisar persistir
Entrada de data, hora, mês<input type="date"> e seus similaresVocê precisar de intervalos, um calendário personalizado ou uma aparência consistente
Formatação de número, tempo relativo, plurais, listasIntl.NumberFormat, RelativeTimeFormat, PluralRules, ListFormatNunca. Sempre use Intl
Código único, campo único<input autocomplete="one-time-code" inputmode="numeric">Você precisar de uma caixa por dígito
Movimento de entrada, saída e layoutTransições CSS, @starting-style, WAAPI, View TransitionsVocê precisar de molas, gestos ou animação de layout interrompível
Validação de formulárioValidação de restrição (required, pattern, setCustomValidity)Você precisar de regras entre campos ou assíncronas, ou um esquema tipado
Select com poucas opções<select>Você precisar de pesquisa, seleção múltipla ou linhas ricas
Cabeçalhos fixos, scroll snap, listas preguiçosasCSS position: sticky, scroll-snap, content-visibility: autoA lista tiver 1.000+ linhas

Pares

QuebradoCorrigidoPor quê
Um modal <div> com uma armadilha de foco escrita à mão<dialog> e showModal()Armadilha de foco, Esc e fundo inerte vêm de graça
npm i react-beautiful-dnd@dnd-kit/reactO primeiro está obsoleto e sem manutenção
npm i vaul para uma gavetaBase UI Drawer, ou <dialog> estilizado como folhaO próprio README do vaul diz que está sem manutenção
Um toast construído a partir de uma biblioteca de modalBase UI ToastEmpilhamento, pausa ao passar o mouse e deslizar já estão resolvidos
setInterval contando um númeroNumberFlowDígitos giram com layout correto e movimento reduzido
5.000 <tr> renderizadas de uma vezTanStack Virtual sob TanStack Table, ou Virtuoso para listasO custo de renderização cresce com as linhas, não com a viewport
new Intl.NumberFormat substituído por um pacote de moedaIntl.NumberFormatRegras de localidade estão no navegador

Verifique antes de recomendar

Execute isto em qualquer pacote, listado ou não. Um status do catálogo pode ser mais antigo que sua sessão.

npm view <pkg> time.modified license version
  • Mantido: última publicação nos últimos 12 meses, ou um push no repositório nos últimos 6 meses com uma versão publicada.
  • Lento: completo em funcionalidades, sem publicação por 12–24 meses, repositório ainda respondendo a issues. Utilizável. Diga que é lento.
  • Sem manutenção: arquivado, um README que diz isso, ou sem publicação por 24+ meses com falhas abertas. Nunca recomende.
  • Leia a licença. Informe qualquer coisa que não seja MIT, ISC, BSD ou Apache-2.0 (MPL-2.0 e AGPL precisam de uma nota).
  • Verifique as dependências de pares em relação à versão do React do projeto.

Formato da resposta

Um bloco, sem menu:

Base UI Toast para toasts. Ele empilha, pausa ao passar o mouse e desliza. Não para nada que precise de ação; isso permanece na tela. MIT, mantido. npm i @base-ui/react.

Sempre forneça: para o que serve, quando não usar, licença, status com a data que você viu.

Antes de terminar

  • O package.json foi lido e a escolha não duplica uma biblioteca instalada.
  • A resposta da plataforma foi verificada e, se ignorada, a razão é uma cláusula.
  • O npm view foi executado na escolha e o status na resposta é o de hoje, não o do catálogo.
  • Nada marcado como Unmaintained é recomendado.

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…

Habilidades Relacionadas