mcpField
S
svelte5-best-practices

svelte5-best-practices

github.com/ejirocodes開発617.2k 回インストール18 週間前に更新
リポジトリ

svelte5-best-practices について

リアクティビティ、コンポーネント、イベント、TypeScript、SvelteKit、移行、性能に関する Svelte 5 の実践パターンをまとめたスキルです。現行の慣習を適用し、よくある誤りを避けるために役立ちます。

主な機能

  1. 01Runes とリアクティブ状態のパターン
  2. 02スニペットとコンポーネントプロパティ
  3. 03イベントとコールバックの規約
  4. 04TypeScript とジェネリックコンポーネント
  5. 05SvelteKit と性能に関する指針
  6. 06Svelte 4 の移行ノート

活用シーン

  1. 01Svelte 5 コンポーネントの作成
  2. 02Svelte 4 コードの移行
  3. 03SvelteKit のロード処理とフォームアクションの実装

インストール

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

$npx skills add https://github.com/ejirocodes/agent-skills --skill svelte5-best-practices

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

同梱ファイル

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

references/
events.md
migration.md
performance.md
runes.md
snippets.md
sveltekit.md
typescript.md

詳細

Svelte 5 のベストプラクティス

クイックリファレンス

トピック使用する場面リファレンス
ルーン$state、$derived、$effect、$props、$bindable、$inspectrunes.md
スニペットスロットの置き換え、{#snippet}、{@render}snippets.md
イベントonclick ハンドラー、コールバックプロパティ、コンテキスト APIevents.md
TypeScriptProps の型付け、ジェネリックコンポーネントtypescript.md
移行Svelte 4 から 5 への移行、ストアからルーンへの移行migration.md
SvelteKitLoad 関数、フォームアクション、SSR、ページの型付けsveltekit.md
パフォーマンスユニバーサルリアクティビティ、過剰なリアクティビティの回避、ストリーミングperformance.md

基本的なパターン

リアクティブな状態
<script>
  let count = $state(0);           // Reactive state
  let doubled = $derived(count * 2); // Computed value
</script>
コンポーネントの Props
<script>
  let { name, count = 0 } = $props();
  let { value = $bindable() } = $props(); // Two-way binding
</script>
スニペット(スロットの置き換え)
<script>
  let { children, header } = $props();
</script>

{@render header?.()}
{@render children()}
イベントハンドラー

<button onclick={() => count++}>Click</button>
コールバックプロパティ(createEventDispatcher の置き換え)
<script>
  let { onclick } = $props();
</script>

<button onclick={() => onclick?.({ data })}>Click</button>

よくある間違い

  1. $state を使わずに let を使う - $state() がない変数はリアクティブになりません
  2. 派生値に $effect を使う - 代わりに $derived を使います
  3. on:click 構文を使う - Svelte 5 では onclick を使います
  4. createEventDispatcher を使う - 代わりにコールバックプロパティを使います
  5. <slot> を使う - {@render} とスニペットを使います
  6. $bindable() を忘れる - bind: を動作させるには必須です
  7. SSR でモジュールレベルの状態を設定する - リクエスト間で状態が漏れる原因になります
  8. Load 関数で await を逐次実行する - リクエストを並列で処理するには Promise.all を使います

コメント