With svelte
Modern Svelte 5 + SvelteKit guidance and routing. Use whenever creating, editing, reviewing, or debugging a Svelte component (.svelte) or module (.svelte.ts/.svelte.js), or any SvelteKit project. Covers runes ($state, $derived, $effect, $props, $bindable), template directives ({@attach}, {@render}, {@html}, snippets, keyed each), components (Bits UI, web components, forms), SvelteKit routing/layouts/error boundaries, data flow (load functions, form actions, +page.server.ts vs +page.ts, serialization, invalidateAll), remote functions (query/form/command/prerender in .remote.ts), deployment (adapters, Vite, pnpm, PWA, Cloudflare), and the @sveltejs/mcp CLI. Triggers are Svelte, SvelteKit, runes, .svelte, .remote.ts, +page, load function, form action.From its SKILL.md
npx -y skills add robcsaszar/frontend-kit --skill with-svelteAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
with-svelte
Unified Svelte 5 + SvelteKit skill. This body is a router: apply the always-on core below, then READ the one reference file that matches the task before writing code. Load only the file(s) you need — not all of them.
Always-on core (every Svelte task)
Write runes-mode Svelte 5. Never reach for a legacy feature that has a modern replacement:
$stateinstead of implicitlet count = 0; count += 1$derived/$effectinstead of$:— and prefer$derivedover$effect(effects are an escape hatch; never set state inside one)$propsinstead ofexport let,$$props,$$restPropsonclick={...}instead ofon:click={...}{#snippet}/{@render}instead of<slot>,$$slots,<svelte:fragment>{@attach ...}instead ofuse:action<DynamicComponent>instead of<svelte:component this={...}>;import Selfinstead of<svelte:self>- classes with
$statefields instead of stores;createContextinstead ofsetContext/getContext - clsx-style class arrays/objects instead of the
class:directive - keyed
{#each}— never use the index as the key
When unsure of current syntax, do not guess — confirm via the @sveltejs/mcp CLI (see references/tooling.md) and run svelte-autofixer before finalizing any component.
Routing table — READ the matching reference before writing
| Task involves… | MANDATORY READ |
|---|---|
Reactive state, props, effects, $state/$derived/$effect/$props/$bindable, Svelte 4→5 migration, $inspect, await-in-component | references/runes-reactivity.md |
{@attach} / use: actions, {@html}, {@render}, {@const}, {@debug}, snippets, keyed each, bind:, <svelte:window> | references/template-directives.md |
| Component libraries (Bits/Ark/Melt UI), web components, forms, styling child components, CSS-from-JS, context | references/components.md |
Routing, file naming (+page/+layout/+error/+server), nested layouts, route groups, error boundaries, <svelte:boundary>, SSR/hydration | references/sveltekit-structure.md |
load functions, +page.server.ts vs +page.ts vs +server.ts, form actions, fail()/redirect()/error(), serialization, invalidateAll() | references/sveltekit-data-flow.md |
Remote functions: query()/form()/command()/prerender() in *.remote.ts, schema validation, .updates() | references/sveltekit-remote-functions.md |
| Adapters, Vite/pnpm setup, PWA, library authoring, Cloudflare/streaming, production build | references/deployment.md |
| Confirming syntax, looking up docs, validating/fixing code | references/tooling.md |
If a task spans areas (e.g. a form that uses runes + a server action), read each matching file. Do not load files outside the task's scope. If no reference covers the case, fetch authoritative docs via references/tooling.md rather than guessing.
NEVER
-
NEVER set
$stateinside an$effectto compute a value Instead: use$derived(or$derived.byfor complex expressions). Why: effect-driven assignment creates extra render passes and update loops;$derivedis glitch-free and runs lazily. -
NEVER guard effect/lifecycle code with
if (browser) {...}to make it server-safe Instead: effects already don't run on the server; for global listeners use<svelte:window>/<svelte:document>, and for browser-only setup use the right reference's SSR guidance. Why: the guard is dead code inside an effect and signals a misunderstanding that hides real hydration bugs. -
NEVER return non-serializable values (class instances, functions, symbols) from a SvelteKit
loador remote function Instead: return plain JSON-serializable data; seereferences/sveltekit-data-flow.md/references/sveltekit-remote-functions.md. Why: load uses JSON and remote functions usedevalue; non-serializable returns fail silently or at runtime across the server→client boundary. -
NEVER call
redirect()/error()in SvelteKit withoutthrow-ing them Instead:throw redirect(303, '/path')/throw error(404). Why: withoutthrowexecution continues and the navigation/error never happens. -
NEVER guess current Svelte/SvelteKit API surface from memory for unfamiliar features Instead: run
npx @sveltejs/mcp list-sections+get-documentation, thensvelte-autofixer(seereferences/tooling.md). Why: runes, remote functions, and async Svelte change fast and are version-gated; stale syntax compiles to subtly wrong behavior.
What ships with it: 8 files
111.5 KB alongside SKILL.md
references/
- components.md9.5 KB
- deployment.md6.0 KB
- runes-reactivity.md29.4 KB
- sveltekit-data-flow.md21.1 KB
- sveltekit-remote-functions.md11.8 KB
- sveltekit-structure.md16.4 KB
- template-directives.md15.6 KB
- tooling.md1.9 KB
Gives 0 of the 12 instructions most ui components skills give in ~1.2k tokens
Counted across 293 of the 305 authors here whose files we hold, read 2026-09-06
- Start with a --design-system search before designingin 17 of 293, across 15 files
- Ensure 4.5:1 minimum text contrastin 16 of 293, across 15 files
- Verify the pre-delivery checklist before delivering UI codein 16 of 293, across 14 files
- Use SVG icons instead of emojisin 15 of 293, across 14 files
- Keep touch targets at least 44 pointsin 14 of 293, across 12 files
- Check page override files before master rulesin 13 of 293, across 11 files
- Supplement with domain searches as neededin 13 of 293, across 11 files
- Add cursor-pointer to all clickable elementsin 12 of 293
- Use CSS variables for themingin 11 of 293, across 7 files
- Use semantic color tokens, not raw hexin 11 of 293, across 8 files
- Meet WCAG AA color contrastin 11 of 293, across 7 files
- Default stack to html-tailwind when unspecifiedin 10 of 293
Said here and by no other author read
- Prefer $derived over $effect
- Confirm unfamiliar syntax via the @sveltejs/mcp CLI
- Fetch authoritative docs when no reference covers the case
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.