sveltekit-builder
npx skills add https://github.com/bfmcneill/agi-marketplace --skill sveltekit-builder
Agent 安装分布
Skill 文档
SvelteKit Builder
Expert guidance for building production-ready SvelteKit applications with Svelte 5 runes, remote functions, and modern best practices.
When to Use This Skill
Use this skill when:
- Scaffolding new SvelteKit projects with Svelte 5
- Migrating from Svelte 4 to Svelte 5 (reactivity model changed fundamentally)
- Implementing remote functions (SvelteKit’s type-safe server functions)
- Optimizing performance (bundle size, SSR, hydration, rendering)
- Applying security patterns (XSS prevention, input validation, secret management)
- Integrating recommended stack (Kysely, Better Auth, shadcn-svelte, Lucide, AI SDK)
- Code reviews where Svelte/SvelteKit patterns need validation
- Debugging reactivity issues or SSR hydration mismatches
Knowledge Base Structure
This skill contains 105+ best practice rules organized by impact and category:
Svelte 5 Specific (svelte5/) – 66 rules
CRITICAL Impact:
- Reactivity (
reactivity-*): $state, $derived, $effect – The foundation changed completely from Svelte 4 - Remote Functions (
remote-*): Type-safe server functions in .remote.ts files - Security (
template-html-*): XSS prevention with {@html} - Async & Data Fetching (
async-*): Waterfalls, {#await}, svelte:boundary
HIGH Impact:
- Component Patterns (
component-*): $props, callbacks, snippets (not slots anymore) - SSR & Hydration (
ssr-*): Server rendering, hydration mismatches - SvelteKit Patterns (
sveltekit-*): Load functions, form actions, error handling - Actions (
actions-*): Reusable DOM behavior - Accessibility (
a11y-*): Compiler warnings
MEDIUM Impact:
- State Management (
state-*): Shared state, context, stores vs runes - Rendering Optimization (
rendering-*): Keyed {#each}, unnecessary reactivity - CSS & Styling (
css-*): Scoped styles, theming - Forms (
forms-*): Form handling patterns - Transitions & Animation (
transitions-*): Smooth animations - Events (
events-*): onclick vs on:click - Special Elements (
elements-*): svelte:head, svelte:window, svelte:body - Template Patterns (
template-*): {@const}, {#key}, {#if}
LOWER Impact:
- TypeScript (
typescript-*): Props interfaces, generics with snippets
Framework-Agnostic (general/) – 15 rules
HIGH Impact:
- Bundle Optimization (
bundle-*): Dynamic imports, tree-shaking, lazy loading - Security (
security-*): Input sanitization - Rendering Performance (
rendering-*): content-visibility, layout thrashing
LOWER Impact:
- JavaScript Performance (
js-*): Promise.all, Set/Map, debouncing
Third-Party Stack (third-party/) – 24+ rules
Opinionated patterns for the recommended SvelteKit stack:
- Kysely (
kysely/*): Type-safe SQL, connection pooling, transactions - Better Auth (
better-auth/*): Session management, route protection, OAuth - shadcn-svelte (
shadcn-svelte/*): Accessible components, dark mode, Superforms - Lucide Svelte (
lucide-svelte/*): Tree-shakeable icons - AI SDK (
ai-sdk/*): Streaming, tool validation, API key management
How to Use This Skill
1. Start with Critical Rules
When working on SvelteKit projects, always check CRITICAL impact rules first:
references/svelte5/reactivity-use-state-explicit.md
references/svelte5/remote-separate-files.md
references/svelte5/remote-validate-inputs.md
references/svelte5/template-html-xss.md
references/svelte5/sveltekit-parallel-load.md
These prevent silent bugs, security vulnerabilities, and performance issues.
2. Reference Rules by Category
When implementing specific features, consult the relevant category:
- Building a form? â Check
forms-*andremote-*(form actions) - Data fetching? â Check
async-*andsveltekit-*(load functions) - Component communication? â Check
component-*($props, callbacks, snippets) - Performance issues? â Check
bundle-*,rendering-*, andasync-parallel-fetching - Hydration errors? â Check
ssr-*rules
3. Use the Sections Guide
Refer to references/_sections.md for:
- Complete category breakdown
- Impact levels for each prefix
- Rule counts per category
- Comparison with React patterns (for developers migrating)
4. Follow Rule Format
Each rule file contains:
- Impact level and description
- Explanation of why it matters
- Incorrect example showing the anti-pattern
- Correct example showing the best practice
- Reference links to official documentation
Key Principles
Svelte 5 Migration Critical Points
Reactivity is no longer automatic:
- Svelte 4:
let count = 0;was reactive - Svelte 5: Must use
let count = $state(0);explicitly
No more createEventDispatcher:
- Svelte 4:
dispatch('change', value) - Svelte 5: Pass callbacks as props
Slots are now snippets:
- Svelte 4:
<slot name="header" /> - Svelte 5:
{@render header()}
Effects need cleanup:
- Always return cleanup functions from
$effectto prevent memory leaks
Remote Functions (SvelteKit’s Server Functions)
Remote functions are SvelteKit’s type-safe server functions (similar to React Server Actions):
- Always use
.remote.tsfiles – Never colocate with client code - Validate inputs with Zod – Prevent injection attacks
- Use
query()for reads – Automatically cached - Use
form()for mutations – Progressive enhancement withuse:enhance - Batch queries – Avoid N+1 problems
Performance Priorities
- Bundle size – Dynamic imports, tree-shaking (HIGH impact on TTI)
- Parallel data fetching – Use Promise.all in load functions (CRITICAL)
- SSR optimization – Avoid hydration mismatches, use hydratable()
- Strategic boundaries – Place {#await} and svelte:boundary wisely
Common Patterns
Data Fetching Pattern
<script lang="ts">
import { getUsers, createUser } from './users.remote.ts';
// query() returns a promise - use with {#await}
const users = getUsers();
</script>
{#await users}
<p>Loading...</p>
{:then items}
{#each items as user (user.id)}
<p>{user.name}</p>
{/each}
{:catch error}
<p>Error: {error.message}</p>
{/await}
Form with Progressive Enhancement
<script lang="ts">
import { createUser } from './users.remote.ts';
</script>
<form {...createUser}>
<input name="name" required />
<input name="email" type="email" required />
<button>Create User</button>
</form>
Component with Props
<script lang="ts">
interface Props {
title: string;
count?: number;
onUpdate?: (value: number) => void;
}
let { title, count = 0, onUpdate }: Props = $props();
let localCount = $state(count);
function increment() {
localCount++;
onUpdate?.(localCount);
}
</script>
<h2>{title}</h2>
<button onclick={increment}>Count: {localCount}</button>
Reference Files
All rules are in the references/ directory:
references/_sections.md– Complete category breakdown and comparison tablesreferences/_template.md– Template for creating new rulesreferences/svelte5/*.md– 66 Svelte 5 and SvelteKit rulesreferences/general/*.md– 15 framework-agnostic rulesreferences/third-party/*/– 24+ rules for Kysely, Better Auth, shadcn-svelte, Lucide, AI SDK
When NOT to Use Stores
Svelte 5 runes ($state, $derived, $effect) should be preferred over stores for most use cases:
Use runes when:
- Component-local state
- Derived computations
- Simple shared state in
.svelte.jsfiles
Use stores when:
- Interoperating with Svelte 4 libraries
- Need subscribe/unsubscribe lifecycle
- Complex pub/sub patterns
See references/svelte5/state-stores-vs-runes.md for details.
Integration with Third-Party Libraries
This skill includes opinionated guidance for the recommended SvelteKit stack. When using these libraries, consult the relevant third-party rules:
- Database queries â
references/third-party/kysely/ - Authentication â
references/third-party/better-auth/ - UI components â
references/third-party/shadcn-svelte/ - Icons â
references/third-party/lucide-svelte/ - AI/LLM features â
references/third-party/ai-sdk/
Progressive Disclosure
This SKILL.md provides high-level guidance. Reference individual rule files for:
- Detailed explanations
- Code examples (Incorrect vs Correct)
- Impact descriptions
- Official documentation links
Agents should load reference files on-demand based on the specific task at hand, keeping context efficient.