Svelte — Compile-Time Reactive UI Framework
You are an expert in Svelte, the UI framework that shifts work from runtime to compile time. You help developers build web applications using Svelte's reactive declarations, component system, stores, transitions, and actions — compiling to minimal vanilla JavaScript with no virtual DOM overhead, resulting in smaller bundles and faster runtime performance than React or Vue.
Best use case
Svelte — Compile-Time Reactive UI Framework is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in Svelte, the UI framework that shifts work from runtime to compile time. You help developers build web applications using Svelte's reactive declarations, component system, stores, transitions, and actions — compiling to minimal vanilla JavaScript with no virtual DOM overhead, resulting in smaller bundles and faster runtime performance than React or Vue.
Teams using Svelte — Compile-Time Reactive UI Framework should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/svelte/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Svelte — Compile-Time Reactive UI Framework Compares
| Feature / Agent | Svelte — Compile-Time Reactive UI Framework | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in Svelte, the UI framework that shifts work from runtime to compile time. You help developers build web applications using Svelte's reactive declarations, component system, stores, transitions, and actions — compiling to minimal vanilla JavaScript with no virtual DOM overhead, resulting in smaller bundles and faster runtime performance than React or Vue.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Svelte — Compile-Time Reactive UI Framework
You are an expert in Svelte, the UI framework that shifts work from runtime to compile time. You help developers build web applications using Svelte's reactive declarations, component system, stores, transitions, and actions — compiling to minimal vanilla JavaScript with no virtual DOM overhead, resulting in smaller bundles and faster runtime performance than React or Vue.
## Core Capabilities
### Reactive Components (Svelte 5 Runes)
```svelte
<!-- Counter.svelte — Svelte 5 with runes -->
<script lang="ts">
let count = $state(0); // Reactive state
let doubled = $derived(count * 2); // Computed value
function increment() {
count++; // Direct mutation triggers updates
}
$effect(() => {
// Runs when dependencies change (like useEffect)
console.log(`Count changed to ${count}`);
document.title = `Count: ${count}`;
});
</script>
<button onclick={increment}>
Clicked {count} times (doubled: {doubled})
</button>
<style>
button {
padding: 0.5rem 1rem;
border-radius: 0.5rem;
background: #ff3e00;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background: #ff5722;
}
</style>
```
### Props and Events
```svelte
<!-- Card.svelte -->
<script lang="ts">
interface Props {
title: string;
description?: string;
variant?: "default" | "featured";
onclick?: () => void;
}
let { title, description = "", variant = "default", onclick }: Props = $props();
</script>
<div class="card {variant}" onclick={onclick}>
<h3>{title}</h3>
{#if description}
<p>{description}</p>
{/if}
{@render children()} <!-- Slot content -->
</div>
<style>
.card { padding: 1rem; border: 1px solid #ddd; border-radius: 0.5rem; }
.card.featured { border-color: #ff3e00; background: #fff5f2; }
</style>
```
### Stores (Global State)
```typescript
// stores/cart.ts — Writable store
import { writable, derived } from "svelte/store";
interface CartItem {
id: string;
name: string;
price: number;
quantity: number;
}
export const cart = writable<CartItem[]>([]);
export const cartTotal = derived(cart, ($cart) =>
$cart.reduce((sum, item) => sum + item.price * item.quantity, 0)
);
export const cartCount = derived(cart, ($cart) =>
$cart.reduce((sum, item) => sum + item.quantity, 0)
);
export function addToCart(item: Omit<CartItem, "quantity">) {
cart.update((items) => {
const existing = items.find((i) => i.id === item.id);
if (existing) {
existing.quantity++;
return [...items];
}
return [...items, { ...item, quantity: 1 }];
});
}
export function removeFromCart(id: string) {
cart.update((items) => items.filter((i) => i.id !== id));
}
```
```svelte
<!-- CartSummary.svelte — Using stores -->
<script lang="ts">
import { cart, cartTotal, cartCount, removeFromCart } from "$lib/stores/cart";
</script>
<div class="cart">
<h2>Cart ({$cartCount} items)</h2>
{#each $cart as item (item.id)}
<div class="item">
<span>{item.name} × {item.quantity}</span>
<span>${(item.price * item.quantity).toFixed(2)}</span>
<button onclick={() => removeFromCart(item.id)}>✕</button>
</div>
{/each}
<p class="total">Total: ${$cartTotal.toFixed(2)}</p>
</div>
```
### Transitions and Animations
```svelte
<script>
import { fade, fly, slide, scale } from "svelte/transition";
import { flip } from "svelte/animate";
let items = $state(["Apple", "Banana", "Cherry"]);
let showModal = $state(false);
</script>
<!-- Animate list changes -->
{#each items as item (item)}
<div animate:flip={{ duration: 300 }} transition:fade={{ duration: 200 }}>
{item}
</div>
{/each}
<!-- Modal with transitions -->
{#if showModal}
<div class="overlay" transition:fade={{ duration: 150 }}>
<div class="modal" transition:fly={{ y: 50, duration: 300 }}>
<h2>Modal Content</h2>
<button onclick={() => showModal = false}>Close</button>
</div>
</div>
{/if}
```
## Installation
```bash
npx sv create my-app # SvelteKit project
cd my-app && npm install && npm run dev
# Or standalone Svelte (with Vite)
npm create vite@latest my-app -- --template svelte-ts
```
## Best Practices
1. **Runes for state** — Use `$state()`, `$derived()`, `$effect()` in Svelte 5; cleaner than Svelte 4's `$:` syntax
2. **Scoped styles by default** — CSS in `<style>` is component-scoped; no CSS modules or CSS-in-JS needed
3. **Stores for shared state** — Use writable/derived stores for state shared between components; auto-subscribe with `$`
4. **Transitions built-in** — Use `transition:fade`, `transition:fly` etc.; no animation library needed for common effects
5. **Small bundles** — Svelte compiles away the framework; a typical app ships 5-10KB of runtime vs 40KB+ for React
6. **SvelteKit for full-stack** — Use SvelteKit for SSR, routing, API endpoints, and deployment adapters
7. **TypeScript support** — Use `<script lang="ts">` for type-safe components; types flow through props and stores
8. **Actions for DOM** — Use `use:action` for reusable DOM behavior (click-outside, tooltip, intersection observer)Related Skills
tracking-application-response-times
Track and optimize application response times across API endpoints, database queries, and service calls. Use when monitoring performance or identifying bottlenecks. Trigger with phrases like "track response times", "monitor API performance", or "analyze latency".
timeout-handler
Timeout Handler - Auto-activating skill for API Integration. Triggers on: timeout handler, timeout handler Part of the API Integration skill category.
forecasting-time-series-data
This skill enables Claude to forecast future values based on historical time series data. It analyzes time-dependent data to identify trends, seasonality, and other patterns. Use this skill when the user asks to predict future values of a time series, analyze trends in data over time, or requires insights into time-dependent data. Trigger terms include "forecast," "predict," "time series analysis," "future values," and requests involving temporal data.
time-series-decomposer
Time Series Decomposer - Auto-activating skill for Data Analytics. Triggers on: time series decomposer, time series decomposer Part of the Data Analytics skill category.
analyzing-text-sentiment
This skill enables Claude to analyze the sentiment of text data. It identifies the emotional tone expressed in text, classifying it as positive, negative, or neutral. Use this skill when a user requests sentiment analysis, opinion mining, or emotion detection on any text, such as customer reviews, social media posts, or survey responses. Trigger words include "sentiment analysis", "analyze sentiment", "opinion mining", "emotion detection", and "polarity".
response-time-analyzer
Response Time Analyzer - Auto-activating skill for Performance Testing. Triggers on: response time analyzer, response time analyzer Part of the Performance Testing skill category.
analyzing-market-sentiment
Analyze cryptocurrency market sentiment using Fear & Greed Index, news analysis, and market momentum. Use when gauging overall market mood, checking if markets are fearful or greedy, or analyzing sentiment for specific coins. Trigger with phrases like "analyze crypto sentiment", "check market mood", "is the market fearful", "sentiment for Bitcoin", or "Fear and Greed index".
recipe-find-free-time
Query Google Calendar free/busy status for multiple users to find a meeting slot.
recipe-block-focus-time
Create recurring focus time blocks on Google Calendar to protect deep work hours.
repo-story-time
Generate a comprehensive repository summary and narrative story from commit history
microsoft-agent-framework
Create, update, refactor, explain, or review Microsoft Agent Framework solutions using shared guidance plus language-specific references for .NET and Python.
dotnet-timezone
.NET timezone handling guidance for C# applications. Use when working with TimeZoneInfo, DateTimeOffset, NodaTime, UTC conversion, daylight saving time, scheduling across timezones, cross-platform Windows/IANA timezone IDs, or when a .NET user needs the timezone for a city, address, region, or country and copy-paste-ready C# code.