PluginBench
Skill
Pass
Audit score 90

vue-expert

jeffallan/claude-skills

Vue 3 Composition API specialist for components, Nuxt SSR/SSG, Pinia state, and mobile apps.

What is vue-expert?

Builds Vue 3 applications using Composition API patterns, manages state with Pinia, configures Nuxt 3 for SSR/SSG, scaffolds hybrid mobile apps with Quasar/Capacitor, and optimizes Vite builds. Use when creating Vue 3 components, writing composables, setting up PWA features, or tuning build configuration.

  • Builds Vue 3 components with Composition API and <script setup> syntax
  • Creates and manages Pinia stores for global state management
  • Configures Nuxt 3 projects with SSR/SSG and file-based routing
  • Scaffolds hybrid mobile apps using Quasar and Capacitor frameworks
  • Implements PWA features including service workers and offline support
  • Optimizes Vite builds, sourcemaps, and TypeScript configuration

How to install vue-expert

npx skills add https://github.com/jeffallan/claude-skills --skill vue-expert
Prerequisites
  • Node.js and npm/yarn installed
  • Basic familiarity with Vue 3 and JavaScript/TypeScript
  • Vite as the build tool (for Vue 3 projects)
Claude Code
Cursor
Windsurf
Cline

How to use vue-expert

  1. 1.Analyze your application requirements and component hierarchy
  2. 2.Design the architecture including composables, stores, and component structure
  3. 3.Implement components using Composition API with <script setup> and TypeScript
  4. 4.Run vue-tsc --noEmit to validate types and fix any errors
  5. 5.Use Vue DevTools to verify reactivity and component state
  6. 6.Write tests with Vue Test Utils and Vitest, fixing failures until all pass
  7. 7.Optimize re-renders, computed properties, and lazy loading as needed

Use cases

Good for
  • Building a multi-page Vue 3 SPA with client-side routing and Pinia state management
  • Setting up a Nuxt 3 application with server-side rendering and API integration
  • Creating reusable composables for common logic across components
  • Scaffolding a hybrid mobile app with Quasar that runs on iOS and Android
  • Configuring a PWA with service worker for offline functionality
Who it's for
  • Frontend developers building Vue 3 applications
  • Full-stack developers setting up Nuxt 3 projects
  • Mobile developers creating hybrid apps with Quasar or Capacitor
  • Teams implementing PWA features and offline-first architectures
  • Developers optimizing build tooling and TypeScript integration

vue-expert FAQ

When should I use ref() vs reactive()?

Use ref() for primitives (strings, numbers, booleans) and reactive() for objects. ref() is more flexible and works better with destructuring in Composition API.

How do I share logic between components?

Extract reusable logic into composables (functions starting with 'use'). Composables can contain reactive state, computed properties, and lifecycle hooks that multiple components can import and use.

What's the difference between Pinia and component state?

Use component state (ref/reactive) for local UI state. Use Pinia stores for global state that needs to be shared across multiple components or persisted.

Should I use watch or computed?

Prefer computed() for derived state that updates automatically. Use watch() only when you need side effects (API calls, DOM updates) or when computed isn't sufficient.

How do I handle cleanup in composables?

Return cleanup functions from composables or use lifecycle hooks like onUnmounted. Always unsubscribe from watchers, timers, and event listeners to prevent memory leaks.

Full instructions (SKILL.md)

Source of truth, from jeffallan/claude-skills.


name: vue-expert description: Builds Vue 3 components with Composition API patterns, configures Nuxt 3 SSR/SSG projects, sets up Pinia stores, scaffolds Quasar/Capacitor mobile apps, implements PWA features, and optimises Vite builds. Use when creating Vue 3 applications with Composition API, writing reusable composables, managing state with Pinia, building hybrid mobile apps with Quasar or Capacitor, configuring service workers, or tuning Vite configuration and TypeScript integration. license: MIT metadata: author: https://github.com/Jeffallan version: "1.1.0" domain: frontend triggers: Vue 3, Composition API, Nuxt, Pinia, Vue composables, reactive, ref, Vue Router, Vite Vue, Quasar, Capacitor, PWA, service worker, Fastify SSR, sourcemap, Vite config, build optimization role: specialist scope: implementation output-format: code related-skills: typescript-pro, fullstack-guardian

Vue Expert

Senior Vue specialist with deep expertise in Vue 3 Composition API, reactivity system, and modern Vue ecosystem.

Core Workflow

  1. Analyze requirements - Identify component hierarchy, state needs, routing
  2. Design architecture - Plan composables, stores, component structure
  3. Implement - Build components with Composition API and proper reactivity
  4. Validate - Run vue-tsc --noEmit for type errors; verify reactivity with Vue DevTools. If type errors are found: fix each issue and re-run vue-tsc --noEmit until the output is clean before proceeding
  5. Optimize - Minimize re-renders, optimize computed properties, lazy load
  6. Test - Write component tests with Vue Test Utils and Vitest. If tests fail: inspect failure output, identify whether the root cause is a component bug or an incorrect test assertion, fix accordingly, and re-run until all tests pass

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Composition APIreferences/composition-api.mdref, reactive, computed, watch, lifecycle
Componentsreferences/components.mdProps, emits, slots, provide/inject
State Managementreferences/state-management.mdPinia stores, actions, getters
Nuxt 3references/nuxt.mdSSR, file-based routing, useFetch, Fastify, hydration
TypeScriptreferences/typescript.mdTyping props, generic components, type safety
Mobile & Hybridreferences/mobile-hybrid.mdQuasar, Capacitor, PWA, service worker, mobile
Build Toolingreferences/build-tooling.mdVite config, sourcemaps, optimization, bundling

Quick Example

Minimal component demonstrating preferred patterns:

<script setup lang="ts">
import { ref, computed } from 'vue'

const props = defineProps<{ initialCount?: number }>()

const count = ref(props.initialCount ?? 0)
const doubled = computed(() => count.value * 2)

function increment() {
  count.value++
}
</script>

<template>
  <button @click="increment">Count: {{ count }} (doubled: {{ doubled }})</button>
</template>

Constraints

MUST DO

  • Use Composition API (NOT Options API)
  • Use <script setup> syntax for components
  • Use type-safe props with TypeScript
  • Use ref() for primitives, reactive() for objects
  • Use computed() for derived state
  • Use proper lifecycle hooks (onMounted, onUnmounted, etc.)
  • Implement proper cleanup in composables
  • Use Pinia for global state management

MUST NOT DO

  • Use Options API (data, methods, computed as object)
  • Mix Composition API with Options API
  • Mutate props directly
  • Create reactive objects unnecessarily
  • Use watch when computed is sufficient
  • Forget to cleanup watchers and effects
  • Access DOM before onMounted
  • Use Vuex (deprecated in favor of Pinia)

Output Templates

When implementing Vue features, provide:

  1. Component file with <script setup> and TypeScript
  2. Composable if reusable logic exists
  3. Pinia store if global state needed
  4. Brief explanation of reactivity decisions

Knowledge Reference

Vue 3 Composition API, Pinia, Nuxt 3, Vue Router 4, Vite, VueUse, TypeScript, Vitest, Vue Test Utils, SSR/SSG, reactive programming, performance optimization

Documentation