MCPInstall

vuetify0

Use when building Vue 3 UI with @vuetify/v0, or before hand-rolling behavior it already ships, such as a button, dialog, popover, setTimeout timer, selection, form, registry, virtual list, focus handling, snackbar, theme, RTL, breakpoints, an SSR window check, or a WAI-ARIA compound, along with the rest of its components, composables, and utilities.

Installs
723
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/vuetifyjs/0 --skill vuetify0
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads vuetify0 automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Vuetify0

Headless Vue 3 components and composables. Behavior and ARIA only.

<!-- @generated:counts --> <!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

48 components, 74 composables, 27 utilities.

<!-- @generated:counts:end -->

Install

pnpm install @vuetify/v0
import { createSelection, useBreakpoints } from '@vuetify/v0'
import { Tabs, Dialog } from '@vuetify/v0/components'

In this repo, import internals from #v0/ (#v0/composables, #v0/utilities, #v0/constants/globals). Published imports are @vuetify/v0, @vuetify/v0/components, @vuetify/v0/utilities, and @vuetify/v0/constants.

Most use* composables run without a plugin and fall back to defaults. useDate does not: install createDatePlugin with an adapter, or the call throws. For app-wide theme, locale, storage, or breakpoints, install createThemePlugin, createLocalePlugin, createStoragePlugin, or createBreakpointsPlugin.

Selection and a button. Neither needs a plugin.

<script setup lang="ts">
  import { createSelection } from '@vuetify/v0'
  import { Button } from '@vuetify/v0/components'

  const filters = createSelection({ multiple: true })

  filters.register({ id: 'open' })
</script>

<template>
  <Button.Root @click="filters.toggle('open')">
    {{ filters.selectedIds.has('open') ? 'Open' : 'Closed' }}
  </Button.Root>
</template>

Decision table

Match the first column. If a row fits, use that API. The rows are the usual cases. The rest of the components, composables, and utilities are listed at the end of this skill.

ProblemUseCategory
Native <button> (click, submit, toggle)Buttonactions
Overlay, dialog, or modalDialogdisclosure
Popover or anchored overlayPopoverdisclosure
Inline status / live-region messageAlertsemantic
Single-choice state (tabs, theme picker)createSingleselection
Multi-choice state (filters, tag pickers)createSelectionselection
Select-all with tri-statecreateGroupselection
Tree / nested selection (treeview, menus)createNestedselection
Wizard / carousel step trackingcreateStepselection
Id-based value store (shared across sub-components)createModelselection
Form with async validation + dirty trackingcreateForm + createValidationforms
Slider / range / knob statecreateSliderforms
Autocomplete / comboboxcreateComboboxforms
Spin-button numeric inputcreateNumberField / createNumericforms
One-time-password / verification-code valuecreateOtpforms
Paginated or virtualized listcreatePagination, createVirtualdata
Sortable / filterable tableDataTable / createDataTable, createFilterdata
Editable / spanning data gridDataGrid / createDataGriddata
Breadcrumb trail derived from routecreateBreadcrumbssemantic
Overflow / responsive menu (hides overflowing items)createOverflowsemantic
Type-safe provide/injectcreateContextfoundation
Reactive registry of ids → valuescreateRegistryregistration
Auto-dismissing queue (snackbars, toasts)createQueueregistration
Undo/redo historycreateTimelineregistration
Design-token graph (theme, spacing scales)createTokensregistration
Popover, tooltip, or menu positionusePopoversystem
Enter/leave animation orchestrationusePresencesystem
Focus containment (non-native dialog, drawer)useFocusTrapsystem
Roving tabindex (list, menubar)useRovingFocussystem
Virtual focus (combobox listbox)useVirtualFocussystem
Click outside / keyboard shortcut / event listeneruseClickOutside, useHotkey, useEventListenersystem
Resize, intersection, or mutation observationuseResizeObserver, useIntersectionObserver, useMutationObserversystem
rAF loop or setTimeout with pause/resumeuseRaf, useTimersystem
Responsive breakpointsuseBreakpoints, useMediaQueryplugins
Localized strings + date/number formatuseLocale, useDateplugins
Theme (light/dark/custom palette)useThemeplugins
RTL direction awarenessuseRtlplugins
z-index stacking for overlaysuseStackplugins
Notifications / snackbar queue pluginuseNotificationsplugins
Feature flags / permission checksuseFeatures, usePermissionsplugins
Persisted state (localStorage / sessionStorage)useStorageplugins
Structured logging with adaptersuseLoggerplugins
SSR-safe mount detectionuseHydrationplugins

Rules

Utilities

