Skill · svelte/svelte-5-runes · v1.0.0 · MIT
Svelte 5 Runes and Migration
Correct Svelte 5 runes components, shared state modules and mount() code, and Svelte 4 ports that keep bindings, events and timing intact.
Teaches an agent the current Svelte 5 API (checked against svelte 5.57.3) and how to port Svelte 3/4 code without silent behaviour changes. It concentrates on what agents trained on Svelte 4 get wrong: export let and $: versus $props, $derived and $effect (and why syncing state in effects breaks reads outside components), missing $bindable that silently stops bind: from reaching the parent, createEventDispatcher versus callback props, slots versus snippets, runes outside .svelte.ts files, exporting reassigned module state, Map and Set inside $state, proxies that structuredClone and postMessage reject, mount() deferring onMount and bind:this until flushSync, $set replaced by a $state props object, intro transitions on mount, and testing all of it with Vitest and jsdom.
- Frontend
- Migration
- Testing
- build
- maintain
- test
- svelte
- typescript
- javascript
- vite
- vitest
uplift
No runs exist for this digest.
Not measured for this digest.
Untested is not the same as useless: nobody has measured it yet. Proof comes from A/B runs on hidden tests:
npx sigil prove catalog/skills/svelte/svelte-5-runes --suite <suite> --runs 6trust level · submitted
- in the catalog: met
- structure check: not met
- static scan, no high findings: not met
- canary sandbox passed: not met
- maintainer approved: not met
canary sandbox
Not run for this digest.
static scan
Not run for this digest.
compatibility · targeted, compiled and evaluated are separate claims
| agent | targeted by author | compiled | evaluated in the lab | notes |
|---|---|---|---|---|
| Claude Code | targeted: yes | no record for compiled | no record for evaluated | |
| Codex | targeted: yes | no record for compiled | no record for evaluated | |
| Cursor | targeted: yes | no record for compiled | no record for evaluated | |
| GitHub Copilot | targeted: yes | no record for compiled | no record for evaluated | |
| Gemini CLI | targeted: yes | no record for compiled | no record for evaluated | |
| OpenCode | targeted: yes | no record for compiled | no record for evaluated |
declared permissions
- network
- none
- shell
- node, npm ls, npm test, npm run check, rg
- filesystem
- write
- env
- none
Undeclared access is a finding in the scan and a tripwire in the canary.
source
- path
- catalog/skills/svelte/svelte-5-runes
- authors
- dgesteves
- entry
- SKILL.md (agent-skill)
- registry
- 2026-11-02 · 5cb851d
install
$ npx sigil add svelte/svelte-5-runes --agent claude-codeNo compile record for Claude Code on this digest. Install never runs capability scripts, and refuses on any digest mismatch.
known limitations
- Written and verified against svelte 5.57.3 with @sveltejs/vite-plugin-svelte 7.3.1 and vitest 5.0.5. Later 5.x releases may add runes or promote experimental features; check the changelog when the installed version is newer.
- Covers Svelte itself. SvelteKit routing, load functions, form actions and remote functions are out of scope; SvelteKit 3.0 is mentioned only for its version requirements.
- Async Svelte (await in components, $state.eager, hydratable, fork) is still behind experimental.async in 5.57.3 and is described, not taught or measured.
- The proof suite runs in jsdom, which has no layout and no Element.animate, so transitions, animations and SSR hydration are covered by guidance only.
- Custom elements (customElement, $host) and Svelte Native are not covered.