wevu-best-practices について
wevu-best-practices は、Vue 風のパターンでミニプログラムのランタイムロジックを実装するためのスキルです。ライフサイクルのタイミング、リアクティブな状態、コンポーネント契約、Vue 3 の Web ランタイムとの差異を扱います。
主な機能
- 01ランタイム API とコンポーネント登録の指針
- 02ライフサイクルフックのタイミング確認
- 03リアクティブ状態とイベントバインディングのパターン
- 04Store の利用と型推論の指針
- 05ミニプログラム互換性の確認
活用シーン
- 01wevu のページやコンポーネントロジックの実装
- 02ライフサイクル時期やリアクティブ更新の調査
- 03props、emit、双方向バインディングの定義
- 04Store パターンとランタイム差異の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ weapp-vite/ weapp-vite --skill wevu-best-practicesインストール後、Claude Code で/wevu-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/component-patterns.mdstore-patterns.mdtroubleshooting-checks.md詳細
wevu-best-practices
目的
wevu の制約を守りながら、Vue のような使いやすさでミニプログラムのランタイムロジックを実装します。ライフサイクルのタイミング、リアクティブな更新、コンポーネントの契約を明示します。
きっかけとなるシグナル
- ユーザーが
wevuでページやコンポーネントのロジックを実装する方法を尋ねている。 - ユーザーがライフサイクルフックのタイミングやセットアップパターンについて尋ねている。
- ユーザーが props/emit の契約、イベントの detail ペイロード、双方向バインディングのパターンについて尋ねている。
- ユーザーがストアのアーキテクチャ、
storeToRefs、型推論の動作について尋ねている。 - ユーザーが Vue 3 のウェブ版の動作とのランタイムの違いを報告している。
適用範囲
主な問題がランタイムの動作や状態/イベントの契約に関する場合に、このスキルを使用します。
次の場合は、主要なスキルとして使用しないでください。
- タスクがビルド/設定/サブパッケージ/CI のオーケストレーションに関するものです。
weapp-vite-best-practicesを使用してください。 - タスクの主な内容が
.vueのマクロ/テンプレート構文の互換性です。weapp-vite-vue-sfc-best-practicesを使用してください。 - タスクがネイティブのミニプログラムから段階的に移行するものです。
native-to-weapp-vite-wevu-migrationを使用してください。
クイックスタート
- ランタイム API のインポートとコンポーネント登録の方式を確認します。
- フックの登録タイミングとコンポーネント/ページの境界を確認します。
- 状態/イベントのバインディングパターン(
ref/reactive、emit、bindModel)を統一します。 - 対象を絞ったランタイムテストまたはユニットテストで検証します。
実行手順
- ランタイムの規約を確立する
- ランタイム API は
wevuからのみインポートします。 - ページとコンポーネントの両方で
defineComponentによる登録を使用します。 - オプション形式の
dataを使用する場合は、関数として定義します。
- 境界とタイミングを検証する
- ページフックはページのコンテキスト内でのみ使用します。
- ライフサイクルフックは
setup()内で同期的に登録します。 awaitの後にフックを登録しないでください。
- リアクティブな更新パターンを統一する
- 状態の導出には
ref/reactive/computedを優先します。 - 不透明で大規模な状態の書き込みを避け、粒度の細かいリアクティブな更新を優先します。
- フォームやイベントの意味づけが単純でない場合は、明示的なバインディングを使用します。
- イベントと双方向バインディングの契約を定義する
- ミニプログラムの仕様に従い、
ctx.emit(event, detail, options)を使用します。 - 再利用可能なフィールドの契約には、
bindModel/useBindModelを優先します。 - 値の変換を行う場合は、パーサー/フォーマッターの動作を記述します。
- ストアの運用規律を適用する
- シンプルなドメインと強力な TS 型推論には、Setup Store を優先します。
- 状態/ゲッターを分割代入する場合は、
storeToRefsを使用します。 - グローバルなプラグイン/永続化の動作が必要な場合に限り、
createStore()を導入します。
- 互換性を明示的に検証する
- ランタイムのビジネスロジックでは、DOM/ブラウザー専用 API を使用しないでください。
- Node/Vitest でブリッジのテストを行う場合は、
Component/wxをスタブ化します。 - プラットフォームの違いは、暗黙のバグではなく明示的な制約として扱います。
制約
setup()内でawaitの後にフックを登録しないでください。- ストアでは
storeToRefsを使わずに状態を直接分割代入しないでください。 - テンプレートやライフサイクルのタイミングで、文書化されていない Vue ウェブ版専用の動作に依存しないでください。
- シリアライズできないネイティブインスタンスオブジェクトをテンプレートの状態として返さないでください。
出力要件
このスキルを適用する場合、次を提示します。
- ランタイムのリスク概要(ライフサイクル/状態/イベント/ストア)。
- ファイル単位の具体的な編集内容。
- Vue 3 ウェブ版のランタイムとの互換性に関する注意点。
- 最小限の検証コマンドと、期待される結果。
完了チェック
- ビジネスコードの API は
vueではなくwevuからインポートされています。 - ページ/コンポーネントの境界で一貫した使い方がされています。
- フックの登録は同期的で、予測可能なタイミングで行われています。
- ストアはシングルトンと
storeToRefsの規約に従っています。 - テンプレート/イベントのバインディングは、ミニプログラムでサポートされる仕様に合致しています。
参考資料
references/component-patterns.mdreferences/store-patterns.mdreferences/troubleshooting-checks.md
コメント
Markdown 対応