web-vue

This skill provides tools for building modern Vue 3 applications using the Composition API for reactive logic, Pinia for state management, Vue Router 4 for navigation, Single File Components (SFCs) for modular development, Vite for fast bundling, and Nuxt 3 for server-side rendering and SEO optimization.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "web-vue" with this command: npx skills add alphaonedev/openclaw-graph/alphaonedev-openclaw-graph-web-vue

web-vue

Purpose

This skill provides tools for building modern Vue 3 applications using the Composition API for reactive logic, Pinia for state management, Vue Router 4 for navigation, Single File Components (SFCs) for modular development, Vite for fast bundling, and Nuxt 3 for server-side rendering and SEO optimization.

When to Use

Use this skill for creating interactive web apps with reactive UIs, such as dashboards, e-commerce sites, or single-page applications (SPAs). Apply it when you need efficient state handling, routing, or SSR, especially in projects requiring quick development cycles with Vite.

Key Capabilities

  • Composition API: Use setup() in SFCs for reactive variables, e.g., const count = ref(0); to create a reactive number.

  • Pinia: Define stores with defineStore('main', { state: () => ({ count: 0 }), actions: { increment() { this.count++ } }) for global state.

  • Vue Router 4: Set up routes via createRouter({ history: createWebHistory(), routes: [{ path: '/', component: Home }] }) .

  • SFCs: Structure components in .vue files with <script setup> , <template> , and <style> sections.

  • Vite: Build projects with vite build --mode production for optimized outputs.

  • Nuxt 3: Enable SSR with nuxi generate for static site generation from Vue apps.

Usage Patterns

To create a reactive counter component, import ref from Vue and use it in <script setup> :

<script setup> import { ref } from 'vue'; const count = ref(0); function increment() { count.value++; } </script> <template><button @click="increment">{{ count }}</button></template>

For routing, integrate Vue Router by creating a router instance and mounting it:

import { createRouter, createWebHistory } from 'vue-router'; const router = createRouter({ history: createWebHistory(), routes: [] }); app.use(router);

Set up Pinia in main.js: app.use(createPinia()); and access stores via useStore() in components.

Common Commands/API

  • Vite CLI: Run vite for dev server, vite build --base /app/ to specify base path, or vite preview for local testing.

  • Nuxt 3 CLI: Use nuxi dev for development, nuxi build for production builds, or nuxi generate for static exports.

  • Vue API: Call ref(value) to create reactive references, reactive(object) for proxy objects, or computed(() => expression) for derived state.

  • Pinia API: Define stores with defineStore('id', { state, getters, actions }) , access via const store = useStore('id') .

  • Vue Router API: Use router.push('/path') for navigation, or configure guards with beforeEach((to, from, next) => { next(); }) . If API keys are needed (e.g., for external services in Nuxt), set them via environment variables like $NUXT_PUBLIC_API_KEY in .env files.

Integration Notes

Integrate Pinia into a Vue app by importing and using it in main.js: import { createPinia } from 'pinia'; app.use(createPinia()); . For Vue Router, add it after Pinia: import { createRouter } from 'vue-router'; app.use(router); . When using Vite, configure in vite.config.js with modules like:

import { defineConfig } from 'vite'; export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': '/src' } }, });

For Nuxt 3, extend the Nuxt config in nuxt.config.ts:

export default defineNuxtConfig({ modules: ['@pinia/nuxt'], router: { options: {} }, });

Ensure dependencies are installed via npm install vue@3 pinia vue-router@4 vite nuxt@3 .

Error Handling

Handle common errors like missing dependencies by checking npm logs and running npm install . For reactive issues in Composition API, use .value on refs, e.g., if count is undefined, ensure it's defined in setup. Vue Router errors (e.g., duplicate routes) show in console; fix by validating routes array. In Vite, if builds fail with "Module not found", verify paths in imports or use vite build --debug for details. For Nuxt, catch SSR errors in serverMiddleware or use try-catch in asyncData:

async asyncData() { try { const data = await fetchData(); return { data }; } catch (error) { console.error(error); return { error: 'Fetch failed' }; } }

Concrete Usage Examples

  • Build a simple Vue 3 app with a counter and routing: Create a new Vite project with npm create vite@latest my-app -- --template vue , add Pinia via npm install pinia , set up a store, and define routes in router/index.js. Then, in App.vue, use the store and router links.

  • Develop a Nuxt 3 app with SSR: Start with npx nuxi init my-nuxt-app , install dependencies like npm install @pinia/nuxt , create a Pinia store in stores/, and use it in pages/index.vue. Build for production with nuxi build , then deploy.

Graph Relationships

  • Related to cluster: web-dev

  • Shares tags: vue, components, web

  • Connected skills: Other web-dev skills like those for React or general web frameworks.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

playwright-scraper

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

clawflows

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tavily-web-search

No summary provided by upstream source.

Repository SourceNeeds Review