본문으로 건너뛰기
cccskills
무료GitHub에 공개

svelte-sveltekit-expert

Expert guide for Svelte 5 (Runes) and SvelteKit 2+ — fine-grained reactivity, server-first architecture, form actions, and SSR/SSG / Panduan ahli Svelte 5 (Runes) dan SvelteKit 2+ — reaktivitas fine-grained, arsitektur server-first, form actions, dan SSR/SSG.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Playwright
설치 방법 보기

포함된 파일(1)

  • SKILL.md7.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Svelte 5 & SvelteKit 2 Expert (Runes Standard 2026)

English | Bahasa Indonesia


<a name="english"></a>

English

Description

Comprehensive guide for Svelte 5 and SvelteKit 2+. Focuses on the modern Runes reactivity model ($state, $derived, $effect, $props, $bindable), server-first architecture, progressive enhancement form actions (use:enhance), streaming promises in +page.server.ts, and fullstack SSR/SSG/ISR deployment on modern edge platforms.

Trigger Conditions

  • Scaffolding new applications using Svelte 5 and SvelteKit 2.
  • Migrating legacy Svelte 3/4 reactive declarations (let x = 0; $: doubled = x * 2;) to Svelte 5 Runes.
  • Implementing form submissions with server actions and zero-JS fallbacks.
  • Streaming large data sets to the client without blocking the initial page render.

Svelte 5 Runes Architecture

RunePurposeSvelte 4 Equivalent
$state(val)Declare reactive state variablelet val = ...
$derived(expr)Compute cached derived values$: val = expr
$effect(() => {})Manage side-effects & subscriptions$: { ... } or lifecycle hooks
$props()Define type-safe component propsexport let prop
$bindable()Enable two-way component bindingDirect two-way binding

Svelte 5 Component with Modern Runes

<!-- src/lib/components/Counter.svelte -->
<script lang="ts">
  interface Props {
    initialCount?: number;
    step?: number;
    onThreshold?: (val: number) => void;
  }

  // Modern Svelte 5 Props Rune with default values
  let { initialCount = 0, step = 1, onThreshold }: Props = $props();

  // Reactive State and Derived Runes
  let count = $state(initialCount);
  let doubled = $derived(count * 2);

  // Side-effect Rune with automatic dependency tracking
  $effect(() => {
    if (count >= 100 && onThreshold) {
      onThreshold(count);
    }
  });
</script>

<div class="rounded-xl border border-slate-200 bg-white p-6 shadow-sm">
  <h3 class="text-lg font-bold text-slate-800">Svelte 5 Runes Counter</h3>
  <p class="mt-2 text-slate-600">
    Current: <span class="font-bold tabular-nums text-emerald-600">{count}</span> | 
    Doubled: <span class="font-bold tabular-nums text-slate-900">{doubled}</span>
  </p>
  <div class="mt-4 flex gap-2">
    <button
      onclick={() => (count -= step)}
      class="rounded-lg bg-slate-100 px-4 py-2 font-medium hover:bg-slate-200 transition"
    >
      -{step}
    </button>
    <button
      onclick={() => (count += step)}
      class="rounded-lg bg-emerald-600 px-4 py-2 font-medium text-white hover:bg-emerald-500 transition"
    >
      +{step}
    </button>
  </div>
</div>

SvelteKit 2 Server Actions with Progressive Enhancement

// src/routes/tasks/+page.server.ts
import { fail } from '@sveltejs/kit';
import type { Actions, PageServerLoad } from './$types';

export const load: PageServerLoad = async ({ locals }) => {
  // Streaming promise pattern: do not await slow data here if streaming is desired
  return {
    fastStats: { total: 42 },
    streamedFeed: new Promise((resolve) => setTimeout(() => resolve(['Item A', 'Item B']), 300))
  };
};

export const actions: Actions = {
  createTask: async ({ request }) => {
    const data = await request.formData();
    const title = data.get('title')?.toString().trim();

    if (!title || title.length < 3) {
      return fail(400, { title, error: 'Title must be at least 3 characters long.' });
    }

    // Atomic DB write...
    return { success: true };
  }
};
<!-- src/routes/tasks/+page.svelte -->
<script lang="ts">
  import { enhance } from '$app/forms';
  let { data, form } = $props();
</script>

