mcpField
V
vue-debug-guides

vue-debug-guides

github.com/onmax開発722285 回インストール2 日前に更新
リポジトリ

vue-debug-guides について

Vue 3 開発者向けのデバッグスキルです。リアクティビティ、コンポーネント、テンプレート、ライフサイクルなどの実行時問題とエラー処理を整理しています。

主な機能

  1. 01リアクティビティと算出プロパティのデバッグ
  2. 02ウォッチャーと非同期処理の問題診断
  3. 03コンポーネント、プロパティ、テンプレートの調査
  4. 04ライフサイクル、SSR、TypeScript の指針

活用シーン

  1. 01予期しない再レンダリングの追跡
  2. 02ウォッチャー内の古い非同期結果の診断
  3. 03テンプレート、コンポーネント、水和エラーの調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/onmax/nuxt-skills --skill vue-debug-guides

インストール後、Claude Code で/vue-debug-guidesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
animation-key-for-rerender.md
animation-transitiongroup-performance.md
async-component-error-handling.md
async-component-keepalive-ref-issue.md
async-component-suspense-control.md
async-component-vue-router.md
attrs-event-listener-merging.md
checkbox-true-false-value-form-submission.md
cleanup-side-effects.md
click-events-on-components.md
component-naming-conflicts.md
component-ref-requires-defineexpose.md
composable-avoid-hidden-side-effects.md
composable-call-location-restrictions.md
composable-naming-return-pattern.md
composable-tovalue-inside-watcheffect.md
composition-api-not-functional-programming.md
composition-api-script-setup-async-context.md
composition-api-vs-react-hooks-differences.md
computed-array-mutation.md
computed-conditional-dependencies.md
computed-no-parameters.md
computed-no-side-effects.md
computed-return-value-readonly.md
configure-app-before-mount.md
declare-emits-for-documentation.md
define-expose-before-await.md
define-model-default-value-sync.md
defineEmits-must-be-top-level.md
defineEmits-no-runtime-and-type-mixed.md

詳細

Vue 3 のデバッグとエラー処理。ランタイムの問題、警告、非同期処理の失敗、ハイドレーションの不具合に対応します。 開発のベストプラクティスやよくある落とし穴については、vue-best-practices を参照してください。

リアクティビティ
算出プロパティ
ウォッチャー
コンポーネント
Props と Emits
テンプレート
  • 文を含むテンプレートでコンパイルエラーが発生する → template-expressions-restrictions を参照してください
  • 「undefined のプロパティを読み取れません」という実行時エラーが発生する → v-if-null-check-order を参照してください
  • 動的ディレクティブ引数が正しく動作しない → dynamic-argument-constraints を参照してください
  • v-else 要素が常に無条件でレンダリングされる → v-else-must-follow-v-if を参照してください
  • v-if と v-for の併用により優先順位の問題や移行時の不具合が発生する → no-v-if-with-v-for を参照してください
  • テンプレート内の関数呼び出しによる状態変更で、再レンダリング時に予期しない不具合が発生する → template-functions-no-side-effects を参照してください
  • ループ内の子コンポーネントに未定義のデータが表示される → v-for-component-props を参照してください
  • ソートまたは逆順にした後で配列の順序が変わる → v-for-computed-reverse-sort を参照してください
  • リスト項目が予期せず消えたり、状態が入れ替わったりする → v-for-key-attribute を参照してください
  • 範囲の反復処理でオフバイワンエラーが発生する → v-for-range-starts-at-one を参照してください
  • テンプレート要素で v-show または v-else が動作しない → v-show-template-limitation を参照してください
テンプレート参照
  • 要素が条件付きで非表示になると ref が null になる → template-ref-null-with-v-if を参照してください
  • ループ内で ref 配列のインデックスがデータ配列と一致しない → template-ref-v-for-order を参照してください
  • テンプレート ref の名前をリファクタリングすると、コード内で気づかないまま動作しなくなる → use-template-ref-vue35 を参照してください
フォームと v-model
イベントと修飾子
  • 複数のイベント修飾子を連結すると、予期しない結果になります → event-modifier-order-mattersを参照してください
  • システム修飾キーを使ったキーボードショートカットが発火しません → keyup-modifier-timingを参照してください
  • 意図しない修飾キーの組み合わせでキーボードショートカットが発火します → exact-modifier-for-precise-shortcutsを参照してください
  • passive 修飾子と prevent 修飾子を併用すると、イベントの動作が壊れます → no-passive-with-preventを参照してください