Check these before writing a helper. In-repo: #v0/utilities. Published: @vuetify/v0/utilities.

  • Type guards: isFunction, isString, isNumber, isBoolean, isObject, isArray, isNull, isUndefined, isNullOrUndefined, isPrimitive, isSymbol, isNaN, isElement
  • mergeDeep, clamp, range, useId

Browser checks

IN_BROWSER, SUPPORTS_TOUCH, SUPPORTS_MATCH_MEDIA, SUPPORTS_OBSERVER, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MUTATION_OBSERVER.

In-repo: #v0/constants/globals. Published: @vuetify/v0/constants. Use these instead of typeof window.

Reactivity

  • shallowRef for primitives
  • ref for objects and arrays
  • toRef for derived values
  • computed only to cache expensive work

Compound components

Root owns the state. Children are named sub-components and read it through createContext.

<script setup lang="ts">
  import { Tabs } from '@vuetify/v0/components'
  import { shallowRef } from 'vue'

  const active = shallowRef('overview')
</script>

<template>
  <Tabs.Root v-model="active">
    <Tabs.List>
      <Tabs.Item value="overview">Overview</Tabs.Item>
      <Tabs.Item value="details">Details</Tabs.Item>
    </Tabs.List>
    <Tabs.Panel value="overview">Overview content</Tabs.Panel>
    <Tabs.Panel value="details">Details content</Tabs.Panel>
  </Tabs.Root>
</template>
<!-- @generated:components --> <!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

Available components:

  • Primitives: AspectRatio (stable), Atom (stable), Portal, Presence
  • Providers: Group (stable), Locale, Scrim, Selection (stable), Single (stable), Step (stable), Theme (stable)
  • Actions: Button, Toggle (stable)
  • Forms: Checkbox (stable), Combobox, Form, Input, NumberField, Otp, Radio (stable), Rating, Select, Slider, Switch (stable)
  • Disclosure: AlertDialog, Collapsible (stable), Dialog, ExpansionPanel, Menu, Popover, Tabs (stable), Tooltip, Tour, Treeview
  • Semantic: Alert, Avatar, Breadcrumbs, Carousel, Image, Overflow, Pagination, Progress, Snackbar, Splitter
  • Data: DataGrid, DataTable, Kanban, Virtualizer

Planned (not yet exported — do not import):

  • DatePicker, DateRangePicker, TimePicker
<!-- @generated:components:end -->

More compound examples: references/component-examples.md.

Vuetify MCP

When the Vuetify MCP server is connected, use it for a guide or a release note:

  • vuetify-mcp:get_vuetify0_component_list
  • vuetify-mcp:get_vuetify0_composable_list
  • vuetify-mcp:get_vuetify0_component_guide
  • vuetify-mcp:get_vuetify0_composable_guide
  • vuetify-mcp:get_vuetify0_installation_guide

Resources

  • Docs: https://0.vuetifyjs.com
  • API reference: references/REFERENCE.md
  • Selection patterns: references/selection-patterns.md
  • Anti-patterns: references/anti-patterns.md
  • Component vs composable: references/layer-decisions.md
  • Authoring a compound: references/authoring-guide.md
<!-- @generated:api --> <!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

Full API surface

Public composables and utilities. (mature), (stable), and (draft) are marked. Unmarked entries are preview.

Composables

Foundation:

  • createContext — Type-safe dependency injection factory built on Vue's provide/inject. Shares state across component trees without prop drilling. (stable)
  • createPlugin — Factory for creating Vue plugins with typed dependency injection and lifecycle hooks. (stable)
  • createTrinity — Generates a typed [useX, provideX, defaultX] tuple for Vue's provide/inject dependency injection pattern. (stable)

Registration:

  • createQueue — FIFO queue for time-based collections with automatic timeout removal and pause/resume support.
  • createRegistry — Foundation for ordered, keyed collections. Items are registered with IDs and indexes, and can be looked up by ID, index, or value. (stable)
  • createTimeline — Bounded undo/redo history built on createRegistry with a configurable size limit.
  • createTokens — Design token registry with hierarchical collections, alias resolution, and namespace support.

Forms:

  • createCombobox — Low-level combobox coordinator for custom implementations. Most users should use the Combobox component instead.
  • createDatePicker — Headless date state with calendar-grid geometry, single-date and range modes, preset ranges, min/max bounds, and disabled-date rules. Composable-first, without an @internationalized/date dependency. (draft)
  • createForm — Coordinates validation across multiple inputs. Provides submit(), reset(), and aggregate validity state.
  • createInput — Shared form field primitive with validation state, ARIA ID generation, and automatic form registration.
  • createNumberField — Numeric value with locale-aware formatting, step snapping, min/max/step bounds, and parse/commit for text input.
  • createNumeric — Pure numeric math for bounded values with step snapping, range clamping, and floating-point precision correction.
  • createOtp — Fixed-length one-time-password or verification-code value with pattern-gated entry and completion detection.
  • createRating — Bounded number with discrete items. Give it a size, get items to iterate with full/half/empty state. Half-step support for 0.5 increments.
  • createSlider — Slider state composable for single-thumb, range, and multi-thumb sliders. Handles value math, step snapping, and percentage conversion.
  • createTimePicker — Segmented time value with hour, minute, and second fields, 12/24-hour modes, meridiem handling, step snapping, and min/max bounds. (draft)
  • createValidation — Per-input validation with reactive rules, async validation, and Standard Schema support.

