Marketplace

vue-fundamentals

Master Vue.js core concepts - Components, Reactivity, Templates, Directives, Lifecycle

$ Installer

git clone https://github.com/pluginagentmarketplace/custom-plugin-vue /tmp/custom-plugin-vue && cp -r /tmp/custom-plugin-vue/skills/vue-fundamentals ~/.claude/skills/custom-plugin-vue

// tip: Run this command in your terminal to install the skill


name: vue-fundamentals description: Master Vue.js core concepts - Components, Reactivity, Templates, Directives, Lifecycle sasmp_version: "1.3.0" bonded_agent: 01-vue-fundamentals bond_type: PRIMARY_BOND version: "2.0.0" last_updated: "2025-01"

Vue Fundamentals Skill

Production-grade skill for mastering Vue.js core concepts and building robust component-based applications.

Purpose

Single Responsibility: Teach and validate understanding of Vue.js fundamentals including component architecture, reactivity system, template syntax, directives, and lifecycle hooks.

Parameter Schema

interface VueFundamentalsParams {
  topic: 'components' | 'reactivity' | 'templates' | 'directives' | 'lifecycle' | 'all';
  level: 'beginner' | 'intermediate' | 'advanced';
  context?: {
    current_knowledge?: string[];
    learning_goal?: string;
    time_available?: string;
  };
}

Learning Modules

Module 1: Components (Foundation)

Prerequisites: HTML, CSS, JavaScript basics
Duration: 2-3 hours
Outcome: Build reusable Vue components
TopicConceptExercise
SFC Structure<template>, <script>, <style>Create first component
PropsPassing data downBuild Card component
Events$emit for child→parentButton with click handler
SlotsContent distributionLayout component
RegistrationLocal vs globalComponent organization

Module 2: Reactivity (Core)

Prerequisites: Module 1
Duration: 3-4 hours
Outcome: Understand Vue's reactivity system
TopicConceptExercise
ref()Primitive reactivityCounter app
reactive()Object reactivityForm state
computed()Derived valuesShopping cart total
watch()Side effectsAPI calls on change
watchEffect()Auto-trackLogging changes

Module 3: Templates (Syntax)

Prerequisites: Module 1
Duration: 2 hours
Outcome: Master template syntax
TopicConceptExercise
Interpolation{{ }} bindingDisplay data
v-bindAttribute bindingDynamic classes
v-onEvent handlingForm submission
v-modelTwo-way bindingInput forms
v-if/v-showConditional renderToggle visibility
v-forList renderingTodo list

Module 4: Directives (Built-in & Custom)

Prerequisites: Module 3
Duration: 2 hours
Outcome: Use and create directives
TopicConceptExercise
v-if/elseConditionalAuth display
v-for + keyIterationData tables
v-model modifiers.lazy, .trimForm validation
v-on modifiers.prevent, .stopEvent control
Custom directivesReusable DOM logicv-focus directive

Module 5: Lifecycle (Hooks)

Prerequisites: Modules 1-4
Duration: 2 hours
Outcome: Manage component lifecycle
HookUse CaseExample
onMountedDOM readyFetch initial data
onUpdatedAfter reactivityScroll position
onUnmountedCleanupClear intervals
onErrorCapturedError boundaryGraceful degradation

Validation Checkpoints

Beginner Checkpoint

  • Create SFC with props and events
  • Use ref() for counter
  • Apply v-if and v-for
  • Handle form with v-model

Intermediate Checkpoint

  • Build multi-slot component
  • Use computed for derived state
  • Implement watch with cleanup
  • Create custom directive

Advanced Checkpoint

  • Design component composition patterns
  • Optimize with shallowRef
  • Implement error boundaries
  • Build async components

Retry Logic

const skillConfig = {
  maxAttempts: 3,
  backoffMs: [1000, 2000, 4000],
  onFailure: 'provide_hint'
}

Observability

tracking:
  - event: module_started
    data: [module_name, user_level]
  - event: checkpoint_passed
    data: [checkpoint_name, attempts]
  - event: skill_completed
    data: [total_time, score]

Troubleshooting

Common Issues

IssueCauseSolution
Component not showingNot registeredCheck import/registration
Props not reactiveWrong prop typeUse correct type
v-for no keyMissing :keyAdd unique key
Infinite loopwatch causing watched changeGuard the update

Debug Steps

  1. Check Vue Devtools component tree
  2. Verify props are passed correctly
  3. Confirm reactive values have .value
  4. Check lifecycle hook placement

Unit Test Template

import { describe, it, expect } from 'vitest'
import { mount } from '@vue/test-utils'
import MyComponent from './MyComponent.vue'

describe('MyComponent', () => {
  it('renders props correctly', () => {
    const wrapper = mount(MyComponent, {
      props: { title: 'Test' }
    })
    expect(wrapper.text()).toContain('Test')
  })

  it('emits event on action', async () => {
    const wrapper = mount(MyComponent)
    await wrapper.find('button').trigger('click')
    expect(wrapper.emitted('action')).toBeTruthy()
  })
})

Usage

Skill("vue-fundamentals")

Related Skills

  • vue-composition-api - Next level after fundamentals
  • vue-typescript - Adding type safety
  • vue-testing - Testing fundamentals

Resources