From 0d2b646cb6f48d8478f41417b2e8a5a30fd59175 Mon Sep 17 00:00:00 2001 From: Ray Tien Date: Mon, 21 Sep 2026 13:28:06 +0800 Subject: [PATCH] feat(nuxt-ui): refresh guidance for v4.11 (#502) Reverify the full stack catalog against Nuxt UI 4.11.1 and correct stale API examples. Add Splitter, ProgressGroup, motion, Vite detection, and CommandPalette security guidance. Co-authored-by: Ray --- .../ui-ux-pro-max/data/catalog-summary.json | 2 +- .../ui-ux-pro-max/data/stacks/nuxt-ui.csv | 146 +++++++++--------- .claude/skills/ui-ux-pro-max/scripts/core.py | 2 +- .../tests/fixtures/relevance-baseline.json | 28 ++-- .../tests/fixtures/relevance-thresholds.json | 2 +- .../scripts/tests/test_web_stack_freshness.py | 2 +- cli/assets/data/catalog-summary.json | 2 +- cli/assets/data/stacks/nuxt-ui.csv | 146 +++++++++--------- cli/assets/scripts/core.py | 2 +- .../tests/fixtures/relevance-baseline.json | 28 ++-- .../tests/fixtures/relevance-thresholds.json | 2 +- .../scripts/tests/test_web_stack_freshness.py | 2 +- src/ui-ux-pro-max/data/catalog-summary.json | 2 +- src/ui-ux-pro-max/data/stacks/nuxt-ui.csv | 146 +++++++++--------- src/ui-ux-pro-max/scripts/core.py | 2 +- .../tests/fixtures/relevance-baseline.json | 28 ++-- .../tests/fixtures/relevance-thresholds.json | 2 +- .../scripts/tests/test_web_stack_freshness.py | 2 +- 18 files changed, 282 insertions(+), 264 deletions(-) diff --git a/.claude/skills/ui-ux-pro-max/data/catalog-summary.json b/.claude/skills/ui-ux-pro-max/data/catalog-summary.json index dcccef5..f911c3a 100644 --- a/.claude/skills/ui-ux-pro-max/data/catalog-summary.json +++ b/.claude/skills/ui-ux-pro-max/data/catalog-summary.json @@ -20,7 +20,7 @@ "motionPresets": 17, "chartTypes": 25, "stacks": 22, - "stackGuidelines": 1265 + "stackGuidelines": 1271 }, "snapshots": { "google-fonts.csv": { diff --git a/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv b/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv index 555501f..e2aaeca 100644 --- a/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +++ b/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv @@ -1,71 +1,77 @@ No,Category,Guideline,Description,Do,Don't,Code Good,Code Bad,Severity,Docs URL,Applies To,Status,Verified At -1,Installation,Add Nuxt UI module,Install and configure Nuxt UI in your Nuxt project,pnpm add @nuxt/ui and add to modules,Manual component imports,modules: ['@nuxt/ui'],import { UButton } from '@nuxt/ui',High,https://ui.nuxt.com/docs/getting-started/installation/nuxt,nuxt-ui 4.10,active,2026-08-13 -2,Installation,Import Tailwind and Nuxt UI CSS,Required CSS imports in main.css file,@import tailwindcss and @import @nuxt/ui,Skip CSS imports,"@import ""tailwindcss""; @import ""@nuxt/ui"";",No CSS imports,High,https://ui.nuxt.com/docs/getting-started/installation/nuxt,nuxt-ui 4.10,active,2026-08-13 -3,Installation,Wrap app with UApp component,UApp provides global configs for Toast Tooltip and overlays, wrapper in app.vue,Skip UApp wrapper,, without wrapper,High,https://ui.nuxt.com/docs/components/app,nuxt-ui 4.10,active,2026-08-13 -4,Components,Use U prefix for components,All Nuxt UI components use U prefix by default,UButton UInput UModal,Button Input Modal,Click,,Medium,https://ui.nuxt.com/docs/getting-started/installation/nuxt,nuxt-ui 4.10,active,2026-08-13 -5,Components,Use semantic color props,Use semantic colors like primary secondary error,"color=""primary"" color=""error""",Hardcoded colors,"","",Medium,https://ui.nuxt.com/docs/getting-started/theme/design-system,nuxt-ui 4.10,active,2026-08-13 -6,Components,Use variant prop for styling,Nuxt UI provides solid outline soft subtle ghost link variants,"variant=""soft"" variant=""outline""",Custom button classes,"","",Medium,https://ui.nuxt.com/docs/components/button,nuxt-ui 4.10,active,2026-08-13 -7,Components,Use size prop consistently,Components support xs sm md lg xl sizes,"size=""sm"" size=""lg""",Arbitrary sizing classes,"","",Low,https://ui.nuxt.com/docs/components/button,nuxt-ui 4.10,active,2026-08-13 -8,Icons,Use i-{collection}-{name} format for icons,Nuxt UI v4 uses Iconify i-prefix format — lucide:home is v3 legacy,i-lucide-home i-heroicons-user format,lucide:home format (v3 syntax),"","",High,https://ui.nuxt.com/docs/getting-started/installation/nuxt,nuxt-ui 4.10,active,2026-08-13 -9,Icons,Use leadingIcon and trailingIcon props,Position icons with dedicated props for clarity,"leadingIcon=""i-lucide-plus"" trailingIcon=""i-lucide-arrow-right""",Manual icon positioning or slots,"","Add",Low,https://ui.nuxt.com/docs/components/button,nuxt-ui 4.10,active,2026-08-13 -10,Theming,Configure colors in app.config.ts,Runtime color configuration without restart,ui.colors.primary in app.config.ts,Hardcoded colors in components,defineAppConfig({ ui: { colors: { primary: 'blue' } } }),"",High,https://ui.nuxt.com/docs/getting-started/theme/design-system,nuxt-ui 4.10,active,2026-08-13 -11,Theming,Use @theme directive for custom colors,Define design tokens in CSS with Tailwind @theme,@theme { --color-brand-500: #xxx },Inline color definitions,@theme { --color-brand-500: #ef4444; },":style=""{ color: '#ef4444' }""",Medium,https://ui.nuxt.com/docs/getting-started/theme/design-system,nuxt-ui 4.10,active,2026-08-13 -12,Theming,Register and map semantic colors,Register extra semantic color names at build time then map them to a palette in app.config,nuxt.config ui.theme.colors plus app.config ui.colors,Use an unregistered semantic color,"ui: { theme: { colors: ['primary', 'tertiary'] } } then ui.colors.tertiary = 'violet'"," without config",Medium,https://ui.nuxt.com/docs/getting-started/theme/design-system,nuxt-ui 4.10,active,2026-08-13 -13,Forms,Use UForm with schema validation,UForm supports Zod Yup Joi Valibot schemas,:schema prop with validation schema,Manual form validation,"",Manual @blur validation,High,https://ui.nuxt.com/docs/components/form,nuxt-ui 4.10,active,2026-08-13 -14,Forms,Use UFormField for field wrapper,Provides label error message and validation display,UFormField with name prop,Manual error handling,"",
error
,Medium,https://ui.nuxt.com/docs/components/form-field,nuxt-ui 4.10,active,2026-08-13 -15,Forms,Handle form submit with @submit,UForm emits submit event with validated data,@submit handler on UForm,@click on submit button,"","",Medium,https://ui.nuxt.com/docs/components/form,nuxt-ui 4.10,active,2026-08-13 -16,Forms,Choose validation timing deliberately,UForm validates on input blur and change by default; input is delayed and begins after blur unless eager,Set validateOn and eager to match the interaction,Assume the default validates every keystroke immediately,"",Describe default UForm as eager input-only validation,Low,https://ui.nuxt.com/docs/components/form,nuxt-ui 4.10,active,2026-08-13 -17,Overlays,Use v-model:open for overlay control,Modal Slideover Drawer use v-model:open,v-model:open for controlled state,Manual show/hide logic,"","",Medium,https://ui.nuxt.com/docs/components/modal,nuxt-ui 4.10,active,2026-08-13 -18,Overlays,Use useOverlay composable for programmatic overlays,Open overlays programmatically — v4 API is create().open() not open(Component),overlay.create(Component).open({ props }) pattern,v3 overlay.open(Component) pattern (removed in v4),const modal = overlay.create(MyModal); const { result } = modal.open({ title: 'Confirm' }),"overlay.open(MyModal, { props: { title: 'Confirm' } })",High,https://ui.nuxt.com/docs/components/modal,nuxt-ui 4.10,active,2026-08-13 -19,Overlays,Use title and description props,Built-in header support for overlays,"title=""Confirm"" description=""Are you sure?""",Manual header content,"",,Low,https://ui.nuxt.com/docs/components/modal,nuxt-ui 4.10,active,2026-08-13 -20,Dashboard,Use UDashboardSidebar for navigation,Provides collapsible resizable sidebar with mobile support,UDashboardSidebar with header default footer slots,Custom sidebar implementation,,"