Files
agent/.agent/skills/tech-stack/bun-solid-elysia/SKILL.md

101 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: bun-solid-elysia-stack
description: High-performance SSR stack using Bun, SolidJS, Elysia, and Shadcn-solid
tags: [bun, solid, elysia, shadcn, ssr]
---
# 🚀 Bun + SolidJS + ElysiaJS + Shadcn 技术栈规范
## 🛡️ 核心架构与约束 (Architecture & Constraints)
### 1. 运行时与构建 (Bun.js)
- **Runtime**:强制使用 `Bun.serve()` 作为 HTTP 服务器。
- **Build**: 使用 `Bun.build()` 及其插件系统。
- **Testing**: 必须使用 `bun:test` 替代 Jest/Vitest。
- **Database**: 强制使用 **TypeORM** + **SQLite**。必须使用 Repository 模式进行数据访问,禁止在 Controller 中直接编写 SQL。
- **Package Manager**: 必须使用 `bun install / add / run`。严禁使用 `npm``yarn`
### 2. 前端框架 (SolidJS & Solid Start)
- **Reactivity**:
- **严禁**解构 Props (会导致响应式丢失)。必须使用 `props.value``splitProps`
- **严禁**使用 `mcp_chrome-devtools` 调试时依赖 React DevTools 思维。Solid 是细粒度更新,无 VDOM diff。
- **控制流**: 必须使用 `<Show>`, `<For>`, `<Switch>` 等内置组件,禁止使用 `array.map()` 或三元运算符直接渲染列表/条件。
- **SSR/Hydration**:
- 服务端数据预取必须在 `routeData``createServerData$` 中完成。
- 禁止在 `onMount` 中执行影响首屏内容的操作(会导致水合不匹配)。
### 3. 后端服务 (ElysiaJS)
- **Type Safety**: 必须使用 `t.Object` / `t.String` 等 Elysia 类型系统定义 DTO。
- **Validation**:所有 API 必须有 schema 验证。
- **Performance**: 路由注册应当利用 Elysia 的 AOT 编译特性,避免动态路由过度嵌套。
### 4. UI 组件库 (Shadcn-solid + Tailwind)
- **Styling**:
- 禁止书写 `style` 属性或 CSS 文件。必须使用 Tailwind Utility Classes。
- 必须使用 `cn()` (clsx + tailwind-merge) 处理动态类名。
- **Components**:
- 优先复用 Shadcn-solid 组件。
- 自定义组件必须支持 `class``classList` 属性透传。
- **Dark Mode**: 必须通过 CSS 变量和 Tailwind `dark:` 前缀适配深色模式。
### 5. 移动端适配与国际化 (Mobile & i18n)
- **Responsive Design**:
- 必须采用 **Mobile-First** 策略:默认样式为移动端,使用 `mm:`, `lg:` 等断点覆盖 PC 端样式。
- 严禁使用固定像素宽度 (px) 定义主要容器,必须使用百分比、`rem` 或 Tailwind 的 `container`/`w-full`
- 交互适配Touch事件与Hover状态必须兼容使用 `@media (hover: hover)` 处理仅 PC 显示的交互)。
- **Internationalization (i18n)**:
- 必须集成 `@solid-primitives/i18n` 或 Solid Start 官方推荐的 i18n 方案。
- **严禁**在 JSX 中硬编码文本。所有文案必须提取到 `dictionaries``locales` 资源文件中。
- **SSR支持**: 服务端必须解析请求头 `Accept-Language` 或 URL 前缀,在 SSR 阶段注入当前语言字典,杜绝客户端水合时的内容闪烁。
---
## 🔍 代码审计要点 (@code-spec)
@code-spec 执行审计时,必须检查以下条目:
1. **响应式丢失检查**:
- 检查组件 Props 是否被解构? (e.g. `const { name } = props` -> ❌)
2. **控制流优化**:
- 检查是否使用了 `<For>` 而不是 `.map()`? (Solid 的 `<For>` 对 keyed items 做了优化)
3. **类型安全**:
- Elysia 路由是否有 `body`, `query`, `params``t.*` 定义?
4. **Bun 兼容性**:
- 是否引用了 Node.js 特有且 Bun 未实现的 API? (需查阅 Bun 兼容性表)
5. **样式规范**:
- 是否存在硬编码颜色值? (应使用 CSS 变量如 `bg-background` `text-primary`)
6. **国际化规范**:
- 检查组件中是否存在硬编码的中文/英文字符串? (❌ `<span>登录</span>` -> ✅ `<span>{t('login')}</span>`)
7. **响应式检查**:
- 检查是否通过 `md:`, `lg:` 等断点处理了布局变化? 是否存在大块固定 `px` 宽度的容器?
8. **ORM 规范**:
- 是否正确使用了 TypeORM 的 `@Entity` 定义模型?
- 是否通过 Repository 进行数据操作? (严禁裸写 SQL)
---
## 🧪 测试与验收标准 (@qa-tester)
@qa-tester 执行测试时,必须验证以下指标:
### 1. 性能指标 (Performance)
- **SSR 渲染耗时**: < 50ms (利用 Bun 高性能 RSC 渲染)
- **首屏加载 (LCP)**: < 1.0s
- **水合错误 (Hydration)**: 控制台 **0** Error/Warning
### 2. 功能测试
- **路由跳转**: 必须是 SPA 模式(无全页刷新)。
- **表单交互**: 提交后必须有 Loading 状态,支持 Enter 提交。
### 3. 兼容性
- **No-JS 支持**: 核心内容在禁用 JavaScript 时必须可见 (SSR 直出)。
- **浏览器**: Chrome, Safari, Firefox 最新版。
### 4. 多端与多语言测试
- **Viewport**: 必须覆盖 iPhone SE (375px), iPad Mini (768px), Desktop (1280px+)。
- **Touch**: 移动端下按钮点击区域必须 >= 44x44px。
- **i18n**:
- 切换语言必须即时生效(或路由跳转)。
- 刷新页面后,当前语言状态必须保持。
- 检查是否存在未翻译的原始 Key 显示在界面上。