<form method="POST" action="?/createTask" use:enhance class="space-y-4 max-w-md">
  {#if form?.error}
    <p class="text-sm font-semibold text-rose-600">{form.error}</p>
  {/if}

  <input
    name="title"
    type="text"
    placeholder="Task title..."
    class="w-full rounded-lg border border-slate-300 p-2.5 text-sm outline-none focus:border-emerald-500"
  />

  <button type="submit" class="rounded-lg bg-emerald-600 px-4 py-2 text-white font-medium hover:bg-emerald-500">
    Add Task
  </button>
</form>

Orchestration & Integration

  • tailwind-expert: Configures Tailwind CSS v4 with SvelteKit @theme directives.
  • performance-web-vitals: Harnesses Svelte's compile-time optimization for zero bundle bloat.
  • e2e-testing-expert: End-to-end testing with Playwright for SvelteKit routes.
  • typescript-expert: Type-safe $types generation for page servers and actions.

<a name="bahasa-indonesia"></a>

Bahasa Indonesia

Deskripsi

Panduan komprehensif untuk Svelte 5 dan SvelteKit 2+. Berfokus pada model reaktivitas modern berbasis Runes ($state, $derived, $effect, $props, $bindable), arsitektur server-first, formulir dengan progressive enhancement (use:enhance), streaming promise pada +page.server.ts, dan deployment SSR/SSG/ISR pada platform edge modern.

Kondisi Pemicu

  • Membangun aplikasi baru menggunakan Svelte 5 dan SvelteKit 2.
  • Migrasi deklarasi reaktif Svelte 3/4 lawas ($: x = ...) ke model Runes Svelte 5.
  • Mengimplementasikan pengiriman data formulir menggunakan Server Actions yang tetap berfungsi tanpa JavaScript aktif (zero-JS fallback).
  • Mengalirkan (streaming) data asinkron lambat ke klien tanpa memblokir rendering halaman awal.

5 Runes Inti Svelte 5

  1. $state(nilai): Mendeklarasikan variabel reaktif utama.
  2. $derived(ekspresi): Menghitung nilai turunan yang di-cache secara otomatis.
  3. $effect(() => {}): Menjalankan efek samping saat dependensi reaktif di dalamnya berubah.
  4. $props(): Menerima props komponen secara type-safe.
  5. $bindable(): Mengaktifkan two-way binding eksplisit antar komponen induk dan anak.

Contoh Form Action dengan Progressive Enhancement

<!-- src/routes/kontak/+page.svelte -->
<script lang="ts">
  import { enhance } from '$app/forms';
  let isSubmitting = $state(false);
</script>

<form
  method="POST"
  action="?/kirimPesan"
  use:enhance={() => {
    isSubmitting = true;
    return async ({ update }) => {
      isSubmitting = false;
      await update();
    };
  }}
  class="space-y-4"
>
  <input name="email" type="email" required placeholder="nama@email.com" class="border p-2 rounded w-full" />
  <textarea name="pesan" required placeholder="Tulis pesan Anda..." class="border p-2 rounded w-full"></textarea>
  <button disabled={isSubmitting} class="bg-emerald-600 text-white px-4 py-2 rounded">
    {isSubmitting ? 'Mengirim...' : 'Kirim Pesan'}
  </button>
</form>

Integrasi Orkestrasi

  • tailwind-expert: Mengatur style Tailwind CSS v4 pada template SvelteKit.
  • performance-web-vitals: Memanfaatkan kompilasi efisien Svelte tanpa virtual DOM untuk waktu muat ultra-cepat.
  • e2e-testing-expert: Pengujian integrasi alur form dan rute menggunakan Playwright.
  • typescript-expert: Memastikan integritas tipe data antara file server dan komponen UI.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

Expert guide for intelligent model cascading and routing — complexity-scored task routing from Flash/Haiku to Sonnet/Opus/Astra, dynamic escalation with quality gates, 40-60% token cost reduction while maintaining output quality / Panduan ahli untuk kaskade dan routing model cerdas — routing tugas berbasis skor kompleksitas dari Flash/Haiku ke Sonnet/Opus/Astra, eskalasi dinamis dengan gerbang kualitas, pengurangan biaya token 40-60% dengan kualitas output terjaga.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

Expert guide for Affective Computing, emotional AI, and real-time sentiment analysis through native multimodal tokens (voice intonation and facial micro-expressions) / Panduan ahli komputasi afektif, AI emosional, dan analisis sentimen real-time melalui token multimodal native.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

Expert guide for AI-assisted coding workflows — agentic code generation, multi-agent code swarms, self-healing CI/CD, automated PR review, spec-to-code pipelines, codebase knowledge graphs, and human-in-the-loop approval gates / Panduan ahli untuk workflow pengkodean berbasis AI — generasi kode agentic, code swarm multi-agen, CI/CD self-healing, review PR otomatis, pipeline spec-to-code, knowledge graph codebase, dan gate persetujuan human-in-the-loop.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

Expert guide for autonomous Machine-to-Machine (M2M) agent settlement, dual-rail fiat & stablecoin micro-clearing, dynamic budget envelopes, and cryptographic agent invoicing / Panduan ahli settlement otonom antar-agen (M2M), kliring mikro dual-rail fiat & stablecoin, pagu anggaran dinamis, dan penagihan agen kriptografis.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

Expert guide for long-term episodic memory integration (Mem0 v2, Letta/MemGPT, Zep v2), memory tier architecture, pgvector HNSW storage, and unified context management for autonomous AI agents / Panduan ahli untuk integrasi memori episodik jangka panjang (Mem0 v2, Letta/MemGPT, Zep v2), arsitektur tier memori, penyimpanan pgvector HNSW, dan manajemen konteks terpadu untuk agen AI otonom.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

roedyrustam/vibes-plug1102026년 10월 21일 업데이트

roedyrustam의 스킬 모두 보기

이 스킬의 문제 신고