By vuejs-ai
Debug Vue 3 applications and adopt best practices for composables, Pinia state management, Vue Router, testing with Vitest/Playwright, and error diagnosis. Covers Composition API, TypeScript, and JSX migration from React.
Create a library-grade Vue composable that accepts maybe-reactive inputs (MaybeRef / MaybeRefOrGetter) so callers can pass a plain value, ref, or getter. Normalize inputs with toValue()/toRef() inside reactive effects (watch/watchEffect) to keep behavior predictable and reactive. Use this skill when user asks for creating adaptable or reusable composables.
MUST be used for Vue.js tasks. Strongly recommends Composition API with `<script setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.
Vue 3 debugging and error handling for runtime errors, warnings, async failures, and SSR/hydration issues. Use when diagnosing or fixing Vue issues.
JSX syntax in Vue (e.g., class vs className, JSX plugin config).
Vue 3 Options API style (data(), methods, this context). Each reference shows Options API solution only.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Agent skills for Vue 3 development.
🚧 Early Experiment / Community Project
This repository is an early experiment in creating specialized skills for AI agents to enhance Vue 3 development. Skills are derived from real-world issues but may be incomplete due to hallucinations—please give feedback. If valuable, I plan to propose transferring this project to the Vue organization to benefit the wider community.
npx skills add vuejs-ai/skills
An alternative for Claude Code users:
# Add marketplace
/plugin marketplace add vuejs-ai/skills
# Install all skills at once
/plugin install vue-skills-bundle@vue-skills
# Install individual skills
/plugin install vue-best-practices@vue-skills
# Install multiple skills
/plugin install vue-best-practices@vue-skills vue-router-best-practices@vue-skills
For most reliable results, prefix your prompt with use vue skill:
Use vue skill, <your prompt here>
This explicitly triggers the skill and ensures the AI follows the documented patterns. Without the prefix, skill triggering may be inconsistent depending on how closely your prompt matches the skill's description keywords.
| Skill | When to use | Description |
|---|---|---|
| vue-best-practices | Vue 3 + Composition API + TypeScript | Best practices, common gotchas, SSR guidance, performance |
| vue-options-api-best-practices | Options API (data(), methods) | this context, lifecycle, TypeScript with Options API |
| vue-router-best-practices | Vue Router 4 | Navigation guards, route params, route-component lifecycle |
| vue-pinia-best-practices | Pinia for state management | Store setup, reactivity, state patterns |
| vue-testing-best-practices | Writing component or E2E tests | Vitest, Vue Test Utils, Playwright |
| vue-jsx-best-practices | JSX in Vue | Syntax differences from React JSX |
| vue-debug-guides | Debugging Vue 3 issues | Runtime errors, warnings, async error handling, hydration issues |
| create-adaptable-composable | Creating reusable composables | MaybeRef/MaybeRefOrGetter input patterns |
Prompt
create a todo app
🔎 See demo full output.
shallowRef for primitive reactive data (see Reactivity reference)Original from create-agnostic-composable of serkodev/vue-skills
Prompt
create a reusable composable for controlling hidden for a element
🔎 See demo full output.
MaybeRef and MaybeRefOrGetter for input parameters for reactivity flexibility.export interface UseHiddenOptions {
hidden?: MaybeRef<boolean>
initialHidden?: MaybeRefOrGetter<boolean>
syncAria?: boolean
}
export function useHidden(
target?: MaybeRefOrGetter<HTMLElement | null | undefined>,
options: UseHiddenOptions = {},
)
Skills are classified into two categories:
Capability: AI cannot solve the problem without the skill. These address version-specific issues, undocumented behaviors, recent features, or edge cases outside AI's training data.
Efficiency: AI can solve the problem but not well. These provide optimal patterns, best practices, and consistent approaches that improve solution quality.
Each skill rule is validated through automated evals:
A rule is kept only if it enables the model to solve problems it couldn't solve without it.
| Baseline | With Skill | Action |
|---|---|---|
| Fail | Pass | Keep |
| Pass | Pass | Considered removed |
Development happens on the dev branch. The main branch is reserved for published skills only.
devdevdevdev → main via GitHub Action when ready to publishnpx claudepluginhub vuejs-ai/skillsModern Vue 3 development with TypeScript, Composition API, defineModel bindings, Testing Library for user-behavior tests, and MSW for API mocking
Skill providing Vue.js framework knowledge and best practices. Helps developers understand Vue ecosystem, component patterns, and modern conventions.
Vue.js and Nuxt.js development with Composition API, composables, and SSR/SSG patterns
Advanced Vue skills for Composition API, components, and reactivity.
Pinia v3 Vue state management with defineStore, getters, actions. Use for Vue 3 stores, Nuxt SSR, Vuex migration, or encountering store composition, hydration, testing errors.
Ultra-compressed communication mode. Cuts 65% of output tokens (measured) while keeping full technical accuracy by speaking like a caveman.