Claude Agent Skill · by Onmax

Vueuse

Install Vueuse skill for Claude Code from onmax/nuxt-skills.

Install
Terminal · npx
$npx skills add https://github.com/onmax/nuxt-skills --skill vueuse
Works with Paperclip

How Vueuse fits into a Paperclip company.

Vueuse drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md161 lines
Expand
---name: vueusedescription: Use when working with VueUse composables - track mouse position with useMouse, manage localStorage with useStorage, detect network status with useNetwork, debounce values with refDebounced, and access browser APIs reactively. Check VueUse before writing custom composables - most patterns already implemented.license: MIT--- # VueUse Collection of essential Vue Composition utilities. Check VueUse before writing custom composables - most patterns already implemented. **Current stable:** VueUse 14.x for Vue 3.5+ ## Installation **Vue 3:** ```bashpnpm add @vueuse/core``` **Nuxt:** ```bashpnpm add @vueuse/nuxt @vueuse/core``` ```ts// nuxt.config.tsexport default defineNuxtConfig({  modules: ['@vueuse/nuxt'],})``` Nuxt module auto-imports composables - no import needed. ## Categories | Category   | Examples                                                   || ---------- | ---------------------------------------------------------- || State      | useLocalStorage, useSessionStorage, useRefHistory          || Elements   | useElementSize, useIntersectionObserver, useResizeObserver || Browser    | useClipboard, useFullscreen, useMediaQuery                 || Sensors    | useMouse, useKeyboard, useDeviceOrientation                || Network    | useFetch, useWebSocket, useEventSource                     || Animation  | useTransition, useInterval, useTimeout                     || Component  | useVModel, useVirtualList, useTemplateRefsList             || Watch      | watchDebounced, watchThrottled, watchOnce                  || Reactivity | createSharedComposable, toRef, toReactive                  || Array      | useArrayFilter, useArrayMap, useSorted                     || Time       | useDateFormat, useNow, useTimeAgo                          || Utilities  | useDebounce, useThrottle, useMemoize                       | ## Quick Reference Load composable files based on what you need: | Working on...        | Load file                                              || -------------------- | ------------------------------------------------------ || Finding a composable | [references/composables.md](references/composables.md) || Specific composable  | `composables/<name>.md`                                | ## Loading Files **Consider loading these reference files based on your task:** - [ ] [references/composables.md](references/composables.md) - if searching for VueUse composables by category or functionality **DO NOT load all files at once.** Load only what's relevant to your current task. ## Common Patterns **State persistence:** ```tsconst state = useLocalStorage('my-key', { count: 0 })``` **Mouse tracking:** ```tsconst { x, y } = useMouse()``` **Debounced ref:** ```tsconst search = ref('')const debouncedSearch = refDebounced(search, 300)``` **Shared composable (singleton):** ```tsconst useSharedMouse = createSharedComposable(useMouse)``` ## SSR Gotchas Many VueUse composables use browser APIs unavailable during SSR. **Check with `isClient`:** ```tsimport { isClient } from '@vueuse/core' if (isClient) {  // Browser-only code  const { width } = useWindowSize()}``` **Wrap in onMounted:** ```tsconst width = ref(0) onMounted(() => {  // Only runs in browser  const { width: w } = useWindowSize()  width.value = w.value})``` **Use SSR-safe composables:** ```ts// These check isClient internallyconst mouse = useMouse() // Returns {x: 0, y: 0} on serverconst storage = useLocalStorage('key', 'default') // Uses default on server``` **`@vueuse/nuxt` auto-handles SSR** - composables return safe defaults on server. ## Target Element Refs When targeting component refs instead of DOM elements: ```tsimport type { MaybeElementRef } from '@vueuse/core' // Component ref needs .$el to get DOM elementconst compRef = ref<ComponentInstance>()const { width } = useElementSize(compRef) // ❌ Won't work // Use MaybeElementRef patternimport { unrefElement } from '@vueuse/core' const el = computed(() => unrefElement(compRef)) // Gets .$elconst { width } = useElementSize(el) // ✅ Works``` **Or access `$el` directly:** ```tsconst compRef = ref<ComponentInstance>() onMounted(() => {  const el = compRef.value?.$el as HTMLElement  const { width } = useElementSize(el)})```