shadcn/ui
SkillDev toolsInstall, compose, and adapt shadcn/ui with registry, Base UI, Radix, React Aria, theming, forms, tables, charts, sidebars, and accessible components. Use when components. is present, shadcn components are already embedded, or shadcn is explicitly requested; always treat copied code as code d
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the shadcn/ui skill
What this skill tells your AI
The instructions your AI receives, as published by promovaweb/specsfy in specialists/specsfy-specialist-shadcn-ui/SKILL.md and read by ahel’s review.
Para interfaces React e Tailwind da Promovaweb, esta skill prepara as
primitives, components.json, aliases e tema. Quando a tela precisar de CRUD
ou composição de produto, carregue $specsfy-specialist-reui em conjunto: ela
instala primeiro componentes gratuitos ReUI sobre esta base.
Quando usar
- Acionar quando o projeto tem
components.jsonou componentes shadcn já incorporados, ou quando a pessoa pede explicitamente um componente shadcn/ui (Data Table, Sidebar, Dialog, Form, Chart). - Acionar também para identificar se o shadcn/ui do projeto usa Base UI, Radix ou React Aria antes de compor um padrão (dashboard, formulário, overlay).
- Não acionar para o sistema de tokens/utilitários Tailwind em si; combinar
com
$specsfy-specialist-tailwind-csspara isso. - Não acionar quando o projeto usa uma biblioteca de componentes visual
diferente (galeria copiável não-Radix); nesse caso avaliar
$specsfy-specialist-react-ui-componentscom$specsfy-specialist-ui-design. - Combinar com
$specsfy-specialist-web-accessibilitypara auditoria aprofundada além da acessibilidade já garantida pelo primitive Radix.
Fluxo
- Confirmar framework, versão do shadcn/ui,
components.json(aliases de import, estilo, CSS variables) e o registry configurado antes de adicionar qualquer componente. - Identificar a base de primitives em uso: começar pelos imports dos
componentes shadcn já incorporados e confirmar no manifest. Classificar
@base-ui/reactcomo Base UI,radix-uiou@radix-ui/react-*como Radix ereact-aria-componentsou@react-aria/*como React Aria. Se os componentes usarem mais de uma base ou os sinais não bastarem, registrar a base por arquivo e não adicionar, migrar ou reescrever primitives até esclarecer a divergência. - Auditar os componentes já incorporados no projeto e suas customizações locais antes de adicionar um novo, para não duplicar ou divergir de um componente equivalente já existente.
- Escolher o primitive da base identificada pelo comportamento e semântica exigidos (diálogo modal vs popover vs sheet lateral), não pela aparência mais próxima do design.
- Adicionar o menor conjunto de componentes necessário e revisar o código gerado linha a linha — ele é copiado para o projeto e passa a ser mantido por quem o adicionou.
- Adaptar tokens, variantes (
cva) e composição ao design do projeto sem remover roles,aria-*, gestão de foco ou atalhos de teclado oferecidos pela base identificada. - Construir todos os estados reais do componente (loading, empty, error, disabled, permission denied), não apenas o estado nominal mostrado na documentação.
- Testar teclado, foco, responsividade, submissão de formulário e os dois temas (claro/escuro) antes de considerar o componente pronto.
- Atualizar
INTERFACE.mdpara cada primitive ou bloco criado, alterado ou reaproveitado, incluindo arquivo, origem, finalidade, API, estados, acessibilidade, consumidores e orientação de extensão.
Padrões
- Não tratar shadcn/ui como dependência opaca versionada num pacote; o código copiado pertence ao projeto e qualquer bug ou desvio de acessibilidade nele é responsabilidade do time, não "responsabilidade da lib".
- Usar somente APIs, atributos de estado e composição próprios da base identificada. Base UI, Radix e React Aria expõem contratos semelhantes, mas seus imports, props e atributos não são intercambiáveis.
- Preservar roles ARIA, labels, gestão de foco (foco inicial, trap e retorno ao trigger) e Escape quando a base os oferece; customização visual não pode remover esse comportamento.
- Centralizar tokens de tema (CSS variables) num único lugar; nunca editar dezenas de componentes individualmente para trocar uma cor de marca ou ajustar o tema.
- Em projetos React da Promovaweb, usar shadcn/ui junto do ReUI: o primeiro atende primitives e o segundo atende composições gratuitas de produto. Toda tela é uma composição de componentes React, não um arquivo monolítico.
- Compor um Data Table para o caso de uso real (colunas, ordenação, filtro, seleção, paginação necessários) em vez de importar um componente universal com todas as capacidades possíveis "por garantia".
- Fazer a Sidebar responder a viewport (colapsar em mobile), densidade de navegação e destacar a rota atual de forma perceptível.
- Validar todo formulário também no servidor (a validação client-side é UX,
não segurança) e associar cada mensagem de erro ao campo correspondente
via
aria-describedby/label. - Atualizar um componente já customizado apenas depois de comparar o diff
entre a versão nova do registry e as customizações locais — um
addingênuo pode sobrescrever uma correção de acessibilidade feita anteriormente.
Antipadrões
- Assumir que todo shadcn/ui usa Radix porque o componente tem a mesma API pública. Isso introduz imports e props incompatíveis com Base UI ou React Aria.
- Importar um Dialog do shadcn/ui e remover o
aria-describedby/título por achar "redundante visualmente" — quebra o anúncio do leitor de tela sobre o que o diálogo faz. - Editar o arquivo gerado do componente para "consertar" um estilo em vez de ajustar o token/variant central — a próxima pessoa que atualizar o componente perde a correção sem saber que ela existia.
- Tratar o Data Table como componente único e genérico para toda tabela do sistema, acumulando props condicionais até virar impossível de entender — compor uma tabela por caso de uso a partir dos blocos do registry.
- Validar formulário só no cliente (schema no front) e nunca repetir a validação no servidor — qualquer requisição direta ao endpoint ignora a validação do formulário.
- Rodar
shadcn addsobre um componente já customizado sem diff prévio, perdendo silenciosamente ajustes de acessibilidade ou de negócio feitos localmente.
Validação
- Rodar typecheck, lint, testes e build do projeto após adicionar ou modificar um componente.
- Percorrer a navegação completa por teclado: abrir/fechar overlay, focus trap dentro do Dialog/Sheet, e retorno do foco ao elemento que o abriu.
- Testar em mobile e desktop, tema claro e escuro, zoom alto e conteúdo longo/truncado nas células de tabela e nos rótulos.
- Exercitar os estados de tabela (vazio, carregando, erro, com dados), gráfico (sem dado, com dado), formulário (pendente, erro, sucesso, reabrir após falha preservando valores) e sidebar (colapsada, expandida, rota ativa) realmente usados pela tela.
- Não declarar um componente "acessível" só porque veio do shadcn/ui; qualquer customização precisa da comprovação acima antes da afirmação.
Skills relacionadas
$specsfy-specialist-astrogoverna integração e hidratação quando primitives React são usadas como ilha Astro.$specsfy-specialist-tailwind-csspara o sistema de tokens e utilitários que sustenta o tema dos componentes.$specsfy-specialist-reactpara a lógica de estado, effects e testes do componente React por trás de cada primitive shadcn/ui.$specsfy-specialist-typescriptpara tipar variantescvae schemas de formulário (zod+react-hook-form).$specsfy-specialist-nextjsquando o formulário submete para uma Server Action — validação e autorização server-side pertencem a essa skill.$specsfy-specialist-react-ui-componentse$specsfy-specialist-ui-designquando o projeto precisa de uma galeria de referências visuais mais ampla ou de definições de composição de página.$specsfy-specialist-web-accessibilitypara auditoria além do que a base instalada oferece por padrão.$specsfy-specialist-application-securitypara validação de formulário no servidor e autorização de mutations expostas por Server Actions/endpoints.
Leia references/primitives.md antes de alterar um componente shadcn/ui para identificar a base instalada. Leia references/standards.md para registry, padrões de dashboard, Data Table, formulário, overlay e chart, com fontes oficiais.
Signals
- GitHub stars
- 79
- Forks
- 37
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
specsfy-specialist-shadcn-ui- Source
- github.com/promovaweb/specsfy