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.
Use the skills CLI to install this skill with one command. Auto-detects all installed AI assistants.
Method 1 - skills CLI
npx skills i hyf0/vue-skills/skills/vue-best-practicesMethod 2 - openskills (supports sync & update)
npx openskills install hyf0/vue-skillsAuto-detects Claude Code, Cursor, Codex CLI, Gemini CLI, and more. One install, works everywhere.
Installation Path
Download and extract to one of the following locations:
No setup needed. Let our cloud agents run this skill for you.
Select Provider
Select Model
Best for coding tasks
No setup required
Use this skill as an instruction set. Follow the workflow in order unless the user explicitly asks for a different order.
<script setup lang="ts">.vue-options-api-best-practices skill if available.vue-jsx-best-practices skill if available.references/reactivity.mdreferences/sfc.mdreferences/component-data-flow.mdreferences/composables.mdCreate a brief component map before implementation for any non-trivial feature.
components/<feature>/..., composables/use<Feature>.ts) when adding more than one component.These are essential, must-know foundations. Apply all of them in every Vue task using the core references already loaded in section 1.1.
1.1: reactivityref/reactive), derive everything possible with computed.1.1: sfc<script> → <template> → <style>.v-html, list rendering, conditional rendering choices).Split a component when it has more than one clear responsibility (e.g. data orchestration + UI, or multiple independent UI sections).
useXxx()).Apply objective split triggers. Split the component if any condition is true:
Entry/root and route view rule:
1.1: component-data-flowv-model only for true two-way component contracts.defineProps, defineEmits, and InjectionKey as needed.1.1: composablesDo not add these by default. Load the matching reference only when the requirement exists.
<KeepAlive> for stateful view caching -> component-keep-alive<Teleport> for overlays/portals -> component-teleport<Suspense> for async subtree fallback boundaries -> component-suspense<Transition> for enter/leave effects -> transition<TransitionGroup> for animated list mutations -> transition-groupUse these only when there is explicit product or technical need.
Performance work is a post-functionality pass. Do not optimize before core behavior is implemented and verified.