plugins/languages/golang/skills/api/SKILL.md
Go HTTP API 规范——响应始终 200 + body code 字段、路由 /api/* 全 POST 单段 <Action><Model>、中间件逐路由注册禁 Group(prefix,mw...)、handler 仅返回 (rsp,error)、认证走 header。设计 HTTP API、写路由/handler/中间件时触发。
npx skillsauth add lazygophers/ccplugin golang-apiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
code 字段。<Action><Model>。app.Group(prefix, mw...)。(rsp, error),响应构造在统一 wrap 层。X-Token),禁 URL 参数传 token。type Response struct {
Code int32 `json:"code"`
Msg string `json:"msg,omitempty"`
Data interface{} `json:"data,omitempty"`
Hint string `json:"hint,omitempty"`
}
{"code": 0, "data": {"id": 1, "name": "test"}}
{"code": 40001, "msg": "用户名已存在"}
HTTP status 始终 200。禁用 HTTP status code 表达业务错误(404/403/409 等)。
POST /api/LoginUser → impl.LoginUser
POST /api/GetUserProfile → impl.GetUserProfile
POST /api/ListOrders → impl.ListOrders
POST /api/UpdateUserName → impl.UpdateUserName
POST /api/DelFriend → impl.DelFriend
规则:
/api/* 前缀<动词><名词>/api/user/login、/api/v1/users/:id 等 RESTful 路径// ✅ 逐路由注册
pub := app.Group("/api")
pub.Post("/LoginUser", middleware.OptionalAuth, middleware.Logger, impl.ToHandler(impl.LoginUser))
pub.Post("/GetUserProfile", middleware.Auth, middleware.Logger, impl.ToHandler(impl.GetUserProfile))
// ❌ Group 级中间件(同前缀多 Group 互相污染)
api := app.Group("/api", middleware.Auth, middleware.Logger)
逐路由注册避免同前缀路由的中间件意外作用范围。
func UserLogin(req *UserLoginReq) (*UserLoginRsp, error) {
var rsp UserLoginRsp
user, err := state.User.NewScoop().
Where("username", req.Username).
First()
if err != nil {
log.Errorf("err:%v", err)
return nil, err
}
rsp.Token = generateToken(user.Id)
rsp.User = user
return &rsp, nil
}
func XxxYyy(req *XxxYyyReq) (*XxxYyyRsp, error)var rsp XxxRsp 函数顶声明,逐字段赋值,末尾 return &rspreturn &XxxRsp{Field: val}c.JSON() / c.SendStatus() 直接操作 responsetoken := c.Get("X-Token")
// ❌ /api/GetUser?token=xxx
| 操作 | Request | Response |
| --- | --- | --- |
| 登录 | UserLoginReq | UserLoginRsp |
| 查询单条 | GetUserByIdReq | GetUserByIdRsp |
| 列表 | ListUserReq | ListUserRsp |
| 创建 | AddUserReq | AddUserRsp |
| 更新 | UpdateUserReq | UpdateUserRsp |
| 删除 | DelUserReq | DelUserRsp |
type AddUserReq struct {
Username string `json:"username" validate:"required"`
Email string `json:"email" validate:"required,email"`
Age uint8 `json:"age" validate:"required,gte=0"`
}
validate tag 统一校验,禁手写 if req.X == ""| 模式 | 替代 |
| --- | --- |
| HTTP 404/403/409 表达业务错 | 始终 200 + body code |
| RESTful 路径 /users/:id | POST /api/GetUserById |
| app.Group(prefix, mw...) | 逐路由注册中间件 |
| handler 内 c.JSON() | 统一 wrap 层 |
| URL 参数传 token | Header 传 token |
| 手写 if req.X == "" 校验 | validate tag |
| return &Rsp{Field: val} 字面量 | var rsp; rsp.Field = val; return &rsp |
| Update 零值跳过 | 全字段 unconditional |
| AI 借口 | 实际应验证 | | --- | --- | | "RESTful 更标准" | 项目全 POST 单段? | | "404 更语义化" | 始终 200 + code? | | "Group 中间件方便" | 逐路由注册? | | "handler 直接 c.JSON 简单" | 统一 wrap 层? | | "零值跳过更灵活" | Update 全字段 unconditional? | | "手写校验更精确" | validate tag 统一拦截? |
tools
--- name: trellisx-workspace description: 维护 `.trellis/task.md` 任务看板 —— trellis 缺的跨任务总览。**一个表格, 一行一个任务**, 列为 id/名称/描述/状态/阶段/进度/worktree (状态/阶段中文显示)。在 task create/start/阶段切换/archive 后**及时更新**对应行; 并**自动清理超 7 天的已完成行**防膨胀。保持看板与 task.json 实时一致。 when_to_use: 维护 / 创建 / 更新 `.trellis/task.md` 任务看板时; task 生命周期任一节点 (create/start/阶段推进/archive) 之后同步看板时; 用户问"当前有哪些任务 / 任务进度 / 任务看板"时。被 trellisx-flow 与 trellisx-apply 注入的流程引用。 user-invocable: true argument-hint: [show|update|sync|cleanup ...] [task id] arguments:
testing
强制以 Trellis task 闭环处理用户指定的请求 (自判新建/并入 → plan→exec→check→finish 全程不跳步)。**仅用户显式主动调用** (/trellisx-flow 或明确要求"强制走 task 处理这个"); **禁止自动 / 被动 / 推断式调用** —— 不要因为某个请求"看起来该建 task"就自动触发本 skill, 那是 apply 注入的 no_task 倾向的职责。
testing
把 强推task + subtask拆分 + worktree隔离 + 闭环收尾 四维度增量注入当前项目 .trellis/ (workflow.md 的 no_task/planning/in_progress 块 + spec 背书文档 + trellis 生命周期 hook worktree 自动化)。强推 task 与闭环为纯 prompt 软约束 (非平台 hook 硬拦截)。**纯增量追加, 绝不替换 trellis 原生文本** (no_task 分类+征同意/check/finish/前缀全保留)。幂等 (marker 包裹)。
development
Claude Code 会话历史整理 — 扫 ~/.claude/projects/**/*.jsonl 全部 session transcripts, 提取学习增量 (用户校正/决策/踩坑/L0 规则) → 全局记忆库 ~/.cortex/.wiki/memory/. 默认 --apply 落盘 (--dry-run opt-in 仅出 JSON plan 预览). 与 cortex-extract (L4-inbox 内部) 互补.