arch
Free架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
The English summary is being prepared. Showing the original description.
Simple Admin 完整开发工作流指导技能,涵盖从 Ent Schema 定义到 RPC 服务、API 网关、前端页面的全链路开发。
当用户进行以下操作时使用此技能:(1) 开发新功能、新增字段、修改数据模型,(2) 创建或修改微服务的任何环节(Ent/RPC/API/前端),(3) 进行 CRUD 开发、接口开发、页面开发,(4) 需要使用 m-goctls 工具生成代码,(5) 在 Simple Admin 项目中进行任何开发工作。
此技能提供完整的工作流指导,包括命令使用、文件修改规则、常见问题排查等。
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
本技能提供 Simple Admin 项目的端到端开发工作流指导,涵盖从数据模型定义到前端页面的完整链路。
核心工作流:
Ent Schema → Ent 代码 → RPC Proto & Logic → RPC 服务 → API 定义 & Logic → API 服务 → 前端页面
主要功能:
关键原则:
make {service}-{command} 简化命令goctls.yaml 和 Makefile 读取ent/schema/、desc/*.proto、api/desc/*.api命令简化:
make {service}-gen-ent (在根目录)m-goctls 命令根据用户需求,选择合适的工作流路径:
如果用户说明只需要某个环节 (如"只需要 RPC"、"只修改前端"):
否则 (如"新增用户管理功能"、"给 User 增加 phone 字段"):
操作:使用 Read 工具读取 goctls.yaml 文件,从 service.serviceList 获取微服务列表。
微服务列表:
core - 核心服务(通常包含用户、角色、菜单等基础功能)goctls.yaml 的 service.serviceList 读取询问用户要在哪个微服务中开发功能。
明确要开发的功能:
适用于新增完整的 CRUD 功能,如"用户管理"、"产品管理"等。
位置: {serverDir}/{service}/ent/schema/{model}.go 或 {serverDir}/{service}/rpc/ent/schema/{model}.go
({serverDir} 从 goctls.yaml 的 serverDirPrefix 读取,默认为 servers)
操作:
@casbin:enabled 注释示例:
// @casbin:enabled
type User struct {
ent.Schema
}
func (User) Fields() []ent.Field {
return []ent.Field{
field.Uint64("id"),
field.String("username").Unique().MaxLen(50),
field.String("email").Unique().MaxLen(100),
field.String("password").Sensitive(),
field.Uint8("status").Default(1),
field.Int64("created_at").Immutable(),
field.Int64("updated_at"),
}
}
func (User) Indexes() []ent.Index {
return []ent.Index{
index.Fields("username"),
index.Fields("email"),
}
}
参考: 详细的 Schema 编写指南见 simple-admin-rpc 技能
命令 (在项目根目录):
make {service}-gen-ent
生成内容: ent/*.go - ORM 代码和迁移脚本
命令 (在项目根目录):
make {service}-gen-rpc-ent-logic model=User group=user
参数:
model - 模型名(首字母大写,如 User、Product)group - 分组名(小写,如 user、product)生成内容:
desc/{group}/{model_lower}.proto - gRPC 接口定义internal/logic/{group}/*_logic.go - CRUD 实现(5个文件)⚠️ 注意: 此命令会覆盖已存在的 Logic 文件,如有自定义逻辑需备份
命令 (在项目根目录):
make {service}-gen-rpc
生成内容:
{service}.proto - 合并后的 Proto(从 desc/ 自动合并)types/{service}/*.pb.go - Protobuf 类型internal/server/*.go - gRPC 服务器⚠️ 重要规则:
desc/*.proto{service}.proto(自动生成)有两种方式:
方式 A - 从 RPC 自动生成(推荐 CRUD):
make core-gen-api-from-rpc service={service_name} model=User
方式 B - 手写 API 定义(自定义接口):
servers/core/api/desc/{service}/ 创建 .api 文件make gen-api 生成代码⚠️ API 类型一致性规则(极其重要!):
在 api/desc/ 目录下添加新的 API 文件时,必须遵守以下规则:
必须 import base.api: 在文件开头添加 import "../base.api"
强制使用基础类型: 以下场景必须使用 base.api 中的类型,不得自定义:
PageInfo (包含 page, pageSize)BaseListInfo (包含 total, data)IDReq(单个)、IDsReq(多个)、IDPathReq(路径参数)UUIDReq(单个)、UUIDsReq(多个)BaseMsgResp (只返回 code, msg)BaseDataInfo (返回 code, msg, data)BaseIDInfo(uint64 ID) 或 BaseUUIDInfo(string UUID)ExistResp保持类型一致性: 避免重复定义相同功能的类型,确保整个项目的 API 类型统一
示例:
syntax = "v1"
import "../base.api"
info(
title: "user api"
desc: "user management api"
author: "Ryan SU"
version: "v1.0"
)
type (
// User info response
UserInfo {
BaseIDInfo // 继承基础 ID 信息
Username string `json:"username"`
Email string `json:"email"`
Status uint8 `json:"status"`
}
// User list response
UserListResp {
BaseListInfo // 继承基础列表信息
}
// User list request
UserListReq {
PageInfo // 继承分页参数
Username string `json:"username,optional"`
}
)
@server(
group: user
jwt: Auth
)
service Core {
@handler getUserList
post /user/list (UserListReq) returns (UserListResp)
@handler getUserById
post /user (IDReq) returns (BaseDataInfo)
@handler deleteUser
delete /user (IDsReq) returns (BaseMsgResp)
}
参考: 详细的 API 开发指南见 simple-admin-api 技能
⚠️ 重要步骤: 如果是新增的 API 文件,需要在 all.api 中添加 import
操作步骤:
编辑 api/desc/all.api,添加新 API 文件的 import:
import "./core/user.api" # 如果是 core 服务
import "./job/task.api" # 如果是 job 服务
import "./aiplorer/xxx.api" # 如果是其他服务
生成 API 代码:
make core-gen-api
生成内容:
api/internal/handler/**/*_handler.go - HTTP 处理器api/internal/types/types.go - 请求/响应类型命令:
cd servers/core
m-goctls frontend vben5 \
--api_file=./api/desc/{service}/user.api \
--model_name=User \
--model_chinese_name=用户 \
--model_english_name=user \
--folder_name=sys \
--sub_folder=user \
--prefix=sys-api \
--output=../../web/apps/simple-admin-core
核心参数:
--api_file - API 定义文件路径--model_name - 模型名(首字母大写)--folder_name - 主文件夹(sys/mcms/fms 等)--prefix - API 前缀(sys-api/mcms-api 等)--output - 输出目录(通常是 ../../web/apps/simple-admin-core)生成内容:
src/views/{folder}/{sub}/index.vue - 列表页面src/views/{folder}/{sub}/form.vue - 表单组件src/api/{folder}/{english_name}.ts - API 调用src/locales/*/views/{folder}/{english_name}.json - 国际化参考: 完整的前端生成命令参数见 commands-reference.md
# 启动 所有 服务
make service-run
# 启动前端
cd web
pnpm dev:simple-admin-core
# 访问 http://localhost:5555 测试功能
步骤:
ent/schema/{model}.go)make gen-ent - 重新生成 Ent 代码make gen-rpc-ent-logic model={Model} group={group} (⚠️ 会覆盖 Logic)make gen-rpc - 重新生成 RPC 服务代码make gen-api - 重新生成 API 代码⚠️ 避免覆盖的方法:
goctls.yaml 中设置 entConfig.overwrite: false步骤:
desc/{service}.proto 中添加新的 RPC 方法make gen-rpc - 生成 RPC 代码internal/logic/ 下创建新的 Logic 文件,实现业务逻辑api/desc/{service}/*.api 中添加对应的 API 接口make gen-api - 生成 API 代码api/internal/logic/ 中实现 API Logic(调用 RPC)步骤:
web/apps/simple-admin-core/src/views/ 下的 Vue 文件适用场景: 内部服务调用、后台任务、定时任务等
步骤:
make gen-entmake gen-rpc-ent-logic model={Model} group={group}make gen-rpc参考: 详见 simple-admin-rpc 技能
适用场景: 需要为已有 RPC 服务提供 HTTP 接口
步骤:
make gen-api-from-rpc 或手写 API 定义make gen-api参考: 详见 simple-admin-api 技能
适用场景: API 已完成,只需要添加或修改前端页面
步骤:
m-goctls frontend vben5 生成基础页面适用场景: 检查现有 API 文件是否符合类型一致性规范
规范要求: 参见"第 5 步"中的"API 类型一致性规则"
✅ 可以修改的文件:
ent/schema/*.go - Ent Schema 定义desc/*.proto - RPC Proto 源文件(微服务的 desc 目录)api/desc/*.api - API 定义源文件(desc 目录)internal/logic/*.go - 业务逻辑实现web/ 下所有前端文件❌ 不能修改的文件(自动生成,会被覆盖):
ent/ 目录下除 schema/ 外的所有文件{service}.proto(从 desc/ 合并)types/ 目录下的 Protobuf 生成文件internal/handler/ - HTTP 处理器internal/server/ - gRPC 服务器⚠️ 需要维护的文件(AI 负责):
api/desc/all.api - 新增 API 文件时需要添加 import 语句✅ 最推荐 - 在项目根目录使用:
make {service}-gen-ent
make {service}-gen-rpc-ent-logic model=Task group=task
make {service}-gen-rpc
make core-gen-api
❌ 避免 - 直接使用 m-goctls:
# 不推荐 - 参数复杂易错
m-goctls rpc ent --schema=./ent/schema --style=go_zero ...
根目录 Makefile 的优势:
查看所有可用命令:
make help
所有参数从 goctls.yaml 和各微服务的 Makefile 中读取,避免手动指定:
# goctls.yaml (项目根目录)
i18n: true
ent: true
style: "go_zero"
entConfig:
searchKeyNum: 300
overwrite: false # 避免覆盖 Logic
frontend:
folderName: "sys"
apiPrefix: "sys-api"
formType: "drawer"
在 Ent Schema 上方添加 @casbin:enabled 注释即可启用权限控制:
// @casbin:enabled
type User struct {
ent.Schema
}
生成的 Logic 会自动包含权限检查,API 层通过 JWT + Casbin 中间件控制。
本技能包含详细的参考文档,按需加载:
完整工作流详细步骤指南
包含:
何时阅读: 需要详细的步骤说明或代码示例时
| 命令 | 作用 | 使用场景 |
|---|---|---|
make {service}-gen-ent | 生成 Ent 代码 | 修改 Schema 后 |
make {service}-gen-rpc-ent-logic model=X group=x | 生成 RPC CRUD | 新增模型 |
make {service}-gen-rpc | 生成 RPC 代码 | 修改 Proto 后 |
make core-gen-api | 生成 API 代码 | 修改 API 定义后 |
make core-gen-api-from-rpc service=x model=X | 从 RPC 生成 API | 暴露 RPC 为 API |
m-goctls frontend vben5 ... | 生成前端页面 | 新增 CRUD 页面 |
make help | 查看所有命令 | 不确定命令时 |
{serverDir}/{service}/ # serverDir 从 goctls.yaml 读取
├── Makefile # ✅ 所有命令入口
├── ent/schema/ # ✅ 可修改: Schema 定义
├── desc/ # ✅ 可修改: Proto 源文件
├── internal/logic/ # ✅ 可修改: 业务逻辑
├── {service}.proto # ❌ 不可修改: 自动合并
└── types/ # ❌ 不可修改: 自动生成
用户: "我要开发一个产品管理功能,属于 core 服务"
完整流程:
# 1. 定义 Schema
# 使用 Edit 工具编辑 {serverDir}/core/rpc/ent/schema/product.go
# 2. 逐步生成代码
make core-gen-ent
make core-gen-rpc-ent-logic model=Product group=product
make core-gen-rpc
# 3. 生成 API
make core-gen-api-from-core-rpc model=Product
# 4. 更新 all.api (如果是新 API 文件)
# 使用 Edit 工具在 {serverDir}/core/api/desc/all.api 中添加:
# import "./core/product.api"
# 5. 重新生成 API
make core-gen-api
# 6. 生成前端
cd {serverDir}/core
m-goctls frontend vben5 \
--api_file=./api/desc/core/product.api \
--model_name=Product \
--model_chinese_name=产品 \
--folder_name=sys \
--prefix=sys-api \
--output=../../web/apps/simple-admin-core
传统方式 (逐步执行):
# 1. 定义 Schema
# 编辑 {serverDir}/core/rpc/ent/schema/product.go
# 2. 生成代码
make core-gen-ent
make core-gen-rpc-ent-logic model=Product group=product
make core-gen-rpc
make core-gen-api-from-core-rpc model=Product
make core-gen-api
# 3. 生成前端和测试...
注: {serverDir} 从 goctls.yaml 的 serverDirPrefix 配置读取
make {service}-{command} 比 cd 切换更方便# 查看 Makefile 所有命令
make {service}-help
# 查看 m-goctls 帮助
m-goctls --help
m-goctls frontend vben5 --help
社区资源:
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
The English summary is being prepared. Showing the original description.
代码提交与 MR 创建技能 - 自动生成语义化 commit message、创建符合规范的 GitLab Merge Request、验证飞书工作项关联。当用户提到 Git 提交、commit、push、推送代码、创建 MR、创建 PR、合并请求、或需要提交代码、推送代码、创建 MR/PR 时,必须使用此技能。支持交互式(对话)和非交互式(参数)两种模式。
The English summary is being prepared. Showing the original description.
开发工作流程指导 - 编码、测试、代码质量、MR/PR 创建和 CI/CD。用于开发任务、编码、功能实现、Bug 修复、单元测试、代码覆盖率、代码审查、CI/CD 流水线和 Git 操作。
The English summary is being prepared. Showing the original description.
DevOps 工作技能 - CI/CD 流程、容器化构建、Kubernetes 部署、基础设施即代码、监控告警。当用户提到部署、容器化、K8s、Helm、ArgoCD、CI/CD、监控、日志、或需要执行部署、排查线上问题时,必须使用此技能。
The English summary is being prepared. Showing the original description.
PM 编排技能 — 具备意图识别与动态路由能力的项目管理中枢。除了 pm 的全部 Story/Epic/Sprint 管理能力外,pm 能分析用户 prompt 的多领域意图,动态匹配所需的专业 skill(arch/dev/ued/qa/devops 等),生成编排计划并在用户确认后依次唤起各 skill 协同工作。当用户的请求涉及多个专业领域、需要跨 skill 协调、或者用户希望用一个 prompt 驱动完整的「设计→实现→验证」流程时,使用此技能。纯 Story 管理/迭代规划等单领域任务,pm 会直接处理而不路由。
The English summary is being prepared. Showing the original description.
QA 工作技能 — 测试分层架构、UT/API/SIT/E2E/UAT 测试、交叉验证策略、测试数据管理、测试报告管理。当用户提到测试、QA、质量保证、回归测试、单元测试、集成测试、验收测试、测试覆盖率、pytest、go test、E2E、Playwright、monkey test、fuzz test、RPC 测试、测试用例设计、TDD、测试框架、测试策略审查、问题排查、测试环境、测试数据、SIT 交叉验证、或需要设计/执行/增强测试策略时,必须使用此技能。确保所有测试活动遵循分层架构和业务正确性验证原则。
The English summary is being prepared. Showing the original description.