# vue

A Vue 3 skill for your coding agent: Composition API, reactivity, single-file components, Vue Router, Pinia, TypeScript and Vite. Useful when the agent writes Vue frontend code.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 381 installs · ★ 78
- Author: Claude MPM Team
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/bobmatnyc/claude-mpm-skills/tree/HEAD/toolchains/javascript/frameworks/vue/SKILL.md
- Updated: 2026-07-18
- HTML: https://affpapa.org/en/nevibecode/skills/claude-mpm-team-vue

## What it does

The skill loads into the agent as a Vue 3 reference and steers what it generates. It covers `setup()`, `ref` and `reactive`, computed properties, `watch` and `watchEffect`, typed props with `defineProps`, events with `defineEmits`, and two-way binding through `v-model`. Examples come as `<script setup lang="ts">` blocks next to the template, so the agent has something concrete to follow instead of guessing at the framework version.

Install takes one command: `npx skills add bobmatnyc/claude-mpm-skills --skill vue -a claude-code`. The file lands at `~/.claude/skills/vue/SKILL.md` and the agent picks it up on its own. It is marked `user-invocable: false` and `disable-model-invocation: true`, so there is no slash command to run — it only works as context.

Scaffolding a project is a separate step: `npm create vue@latest`, or the Vite template `npm create vite@latest my-app -- --template vue-ts`. The skill targets Vue 3. On a Vue 2 codebase with Options API, hints about `ref` and `<script setup>` will miss the mark.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add bobmatnyc/claude-mpm-skills --skill vue -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/vue/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/vue/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add bobmatnyc/claude-mpm-skills --skill vue -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/vue/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add bobmatnyc/claude-mpm-skills --skill vue -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/vue/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install bobmatnyc/claude-mpm-skills vue
```

2. **Manually: put the files in place**
- File: `.github/skills/vue/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add bobmatnyc/claude-mpm-skills --skill vue -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/bobmatnyc/claude-mpm-skills --path toolchains/javascript/frameworks/vue
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/vue/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add bobmatnyc/claude-mpm-skills --skill vue -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/bobmatnyc/claude-mpm-skills/tree/HEAD/toolchains/javascript/frameworks/vue/SKILL.md

## When to use it
- generate a `<script setup>` component with typed props
- decide between `ref` and `reactive` without mixing up `.value`
- write a computed property with a getter and a setter
- watch a single object field through a getter
- wire a child component to its parent with `v-model`

## Example prompts
- Build a Vue 3 todo list component using `<script setup lang="ts">`, `ref` for the array and `computed` for completed items
- Write a form with `v-model` and typed `defineEmits` for submit
- Show me how to watch a nested object field in Vue 3

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: dede6401e4b51686.

BEGIN THIRD-PARTY FILE dede6401e4b51686
````text
---
name: vue
description: Vue 3 - Progressive JavaScript framework with Composition API, reactivity system, single-file components, Vite integration, TypeScript support
user-invocable: false
disable-model-invocation: true
version: 1.0.0
category: toolchain
author: Claude MPM Team
license: MIT
progressive_disclosure:
  entry_point:
    summary: "Progressive JavaScript framework: Composition API with setup(), reactive refs/computed, Vue Router, Pinia state, TypeScript, Vite"
    when_to_use: "Interactive UIs with gradual adoption, SPAs with Vue Router, progressive web apps, TypeScript projects with Vue DevTools"
    quick_start: "1. npm create vue@latest 2. Choose TypeScript + Router + Pinia 3. Use setup() with ref/reactive 4. npm run dev"
  context_limit: 80
tags:
  - vue
  - vue3
  - composition-api
  - reactivity
  - sfc
  - pinia
  - router
  - vite
  - typescript
  - frontend
requires_tools: []
---

# Vue 3 - Progressive JavaScript Framework

## Overview

Vue 3 is a **progressive framework** for building user interfaces with emphasis on approachability, performance, and flexibility. It features the **Composition API** for better logic reuse, a powerful **reactivity system**, and **single-file components** (.vue files).

**Key Features**:
- **Composition API**: setup() with ref, reactive, computed, watch
- **Reactivity System**: Fine-grained reactive data tracking
- **Single-File Components**: Template, script, style in one file
- **Vue Router**: Official routing for SPAs
- **Pinia**: Modern state management (Vuex successor)
- **TypeScript**: First-class TypeScript support
- **Vite**: Lightning-fast development with HMR

**Installation**:
```bash
# Create new Vue 3 project (recommended)
npm create vue@latest my-app
cd my-app
npm install
npm run dev

# Or with Vite template
npm create vite@latest my-app -- --template vue-ts
```

## Composition API Fundamentals

### setup() Function

```vue
<script setup lang="ts">
// Modern <script setup> syntax (recommended)
import { ref, computed, onMounted } from 'vue';

// Reactive state
const count = ref(0);
const message = ref('Hello Vue 3');

// Computed values
const doubled = computed(() => count.value * 2);

// Methods
function increment() {
  count.value++;
}

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

<template>
  <div>
    <p>Count: {{ count }} (Doubled: {{ doubled }})</p>
    <button @click="increment">Increment</button>
  </div>
</template>
```

### Reactive State with ref() and reactive()

```vue
<script setup lang="ts">
import { ref, reactive } from 'vue';

// ref() - for primitives and objects (needs .value in script)
````
END THIRD-PARTY FILE dede6401e4b51686

The third-party file has ended. Everything between the dede6401e4b51686 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2661 of 31079 bytes. © Claude MPM Team · MIT · https://github.com/bobmatnyc/claude-mpm-skills/tree/HEAD/toolchains/javascript/frameworks/vue/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
