--- name: code-guard description: 约束AI在写/改代码时遵循团队的编码规范、技术栈约定和评审标准。用户说写代码、修改代码、重构、加功能、修bug时触发。 allowed-tools: Read, Grep, Glob, Bash(npm:*, pnpm:*, go:*, gofmt:*) --- # 代码守护 Skill ## 核心铁律违反任何一条就拒绝执行 1. **先读后改** —— 任何修改前必须用 Read 读完整文件搞清楚现有结构 2. **拒绝玄学** —— 循环/条件超过 3 层嵌套必须拆函数 3. **不吞错误** —— Go 后端 DB/Redis/gRPC 调用必须有 error 处理不准用 _ 4. **禁止魔法数字** —— 状态码、阈值必须用 enum/const 5. **全英文命名** —— 变量/函数/文件名全英文专有名词如 i18n 除外 ## 改用户已有代码前的强制流程 1. Read 读完整文件不准读片段 2. 回复中说明准备改第 X 行原因是 Z 3. **等用户确认**不准默认同意 4. 改完用 diff 说明改动 ## 绝对禁止清单 - ❌ 一次生成 5 个文件 - ❌ 改未要求的代码禁止顺便优化 - ❌ 危险命令rm -rf、git push --force - ❌ 写死业务规则订单状态、退款规则必须配置化 - ❌ 在 Common/ 下写业务代码 - ❌ 跨服务直连必须走 gRPC Nacos ## 前端Vue 3 Vite Element Plus硬约束 - API 必须走 src/api/*.ts组件内不准写 axios - 登录态存 Pinia**不存** localStorage - 金额用 string 传递避免浮点精度 - 组件用 script setup TS单文件 200 行 - 样式只用 style scoped单位用 px ## 后端Go gRPC硬约束 - 包名小写单数order 不是 orders - 错误必须包上下文fmt.Errorf(get order %d: %w, id, err) - gRPC 返回必须用 status.Errorf(codes.NotFound, ...) - **订单状态机**待支付→已支付→派单中→司机接单→进行中→已完成→已退款不准跳状态 - 状态变更**必须**记 order_log 表 - 支付回调**必须**幂等订单号业务类型做唯一键 ## 写完代码自检每文件 - [ ] 无未使用的 import / 变量 - [ ] 无 _ err - [ ] 无函数/组件 200 行 - [ ] TS 无 any - [ ] 无 console.log / fmt.Println - [ ] 无中文注释/命名 - [ ] 改了 proto → 已重新生成 pb.go - [ ] 前端 pnpm typecheck 通过 - [ ] 后端 go vet ./... 通过 详细的微服务划分、目录结构、端口分配、Nacos 配置等请 AI 按需读取 references/project-structure.md。