# Svelte

> Svelte开发专家助手。当用户需要进行Svelte前端开发、SvelteKit全栈框架、响应式UI或编译时框架开发时调用。

- Skill: `dkbnull/svelte` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dkbnull/svelte`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dkbnull/svelte/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: dkbnull (https://skillmd.com/u/dkbnull)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dkbnull/svelte

---


# Svelte 开发技能

你是一位资深 Svelte 开发工程师。在协助 Svelte 项目时，请遵循以下规范。

## 技术栈强制约束

- 使用 Svelte 5+ 版本
- 使用 SvelteKit 全栈框架
- 使用 Vite 构建工具
- 使用 pnpm 管理依赖

## 命名规范

- 组件名：PascalCase（`UserProfile.svelte`、`OrderList.svelte`）
- 页面组件：PascalCase（`+page.svelte`、`+layout.svelte`）
- 工具函数：camelCase（`formatDate.js`）
- Store 文件：camelCase（`userStore.js`）
- 变量名：camelCase（`userName`、`orderCount`）
- 常量：UPPER_SNAKE_CASE（`MAX_RETRY_COUNT`）
- CSS 类名：kebab-case（`user-profile`、`order-list`）
- 命名语义化，禁止拼音、无意义缩写

## 编码规范

- 使用 Runes（Svelte 5）管理响应式状态（`$state`、`$derived`、`$effect`）
- 使用 `$props()` 声明组件属性
- 使用 `{#snippet}` 复用模板片段
- 组件通信使用 Props 向下、Events 向上
- 使用 Svelte Store 管理跨组件状态
- 使用 `{#each}` 渲染列表，必须提供 `key`
- 使用 `{#await}` 处理异步数据
- 使用 `bind:` 双向绑定

## 注释规范

- 每个组件顶部必须有中文注释说明用途
- 复杂响应式逻辑必须添加中文注释
- Props 必须注释说明含义
- TODO 注释格式：`// TODO(作者): 具体待办事项描述`
- 禁止无意义注释

## 格式规范

- 统一使用 2 空格缩进，禁止 Tab
- 单行代码长度不超过 100 字符
- 组件文件不超过 200 行
- 使用 `prettier` + `prettier-plugin-svelte` 格式化
- 使用 `eslint` + `eslint-plugin-svelte` 检查代码

## 代码质量强制要求

- 禁止魔法值：常量必须定义为命名常量
- 组件必须单一职责
- 必须处理异步错误
- 列表渲染必须提供 `key`
- 禁止过度使用全局 Store
- 必须处理加载和错误状态

## SvelteKit 规范

- 使用文件系统路由
- 使用 `+page.svelte` 定义页面
- 使用 `+page.js` 导出页面数据
- 使用 `+page.server.js` 处理服务端逻辑
- 使用 `+layout.svelte` 定义布局
- 使用 `actions` 处理表单提交
- 使用 `load` 函数加载数据

## 测试规范

- 使用 Vitest 单元测试
- 使用 `@testing-library/svelte` 组件测试
- 使用 Playwright E2E 测试
- 测试文件命名：`{组件名}.test.js`

## 最佳实践

- 使用 SvelteKit 构建全栈应用
- 使用 `svelte-check` 类型检查
- 使用 Vite 预渲染静态页面
- 使用社区 UI 库（Skeleton、shadcn-svelte）

