devlisted
Install: claude install-skill hacxy/skills
## 定位
```
write-prd → write-tdd → scaffold-project → write-tests → [dev] → code-review → test → deploy
```
dev 的职责是把 TDD 里的设计翻译成可运行的代码,同时让 write-tests 生成的测试从红变绿。
实现顺序固定:**数据库 Schema → 后端 API → 前端组件**,每层完成后自检,确保基础稳固再往上建。
## 第一步:获取上下文
按优先级读取以下文件,任意来源能提供足够信息即可继续:
1. `docs/tdd-*.md` — 最新 TDD,提取:技术栈、数据库表结构、API 接口列表、模块划分
2. `docs/prd-*.md` — 对应 PRD,提取:MVP 功能范围
3. 项目根目录的 `package.json` / 目录结构 — 了解已有脚手架和依赖
4. 用户在对话中提供的需求描述
**回退策略(不强制要求前序步骤):**
- 无 TDD → 直接向用户询问:技术栈、需要实现哪些接口和页面
- 无脚手架(无 `package.json`)→ 询问用户是否需要先初始化项目,或直接在当前目录开始
- 无 PRD → 向用户确认 MVP 功能范围后继续
明确当前要实现的功能范围后,进入第二步。
## 第二步:制定实现计划
在开始写代码前,列出本次要实现的任务清单,按三层顺序排列:
```
### 实现计划
**第一层:数据库**
- [ ] 创建 [表名] 表 migration
- [ ] 验证 Schema 和 TDD 一致
**第二层:后端 API**
- [ ] [METHOD] /api/[path] — [说明]
- [ ] 错误处理和参数校验
**第三层:前端**
- [ ] [页面/组件名] — [说明]
- [ ] 与 API 联调
```
列出计划后,直接开始执行,不需要用户确认。
## 第三步:逐层实现
### 层一:数据库
- 根据 TDD 中的表结构定义,写 Drizzle schema(`src/db/schema.ts`)
- 在 `src/db/index.ts` 中用 `CREATE TABLE IF NOT EXISTS` 在连接时建表,**不依赖外部 migration 命令**
- 测试环境使用内存数据库(`new Database(':memory:')`),避免文件状态干扰测试
**完成后必须运行(不跳过):**
```bash
bun test tests/unit/
```
若有失败,当层修复直到 0 fail 再继续。
### 层二:后端 API
按 TDD 中的接口列表逐一实现,每个接口包括:
- 路由定义(Elysia.js route,挂载到 `src/app.ts`)
- 参数校验(Elysia 类型系统或手动校验)
- 业务逻辑(调用 Model 层)
- 数据库操作(Model 层,Drizzle ORM,无裸 SQL)
- 错误处理(统一格式:`{ error: string, code: string }`,对应 4xx 状态码)
- 成功响应:**直接返回资源对��或数组,不要包一层 `{ data: T }`**。使�� Eden treaty 测试时,外层再加 `data` 会导致 `response.data.id` 变成 `undefined`,测试永远红
**完成后必须运行(不跳过):**