SvelteKit Best Practices

February 20, 2026 ยท View on GitHub

License: MIT Skills

SvelteKit and Svelte 5 done right. Runes ($state, $derived, $effect), $props(), $bindable(), load functions, form actions, +page.server.ts, +layout.server.ts, hooks.server.ts, snippets, and SSR patterns.

AI coding assistants generate Svelte 4 code - writable() stores, export let props, $: reactive declarations, onMount data fetching. Svelte 5 replaced all of these with runes. This plugin stops your agent from writing dead syntax.

Install

Cursor / Claude Code / Windsurf

npx skills add ofershap/sveltekit-best-practices

Or copy skills/ into your .cursor/skills/ or .claude/skills/ directory.

What's Included

TypeNameDescription
Skillsveltekit-best-practices14 rules for Svelte 5 runes, load functions, form actions, SSR, and more
Rulebest-practicesAlways-on behavioral rule that enforces Svelte 5 / SvelteKit patterns
Command/auditScan your codebase for Svelte 4 anti-patterns

What Agents Get Wrong

What the agent writes (Svelte 4)What Svelte 5 uses
writable(), readable() stores$state(), $derived() runes
export let name for propslet { name } = $props()
$: doubled = count * 2let doubled = $derived(count * 2)
$: { sideEffect() }$effect(() => { sideEffect() })
Data fetching in onMountload() in +page.server.ts
API routes for form mutationsForm actions in +page.server.ts
<slot /> for childrenSnippets with {@render children()}
$app/stores for page data$app/state (Svelte 5)

If this helped your workflow, a star helps others find it.

Author

Made by ofershap

LinkedIn GitHub

License

MIT