PluginBench
Skill
Official
Review
Audit score 70

nuxt-ui

nuxt/ui

125+ accessible Vue components with Tailwind CSS theming for Nuxt, Vue, Laravel, and AdonisJS.

What is nuxt-ui?

Nuxt UI is a component library built on Reka UI and Tailwind CSS that provides pre-built, accessible Vue components with semantic color theming. Use it when building interfaces, customizing brand themes, creating forms, or composing layouts like dashboards, documentation sites, and chat interfaces.

  • Access 125+ accessible Vue components ready to use
  • Customize themes with semantic colors and brand-specific variants
  • Build forms with validation, field layout, and error handling
  • Compose complex layouts (dashboards, docs, chat, editors) from layout patterns
  • Use an MCP server to query component APIs, props, slots, and examples
  • Search and integrate Iconify icons with the `i-{collection}-{name}` format

How to install nuxt-ui

npx skills add null --skill nuxt-ui
Prerequisites
  • Node.js and a package manager (pnpm, npm, or yarn)
  • Tailwind CSS configured in your project
  • For Nuxt: Nuxt 3+; for Vue: Vite setup with @vitejs/plugin-vue
Claude Code
Cursor
Windsurf
Cline

How to use nuxt-ui

  1. 1.Install @nuxt/ui and tailwindcss via your package manager
  2. 2.Configure Nuxt or Vite to use the @nuxt/ui module or plugin
  3. 3.Import the Tailwind CSS and @nuxt/ui styles in your main CSS file
  4. 4.Wrap your app root in the `<UApp>` component to enable toasts, tooltips, and overlays
  5. 5.Use the Nuxt UI MCP server (configure in .cursor/mcp.json or via claude mcp add) to query component APIs and examples
  6. 6.Load relevant reference files from the skill (design-system, component-selection, forms, layouts) based on your task
  7. 7.Build your UI using semantic color classes (text-default, bg-elevated, border-muted) and the `ui` prop to override component styles

Use cases

Good for
  • Build a landing page with hero, features, pricing, and footer sections
  • Create an admin dashboard with sidebar navigation and data tables
  • Design a login/signup form with validation and error messages
  • Display tabular data with filtering, pagination, sorting, and row selection
  • Add modals, slideovers, drawers, and command palettes to your UI
Who it's for
  • Vue and Nuxt developers
  • Full-stack developers using Laravel Vite + Inertia or AdonisJS Vite + Inertia
  • Product teams building internal tools and dashboards
  • Developers customizing UI to match brand guidelines

nuxt-ui FAQ

How do I find the right component for my use case?

Load the component-selection reference file for decision matrices (e.g., Modal vs Slideover, Select vs SelectMenu). Use the MCP server's search_components tool to find components by name, description, or category. Browse the components reference file for a categorized index.

How do I customize colors and theming?

Use semantic color classes like text-default, bg-elevated, and border-muted instead of raw Tailwind colors. Load the design-system reference file to understand theming, brand customization, and variants. Override component styles via the `ui` prop or global config.

Where do I find component props, slots, and events?

Use the Nuxt UI MCP server with the get_component or get_component_metadata tools for full API documentation. Alternatively, read the generated theme files: .nuxt/ui/<component>.ts for Nuxt or node_modules/.nuxt-ui/ui/<component>.ts for Vue.

What frameworks does Nuxt UI support?

Nuxt UI works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia). Use ui({ router: 'inertia' }) in vite.config.ts for Inertia-based frameworks.

How do I add icons to components?

Use the `i-{collection}-{name}` format, e.g., `i-lucide-check`. Lucide is the default icon collection. Use the MCP server's search_icons tool to find icon names, or browse icones.js.org.

Full instructions (SKILL.md)

Source of truth, from nuxt/ui.


name: nuxt-ui description: Build UIs with @nuxt/ui v4 — 125+ accessible Vue components with Tailwind CSS theming. Use when creating interfaces, customizing themes to match a brand, building forms, or composing layouts like dashboards, docs sites, and chat interfaces.

Nuxt UI

Vue component library built on Reka UI + Tailwind CSS + Tailwind Variants. Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).

MCP Server

For component API details (props, slots, events, full documentation, examples), use the Nuxt UI MCP server. If not already configured, add it:

