agentsclimarketplace

Base ui

Skill DobroslavRadosavljevic/skills/skills/base-ui

Personal AI agent skills I use in development workflows.

Install
npx -y skills add DobroslavRadosavljevic/skills --skill base-ui

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build, review, migrate, or debug React interfaces that use Base UI (`@base-ui/react`) unstyled accessible primitives. Use when the user asks about Base UI docs, component anatomy, styling, composition, render props, forms, dialogs, drawers, popovers, menus, selects, comboboxes, autocomplete, tabs, toast, accessibility, TypeScript wrapper types, or replacing lower-level UI primitives with Base UI.

SKILL.md

4.0 KB, as published. Nobody here has run it

Base UI

Overview

Use Base UI as an unstyled, accessible React primitive layer. Keep semantics, focus, labels, keyboard behavior, and styling hooks intact while adapting the parts to the host app's design system.

Workflow

  1. Confirm the installed package and version from the project before changing code. Use @base-ui/react, not the retired @base-ui-components/react package name.
  2. Read the relevant reference before implementing:
  3. Fetch current official docs when exact prop names, event reasons, release behavior, or component APIs matter. Prefer Context7 library /mui/base-ui, Exa, or the page's .md URL from https://base-ui.com/llms.txt.
  4. Build from Base UI parts first, then wrap with local design-system components only through the documented render prop or thin wrappers that preserve props and refs.
  5. Verify keyboard behavior, focus return, accessible names, controlled/uncontrolled state, portal layering, animation exit behavior, and responsive/mobile behavior.

Implementation Rules

  • Import components from subpaths such as @base-ui/react/dialog, @base-ui/react/popover, and @base-ui/react/field.
  • Assemble the documented compound parts instead of inventing shortcuts. Most complex components need Root, triggers, portals, positioners or viewports, popups, labels/titles/descriptions, and close/actions parts.
  • Treat Base UI as unstyled. Apply local styling via className, state-aware className functions, style, data attributes, and CSS variables.
  • Keep accessible names explicit. Use Field.Label, component-specific labels, native labels, or aria-label/aria-labelledby depending on the control.
  • Preserve custom component composition rules: custom rendered elements must forward refs and spread all received props onto the underlying DOM element.
  • Prefer uncontrolled components unless the product needs external state. Control with open/value plus the matching onOpenChange/onValueChange handler.
  • Use Base UI event details deliberately. eventDetails.cancel() cancels internal state updates; eventDetails.allowPropagation() allows a normally stopped DOM event to bubble.
  • Do not copy Tailwind v4-only syntax blindly into Tailwind v3 projects. Convert unsupported utilities when the host project is on Tailwind v3.
  • Add portal setup when the app lacks it: isolate the app root and handle the iOS 26+ backdrop requirement described in the core patterns reference.

Verification Checklist

  • The rendered markup has the intended roles, labels, disabled states, and focus-visible styles.
  • Keyboard navigation covers arrows, Home/End, Enter/Space, Escape, tab order, and focus return where relevant.
  • Popup/drawer/dialog layers appear above the app and close correctly by trigger, close button, Escape, outside interaction, and route/unmount transitions.
  • Form controls submit the intended names/values and surface native, server, or external-library validation errors.
  • Animations use data-starting-style and data-ending-style or keepMounted correctly, and reduced-motion or no-motion behavior remains usable.
  • TypeScript wrappers expose the correct Component.Part.Props types and do not drop refs, handlers, or data attributes.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.