本文へ移動
cccskills
無料GitHub で公開

mk-vue

Vue 3 authoring/review: components, composables, reactivity, Pinia, Pinia Colada, file routing, forms. Composition API + script setup. Auto-activates on .vue files. Deep review: mk:vue-best-practices.

インストール方法を見る

含まれるファイル(14)

  • SKILL.md8.1 KB
  • references/advanced-patterns.md5.0 KB
  • references/components.md4.5 KB
  • references/composables.md1.9 KB
  • references/core-new-apis.md4.9 KB
  • references/pinia-colada-advanced.md6.7 KB
  • references/pinia-colada-cache.md2.4 KB
  • references/pinia-colada-plugins.md5.5 KB
  • references/pinia-colada.md6.9 KB
  • references/project-standards.md3.1 KB
  • references/reactivity-performance.md2.7 KB
  • references/routing-pages.md2.8 KB
  • references/script-setup-macros.md4.1 KB
  • references/state-pinia.md2.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Vue 3

Vue 3 patterns — Composition API + <script setup lang="ts">, Pinia, Pinia Colada, file-based routing, and performance. Single entrypoint routing to focused references.

Use npx chub search vue for relevant documentation packages within the Context Hub.

When to Use

Auto-activate on: .vue files, Vue 3 Composition API, <script setup>, Pinia stores, Pinia Colada queries/mutations, Vue Router file-based routes, composables.

Explicit: the vue skill [concern]

Deep best practices: for a thorough best-practices review/recommendations pass or the full ordered workflow — built-in components (Teleport/Suspense/KeepAlive/Transition), animation techniques, optional features, and the performance pass — use mk:vue-best-practices. This skill stays the everyday quick-reference.

Do NOT invoke for: deep best-practices review/workflow (use mk:vue-best-practices), TypeScript fundamentals (use mk:typescript), React (use mk:react-patterns), Angular (use mk:angular), visual design (use mk:frontend-design), testing (use mk:testing / mk:qa; Vue test design/review → mk:vue-testing-best-practices).

Core Rules (always apply)

Follow the repository's established conventions first. When it has no convention, use these defaults; project requirements may override them. Everything else is in the references.

  • <script setup lang="ts"> only — never Options API, never defineComponent() wrapper.
  • type over interface for defining object/prop shapes; keep types alongside the code.
  • Arrow functions for methods and callbacks.
  • Named exports over default exports — except composables, which use export default.
  • PascalCase component names, kebab-case file names (UserProfile in user-profile.vue); composables are camelCase with use prefix (useAuth).
  • Name general → specific: SearchButtonClear.vue, not ClearSearchButton.vue.
  • TailwindCSS classes, not manual CSS; never hard-code colors — use the Tailwind color system.
  • Comments explain why, not what.
  • ref() for primitives, reactive() only for complex objects; computed() for derived state.
  • Never v-html with user-provided content — XSS vector (see mk: security rules).

Data Layer (conditional default)

When the project depends on @pinia/colada, it is the preferred async/data-fetching layer — see references/pinia-colada.md. Otherwise use plain Pinia stores + composables for state. Pinia stores hold global UI/app state; data fetching belongs in Pinia Colada when present.

When to Read Each Reference

Read one level deep from this file. Read multiple when a task spans topics.

Task involvesRead
Components, props/emits, slots, defineModel, naming, templatesreferences/components.md
Composables (use*), shared reactive logicreferences/composables.md
ref/reactive/computed/watch, toRefs, performancereferences/reactivity-performance.md
Global state with Pinia setup stores, storeToRefsreferences/state-pinia.md
Pinia Colada core: keys, defineQueryOptions, useQuery, mutationsreferences/pinia-colada.md
Optimistic updates, infinite/paginated queries, SSR, cancellationreferences/pinia-colada-advanced.md
Pinia Colada plugins (retry, delay, auto-refetch, persister, hooks)references/pinia-colada-plugins.md
Direct cache access: getQueryData/setQueryData/invalidateQueriesreferences/pinia-colada-cache.md
File-based routing, route groups, params, definePage, typed routerreferences/routing-pages.md
Project stack, structure, commands, conventions, docs researchreferences/project-standards.md
3.4/3.5 core APIs: useId, nextTick, flush timing, watch once/deep, onWatcherCleanupreferences/core-new-apis.md
<script setup> compiler macros — defineOptions, withDefaults, generic componentsreferences/script-setup-macros.md
Advanced reactivity: effectScope, customRef, triggerRef, markRaw, shallowReadonlyreferences/advanced-patterns.md

