Reka ui
Skill ulpi-io/plugin-marketplace/plugins/onmax/skills/reka-ui
Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration. Formerly Radix Vue.From its SKILL.md
npx -y skills add ulpi-io/plugin-marketplace --skill reka-uiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 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 file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.2 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Reka UI
Unstyled, accessible Vue 3 component primitives. WAI-ARIA compliant. Previously Radix Vue.
Current version: v2.8.0 (January 2026)
When to Use
- Building headless/unstyled components from scratch
- Need WAI-ARIA compliant components
- Using Nuxt UI, shadcn-vue, or other Reka-based libraries
- Implementing accessible forms, dialogs, menus, popovers
For Vue patterns: use vue skill
Available Guidance
| File | Topics |
|---|---|
| references/components.md | Component index by category (Form, Date, Overlay, Menu, Data, etc.) |
| components/*.md | Per-component details (dialog.md, select.md, etc.) |
Guides (see reka-ui.com): Styling, Animation, Composition, SSR, Namespaced, Dates, i18n, Controlled State, Inject Context, Virtualization, Migration
Loading Files
Consider loading these reference files based on your task:
- references/components.md - if browsing component index by category or searching for specific components
DO NOT load all files at once. Load only what's relevant to your current task.
For styled Nuxt components built on Reka UI: use nuxt-ui skill
Key Concepts
| Concept | Description |
|---|---|
asChild | Render as child element instead of wrapper, merging props/behavior |
| Controlled/Uncontrolled | Use v-model for controlled, default* props for uncontrolled |
| Parts | Components split into Root, Trigger, Content, Portal, etc. |
forceMount | Keep element in DOM for animation libraries |
| Virtualization | Optimize large lists (Combobox, Listbox, Tree) with virtual scrolling |
| Context Injection | Access component context from child components |
Installation
// nuxt.config.ts (auto-imports all components)
export default defineNuxtConfig({
modules: ['reka-ui/nuxt']
})
import { RekaResolver } from 'reka-ui/resolver'
// vite.config.ts (with auto-import resolver)
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({ resolvers: [RekaResolver()] })
]
})
Basic Patterns
<!-- Dialog with controlled state -->
<script setup>
import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from 'reka-ui'
const open = ref(false)
</script>
<template>
<DialogRoot v-model:open="open">
<DialogTrigger>Open</DialogTrigger>
<DialogPortal>
<DialogOverlay class="fixed inset-0 bg-black/50" />
<DialogContent class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-6 rounded">
<DialogTitle>Title</DialogTitle>
<DialogDescription>Description</DialogDescription>
<DialogClose>Close</DialogClose>
</DialogContent>
</DialogPortal>
</DialogRoot>
</template>
<!-- Select with uncontrolled default -->
<SelectRoot default-value="apple">
<SelectTrigger>
<SelectValue placeholder="Pick fruit" />
</SelectTrigger>
<SelectPortal>
<SelectContent>
<SelectViewport>
<SelectItem value="apple"><SelectItemText>Apple</SelectItemText></SelectItem>
<SelectItem value="banana"><SelectItemText>Banana</SelectItemText></SelectItem>
</SelectViewport>
</SelectContent>
</SelectPortal>
</SelectRoot>
<!-- asChild for custom trigger element -->
<DialogTrigger as-child>
<button class="my-custom-button">Open</button>
</DialogTrigger>
Recent Updates (v2.6.0-v2.8.0)
- New component: Rating (v2.8.0)
- ScrollArea: Added "glimpse" scrollbar mode (v2.8.0)
- PopperContent: Added
hideShiftedArrowprop (v2.8.0) - TimeField: Added
stepSnappingsupport (v2.8.0) - Breaking:
weekStartsOnnow locale-independent for date components (v2.8.0) - Virtualization:
estimateSizeaccepts function for Listbox/Tree (v2.7.0) - Composables:
useLocale,useDirectionexposed (v2.6.0) - Select:
disableOutsidePointerEventsprop on Content (v2.7.0) - Toast:
disableSwipeprop (v2.6.0)
Resources
- Reka UI Docs
- GitHub
- Nuxt UI (styled Reka components)
- shadcn-vue (styled Reka components)
Token efficiency: ~350 tokens base, components.md index ~100 tokens, per-component ~50-150 tokens
What ships with it: 53 files
196.4 KB alongside SKILL.md, 1 of them executable
components/
- accordion.md2.3 KB
- alert-dialog.md3.4 KB
- aspect-ratio.md411 B
- avatar.md1.3 KB
- calendar.md6.3 KB
- checkbox.md1.4 KB
- collapsible.md1.2 KB
- combobox.md8.9 KB
- config-provider.md455 B
- context-menu.md9.3 KB
- date-field.md2.7 KB
- date-picker.md10.1 KB
- date-range-field.md2.8 KB
- date-range-picker.md10.4 KB
- dialog.md3.2 KB
- dropdown-menu.md10.0 KB
- editable.md4.0 KB
- focus-scope.md550 B
- hover-card.md3.5 KB
- label.md318 B
- listbox.md5.0 KB
- menubar.md10.1 KB
- navigation-menu.md4.8 KB
- number-field.md2.1 KB
- pagination.md2.8 KB
- pin-input.md1.5 KB
- popover.md4.5 KB
- presence.md62 B
- primitive.md66 B
- progress.md1.4 KB
- radio-group.md1.9 KB
- range-calendar.md6.1 KB
- rating.md2.9 KB
- scroll-area.md1.8 KB
- select.md6.9 KB
- separator.md474 B
- slider.md2.2 KB
- splitter.md2.6 KB
- stepper.md3.2 KB
- components.md6.8 KB
13 more files not listed here. See all 53 in the repository.