From harness-claude
Create custom Vue directives for low-level DOM manipulation and reusable behaviors like auto-focus, click-outside, intersection observer, and tooltips. Use for DOM-level logic without component state.
npx claudepluginhub intense-visions/harness-engineering --plugin harness-claudeThis skill uses the workspace's default tool permissions.
> Create custom Vue directives for low-level DOM manipulation and reusable DOM behavior
Provides patterns for Vue components including props validation with TypeScript, defaults, emits, slots, and provide/inject. Use when building reusable Vue components.
Enforces Vue 3 best practices with Composition API, <script setup>, and TypeScript. Covers reactivity gotchas, computed properties, performance optimizations, SSR, Volar, vue-tsc for .vue files, Vue Router, Pinia, Vite projects.
Provides Vue 3 Composition API patterns, props/emits best practices, VueUse integration, and reactive destructuring guidance for editing .vue files, creating components, composables, and testing Vue code.
Share bugs, ideas, or general feedback.
Create custom Vue directives for low-level DOM manipulation and reusable DOM behavior
mounted, updated, unmounted).app.directive('name', directiveObj) or locally in <script setup> with vName convention.// v-focus directive — auto-focuses an input on mount
const vFocus = {
mounted(el: HTMLElement) {
el.focus();
},
};
// Usage in template: <input v-focus />
unmounted hook to prevent memory leaks.binding.value to pass dynamic data: <div v-tooltip="'Hello'">.Custom directives give you low-level access to DOM elements. They run at specific lifecycle points (created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount, unmounted) and receive the element and binding information. Vue's built-in directives (v-if, v-show, v-model) are implemented the same way.
Trade-offs:
When NOT to use:
onMountedhttps://patterns.dev/vue/directive-pattern