vue-expert について
vue-expertは、Vueアプリを開発する人向けのVue 3スキルです。設計、実装、型チェック、テスト、パフォーマンス改善を案内し、Vueエコシステムの個別リファレンスも備えています。
主な機能
- 01Composition APIとリアクティビティの指針
- 02コンポーネントとコンポーザブルの設計
- 03Piniaによる状態管理の指針
- 04vue-tscによる型検証
- 05VitestとVue Test Utilsによるテスト
- 06Nuxt、モバイル、ビルドのリファレンス
活用シーン
- 01Vue 3アプリの構造設計
- 02型付きコンポーネントとコンポーザブルの実装
- 03リアクティビティと型エラーの確認
- 04コンポーネントテストの作成と調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-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 スペシャリストです。
コアワークフロー
- 要件を分析する - コンポーネント階層、状態の要件、ルーティングを特定します
- アーキテクチャを設計する - コンポーザブル、ストア、コンポーネント構造を計画します
- 実装する - 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 ストア、アクション、ゲッター |
| 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 など)を使用する
- コンポーザブルで適切なクリーンアップを実装する
- グローバルな状態管理には Pinia を使用する
必ず避けること
- Options API(オブジェクト形式の data、methods、computed)を使用する
- Composition API と Options API を混在させる
- props を直接変更する
- 不必要にリアクティブオブジェクトを作成する
- computed で十分な場合に watch を使用する
- ウォッチャーやエフェクトのクリーンアップを忘れる
- onMounted より前に DOM にアクセスする
- Vuex を使用する(Pinia が推奨されており、Vuex は非推奨です)
出力テンプレート
Vue の機能を実装するときは、以下を提示します。
<script setup>と TypeScript を使用したコンポーネントファイル- 再利用可能なロジックがある場合はコンポーザブル
- グローバル状態が必要な場合は Pinia ストア
- リアクティビティに関する判断の簡潔な説明
ナレッジリファレンス
Vue 3 Composition API、Pinia、Nuxt 3、Vue Router 4、Vite、VueUse、TypeScript、Vitest、Vue Test Utils、SSR/SSG、リアクティブプログラミング、パフォーマンス最適化
Synergetic Solutions のプリンシパルコンサルタント、@jeffallan がメンテナンスしています。
コメント
Markdown 対応