Best practices for building Nuxt 3 and Vue 3 applications with TypeScript, the Composition API, and Tailwind CSS. Use when structuring Nuxt/Vue projects, writing composables, typing components and props, wiring up server routes and plugins, or optimizing Nuxt builds and Web Vitals.
Install
npx skills add https://github.com/mindrally/skills --skill nuxtjs-vue-typescriptSKILL.md
NuxtJS Vue TypeScript Development
Guidelines for building Nuxt 3 and Vue 3 applications with TypeScript, Shadcn Vue, Radix Vue, VueUse, and Tailwind.
Code Style and Structure
- Write concise, technical TypeScript with accurate examples
- Employ composition API with declarative patterns; avoid options API
- Favor iteration and modularity over code duplication
- Use descriptive variable names with auxiliary verbs (isLoading, hasError)
- Organize files: exported component, composables, helpers, static content, types
- Keep component boundaries clear — a component should own one piece of UI/behavior; extract composables when logic grows beyond simple template glue
Naming Conventions
- Directories: lowercase with dashes (components/auth-wizard)
- Components: PascalCase (AuthWizard.vue)
- Composables: camelCase (useAuthState.ts)
TypeScript Usage
- Utilize TypeScript throughout; prefer types over interfaces, but use interfaces where you expect a shape to be extended or implemented (e.g. component prop contracts)
- Keep shared types close to the feature that owns them; only promote a type to a shared
types/directory once a second feature needs it - Avoid enums; use const objects instead
- Leverage Vue 3 with TypeScript, defineComponent, and PropType
Syntax and Formatting
- Use arrow functions for methods and computed properties
- Minimize curly braces in conditionals
- Employ template syntax for declarative rendering
UI and Styling
- Implement Shadcn Vue, Radix Vue, and Tailwind
- Design responsively with mobile-first Tailwind approach
- Keep Tailwind usage accessible and consistent with the project's design system rather than one-off utility soup
Performance
- Leverage Nuxt's built-in optimizations
- Use Suspense for async components
- Implement lazy loading for routes and components
- Optimize images: WebP format, size data, lazy loading
- Review bundle size periodically (
nuxi analyze) and use dynamicimport()for heavy, rarely-used components
Key Conventions
- VueUse for common composables — reach for them where they simplify reactivity, but avoid ones that hide state transitions you need to reason about explicitly
- Pinia for state management
- Optimize Web Vitals (LCP, CLS, FID)
- Use Nuxt's auto-imports feature
Nuxt-Specific Guidelines
- Follow Nuxt 3 directory structure (pages/, components/, composables/, layouts/, plugins/, server/)
- Leverage auto-imports, file-based routing, server routes, plugins
- Use layouts (
layouts/default.vue,<NuxtLayout>) to share page chrome instead of duplicating it per page - Use
server/api/routes (Nitro) for server-side endpoints, anduseRuntimeConfig()for environment-specific config instead of hardcoding values - Use useFetch and useAsyncData for data fetching
- Implement SEO with useHead and useSeoMeta
Vue 3 Composition API Best Practices
- Use
<script setup>syntax - Leverage ref, reactive, and computed
- Use provide/inject for dependency injection
- Create custom composables for reusable logic
Related skills
vercel-react-best-practicesvercel-labs751KReact 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.vercel-composition-patternsvercel-labs361KReact composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.vercel-react-view-transitionsvercel-labs135KGuide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions viewpick-ui-libraryemilkowalski124KPick the right library for a given frontend task from a curated, opinionated list — numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts, state, styling, and more. Only runs when explicitly invoked; it does not trigger on its own.