ライフサイクル
  • イベントリスナーを削除しないことでメモリリークが発生します → cleanup-side-effectsを参照してください
  • コンポーネントのマウント前に DOM にアクセスできません → lifecycle-dom-access-timingを参照してください
  • 状態の変更後も DOM の読み取り値が古いままです → dom-update-timing-nexttickを参照してください
  • SSR のレンダリング結果とクライアントのハイドレーション結果が異なります → lifecycle-ssr-awarenessを参照してください
  • 非同期に登録されたライフサイクルフックが実行されません → lifecycle-hooks-synchronous-registrationを参照してください
スロット
  • スロットの内容から子コンポーネントのデータにアクセスすると、値が undefined になります → slot-render-scope-parent-onlyを参照してください
  • 名前付きスロットとスコープ付きスロットを併用すると、コンパイルエラーが発生します → slot-named-scoped-explicit-defaultを参照してください
  • ネイティブ HTML 要素で v-slot を使用すると、コンパイルエラーが発生します → slot-v-slot-on-components-or-templates-onlyを参照してください
  • 暗黙のデフォルトスロットの動作により、コンテンツが予期しない場所に配置されます → slot-implicit-default-contentを参照してください
  • スコープ付きスロットの props に、期待される name プロパティがありません → slot-name-reserved-propを参照してください
  • ラッパーコンポーネントによって子のスロット機能が損なわれます → slot-forwarding-to-child-componentsを参照してください
Provide/Inject
属性
コンポーザブル
Composition API
アニメーション
TypeScript
  • 変更可能な prop のデフォルト値によって、コンポーネントインスタンス間で状態が漏れる → ts-withdefaults-mutable-factory-function を参照してください
  • reactive() のジェネリック型によって、ref のアンラップに不整合が生じる → ts-reactive-no-generic-argument を参照してください
  • マウント前、または v-if によるアンマウント後に、テンプレート ref へのアクセスで null エラーが発生する → ts-template-ref-null-handling を参照してください
  • オプションの boolean prop が undefined ではなく false として扱われる → ts-defineprops-boolean-default-false を参照してください
  • インポートした defineProps の型で、解決できない型参照や複雑な型参照が発生する → ts-defineprops-imported-types-limitations を参照してください
  • 型指定のない DOM イベントハンドラーが、厳格な TypeScript 設定で失敗する → ts-event-handler-explicit-typing を参照してください
  • 動的コンポーネントの ref によって、リアクティブなコンポーネントに関する警告が発生する → ts-shallowref-for-dynamic-components を参照してください
  • 絞り込みを行わない union 型のテンプレート式が型チェックに失敗する → ts-template-type-casting を参照してください
非同期コンポーネント
  • defineAsyncComponent の遅延読み込みでルートコンポーネントの設定を誤る → async-component-vue-router を参照してください
  • コンポーネントの読み込み時にネットワーク障害やタイムアウトが発生する → async-component-error-handling を参照してください
  • コンポーネントの再アクティブ化後にテンプレート ref が undefined になる → async-component-keepalive-ref-issue を参照してください
レンダー関数
KeepAlive
Transitions
Teleport
Suspense
SSR
  • サーバーとクライアントのレンダリング結果で HTML が異なる → ssr-hydration-mismatch-causesを参照
  • 共有シングルトンストアによってリクエスト間でユーザーの状態が漏洩する → state-ssr-cross-request-pollutionを参照
  • ユニバーサルコードの経路でブラウザー専用 API を使用すると、サーバーレンダリングがクラッシュする → ssr-platform-specific-apisを参照
パフォーマンス
SFC(単一ファイルコンポーネント)
プラグイン
アプリケーションの設定
  • mountの呼び出し後にアプリケーションの設定メソッドが機能しない → configure-app-before-mountを参照してください
  • mount()がコンポーネントインスタンスを返すため、mount()からアプリケーション設定をチェーンできない → mount-return-valueを参照してください
  • require.contextベースのコンポーネント自動登録がViteで失敗する → dynamic-component-registration-viteを参照してください

コメント