Cursor.cursor/mcp.json:

{ "mcpServers": { "nuxt-ui": { "type": "http", "url": "https://ui.nuxt.com/mcp" } } }

Claude Code:

claude mcp add --transport http nuxt-ui https://ui.nuxt.com/mcp

Key MCP tools:

  • search_components — find components by name, description, or category (no params = list all)
  • search_composables — find composables by name or description (no params = list all)
  • search_icons — search Iconify icons (defaults to lucide), returns i-{prefix}-{name} names
  • get_component — full component documentation with usage examples
  • get_component_metadata — props, slots, events (lightweight, no docs content)
  • get_example — real-world code examples

When you need to know what a component accepts or how its API works, use the MCP. This skill teaches you when to use which component and how to build well.

Core rules (always apply)

  1. Always wrap the app in UApp — required for toasts, tooltips, and programmatic overlays. Accepts a locale prop for i18n.
  2. Always use semantic colorstext-default, bg-elevated, border-muted, etc. Never use raw Tailwind palette colors like text-gray-500.
  3. Read generated theme files for slot names — Nuxt: .nuxt/ui/<component>.ts, Vue: node_modules/.nuxt-ui/ui/<component>.ts. These show every slot, variant, and default class for any component.
  4. Override priority (highest wins): ui prop / class prop → global config → theme defaults.
  5. Icons use i-{collection}-{name} formatlucide is the default collection. Use the MCP search_icons tool to find icons, or browse at icones.js.org.

How to use this skill

Based on the task, load the relevant reference files before writing any code. Don't load everything — only what's needed.

Reference files

Guidelines — design decisions and conventions:

  • design-system — semantic colors, theming, brand customization, variants, the ui prop
  • component-selection — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.
  • conventions — coding patterns, slot naming, items arrays, composables, keyboard shortcuts
  • forms — form validation, field layout, error handling, Standard Schema

Layouts — full page structure patterns:

  • landing — landing pages, blog, changelog, pricing
  • dashboard — admin UI with sidebar and panels
  • docs — documentation sites with navigation and TOC
  • chat — AI chat with Vercel AI SDK
  • editor — rich text editor with toolbars

Recipes — complete patterns for common tasks:

  • data-tables — tables with filters, pagination, sorting, selection
  • auth — login, signup, forgot password forms
  • overlays — modals, slideovers, drawers, command palette
  • navigation — headers, sidebars, breadcrumbs, tabs

Quick reference:

  • components — categorized component index for finding the right component name

Routing table

TaskLoad these references
Build a landing pagedesign-system, conventions, landing
Build a dashboard / admin UIconventions, component-selection, dashboard
Add a settings pageconventions, forms
Create a login / signup formconventions, forms, auth
Display data in a tableconventions, component-selection, data-tables
Customize theme / brand colorsdesign-system
Add a chat interfaceconventions, chat
Add a modal, slideover, or drawerconventions, component-selection, overlays
Build site navigationconventions, component-selection, navigation
Build a documentation siteconventions, docs
Render markdowncomponent-selection, components, docs
Add a rich text editorconventions, editor
General UI workconventions, component-selection

Installation

Nuxt

pnpm add @nuxt/ui tailwindcss
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxt/ui'],
  css: ['~/assets/css/main.css']
})
/* app/assets/css/main.css */
@import "tailwindcss";
@import "@nuxt/ui";
<!-- app.vue -->
<template>
  <UApp>
    <NuxtPage />
  </UApp>
</template>

Vue (Vite)

pnpm add @nuxt/ui tailwindcss
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui()
  ]
})
// src/main.ts
import './assets/css/main.css'
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import ui from '@nuxt/ui/vue-plugin'
import App from './App.vue'

const app = createApp(App)
const router = createRouter({
  routes: [],
  history: createWebHistory()
})

app.use(router)
app.use(ui)
app.mount('#app')
/* src/assets/css/main.css */
@import "tailwindcss";
@import "@nuxt/ui";
<!-- src/App.vue -->
<template>
  <UApp>
    <RouterView />
  </UApp>
</template>

Add class="isolate" to your root <div id="app"> in index.html. For Inertia: use ui({ router: 'inertia' }) in vite.config.ts.