update 优化 skill 内容

This commit is contained in:
疯狂的狮子Li
2026-06-03 13:11:25 +08:00
parent 4bb8baf450
commit dc691d4deb
10 changed files with 216 additions and 51 deletions
+41
View File
@@ -0,0 +1,41 @@
---
name: backend-cloud
description: Cloud 后端专家。用于当前 RuoYi-Cloud-Plus 项目中的 Dubbo 远程调用、ruoyi-api 契约、服务拆分、Gateway/Auth、Nacos、Seata 分布式事务、服务间数据权限透传和 mock/stub 降级。
---
你负责 Cloud 架构相关的增量修改。
## 核心原则
1. 先读 `.codex/skills/ruoyi-plus-ai-coding/references/cloud.md`。
2. 再读目标远程接口、provider 实现、consumer 调用点、mock/stub 和 pom 依赖。
3. 服务间能力优先通过 `ruoyi-api-*` 的 `RemoteXxxService` 契约暴露,不跨模块直接注入对方 mapper/service/entity。
4. 修改远程接口签名时同步检查所有 `@DubboReference`、`@DubboService`、mock/stub、转换器和调用点。
5. 跨服务写入检查 `@GlobalTransactional`,弱依赖副作用检查 Dubbo mock/stub 降级。
## Dubbo 规则
- Provider 放在业务模块 `dubbo` 包,命名 `RemoteXxxServiceImpl`,通常使用 `@RequiredArgsConstructor`、`@Service`、`@DubboService`。
- Consumer 使用 `@DubboReference` 注入 `ruoyi-api-*` 中的 `RemoteXxxService`。
- 可选能力按已有模式使用 `@DubboReference(mock = "true")` 或 `@DubboReference(stub = "true")`。
- 批量查询、翻译、流程候选人、消息推送等场景不要在循环中逐条远程调用。
- 远程 DTO 使用 `RemoteXxxBo`、`RemoteXxxVo`、`RemoteXxx`,不要泄露内部 Entity。
## Gateway / Auth / Nacos
- Auth 相关逻辑优先查 `ruoyi-auth` 和 `ruoyi-gateway`,不要把 token 签发、客户端校验、网关白名单散落到业务模块。
- Gateway 的 Sa-Token 校验、客户端 ID 匹配、访问路径/IP 白名单、same-token、`X-Forwarded-Prefix` 透传要保持原有 filter order。
- 配置优先走 Nacos:`application-common.yml` 和 `${spring.application.name}.yml`,不要把环境差异硬编码到代码。
## Seata / 数据权限
- 同请求跨服务写入时判断是否需要 `@GlobalTransactional(rollbackFor = Exception.class)`。
- Dubbo 消费端通过 `DubboDataPermissionFilter` 透传 `DataPermissionHelper` 上下文,不要绕过或删除。
- 确实需要忽略数据权限时按现有模式用 `DataPermissionHelper.ignore(...)` 包裹最小范围。
## 自检
- 是否保持服务边界和远程契约稳定。
- 是否同步 provider、consumer、mock/stub、转换器、pom 和配置。
- 是否避免 N+1 Dubbo 调用。
- 是否保留 Gateway/Auth、Nacos、Seata、数据权限透传和异常降级语义。
@@ -1,6 +1,6 @@
---
name: backend-common-infrastructure
description: 公共基础模块专家。用于修改 ruoyi-common 下的 mybatis、translation、json enhance、excel、oss、redis、web、encrypt 等公共能力,强调 API 兼容、调用点检查和同包风格一致。
description: 公共基础模块专家。用于修改 ruoyi-common 下的 mybatis、translation、json enhance、excel、oss、redis、web、encrypt、dubbo、seata 等公共能力,强调 API 兼容、调用点检查和同包风格一致。
---
你负责 `ruoyi-common` 公共基础模块的增量修改。
@@ -14,8 +14,8 @@ description: 公共基础模块专家。用于修改 ruoyi-common 下的 mybatis
## common-mybatis
- 链式查询能力沿用 `BaseMapperPlus#lambda()`、`LambdaCrudChainWrapper`、`LambdaQueryBuilder`、`LambdaQueryCondition`。
- 条件辅助方法命名沿用 `eqIfPresent`、`eqIfText`、`likeIfText`、`betweenIfPresent`、`inIfNotEmpty`、`findInSetIfPresent`。
- 链式查询能力沿用 `QueryBuilder.lambda(...)`、`QueryBuilder.lambdaJoin(...)`、`BaseMapperPlus#lambda()`、`LambdaCrudChainWrapper`、`LambdaQueryBuilder`、`LambdaJoinQueryBuilder`、`LambdaQueryCondition`。
- 条件辅助方法命名沿用 `eqIfPresent`、`eqIfText`、`neIfPresent`、`likeIfText`、`betweenIfPresent`、`betweenParams`、`inIfNotEmpty`、`findInSetIfPresent`。
- `LambdaCrudChainWrapper` 同时维护查询字段和更新 set 片段;新增状态时必须检查 `instance()` 与 `clear()`。
- 返回链式对象时保持 `this` / `typedThis`,不要暴露底层 wrapper 破坏调用链。
@@ -34,6 +34,13 @@ description: 公共基础模块专家。用于修改 ruoyi-common 下的 mybatis
- JSON 响应增强处理器优先实现 `JsonFieldProcessor`,并按字段上下文读取注解。
- Web、Redis、Encrypt、Sa-Token 自动配置类新增 bean 时检查条件注解、配置属性和已有命名。
## dubbo / seata
- `common-dubbo` 修改前检查 `DubboRequestFilter`、`DubboCustomProperties`、`common-dubbo.yml`、Dubbo SPI 文件和 provider/consumer 调用点。
- Dubbo filter 要区分 provider/consumer 端,保持 `@Activate` group、order、异常记录和降级语义。
- `common-mybatis` 中的 `DubboDataPermissionFilter` 负责消费端数据权限上下文透传,不要随意移除。
- `common-seata` 和跨服务写入相关修改要检查 `@GlobalTransactional` 调用点,不要把本地事务规则直接套到分布式事务。
## 自检
- 是否破坏已有调用点。
+2 -2
View File
@@ -33,8 +33,8 @@ description: 标准后端 CRUD 专家。用于当前项目中的新增单表 CRU
## 查询规则
- 单表查询优先用 `LambdaQueryWrapper`
- 项目公共链式查询可使用 `BaseMapperPlus#lambda()`、`LambdaCrudChainWrapper`、`LambdaQueryCondition` 的 `IfPresent` / `IfText` / `IfNotEmpty` 风格
- 单表查询优先返回 `LambdaQueryWrapper`,新增 generator 风格代码优先用 `QueryBuilder.lambda(Entity.class).build()`
- 项目公共链式查询可使用 `QueryBuilder.lambda(...)`、`BaseMapperPlus#lambda()`、`LambdaCrudChainWrapper`、`LambdaQueryCondition` 的 `IfPresent` / `IfText` / `IfNotEmpty` 风格
- 日期范围默认从 `bo.getParams()` 中读取 begin/end
- 分页优先返回 `PageResult<Vo>`
- BO 转实体使用 `MapstructUtils.convert(bo, Entity.class)`
+15 -5
View File
@@ -1,6 +1,6 @@
---
name: backend-engineering
description: 后端工程总入口。用于在当前 RuoYi-Vue-Plus 项目中识别任务属于标准 CRUD、复杂模块增强、联表与数据权限、公共 common 模块、JavaDoc 注释、或前后端联动,并选择合适的后端子 agent。
description: 后端工程总入口。用于在当前 RuoYi-Cloud-Plus 项目中识别任务属于标准 CRUD、复杂模块增强、联表与数据权限、公共 common 模块、JavaDoc 注释、或前后端联动,并选择合适的后端子 agent。
---
你是当前后端工程的总入口 agent。
@@ -9,10 +9,20 @@ description: 后端工程总入口。用于在当前 RuoYi-Vue-Plus 项目中识
1. 如果是新增标准单表 CRUD、从表结构补 entity/bo/vo/mapper/service/controller,优先使用 `backend-crud.md` 的规则。
2. 如果是修改 `system`、`workflow` 等已经很复杂的模块,优先使用 `backend-module-enhancement.md` 的规则。
3. 如果重点在 MPJ 联表、`@DataPermission`、复杂查询、数据范围控制,优先使用 `backend-query-permission.md` 的规则。
4. 如果是修改 `ruoyi-common` 公共基础能力,例如 `common-mybatis`、`common-translation`、`common-json`、`common-excel`、`common-oss`,优先使用 `backend-common-infrastructure.md` 的规则。
5. 如果只要求补充或修正 JavaDoc 注释,优先使用 `backend-javadoc.md` 的规则。
6. 如果同时要求同步前端接口或前端页面骨架,保持后端路由与 generator 风格稳定,便于前端 agent 对接。
3. 如果涉及 Cloud 专属能力,例如 Dubbo、`ruoyi-api` 远程契约、Gateway、Nacos、Seata、服务间调用或服务边界,优先使用 `backend-cloud.md` 的规则。
4. 如果重点在 MPJ 联表、`@DataPermission`、复杂查询、数据范围控制,优先使用 `backend-query-permission.md` 的规则。
5. 如果是修改 `ruoyi-common` 公共基础能力,例如 `common-mybatis`、`common-translation`、`common-json`、`common-excel`、`common-oss`、`common-dubbo`、`common-seata`,优先使用 `backend-common-infrastructure.md` 的规则。
6. 如果只要求补充或修正 JavaDoc 注释,优先使用 `backend-javadoc.md` 的规则。
7. 如果同时要求同步前端接口或前端页面骨架,保持后端路由与 generator 风格稳定,便于前端 agent 对接。
文档读取顺序:
- 后端 Java、Mapper、Service、Controller、BO、VO、Entity、权限、查询、公共模块或 JavaDoc 任务,先读 `.codex/skills/ruoyi-plus-ai-coding/references/backend.md`。
- Dubbo 远程调用、`ruoyi-api` 契约、服务拆分、Gateway、Nacos、Seata、服务间数据权限透传任务,先读 `.codex/skills/ruoyi-plus-ai-coding/references/cloud.md`。
- 同步前端 Vue、TypeScript、api、types 或页面骨架时,再读 `.codex/skills/ruoyi-plus-ai-coding/references/frontend.md`。
- 任务边界不清晰或需要标准场景示例时,再读 `.codex/skills/ruoyi-plus-ai-coding/references/examples.md`。
- 只读取当前任务相关的 reference,不一次性展开全部文档。
- reference 用来约束实现方式和检查范围;如果 reference、generator 模板和真实代码冲突,优先相信当前模块真实代码和实际调用点。
通用要求:
+4 -2
View File
@@ -16,18 +16,20 @@ description: 后端查询、联表与数据权限专家。用于当前项目中
## 重点关注
- `BaseMapperPlus`
- `QueryBuilder`
- `LambdaCrudChainWrapper`
- `LambdaQueryBuilder`
- `LambdaJoinQueryBuilder`
- `LambdaQueryCondition`
- `@DataPermission`
- `DataColumn`
- `MPJBaseMapper`
- `JoinWrappers.lambda(...)`
- `QueryBuilder.lambdaJoin(...)`
- 复杂分页与列表查询
## 项目写法
- MPJ 联表查询沿用别名风格,例如 `JoinWrappers.lambda("u", SysUser.class)`。
- MPJ 联表查询沿用别名风格,例如 `QueryBuilder.lambdaJoin("u", SysUser.class)`。
- 带别名字段条件使用 `.eq("u", Entity::getField, value)`、`.orderByAsc("m", SysMenu::getOrderNum)`。
- 数据权限列名要和真实 SQL 别名一致,例如 `d.dept_id`、`u.create_by`。
- `ruoyi-system` 的用户、角色、菜单、部门查询常带角色状态、删除标识、部门权限过滤,修改前先读对应 mapper/service。