vuetify-skilld — Claude Code skill: what it does, how to install
Directs AI assistants on configuring and debugging Vuetify 4.x with Vue 3. Helps handle tree-shaking, Vite integration, and v3 to v4 migration.
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a claude-codeWhat vuetify-skilld does
This skill guides coding agents through [email protected] development. It instructs the assistant to place vite-plugin-vuetify after @vitejs/plugin-vue for automatic tree-shaking. The guidelines explain createVuetify options, modern composables like useTheme or useHotkey, and styling via cascade layers.
Vue 2 is not supported. The framework requires Vue ^3.5.0 and pure ESM. Missing @mdi/font or Roboto styles will leave components without icons or correct typography. Components in the labs package, including VDateInput and VFileUpload, are not production ready and need manual caution.
The skill covers breaking updates when moving from Vuetify 3 to 4. Grid alignment props are replaced by utility classes, elevation scales down to five steps, and typography names match Material Design 3 specifications.
What it helps with
- set up
createVuetifywith Vite tree-shaking plugins - migrate code from Vuetify 3 to Vuetify 4 MD3 specifications
- configure cascade layer overrides and SASS variables
- implement composables such as
useThemeanduseHotkey
Example prompts for the agent
- Configure
createVuetifyinsidesrc/plugins/vuetify.jswith light theme pinned as default. - Migrate my Vuetify 3 grid layout to Vuetify 4 gap properties and utility classes.
- Set up a theme switch toggle using
useThemein a Vue 3 component.
How to install vuetify-skilld
1Skills CLI (Vercel)
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a claude-code2Manually: put the files in place
~/.claude/skills/vuetify-skilld/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/vuetify-skilld/
1Skills CLI (Vercel)
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a codex2Manually: put the files in place
.agents/skills/vuetify-skilld/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a cursor2Manually: put the files in place
.cursor/skills/vuetify-skilld/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install skilld-dev/vue-ecosystem-skills vuetify-skilld2Manually: put the files in place
.github/skills/vuetify-skilld/SKILL.md1Skills CLI (Vercel)
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a gemini-cli2Platform CLI
gemini skills install https://github.com/skilld-dev/vue-ecosystem-skills --path skills/vuetify-skilldManually: put the files in place
.devin/skills/vuetify-skilld/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about vuetify-skilld
How to install vuetify-skilld in Claude Code?
Run npx skills add skilld-dev/vue-ecosystem-skills --skill vuetify-skilld -a claude-code. It creates the skill file at ~/.claude/skills/vuetify-skilld/SKILL.md.
What does vuetify-skilld do?
It teaches coding assistants how to configure, write, and migrate code for Vuetify 4.x. It details tree-shaking, composable functions, and styling layers.
Does vuetify-skilld support Vue 2?
No, Vuetify 4 requires Vue ^3.5.0 and ESM packaging. Vuetify 2 has reached end-of-life status.
Source text
SKILL.md · MIT
--- name: vuetify-skilld description: Vue Material Component Framework. Use when writing, debugging, or configuring code that imports vuetify v4.x. Covers createVuetify setup, components and labs, composables, theming, icons, dates and locale, styles and SASS variables, treeshaking, and v3 to v4 migration. license: MIT --- # [email protected] Material Design component framework for Vue 3. Source citations like `lib/framework.js:15` refer to the prepared `[email protected]` package (`package.json:4`). ## Environment limits - Vue `^3.5.0` peer dependency (`package.json:208`). No Vue 2 support; Vuetify 2 is EOL (`README.md:274`). - ESM only: `"type": "module"` (`package.json:32`). - Optional peers: `vite-plugin-vuetify >=2.1.0`, `webpack-plugin-vuetify >=3.1.0`, `typescript >=4.7` (`package.json:205`). - Modern browsers, Safari 13+ with polyfills, minimum design width 320px (`README.md:159`). - Default font is Roboto; you must add it yourself, e.g. `@fontsource/roboto` (https://vuetifyjs.com/getting-started/installation/). ## Setup Vite with automatic treeshaking (preferred). The vuetify plugin must come after the vue plugin: ```js // vite.config.js import vue from '@vitejs/plugin-vue' import vuetify from 'vite-plugin-vuetify' export default defineConfig({ plugins: [vue(), vuetify()] }) ``` ```js // src/plugins/vuetify.js import 'vuetify/styles' import { createVuetify } from 'vuetify' export default createVuetify({ // components, directives not needed with the loader plugin }) ``` Without a loader plugin, register manually; wildcard imports include everything and slow development builds: ```js import * as components from 'vuetify/components' import * as directives from 'vuetify/directives' createVuetify({ components, directives }) ``` `createVuetify` accepts `aliases`, `blueprint`, `components`, `date`, `defaults`, `directives`, `display`, `goTo`, `icons`, `locale`, `ssr`, `theme` and returns `{ install, unmount, defaults, display, theme, icons, locale, date, goTo }` (`lib/framework.js:15`). Install with `app.use(vuetify)`; wrap the app in a single `<v-app>` root. For SSR frameworks (Nuxt, vite-ssr) set `ssr: true` so display values render correctly (https://vuetifyjs.com/getting-started/installation/). Scaffolding: `pnpm create vuetify` / `npm create vuetify@latest` (`README.md:44`). CDN bundle with everything included: `vuetify/dist/vuetify.js` (`package.json:35`). ## Components - Prefer imports from `vuetify/components/<Group>` over `vuetify/components` (loads only needed styles in dev). - Labs components are NOT production ready; import from `vuetify/labs/<Name>` or `vuetify/labs/components`. In 4.0.1 labs holds: VAvatarGroup, VColorInput, VCommandPalette, VDateInput, VFileUpload, VIconBtn, VMaskInput, VPicker, VPie, VStepperVertical, VPullToRefresh, VVideo (`lib/labs/components.js:1`). - Dynamic `<component :is>` is invisible to the loader plugin; import those components manually (https://vuetifyjs.com/features/treeshaking/). - Full inventory and export paths: [references/exports.md](./references/exports.md) ## Configuration - Theme: the v4 default is `system` (follows `prefers-color-scheme`), not `light` (`lib/composables/theme.js:10`). Pin it with `theme: { defaultTheme: 'light' }` if system switching is unwanted. - Defaults: set prop defaults per component with `createVuetify({ defaults: { VBtn: { ... } } })`. `class` and `style` work only on component keys, never in the `global` key (https://vuetifyjs.com/features/global-configuration/). - Display: v4 breakpoints changed; defaults are `sm 600, md 840, lg 1145, xl 1545, xxl 2138` (`lib/composables/display.js:10`). - Icons: default set is `mdi` and expects the `@mdi/font` stylesheet, or use `mdi-svg` for bundled SVG icons (https://vuetifyjs.com/features/icon-fonts/). - Dates: default adapter wraps native `Date`; swap with any date-io adapter (https://vuetifyjs.com/features/dates/). - Blueprints: `createVuetify({ blueprint: md3 })` applies a design-system preset; explicit options override the blueprint (`lib/framework.js:15`, `lib/blueprints/index.js:1`). - Details and examples: [references/configuration.md](./references/configuration.md) ## Composables All exported from the `vuetify` entry point (`lib/composables/index.js:1`): `useDate`, `useDefaults`, `useDisplay`, `useGoTo`, `useLayout`, `useLocale`, `useRtl`, `useTheme`, `useHotkey`, `useMask`. ```vue <script setup> import { useTheme } from 'vuetify' const theme = useTheme() theme.toggle() // light <-> dark </script> ``` For hotkeys prefer the `cmd` modifier (`useHotkey('cmd+s', save)`); it resolves to Command on Mac and Control elsewhere (`lib/composables/hotkey/key-aliases.js:10`). Full API per composable: [references/composables.md](./references/composables.md) ## Styles - `import 'vuetify/styles'` is the all-in-one precompiled CSS; modular entries are `vuetify/styles/core` (must be first), `vuetify/styles/colors`, `vuetify/styles/utilities` (`package.json:61`). - SASS variable overrides require the sass preprocessor and `vuetify({ styles: { configFile: 'src/styles/settings.scss' } })` in the loader plugin; use `@use 'vuetify/settings' with (...)`. - v4 styles ship in cascade layers (`vuetify-core`, `vuetify-components`, `vuetify-overrides`, `vuetify-utilities`, `vuetify-final`); unlayered user CSS now always wins over Vuetify. - Entry points, variables, layers, Tailwind interop, legacy grid restore: [references/styling.md](./references/styling.md) ## Migrating from v3 v4 is a breaking MD3 release. Highest-impact changes: - Grid uses CSS `gap`; `dense` is now `density="compact"`, `align`/`justify`/`order`/`align-self` props replaced by utility classes. VRow gains a `gap` prop (`lib/components/VGrid/VRow.js:154`). - Typography variants renamed: `h1`-`h3` -> `display-*`, `h4`-`h6` -> `headline-*`, `subtitle-1`/`body-1` -> `body-large`, `caption` -> `body-small`, `button`/`subtitle-2` -> `label-large`. - Elevation reduced from levels 0-24 to 0-5 (`lib/styles/settings/_elevations.scss:6`). - `VSelect`/`VCombobox`/`VAutocomplete` slot `item` renamed to `internalItem`; `item` is now an alias for `internalItem.raw`. - `VForm` slot values (`isValid`, `errors`, ...) are unwrapped, no longer refs. - Defaults merging skips `undefined`; use `null` to override a global default. Full change list with compat snippets: [references/migration-v4.md](./references/migration-v4.md) ## Common pitfalls - Missing icon font: components render blank icons until `@mdi/font` CSS (or an SVG set) is installed. - Missing Roboto font: text renders with fallback font (`README.md:159`). - Styles broken after adding custom CSS: check layer order; place overrides inside `@layer vuetify-overrides` or declare your layer order explicitly. - `VNumberInput` uses `toFixed()` internally; for arbitrary-precision decimals use `v-text-field` with decimal.js (`lib/components/VNumberInput/VNumberInput.js:81`, https://vuetifyjs.com/components/number-inputs/). - Do not use `vuetify/styles` inside SASS files; it resolves to precompiled CSS. Use `vuetify` or `vuetify/settings` (https://vuetifyjs.com/features/sass-variables/). ## References - [references/exports.md](./references/exports.md) — entry points, component inventory, directives, iconsets, locale - [references/configuration.md](./references/configuration.md) — every `createVuetify` option with examples - [references/composables.md](./references/composables.md) — public composables API - [references/styling.md](./references/styling.md) — CSS and SASS entry points, variables, layers - [references/migration-v4.md](./references/migration-v4.md) — v3 to v4 breaking changes and compat snippets Official documentation: https://vuetifyjs.com. Release notes by URL: https://vuetifyjs.com/getting-started/release-notes/.
© skilld-dev · MIT · skilld-dev/vue-ecosystem-skills