antfu/skills

vue

Vue 3 Composition API, script setup macros, reactivity system, and built-in components. Use when writing Vue SFCs, defineProps/defineEmits/defineModel, watchers, or using Transition/Teleport/Suspense/KeepAlive.

All-time #696 Trending #1835 Hot #5637 First seen Jan 28, 2026
8-week activity · all time api

Installation

$ npx skills add antfu/skills --skill vue

Summary

  • Vue 3 Composition API with script setup, reactivity system, and built-in components for single-file components.
  • Use <script setup lang="ts"> with TypeScript; leverage defineProps , defineEmits , defineModel , and other macros for type-safe component APIs Core reactivity includes ref , shallowRef , computed , watch , watchEffect , and lifecycle hooks; prefer shallowRef when deep reactivity isn't needed Built-in components cover Transition , Teleport , Suspense , KeepAlive , and directives like v-memo for advanced patterns Always use Composition API over Options API; avoid reactive props destructuring to maintain reactivity

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Security audits

Partner security reviews for this skill.

agent-trust-hub SAFE

Analyzed Feb 17, 2026

The skill consists of technical documentation and code examples for Vue 3 Composition API. It provides best practices for reactivity, lifecycle hooks, and compiler macros without any detected security risks.

snyk LOW

Analyzed Feb 17, 2026

No issues detected.

socket Score 0.9000 · 0 alerts

Analyzed Mar 18, 2026

  • license 1
  • maintenance 1
  • quality 0.9
  • supply chain 1
  • vulnerability 1

0 alerts

Also in this package

Other skills from antfu/skills · top by installs.

npx skills add antfu/skills

Browse all from antfu/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 5.9K
License LICENSE.md
Default branch main
Open issues 9
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version2026.1.31
More metadata
author
Anthony Fu
version
2026.1.31
source
Generated from https://github.com/vuejs/docs, scripts at https://github.com/antfu/skills

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,448 B
  • docs SUMMARY.md 218 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 33,400 installs

SKILL.md

Vue

Based on Vue 3.5. Always use Composition API with <script setup lang="ts">.

Preferences

  • Prefer TypeScript over JavaScript
  • Prefer <script setup lang="ts"> over <script>
  • For performance, prefer shallowRef over ref if deep reactivity is not needed
  • Always use Composition API over Options API
  • Discourage using Reactive Props Destructure

Core

Topic Description Reference
Script Setup & Macros <script setup>, defineProps, defineEmits, defineModel, defineExpose, defineOptions, defineSlots, generics [script-setup-macros](references/script-setup-macros.md)
Reactivity & Lifecycle ref, shallowRef, computed, watch, watchEffect, effectScope, lifecycle hooks, composables [core-new-apis](references/core-new-apis.md)

Features

Topic Description Reference
Built-in Components & Directives Transition, Teleport, Suspense, KeepAlive, v-memo, custom directives [advanced-patterns](references/advanced-patterns.md)

Quick Reference

Component Template

<script setup lang="ts">
import { ref, computed, watch, onMounted } from 'vue'

const props = defineProps<{
  title: string
  count?: number
}>()

const emit = defineEmits<{
  update: [value: string]
}>()

const model = defineModel<string>()

const doubled = computed(() => (props.count ?? 0) * 2)

watch(() => props.title, (newVal) => {
  console.log('Title changed:', newVal)
})

onMounted(() => {
  console.log('Component mounted')
})
</script>

<template>
  <div>{{ title }} - {{ doubled }}</div>
</template>

Key Imports

// Reactivity
import { ref, shallowRef, computed, reactive, readonly, toRef, toRefs, toValue } from 'vue'

// Watchers
import { watch, watchEffect, watchPostEffect, onWatcherCleanup } from 'vue'

// Lifecycle
import { onMounted, onUpdated, onUnmounted, onBeforeMount, onBeforeUpdate, onBeforeUnmount } from 'vue'

// Utilities
import { nextTick, defineComponent, defineAsyncComponent } from 'vue'