Vue Expert
Vue 3 Composition API, reactivity system, Pinia state management, Nuxt 3, Vue Router, component design patterns, and migration from Options API.
A Vue 3 expert who covers the reactivity model deeply — ref vs reactive, watchEffect internals, and when computed triggers unexpectedly. Guides teams migrating from Options API to Composition API, designs Pinia stores for complex domain state, and builds Nuxt 3 apps with SSR-friendly data fetching using useFetch and useAsyncData.
Added Mar 20, 2026
$npx skills add johnefemer/skillfish --skill vue-expert What This Skill Can Do
Concrete capabilities you get when you install this skill.
Design composables that encapsulate reactivity and are reusable across components
Architect Pinia stores with actions, getters, and cross-store dependencies
Implement Nuxt 3 data fetching with useFetch, useAsyncData, and server routes
Migrate Options API components to Composition API safely and incrementally
Configure Vue Router with dynamic routes, guards, and lazy-loaded views
Optimize rendering with v-memo, shallowRef, and markRaw for heavy objects
Real Conversations
See how the Vue Expert skill responds to actual requests. These are representative examples of what your AI agent will produce.
I want a Vue 3 composable for fetching paginated data that handles loading, error, and pagination state, and is reusable across multiple list views.
Here's a usePaginatedFetch composable using Vue 3 Composition API:
import { ref, computed, watchEffect } from 'vue';
interface Page<T> { items: T[]; total: number; }
export function usePaginatedFetch<T>(
url: () => string,
pageSize = 20,
) {
const page = ref(1);
const items = ref<T[]>([]);
const total = ref(0);
const loading = ref(false);
const error = ref<Error | null>(null);
const totalPages = computed(() => Math.ceil(total.value / pageSize));
const hasMore = computed(() => page.value < totalPages.value);
async function load() {
loading.value = true;
error.value = null;
try {
const res = await fetch(`${url()}?page=${page.value}&limit=${pageSize}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data: Page<T> = await res.json();
items.value = data.items;
total.value = data.total;
} catch (e) {
error.value = e as Error;
} finally {
loading.value = false;
}
}
watchEffect(load); // re-fetches when url() or page changes
return { items, loading, error, page, totalPages, hasMore, reload: load };
}
// Usage
const { items, loading, page, hasMore } = usePaginatedFetch<User>(
() => `/api/users?search=${searchQuery.value}`,
);
The url parameter is a getter function so watchEffect tracks reactive dependencies inside it — if searchQuery changes, a new fetch fires automatically.
Get Started
How to install and use this skill in your preferred environment.
Skills are designed for AI coding agents (Claude Code, Cursor, Windsurf) and IDE-based workflows where the agent can read files, run scripts, and act on your codebase.
Models & Context
Which AI models and context windows work best with this skill.
Recommended Models
Claude Sonnet 4 and GPT-4o have strong Vue 3 knowledge. Verify Nuxt 3 specifics against the official docs as APIs changed significantly between Nuxt 2 and 3.
Context Window
SKILL.md ~4KB. Fits in 32K context for most component work; Nuxt 3 full-stack apps benefit from 64K+.
Pro tips for best results
Be specific
Include numbers — users, budget, RPS — so the skill can size the architecture.
Share constraints
Compliance needs, team size, and existing stack all improve the output.
Iterate
Start with a high-level design, then ask follow-ups for IaC, cost analysis, or security review.
Combine skills
Pair with companion skills below for end-to-end coverage.
Works Great With
These skills complement Vue Expert for end-to-end coverage. Install them together for better results.
Ready to try Vue Expert?
Install the skill and start getting expert-level guidance in your workflow — any agent, any IDE.
$npx skills add johnefemer/skillfish --skill vue-expert