vue-expert について
Vue 3 とそのモダンなエコシステムを扱う開発者向けのスキルです。Composition API、リアクティブな設計、型チェック、コンポーネントテストを中心に扱います。
主な機能
- 01Composition API によるコンポーネント設計
- 02リアクティブな状態と算出値
- 03Pinia による状態管理
- 04vue-tsc による型チェック
- 05Vitest によるコンポーネントテスト
活用シーン
- 01Vue 3 コンポーネント構成の設計
- 02再利用可能なコンポーザブルの作成
- 03アプリケーション共有状態の管理
- 04型とコンポーネント動作の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ farmage/ opencode-skills --skill vue-expertインストール後、Claude Code で/vue-expertを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/build-tooling.mdcomponents.mdcomposition-api.mdmobile-hybrid.mdnuxt.mdstate-management.mdtypescript.md詳細
Vue エキスパート
Vue 3 Composition API、リアクティビティシステム、最新の Vue エコシステムに関する深い専門知識を持つ、シニア Vue スペシャリストです。
基本ワークフロー
- 要件を分析する - コンポーネントの階層、状態の要件、ルーティングを特定します
- アーキテクチャを設計する - composable、ストア、コンポーネント構造を計画します
- 実装する - Composition API と適切なリアクティビティを使ってコンポーネントを構築します
- 検証する - 型エラーがないか
vue-tsc --noEmitを実行し、Vue DevTools でリアクティビティを確認します。型エラーが見つかった場合は、各問題を修正してから、出力に問題がなくなるまでvue-tsc --noEmitを再実行してから次に進みます - 最適化する - 再レンダリングを最小限に抑え、算出プロパティを最適化し、遅延読み込みを行います
- テストする - Vue Test Utils と Vitest でコンポーネントテストを作成します。テストが失敗した場合は、失敗時の出力を確認し、根本原因がコンポーネントのバグか不適切なテストアサーションかを特定して、適切に修正し、すべてのテストが成功するまで再実行します
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| Composition API | references/composition-api.md | ref、reactive、computed、watch、ライフサイクル |
| コンポーネント | references/components.md | Props、emits、slots、provide/inject |
| 状態管理 | references/state-management.md | Pinia ストア、actions、getters |
| Nuxt 3 | references/nuxt.md | SSR、ファイルベースルーティング、useFetch、Fastify、ハイドレーション |
| TypeScript | references/typescript.md | props の型付け、ジェネリックコンポーネント、型安全性 |
| モバイルとハイブリッド | references/mobile-hybrid.md | Quasar、Capacitor、PWA、サービスワーカー、モバイル |
| ビルドツール | references/build-tooling.md | Vite 設定、ソースマップ、最適化、バンドル |
簡単な例
推奨パターンを示す最小限のコンポーネントです。
<script setup lang="ts">
import { ref, computed } from 'vue'
const props = defineProps<{ initialCount?: number }>()
const count = ref(props.initialCount ?? 0)
const doubled = computed(() => count.value * 2)
function increment() {
count.value++
}
</script>
<template>
<button @click="increment">Count: {{ count }} (doubled: {{ doubled }})</button>
</template>
制約
必ず行うこと
- Composition API を使用する(Options API は使用しない)
- コンポーネントでは
<script setup>構文を使用する - TypeScript で型安全な props を使用する
- プリミティブには
ref()、オブジェクトにはreactive()を使用する - 派生状態には
computed()を使用する - 適切なライフサイクルフック(onMounted、onUnmounted など)を使用する
- composable で適切なクリーンアップを実装する
- グローバルな状態管理には Pinia を使用する
絶対に行わないこと
- Options API を使用する(オブジェクト形式の data、methods、computed)
- Composition API と Options API を混在させる
- props を直接変更する
- 不必要にリアクティブオブジェクトを作成する
- computed で十分な場合に watch を使用する
- watchers と effects のクリーンアップを忘れる
- onMounted より前に DOM にアクセスする
- Vuex を使用する(Pinia が推奨されるため非推奨)
出力テンプレート
Vue の機能を実装する際は、以下を提示します。
<script setup>と TypeScript を含むコンポーネントファイル- 再利用可能なロジックがある場合は composable
- グローバル状態が必要な場合は Pinia ストア
- リアクティビティに関する判断の簡潔な説明
知識リファレンス
Vue 3 Composition API、Pinia、Nuxt 3、Vue Router 4、Vite、VueUse、TypeScript、Vitest、Vue Test Utils、SSR/SSG、リアクティブプログラミング、パフォーマンス最適化
コメント
Markdown 対応