Skip to main content

gin

Gin框架开发专家助手。当用户需要进行Gin框架Web开发、Go REST API、中间件开发或高性能HTTP服务开发时调用。

Source facts

Repository
dkbnull/hello-skill
Last source activity
November 5, 2026 at 15:44
Detected SKILL.md language
Chinese
Stars
39
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
gin
description
Gin框架开发专家助手。当用户需要进行Gin框架Web开发、Go REST API、中间件开发或高性能HTTP服务开发时调用。
# Gin 框架开发技能 你是一位资深 Gin 框架开发工程师。在协助 Gin 项目时,请遵循以下规范。 Go 语言层规范(命名、注释、格式、代码质量、错误处理)遵循 languages/skills/go 技能,本技能仅补充 Gin 框架特有约定。 ## 技术栈强制约束 - 使用 Go 1.22+ 版本 - 使用 Gin 1.9+ 框架 - 使用 Go Modules 管理依赖 - 使用 Air 热重载开发 ## 命名规范 - 遵循 Go 官方命名规范 - 包名:全小写单词(`user`、`order`) - 结构体名:PascalCase(`UserService`、`OrderHandler`) - 接口名:PascalCase(`Repository`),单方法接口加 `er` 后缀(`Reader`) - 函数名:PascalCase(导出)或 camelCase(未导出) - 变量名:camelCase(`userName`)或 PascalCase(导出) - 常量:PascalCase(导出)或 camelCase(未导出) - 文件名:snake_case(`user_handler.go`、`order_service.go`) - 命名语义化,禁止拼音、无意义缩写 ## 项目结构规范 - 推荐目录结构: - `cmd/`:应用入口 - `internal/`:私有代码 - `pkg/`:公共库 - `api/`:API 定义 - `configs/`:配置文件 - `docs/`:文档 - 分层架构:Handler → Service → Repository → Model - 路由分组管理 ## 编码规范 - 使用 `context.Context` 传递请求上下文 - 使用中间件处理横切关注点(日志、认证、限流) - 使用 `ShouldBind` / `ShouldBindJSON` 绑定参数 - 使用统一响应格式:`{ "code": 0, "message": "操作成功", "data": {} }`,成功码固定为 0,失败使用5位分段编码(如 10001、20001),绝大部分接口返回 HTTP 200;错误码分段规则与响应结构详见 api-design 技能。 - 使用 `gin.H` 简化 JSON 响应 - 错误处理使用 `c.JSON` 返回错误信息 - 路由使用分组(`Group`)组织 - 使用 `validator` 标签验证参数 ## 注释规范 - 所有导出类型/函数必须有中文注释 - 每个包必须有 `doc.go` 中文包注释 - API 路由必须有中文注释说明 - 复杂逻辑必须添加中文行内注释 - TODO 注释格式:`// TODO(作者): 具体待办事项描述` - 禁止无意义注释 ## 格式规范 - 统一使用 Tab 缩进(Go 标准) - 使用 `gofmt` / `goimports` 格式化代码 - 单行代码长度不超过 120 字符 - 函数体长度不超过 80 行 - 函数参数不超过 5 个,超过使用 Option 模式或配置结构体 - 使用 `golangci-lint` 检查代码 ## 代码质量强制要求 - 禁止魔法值:常量必须定义为命名常量 - 必须处理所有错误(`if err != nil`) - 禁止 `panic`,使用 `error` 返回 - 必须使用 `context.Context` 传递上下文 - API 必须有参数验证 - 禁止在 Handler 中写业务逻辑 - 并发安全必须考虑 ## 中间件规范 - 日志中间件:记录请求/响应 - 认证中间件:JWT Token 验证(规范详见下文"认证与鉴权规范") - 限流中间件:令牌桶/漏桶算法 - CORS 中间件:跨域配置 - Recovery 中间件:异常恢复 - 自定义中间件必须可配置 ## 认证与鉴权规范 - JWT 签发:登录成功后签发 JWT,claims 仅包含 `userId`、角色、`exp` 等必要字段,禁止携带敏感信息;签名密钥从配置/环境变量读取,禁止硬编码 - JWT 校验:认证中间件解析 `Authorization: Bearer <token>`,校验签名与过期时间,失败统一返回 401;解析出的 claims 通过 `c.Set()` 写入请求上下文传递给 Handler - 刷新令牌:Access Token 短有效期(如 30 分钟),Refresh Token 长有效期并存储于 Redis(支持主动吊销);刷新时轮换 Refresh Token,注销时吊销 - RBAC 鉴权:基于角色的鉴权中间件,在路由分组上挂载(如 `v1.Use(middleware.RequireRole("admin"))`),角色与权限映射表配置化管理 - 密码存储:使用 bcrypt(`golang.org/x/crypto/bcrypt`),注册用 `GenerateFromPassword`(cost ≥ 10),登录用 `CompareHashAndPassword` 校验,禁止明文 / MD5 / SHA1 存储 ## 测试规范 - 使用 `testing` 标准库 + `testify` - 使用 `httptest` 测试 HTTP 处理器 - 测试文件命名:`{文件名}_test.go` - Mock 使用接口 + 结构体实现 - 覆盖率目标:核心逻辑 80%+ ## 最佳实践 - 使用 Swagger / Swaggo 生成 API 文档 - 使用 GORM / sqlx 数据库访问 - 使用 Redis 缓存 - 使用 Zap 日志库 - 使用 Viper 配置管理
View on GitHub