scaffoldlisted
Install: claude install-skill 7bata/claude-workflow-kit
# scaffold
在**已存在的**项目目录里就地铺设方法论脚手架。**全程默认中文输出**(技术标识符保持英文)。
模板位于本 skill 自身目录的 `templates/` 子目录(相对本 SKILL.md 所在目录定位)。
## 技术栈基线(固定,不做选型)
后端技术栈**固定为 Go**,版本与选型统一采用以下基线(固定基线是本方法论的一部分:逐项目不再重复选型;想换栈就修改本表,而不是单次临时偏离):
| 组件 | 选型 / 版本 | 说明 |
|---|---|---|
| 后端语言 | Go 1.25(`golang:1.25-alpine` 编译) | 标准库 `net/http` + chi 路由,无重量级框架 |
| DB 访问 | pgx(手写 repository) | 不用 ORM、不用 sqlc,`internal/repo` 直接写类型化 SQL |
| 迁移 | golang-migrate | 纯 SQL 版本化迁移(`NNNN_*.up.sql / down.sql`) |
| 校验/序列化 | `encoding/json` + go-playground/validator | 请求/响应 schema 校验 |
| 前端(如需要) | React + TypeScript + Vite | `node:20-alpine` 仅用于构建阶段 |
| 运行镜像 | `alpine:3.20` | Docker 多阶段构建,单静态二进制,`/health` 健康检查 |
| 目录结构 | `backend/cmd/server` 入口 + `backend/internal/{config,db,repo,handlers,service,model,middleware}` | Go 社区惯例;前端在 `frontend/src` |
后端服务保持**无状态**(状态全在数据库),为多副本水平扩展留余地。
## SQLite 分支(步骤 3 选了 SQLite 时的具体替代)
上面基线表默认 PostgreSQL(pgx + golang-migrate + postgres 容器/实例)。步骤 3 若判断选 **SQLite**(小型低并发 / 单机一体机场景),DB 访问层与迁移工具按以下替换,Go 版本、校验库、运行镜像、目录结构(`backend/internal/{db,repo}` 等目录名不变,只是里面的实现换了)不变——不是"酌情调整",按此执行:
| 组件 | SQLite 替代 |
|---|---|
| DB 访问 | `database/sql` + `modernc.org/sqlite`(纯 Go 驱动,无 cgo,`CGO_ENABLED=0` 直接编译;不用需要 cgo 的 `mattn/go-sqlite3`) |
| 迁移 | golang-migrate 的 `sqlite`(modernc,纯 Go)驱动,migrations 仍是 `NNNN_*.up.sql/down.sql`;不用 cgo 版 `sqlite3` 驱动;无迁移框架依赖时也可退化为启动时执行嵌入的建表 SQL(`embed.FS` 内一份 `schema.sql`),小项目够用 |
| 数据文件 | 单文件落 `data/{{PROJECT_NAME}}.db`(复用本 skill 落盘的 `data/` 目录),不建 PG 容器/实例 |
| 并发注意 | 打开 `_pra