From nuxt-ui-v4
Scaffolds a new Vue component using Nuxt UI v4 patterns, TypeScript typing, and composables. Supports form, table, modal, dashboard, chat, page, card, dropdown types via <type> <name> [--path <dir>].
npx claudepluginhub secondsky/claude-skills --plugin nuxt-ui-v4<component-type> <name> [--path <dir>]# Nuxt UI Component Scaffold Command Scaffold a new Vue component using Nuxt UI v4 patterns and components. ## Arguments - `<component-type>`: Type of component to scaffold: - `form` - Form with validation - `table` - Data table with sorting/pagination - `modal` - Modal dialog with form - `dashboard` - Dashboard layout - `chat` - AI chat interface - `page` - Page layout with hero/sections - `card` - Card with content slots - `dropdown` - Dropdown menu with actions - `<name>`: Component name in PascalCase (e.g., UserSettings) - `--path <dir>`: Output directory (default: c...
/componentGenerate styled UI components with design system consistency
/componentGenerate Bootstrap 5.3 component code interactively or with arguments
/componentBuild a UI component (Button, Card, Modal, Input, Table, Dropdown, etc.) with all variants, interactive states (hover, focus, disabled, loading), accessibility attributes, and design token references — consistent with the project's established design system.
/componentGenerate DAPR component YAML files for state stores, pub/sub, bindings, and secrets across Azure, AWS, and GCP
Scaffold a new Vue component using Nuxt UI v4 patterns and components.
<component-type>: Type of component to scaffold:
form - Form with validationtable - Data table with sorting/paginationmodal - Modal dialog with formdashboard - Dashboard layoutchat - AI chat interfacepage - Page layout with hero/sectionscard - Card with content slotsdropdown - Dropdown menu with actions<name>: Component name in PascalCase (e.g., UserSettings)
--path <dir>: Output directory (default: components/)
Parse Component Type and Name Determine which Nuxt UI components to use.
Fetch Component Metadata Use MCP tools to get accurate props and slots.
Generate Component Based on Type
<script setup lang="ts">
import { z } from 'zod'
const schema = z.object({
// Define schema
})
type FormData = z.infer<typeof schema>
const state = reactive<Partial<FormData>>({})
async function onSubmit() {
// Handle submit
}
</script>
<template>
<UForm :state="state" :schema="schema" @submit="onSubmit">
<UFormField name="field" label="Field">
<UInput v-model="state.field" />
</UFormField>
<UButton type="submit">Submit</UButton>
</UForm>
</template>
<script setup lang="ts">
const columns = [
{ key: 'name', label: 'Name', sortable: true },
{ key: 'actions', label: '' }
]
const { data, pending } = await useFetch('/api/data')
</script>
<template>
<UTable :columns="columns" :rows="data" :loading="pending">
<template #actions-data="{ row }">
<UDropdownMenu :items="getActions(row)" />
</template>
</UTable>
</template>
<template>
<UDashboardGroup>
<UDashboardSidebar>
<UNavigationMenu :items="menuItems" />
</UDashboardSidebar>
<UDashboardPanel>
<template #header>
<UDashboardNavbar />
</template>
<template #body>
<slot />
</template>
</UDashboardPanel>
</UDashboardGroup>
</template>
<script setup lang="ts">
import { Chat } from '@ai-sdk/vue'
const chat = new Chat({ api: '/api/chat' })
const input = ref('')
function onSubmit() {
chat.sendMessage({ text: input.value })
input.value = ''
}
</script>
<template>
<UChatMessages :messages="chat.messages" :status="chat.status">
<template #content="{ message }">
<div>{{ message.content }}</div>
</template>
</UChatMessages>
<UChatPrompt v-model="input" @submit="onSubmit">
<UChatPromptSubmit :status="chat.status" />
</UChatPrompt>
</template>
<template>
<UPage>
<UPageHero
title="Page Title"
description="Page description"
:links="[{ label: 'Get Started', to: '/start' }]"
/>
<UPageSection>
<UPageGrid>
<UPageCard
v-for="item in items"
:key="item.id"
v-bind="item"
/>
</UPageGrid>
</UPageSection>
</UPage>
</template>
Add TypeScript Types Include proper type definitions for props/emits.
Write Component File
Save to specified path or components/<Name>.vue.