arch
無料架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
日本語の概要は準備中です。原文の説明を表示しています。
Simple Admin 完整开发工作流指导技能,涵盖从 Ent Schema 定义到 RPC 服务、API 网关、前端页面的全链路开发。当用户进行以下操作时使用此技能:(1) 开发新功能、新增字段、修改数据模型,(2) 创建或修改微服务的任何环节(Ent/RPC/API/前端),(3) 进行 CRUD 开发、接口开发、页面开发,(4) 需要使用 m-goctls 工具生成代码,(5) 在 Simple Admin 项目中进行任何开发工作。此技能提供完整的工作流指导,包括命令使用、文件修改规则、常见问题排查等。
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
本技能提供 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
社区资源:
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
日本語の概要は準備中です。原文の説明を表示しています。
代码提交与 MR 创建技能 - 自动生成语义化 commit message、创建符合规范的 GitLab Merge Request、验证飞书工作项关联。当用户提到 Git 提交、commit、push、推送代码、创建 MR、创建 PR、合并请求、或需要提交代码、推送代码、创建 MR/PR 时,必须使用此技能。支持交互式(对话)和非交互式(参数)两种模式。
日本語の概要は準備中です。原文の説明を表示しています。
开发工作流程指导 - 编码、测试、代码质量、MR/PR 创建和 CI/CD。用于开发任务、编码、功能实现、Bug 修复、单元测试、代码覆盖率、代码审查、CI/CD 流水线和 Git 操作。
日本語の概要は準備中です。原文の説明を表示しています。
DevOps 工作技能 - CI/CD 流程、容器化构建、Kubernetes 部署、基础设施即代码、监控告警。当用户提到部署、容器化、K8s、Helm、ArgoCD、CI/CD、监控、日志、或需要执行部署、排查线上问题时,必须使用此技能。
日本語の概要は準備中です。原文の説明を表示しています。
PM 编排技能 — 具备意图识别与动态路由能力的项目管理中枢。除了 pm 的全部 Story/Epic/Sprint 管理能力外,pm 能分析用户 prompt 的多领域意图,动态匹配所需的专业 skill(arch/dev/ued/qa/devops 等),生成编排计划并在用户确认后依次唤起各 skill 协同工作。当用户的请求涉及多个专业领域、需要跨 skill 协调、或者用户希望用一个 prompt 驱动完整的「设计→实现→验证」流程时,使用此技能。纯 Story 管理/迭代规划等单领域任务,pm 会直接处理而不路由。
日本語の概要は準備中です。原文の説明を表示しています。
QA 工作技能 — 测试分层架构、UT/API/SIT/E2E/UAT 测试、交叉验证策略、测试数据管理、测试报告管理。当用户提到测试、QA、质量保证、回归测试、单元测试、集成测试、验收测试、测试覆盖率、pytest、go test、E2E、Playwright、monkey test、fuzz test、RPC 测试、测试用例设计、TDD、测试框架、测试策略审查、问题排查、测试环境、测试数据、SIT 交叉验证、或需要设计/执行/增强测试策略时,必须使用此技能。确保所有测试活动遵循分层架构和业务正确性验证原则。
日本語の概要は準備中です。原文の説明を表示しています。