remote-functions
Use when building, auditing, or reviewing SvelteKit remote functions for validation, batching, and optimistic UI patterns
allowed_tools: Read, Write, Edit, Glob
$ インストール
git clone https://github.com/spences10/scottspence.com /tmp/scottspence.com && cp -r /tmp/scottspence.com/.claude/skills/remote-functions ~/.claude/skills/scottspence-com// tip: Run this command in your terminal to install the skill
SKILL.md
name: remote-functions
IMPORTANT: Keep description on ONE line for Claude Code compatibility
prettier-ignore
description: Use when building, auditing, or reviewing SvelteKit remote functions for validation, batching, and optimistic UI patterns allowed-tools: Read, Write, Edit, Glob
Remote Functions
Quick Start
/// file: src/routes/counter/count.remote.ts
import * as v from 'valibot'
import { query, command } from '$app/server'
let count = 0
export const getCount = query(async () => count)
export const increment = command(
v.object({ delta: v.optional(v.number(), 1) }),
async ({ delta = 1 }) => {
count += delta
getCount().set(count) // keep cached query in sync without extra fetch
},
)
Trigger optimistic single-flight updates via
increment({ delta: 1 }).updates(getCount().withOverride((n = 0) => n + 1))
inside the component.
Core Principles
- Validate every argument with a Standard Schema; use
getRequestEventfor auth/cookies but never treatroute/params/urlas an authorization boundary. - Queries are cached promises — refresh,
set, orwithOverridethem explicitly from commands/forms to prevent stale UI and redundant roundtrips.
Common Patterns
Single-flight optimistic mutations
Pair a command/form with its sibling query: perform the
mutation, then call query.refresh()/set() or
.updates(query.withOverride(...)) so the UI updates once per
request, even with high latency.
Reference Files
For detailed documentation, see:
Notes
- Prefer
formfor progressive enhancement; reservecommandfor imperative or cross-component workflows. - Use
query.batchfor n+1 scenarios (e.g., weather demo) andprerender({ inputs, dynamic })for data that should be cached at build time yet remain opt-in for runtime refreshes.
Repository

spences10
Author
spences10/scottspence.com/.claude/skills/remote-functions
55
Stars
11
Forks
Updated6d ago
Added1w ago