Selection:

  • createGroup — Multi-selection with tri-state (mixed/indeterminate) support for checkbox trees, grouped toggles, and any pattern where items can be partially selected. (stable)
  • createModel — Reactive value store that wraps a ref with two-way selection binding. (stable)
  • createNested — Hierarchical tree management built on createGroup, with parent-child relationships, open/close state, and pluggable traversal strategies. (stable)
  • createSelection — A composable for managing the selection of items in a collection with automatic indexing and lifecycle management. (stable)
  • createSingle — Extends createSelection to enforce single-item selection, automatically clearing the previous selection. (stable)
  • createStep — Extends createSingle with bounded or circular navigation. Built for wizards, multi-step forms, and onboarding flows. (stable)

Data:

  • createDataGrid — A headless data grid with column layout, cell editing, row ordering, and row spanning.
  • createDataTable — Composable data table built on v0 primitives. Composes sorting, filtering, pagination, selection, and expansion into a single pipeline.
  • createFilter — A composable for filtering arrays of items based on search queries, supporting both primitive values and complex objects with customizable filtering logic.
  • createKanban — Two-level board state for columns of cards, with column reorder, in-column reorder, and a cross-column transfer primitive.
  • createPagination — A lightweight composable for managing pagination state with navigation methods and computed visible page items.
  • createSortable — Ordered-list state with move, swap, and reorder mutations.
  • createVirtual — Virtual scrolling composable for efficiently rendering large lists by only rendering visible items.

Semantic:

  • createBreadcrumbs — A composable that extends createSingle for breadcrumb navigation with automatic path truncation.
  • createOverflow — Computes how many items fit in a container based on available width, for responsive truncation in pagination, breadcrumbs, and similar UIs.
  • createProgress — A composable for tracking progress across one or more segments, with percentage computation and indeterminate state detection.

Plugins:

  • useBreakpoints — Reactive viewport detection for building responsive layouts with named breakpoints. (stable)
  • useDate — Date manipulation using the Temporal API with locale-aware formatting and adapter support.
  • useFeatures — Manage feature flags and variations across your application.
  • useHydration — Control SSR hydration timing to prevent mismatches and optimize client-side rendering.
  • useLocale — i18n plugin with message translation, number formatting, and locale switching.
  • useLogger — Application logging with configurable levels, filtering, and swappable adapters for popular logging libraries.
  • useNotifications — Notification lifecycle management with severity levels, state mutations, toast queuing, and auto-dismiss.
  • usePermissions — Role-based access control with actions, subjects, and context-aware conditions.
  • useReducedMotion — Respect or override the user's prefers-reduced-motion setting, with a reactive flag and a body data attribute for CSS-only consumers.
  • useRtl — Right-to-left text direction management with reactive state and subtree overrides.
  • useRules — Validation rule management with Standard Schema support and custom aliases.
  • useStack — Overlay z-index coordinator with automatic stacking order and parent-child nesting support.
  • useStorage — Reactive storage with automatic serialization, caching, and SSR-safe operations. (stable)
  • useTheme — Theme management with multiple themes, CSS custom properties, and token alias resolution. (stable)
  • useTooltip — Shares tooltip open/close/skip delay defaults across a region, so nearby tooltips open instantly once one is already open.
  • useTour — Headless guided-tour sequencer: step collection, activator registry, form-gated navigation, programmatic activate/deactivate, and per-step enter/leave/completed handlers plus events. Built on createStep, createRegistry, and createForm.

