agentleFS
ProjAnvilProjAnvil/MindForge/skills/en/frontend-vue/SKILL.md

frontend-vue

Skill3 starsChanged 23 days agoMITView on GitHub

Professional Vue.js development skill covering Nuxt 3, Vue 3 Composition API, Tailwind CSS, and the Vue ecosystem. Use this skill when building Vue applications, implementing Nuxt features, using Pinia for state management, or component libraries like shadcn-vue.

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write Composition API components

    line 15
  2. Distinctive:

    Use Pinia for state management or shadcn-vue components

    line 16
  3. Distinctive:

    No mutations (only actions)

    line 54
  4. Very specific:

    Use const for reactive variables.

    line 87
  5. Distinctive:

    Keep logic organized by feature.

    line 88
  6. Very specific:

    Async Components: Use defineAsyncComponent for lazy loading.

    line 92
  7. Very specific:

    Lazy Fetching: Use lazy: true option in useFetch for non-critical data.

    line 93
  8. Distinctive:

    Asset Optimization: Use Nuxt Image for image optimization.

    line 94
  9. Distinctive:

    Hydration Mismatch: Ensure HTML rendered on server matches client.

    line 97
  10. Very specific:

    Middleware: Use Route Middleware for auth guards (middleware/auth.ts).

    line 98

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Vue Development Skill

Comprehensive skill for modern Vue.js development, focusing on Nuxt 3, Vue 3 Composition API, Tailwind CSS, and the Vue ecosystem.

When to Use

Trigger scenarios — use this skill when the user asks to:

  • Build Vue 3 or Nuxt 3 applications
  • Write Composition API components
  • Use Pinia for state management or shadcn-vue components

Technology Stack

Core Framework: Vue 3 + Nuxt 3

Vue 3 Features

  • Composition API: Logic reuse with <script setup>
  • Reactivity System: ref, reactive, computed, watch
  • Teleport: Rendering content outside the component DOM hierarchy
  • Fragments: Multiple root nodes support
  • Suspense: Handling async dependencies

Nuxt 3 Features

  • Auto-imports: Automatically imports Vue APIs and component components
  • File-based Routing: Pages in pages/ directory create routes
  • Server Engine (Nitro): Universal deployment
  • Data Fetching: useFetch, useAsyncData
  • Server Routes: API endpoints in server/api/
  • SEO/Meta: useHead, useSeoMeta

UI Framework: Tailwind CSS + shadcn-vue

Tailwind CSS

  • Utility-first architecture
  • Configured via tailwind.config.ts
  • Optimized with PostCSS

shadcn-vue (or similar)

  • Vue port of shadcn/ui
  • Accessible components based on Radix Vue
  • Key Components: Button, Input, Select, Dialog, Toast

State Management

  • Pinia: The official state management library for Vue
    • Modular stores
    • TypeScript support
    • DevTools integration
    • No mutations (only actions)

Project Architecture

Recommend Directory Structure (Nuxt 3)

project-root/
├── app.vue            # Root component
├── nuxt.config.ts     # Configuration
├── components/        # Auto-imported components
│   ├── ui/            # UI library components
│   │   ├── button/
│   │   └── ...
│   └── Header.vue
├── pages/             # Routes
│   ├── index.vue
│   └── about.vue
├── layouts/           # Layout wrappers
│   └── default.vue
├── composables/       # Auto-imported logic
│   └── useUser.ts
├── server/            # Server API
│   └── api/
│       └── hello.ts
├── stores/            # Pinia stores
│   └── counter.ts
└── assets/            # CSS, images
    └── main.css

Best Practices

Composition API with <script setup>

  • Use const for reactive variables.
  • Keep logic organized by feature.
  • Extract complex logic into composables (composables/).

Performance

  • Async Components: Use defineAsyncComponent for lazy loading.
  • Lazy Fetching: Use lazy: true option in useFetch for non-critical data.
  • Asset Optimization: Use Nuxt Image for image optimization.

Nuxt Specifics

  • Hydration Mismatch: Ensure HTML rendered on server matches client. Avoid random IDs or dates during initial render.
  • Middleware: Use Route Middleware for auth guards (middleware/auth.ts).

Common Code Patterns

Nuxt Page with Data Fetching

<script setup lang="ts">
const { data: user, error } = await useFetch('/api/user/1')

if (error.value) {
  console.error(error.value)
}
</script>

<template>
  <div v-if="user" class="p-4">
    <h1 class="text-2xl font-bold">{{ user.name }}</h1>
    <p>{{ user.email }}</p>
  </div>
  <div v-else>Loading...</div>
</template>

Pinia Store

// stores/counter.ts
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  
  function increment() {
    count.value++
  }

  return { count, doubleCount, increment }
})

Composable

// composables/useMouse.ts
export function useMouse() {
  const x = ref(0)
  const y = ref(0)

  function update(event) {
    x.value = event.pageX
    y.value = event.pageY
  }

  onMounted(() => window.addEventListener('mousemove', update))
  onUnmounted(() => window.removeEventListener('mousemove', update))

  return { x, y }
}

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.