Files
claude-engineering-plugin/plugins/compound-engineering/skills/ce-polish-beta/references/dev-server-sveltekit.md
2026-04-16 17:55:10 -05:00

2.0 KiB

SvelteKit dev-server recipe (auto-detect fallback)

Loaded when detect-project-type.sh returns sveltekit and there is no .claude/launch.json to consult.

Signature

  • svelte.config.js, svelte.config.mjs, or svelte.config.ts exists
  • package.json contains a @sveltejs/kit dependency

Start command

Standard:

npm run dev

The dev script in package.json typically wraps vite dev via SvelteKit. Also valid (read package.json scripts to confirm which the project uses):

pnpm dev
yarn dev
bun run dev

Prefer the package manager indicated by the lockfile:

  • pnpm-lock.yaml -> pnpm dev
  • yarn.lock -> yarn dev
  • bun.lock / bun.lockb -> bun run dev
  • package-lock.json or none -> npm run dev

Port

Default: 5173 (inherited from Vite). SvelteKit respects --port <port> flag and Vite's server.port config in vite.config.ts. Overrides follow the cascade in references/dev-server-detection.md.

Stub generation

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "SvelteKit dev",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "port": 5173
    }
  ]
}

Substitute the resolved package manager (npm / pnpm / yarn / bun) and port.

Common gotchas

  • Vite under the hood: SvelteKit uses Vite internally -- same port default (5173), same HMR behavior. The sveltekit type exists because svelte.config.js is a more precise signal than a generic vite.config.ts, allowing polish to generate a SvelteKit-specific stub name and label.
  • Adapter does not matter for dev: adapter-auto, adapter-node, adapter-static, and other adapters all produce the same dev server. The adapter only affects the production build output.
  • svelte.config.js is the primary signature: svelte.config.js always exists in SvelteKit projects, even when vite.config.ts also exists. This is the file that distinguishes a SvelteKit project from a plain Vite project.