System:

  • useClickOutside — A composable for detecting clicks outside of specified element(s) with automatic cleanup.
  • useDelay — Schedule open and close transitions with start, stop, pause, and resume controls and a reactive view of the pending delay.
  • useDragDrop — Headless drag-and-drop primitive. Owns two registries — draggables and zones — plus the active-drag state.
  • useEventListener — A composable for handling DOM events with automatic cleanup on component unmount.
  • useFocusTrap — Confines Tab and Shift+Tab to a root element, focuses into it on activate, and restores the previously focused element on deactivate.
  • useHotkey — A composable for handling hotkey combinations and sequences with platform-aware modifiers and automatic cleanup.
  • useImage — Tracks image loading state as a reactive state machine with idle, loading, loaded, and error states.
  • useIntersectionObserver — A composable for detecting when elements enter or leave the viewport using the Intersection Observer API with automatic cleanup. (stable)
  • useLazy — A composable for deferring content rendering until first activation, with optional reset on deactivation.
  • useMediaQuery — A composable for reactive CSS media query matching with automatic cleanup.
  • useMutationObserver — A composable for detecting DOM changes using the Mutation Observer API with automatic cleanup. (stable)
  • usePopover — Native popover API with a pluggable positioning adapter. Defaults to CSS-anchor positioning; swap in FloatingUIPopoverAdapter (or any PopoverAdapter) per instance or app-wide via createPopoverPlugin.
  • usePresence — Animation-agnostic mount lifecycle management.
  • useRaf — Throttles callbacks to the next animation frame with cancel-then-request deduplication. Cleans up automatically on scope disposal.
  • useResizeObserver — A composable for detecting element size changes using the Resize Observer API with automatic cleanup. (stable)
  • useRovingFocus — Keyboard navigation for composite widgets where arrow keys move focus between items, skipping disabled ones.
  • useTimer — A reactive timer composable with pause/resume support and remaining time tracking.
  • useToggleScope — A composable for conditionally managing Vue effect scopes based on reactive boolean conditions with automatic cleanup.
  • useTypeahead — Prefix-matches typed characters against a list, accumulates them for one second, and cycles on a repeated letter.
  • useVirtualFocus — A composable for keyboard navigation where DOM focus stays on a single control element while a visual highlight moves across items.

Reactivity:

  • useProxyModel — A composable for syncing refs bidirectionally with selection contexts, enabling seamless v-model integration with selection state. (stable)
  • useProxyRegistry — A reactive proxy wrapper for registry collections that automatically updates refs when items are registered or unregistered.

Transformers:

  • toArray — Coerces any value — including null and undefined — to an array. (stable)
  • toElement — Resolves refs, getters, raw DOM elements, or Vue component instances to a single Element | undefined. (stable)
  • toHighlight — Splits text into matched and unmatched chunks, returning a plain HighlightChunk[] for search-term highlighting.
  • toReactive — Converts a MaybeRef object to a reactive proxy with automatic ref unwrapping and Map/Set support.

Utilities

  • apca
  • clamp — Clamps a value between a minimum and maximum (stable)
  • findMatchRanges — Finds match ranges of a query in a string, optionally folding accents on either side.
  • foreground
  • getActiveElement — Walks open shadow roots to the deepest focused element. Returns null under SSR.
  • hexToRgb
  • isArray — Checks if a value is an array (mature)
  • isBoolean — Checks if a value is a boolean (mature)
  • isElement — Checks if a value is a DOM Element (mature)
  • isFunction — Checks if a value is a function (mature)
  • isNaN — Checks if a value is NaN (Not a Number) (mature)
  • isNull — Checks if a value is null (mature)
  • isNullOrUndefined — Checks if a value is null or undefined (mature)
  • isNumber — Checks if a value is a number (mature)
  • isObject — Checks if a value is a plain object (excludes null and arrays) (mature)
  • isPrimitive — Checks if a value is a primitive (string, number, or boolean) (stable)
  • isString — Checks if a value is a string (mature)
  • isSymbol — Checks if a value is a symbol (mature)
  • isThenable — Checks if a value is a thenable (any object with a .then method).
  • isUndefined — Checks if a value is undefined (mature)
  • isV0Error — Type guard for v0-thrown errors.
  • mergeDeep — Deeply merges source objects into a target object, returning a new object (stable)
  • pxToNumber — Parses a CSS pixel length into a number, returning a caller-supplied fallback when the length does not parse.
  • range — Creates an array of sequential numbers (mature)
  • rgbToHex
  • useId — Generates a unique ID, using Vue's useId when in component context (stable)
  • V0Error — Structured error thrown by v0 internals.
<!-- @generated:api:end -->

FAQ

What does the vuetify0 skill do?

Use when building Vue 3 UI with @vuetify/v0, or before hand-rolling behavior it already ships, such as a button, dialog, popover, setTimeout timer, selection, form, registry, virtual list, focus handling, snackbar, theme, RTL, breakpoints, an SSR window check, or a WAI-ARIA compound, along with the rest of its components, composables, and utilities.

How do I install vuetify0?

Run npx skills add https://github.com/vuetifyjs/0 --skill vuetify0 in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/vuetify0/ (personal) or .claude/skills/vuetify0/ (project).

Which AI agents can use vuetify0?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is vuetify0 safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains vuetify0?

It is published by vuetifyjs in vuetifyjs/0. It has 723 recorded installs.

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs