Vue
Avoid common Vue mistakes — reactivity traps, ref vs reactive, computed timing, and Composition API pitfalls.
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 6 · 1.7k · 26 current installs · 28 all-time installs
byIván@ivangdavila
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description (Vue guidance, Composition API, reactivity) align with the bundled documents (SKILL.md + topic markdowns). The single required binary 'node' is reasonable for a Vue-focused skill (development/runtime context) and no unrelated credentials or tools are requested.
Instruction Scope
SKILL.md and the included files are purely advisory: they describe patterns, traps, and best practices. There are no runtime commands, file reads, environment accesses, or external endpoints referenced in the instructions that would exceed the stated purpose.
Install Mechanism
This is an instruction-only skill with no install spec and no code files to write or execute. That is the lowest-risk install model and is proportionate for a documentation skill.
Credentials
The skill requests no environment variables, no credentials, and no config paths. This is appropriate for a purely informational Vue guidance skill.
Persistence & Privilege
always is false and disable-model-invocation is false (normal). The skill does not request permanent presence or elevated privileges and does not modify other skills' configuration.
Assessment
This skill is documentation-only: it provides Vue 3 advice and contains no code, installers, or credential requests. It's safe to enable from a permissions/credentials perspective. As with any skill, be aware agents may use the guidance autonomously (normal behavior); if you want to avoid autonomous use, disable model invocation for skills on your agent. If you expect runnable samples or tooling, verify they come from a trusted package or repository before executing any downloaded code.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.1
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
Runtime requirements
💚 Clawdis
OSLinux · macOS · Windows
Binsnode
SKILL.md
When to Use
User needs Vue expertise — from Composition API patterns to production optimization. Agent handles reactivity, component design, state management, and performance.
Quick Reference
| Topic | File |
|---|---|
| Reactivity patterns | reactivity.md |
| Component patterns | components.md |
| Composables design | composables.md |
| Performance optimization | performance.md |
Composition API Philosophy
- Composition API is not about replacing Options API—it's about better code organization
- Group code by feature, not by option type—related logic stays together
- Extract reusable logic into composables—the main win of Composition API
<script setup>is the recommended syntax—cleaner and better performance
Reactivity Traps
reffor primitives—access with.valuein script, auto-unwrapped in templatereactivecan't reassign whole object—state = {...}breaks reactivity- Destructuring
reactiveloses reactivity—usetoRefs(state)to preserve - Array index assignment reactive in Vue 3—
arr[0] = xworks, unlike Vue 2 - Nested refs unwrap inside reactive—
reactive({count: ref(0)}).countis number, not ref
Watch vs Computed
computedfor derived state—cached, recalculates only when dependencies changewatchfor side effects—when you need to DO something in response to changescomputedshould be pure—no side effects, no asyncwatchEffectfor immediate reaction with auto-tracked dependencies
Watch Traps
- Watching reactive object needs
deep: true—or watch a getter function watchis lazy by default—useimmediate: truefor initial run- Watch callback receives old/new—
watch(source, (newVal, oldVal) => {}) watchEffectcan't access old value—usewatchif you need old/new comparison- Stop watchers with returned function—
const stop = watch(...); stop()
Props and Emits Traps
definePropsfor type-safe props—defineProps<{ msg: string }>()- Props are readonly—don't mutate, emit event to parent
defineEmitsfor type-safe events—defineEmits<{ (e: 'update', val: string): void }>()v-modelis:modelValue+@update:modelValue—custom v-model withdefineModel()- Default value for objects must be factory function—
default: () => ({})
Template Ref Traps
ref="name"+const name = ref(null)—names must match exactly- Template refs available after mount—access in
onMounted, not during setup refon component gives component instance—refon element gives DOM element- Template ref with
v-forbecomes array of refs
Lifecycle Traps
onMountedfor DOM access—component mounted to DOMonUnmountedfor cleanup—subscriptions, timers, event listenersonBeforeMountruns before DOM insert—rarely needed but exists- Hooks must be called synchronously in setup—not inside callbacks or conditionals
- Async setup needs
<Suspense>wrapper
Provide/Inject Traps
provide('key', value)in parent—inject('key')in any descendant- Reactive if value is ref/reactive—otherwise static snapshot
- Default value:
inject('key', defaultVal)—third param for factory function - Symbol keys for type safety—avoid string key collisions
Vue Router Traps
useRoutefor current route—reactive, use in setupuseRouterfor navigation—router.push('/path')- Navigation guards:
beforeEach,beforeResolve,afterEach—returnfalseto cancel <RouterView>with named views—multiple views per route
Common Mistakes
v-ifvsv-show—v-if removes from DOM, v-show toggles display- Key on
v-forrequired—v-for="item in items" :key="item.id" - Event modifiers order matters—
.prevent.stopvs.stop.prevent - Teleport for modals—
<Teleport to="body">renders outside component tree
Files
5 totalSelect a file
Select a file to preview.
Comments
Loading comments…