Gotchas

  • Destructuring reactive() loses reactivity — const { count } = reactive({ count: 0 }) makes count a plain number; keep the reactive object intact, or use toRefs(), or ref().
  • storeToRefs() required when destructuring Pinia state — const { user } = useAuthStore() gives a non-reactive snapshot; use const { user } = storeToRefs(useAuthStore()). Methods are destructured directly from the store (not through storeToRefs).
  • Parent ref access needs defineExpose() — childRef.value.method() returns undefined unless the child <script setup> explicitly defineExpose({ method }).
  • Use :slotted() not :deep() for slotted content — slot content comes from the parent scope, so :deep(.child-class) in a scoped style block does not match it; use :slotted(.child-class).
  • watchEffect cleanup race on fast re-renders — register cleanup to cancel async work: watchEffect((onCleanup) => { onCleanup(() => controller.abort()) }), or a fast prop change starts a second effect before the first resolves and writes stale state.
  • Pinia store not hydrated in SSR — calling useMyStore() outside a component setup context (e.g. a top-level module) creates an instance disconnected from the SSR app; call stores inside setup() or pass the pinia instance explicitly: useMyStore(pinia).
  • Query keys must depend on ALL variables used in the query function — a key that omits a variable serves stale cached data when that variable changes (Pinia Colada).
  • Dynamic query keys need a getter, not a plain value — pass key: () => [...] so the key re-evaluates reactively; a plain array snapshot never updates.
  • Prefer refresh() over refetch() — refresh() reuses in-flight requests and respects staleTime; refetch() always forces a new fetch.
  • Avoid index.vue route files — use a named group like pages/(home).vue for a meaningful route name.
  • Use explicit route param names — userId not id, postSlug not slug, for type-safe, self-documenting routes.
  • Watching a destructured prop needs a getter — const { count } = defineProps() stays reactive in templates, but watch(count, ...) watches a snapshot; use watch(() => count, ...) (references/core-new-apis.md).
  • onWatcherCleanup() must be called synchronously — invoking it after an await throws, since the active-watcher context is gone; use the onCleanup callback param for post-await cancellation (references/core-new-apis.md).

Anti-Patterns

Don'tDo Instead
Options API (data(), methods:)Composition API <script setup>
this.$store / VuexPinia with setup store syntax
Direct store state destructuringstoreToRefs(useMyStore())
v-html with dynamic contentv-text or sanitized rendering
reactive() for primitivesref() for primitives
Watchers when computed workscomputed() for derived state
Global event busprovide/inject or Pinia
defineComponent() wrapper<script setup> directly

Workflow Integration

Auto-activates during Build when a Vue project is detected (.vue files, vue in package.json). Loaded by the developer agent alongside mk:typescript.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use this skill to generate well-branded interfaces and assets for MeowKit (AI Agent Toolkit for Claude Code), either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, assets, and UI kit components for prototyping.

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

mk-advise

無料

Turn a raw idea into ONE honest recommendation: interview one question at a time until confirmed, then give a verdict with trade-offs and a checklist. Not for options or debate.

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

Browser automation CLI for agents: navigate, click/fill, screenshot, extract data, test apps, Electron/Slack, cloud browsers. NOT for the user's real Chrome profile/cookies (mk:chrome-profile).

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

Detects the right agent and complexity tier at Phase 0 orient; runs first in every workflow. NOT for runtime agent routing inside a single skill.

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

Angular v20+ patterns: components, signals, services, forms, routing, HTTP, testing, SSR. Auto-activates on .ts files in Angular projects (angular.json detected).

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

Design and review durable REST, GraphQL, RPC, or event API contracts: shape, compatibility, pagination, error semantics. Discovers existing consumers first. Not implementation, schema, or release.

日本語の概要は準備中です。原文の説明を表示しています。

ngocsangyem/MeowKit152026年7月28日 更新

ngocsangyem のスキルをすべて見る

このスキルの問題を報告する