ai-engineering-init 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,6 +10,8 @@ description: |
10
10
  - 日志文件分析(./logs/sys-console.log)
11
11
  - 前端页面不显示、API 调用异常
12
12
 
13
+ 联动技能:数据问题自动联动 mysql-debug 查库验证
14
+
13
15
  触发词:Bug、报错、异常、不工作、500错误、NullPointerException、SQLException、数据查不到、日志分析、排查、调试、debug、错误排查、精度丢失
14
16
  ---
15
17
 
@@ -204,31 +206,28 @@ XxxVO vo = BeanUtil.copyProperties(entity, XxxVO.class); // 源对象为 null
204
206
 
205
207
  ---
206
208
 
207
- ## 数据库排查
209
+ ## 数据库排查(委托 mysql-debug)
208
210
 
209
- ### 主动排查流程
211
+ 当诊断结果指向数据问题时,**必须联动 `mysql-debug` 技能**进行数据库查询验证:
210
212
 
211
213
  ```
212
- 1. 读取数据库配置(bootstrap.yml / application-dev.yml)
213
- 2. 连接数据库执行诊断 SQL
214
- 3. 分析结果给出方案
214
+ 诊断决策树判定"数据相关问题"
215
+
216
+ 自动激活 mysql-debug 技能
217
+
218
+ mysql-debug 执行:配置检查 → 日志提取数据库名 → 执行只读 SQL → 返回结果
219
+
220
+ bug-detective 结合查询结果给出修复方案
215
221
  ```
216
222
 
217
- ### 常用诊断 SQL
218
-
219
- ```sql
220
- -- 数据存在性(注意 del_flag=2 是正常)
221
- SELECT * FROM 表名 WHERE id = ? AND del_flag = 2;
222
-
223
- -- 最近数据
224
- SELECT * FROM 表名 ORDER BY crtime DESC LIMIT 10;
223
+ **触发 mysql-debug 的信号**:
224
+ - 查询返回空/数据不存在
225
+ - 数据数量、金额、状态不对
226
+ - SQL 异常(DataIntegrityViolation、DuplicateKey)
227
+ - 关联数据不一致
228
+ - 特定租户才出现的问题
225
229
 
226
- -- 表结构
227
- DESC 表名;
228
-
229
- -- 执行计划
230
- EXPLAIN SELECT ...;
231
- ```
230
+ > 如果 mysql-debug 配置未就绪(密码未设置/mysql CLI 未安装),仍可继续纯代码分析路径。
232
231
 
233
232
  ---
234
233
 
@@ -250,6 +249,7 @@ EXPLAIN SELECT ...;
250
249
 
251
250
  | 排查发现 | 推荐 Skill |
252
251
  |---------|-----------|
252
+ | 数据问题(查不到/不一致/状态异常) | `mysql-debug`(自动联动) |
253
253
  | SQL 性能慢 | `performance-doctor` |
254
254
  | 权限配置问题 | `security-guard` |
255
255
  | BO/VO 映射错误 | `leniu-crud-development` |
@@ -1,305 +1,211 @@
1
1
  ---
2
2
  name: project-navigator
3
3
  description: |
4
- 当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供项目结构导航和资源索引。
4
+ 当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供 leniu 云食堂项目的精确导航。
5
5
 
6
6
  触发场景:
7
- - 不知道文件在哪里
8
- - 想了解项目结构
9
- - 查找某个功能的代码位置
10
- - 了解模块职责
11
- - 查看已有的工具类、组件、API、Store
12
- - 寻找参考代码
13
-
14
- 触发词:项目结构、文件在哪、目录、模块、代码位置、找、定位、结构、在哪里、哪个文件、参考、已有
15
- ---
7
+ - 询问某个功能/文件在哪里
8
+ - 新建模块时需要确认目录位置
9
+ - 查找参考代码(Controller/Service/Mapper/Entity 示例)
10
+ - 了解项目整体结构和模块划分
11
+ - 查找技能、命令、Hook 的位置
16
12
 
17
- # 项目导航指南
13
+ 触发词:项目结构、文件在哪、代码位置、目录结构、模块在哪、参考代码、怎么找、哪个文件、路径、在哪里
14
+ ---
18
15
 
19
- > **说明**:后端项目(RuoYi-Vue-Plus)在当前目录,前端项目在 `/Users/xujiajun/Developer/frontProj/web`(独立维护)。
16
+ # leniu 项目导航指南
20
17
 
21
- ## 项目整体结构
18
+ ## 工程化配置项目
22
19
 
23
20
  ```
24
- RuoYi-Vue-Plus/
25
- ├── ruoyi-admin/ # 后端启动入口
26
- │ └── src/main/resources/
27
- ├── application.yml # 主配置
28
- └── application-dev.yml # 开发环境配置(数据库连接)
29
-
30
- ├── ruoyi-common/ # 通用工具模块(24个子模块)
31
- ├── ruoyi-common-bom/ # BOM 依赖管理
32
- │ ├── ruoyi-common-core/ # 核心工具(StringUtils, MapstructUtils)
33
- │ ├── ruoyi-common-mybatis/ # MyBatis 扩展(BaseMapperPlus, TableDataInfo)
34
- │ ├── ruoyi-common-tenant/ # 多租户(TenantEntity)
35
- │ ├── ruoyi-common-redis/ # Redis 缓存
36
- │ ├── ruoyi-common-satoken/ # 权限认证
37
- │ ├── ruoyi-common-excel/ # Excel 导入导出
38
- │ ├── ruoyi-common-oss/ # 对象存储
39
- │ ├── ruoyi-common-doc/ # 接口文档
40
- │ ├── ruoyi-common-encrypt/ # 数据加密
41
- │ ├── ruoyi-common-idempotent/ # 幂等性
42
- │ ├── ruoyi-common-job/ # 定时任务
43
- │ ├── ruoyi-common-json/ # JSON 处理
44
- │ ├── ruoyi-common-log/ # 日志记录
45
- │ ├── ruoyi-common-mail/ # 邮件发送
46
- │ ├── ruoyi-common-ratelimiter/ # 限流
47
- │ ├── ruoyi-common-security/ # 安全
48
- │ ├── ruoyi-common-sensitive/ # 敏感数据
49
- │ ├── ruoyi-common-sms/ # 短信
50
- │ ├── ruoyi-common-social/ # 社交登录
51
- │ ├── ruoyi-common-sse/ # SSE 推送
52
- │ ├── ruoyi-common-translation/ # 翻译
53
- │ ├── ruoyi-common-web/ # Web 通用
54
- │ └── ruoyi-common-websocket/ # WebSocket
55
-
56
- ├── ruoyi-extend/ # 扩展功能模块
57
-
58
- ├── ruoyi-modules/ # 业务功能模块
59
- │ ├── ruoyi-system/ # 系统管理模块(用户、角色、菜单等)
60
- │ ├── ruoyi-demo/ # 演示功能模块
61
- │ ├── ruoyi-job/ # 定时任务模块
62
- │ ├── ruoyi-generator/ # 代码生成器
63
- │ └── ruoyi-workflow/ # 工作流模块
64
-
65
- ├── script/sql/ # 数据库脚本
66
- │ ├── ry_vue_5.X.sql # 系统表(用户、角色、菜单等)
67
- │ ├── ry_job.sql # 定时任务表
68
- │ └── ry_workflow.sql # 工作流表
69
-
70
- ├── docs/ # 项目文档
71
- ├── .claude/ # Claude AI 配置目录
72
- │ └── skills/ # 技能库
73
-
74
- └── pom.xml # Maven 项目配置
21
+ ai-engineering-init/ # 当前工作目录(本仓库根目录)
22
+ ├── CLAUDE.md # 项目规范(核心约束必读)
23
+ ├── AGENTS.md # Agent 配置文档
24
+ ├── .claude/
25
+ ├── skills/ # 73 个技能模块
26
+ ├── commands/ # 10 个快速命令(/dev /crud /check 等)
27
+ ├── hooks/ # Hooks(skill-forced-eval.js 强制技能评估)
28
+ └── docs/ # 开发文档
29
+ └── .codex/skills/ # Codex CLI 技能同步目录
75
30
  ```
76
31
 
77
32
  ---
78
33
 
79
- ## 后端模块位置
34
+ ## 后端 Java 项目
80
35
 
81
- ### 已有主要模块
36
+ **根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
82
37
 
83
- | 模块 | 位置 | 说明 |
84
- |------|------|------|
85
- | **系统管理** (System) | `ruoyi-modules/ruoyi-system/` | ⭐ 系统核心功能(用户、菜单、权限等) |
86
- | **演示模块** (Demo) | `ruoyi-modules/ruoyi-demo/` | 功能演示示例 |
87
- | **定时任务** (Job) | `ruoyi-modules/ruoyi-job/` | 任务调度功能 |
88
- | **代码生成** (Generator) | `ruoyi-modules/ruoyi-generator/` | 代码生成器 |
89
- | **工作流** (Workflow) | `ruoyi-modules/ruoyi-workflow/` | 工作流引擎 |
38
+ ### 业务模块(25 core-* 模块)
90
39
 
91
- ### 🔴 标准模块代码结构(三层架构)
92
-
93
- > **重要**:本项目是三层架构(Controller Service → Mapper),**没有 DAO 层**。
40
+ | 模块 | 职责 |
41
+ |------|------|
42
+ | `core-order` | 订单管理 |
43
+ | `core-menu` | 菜品管理 |
44
+ | `core-marketing` | 营销(充值/优惠) |
45
+ | `core-report` | 报表统计 |
46
+ | `core-pay` | 支付 |
47
+ | `core-account` | 账号管理 |
48
+ | `core-merchant` | 商户配置 |
49
+ | `core-customer` | 用户/员工 |
50
+ | `core-device` | 设备管理 |
51
+ | `core-attendance` | 考勤 |
52
+ | `core-kitchen` / `core-backfield` | 后场厨房 |
53
+ | `core-drp` | 供应链 |
54
+ | `core-dorm` | 宿舍管理 |
55
+ | `core-notice` | 通知消息 |
56
+ | `core-open` | 开放接口 |
57
+ | `core-nutrition` | 营养管理 |
58
+ | `core-supermarket` | 超市 |
59
+ | `core-common` / `core-base` | 公共基础 |
60
+ | `core-auth` / `core-starter` | 认证/启动 |
61
+
62
+ ### 标准包结构(四层架构)
94
63
 
95
64
  ```
96
- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/
97
- ├── controller/ # 控制器
98
- └── system/
99
- └── SysXxxController.java # @RestController
100
- ├── service/ # 服务层
101
- ├── ISysXxxService.java # 服务接口
102
- │ └── impl/
103
- │ └── SysXxxServiceImpl.java # 服务实现(包含 buildQueryWrapper)
104
- ├── mapper/ # Mapper 接口(extends BaseMapperPlus)
105
- │ └── SysXxxMapper.java
106
- ├── domain/ # 实体类和业务对象
107
- ├── SysXxx.java # 实体类(extends TenantEntity
108
- ├── bo/ # 业务对象
109
- │ │ └── SysXxxBo.java # 业务对象(@AutoMapper)
110
- └── vo/ # 视图对象
111
- │ └── SysXxxVo.java # 视图对象
112
- ├── listener/ # 事件监听器
113
- └── runner/ # 启动运行器
65
+ net.xnzn.core.{module}/
66
+ ├── controller/
67
+ ├── web/ # Web 管理端(/api/v2/web/{module})
68
+ ├── mobile/ # 移动端(/api/v2/mobile/{module})
69
+ ├── android/ # 设备端(/api/v2/android/{module})
70
+ └── open/ # 开放接口(/api/v2/open/{module})
71
+ ├── business/impl/ # Business 层(跨 Service 编排)
72
+ ├── service/impl/ # Service 层(单表 CRUD、事务)
73
+ ├── mapper/ # Mapper + XML(同目录!非 resources/mapper/)
74
+ ├── model/ # Entity
75
+ ├── vo/ # 响应对象
76
+ ├── dto/ # 请求参数(含 Param
77
+ ├── constants/ # 枚举、常量
78
+ ├── mq/ # 消息队列
79
+ └── task/ # 定时任务
114
80
  ```
115
81
 
116
- **关键点**:
117
- - Service 实现类**不继承任何基类**,直接注入 Mapper
118
- - `buildQueryWrapper()` 方法在 **Service 实现类**中
119
- - BO 使用 `@AutoMapper`(单数)注解;多目标映射时可用 `@AutoMappers`(复数)
120
-
121
- ### 核心工具类位置
122
-
123
- | 工具类 | 位置 | 说明 |
124
- |--------|------|------|
125
- | `MapstructUtils` | `ruoyi-common-core` | 对象转换(必须使用) |
126
- | `StringUtils` | `ruoyi-common-core` | 字符串工具 |
127
- | `DateUtils` | `ruoyi-common-core` | 日期工具 |
128
- | `ServiceException` | `ruoyi-common-core` | 业务异常 |
129
- | `TenantEntity` | `ruoyi-common-tenant` | 租户实体基类 |
130
- | `BaseMapperPlus` | `ruoyi-common-mybatis` | Mapper 基类接口 |
131
- | `PageQuery` | `ruoyi-common-mybatis` | 分页查询参数 |
132
- | `TableDataInfo` | `ruoyi-common-mybatis` | 分页结果 |
133
- | `RedisUtils` | `ruoyi-common-redis` | Redis 缓存工具 |
134
- | `LoginHelper` | `ruoyi-common-satoken` | 登录用户信息 |
82
+ ### 参考代码位置
135
83
 
136
- ---
84
+ | 需要参考 | 路径 |
85
+ |---------|------|
86
+ | Controller 写法 | `core-order/.../order/web/controller/OrderInfoWebController.java` |
87
+ | Business 层写法 | `core-order/.../order/web/business/impl/OrderWebBusiness.java` |
88
+ | Service 写法 | `core-order/.../order/common/service/impl/OrderInfoService.java` |
89
+ | Entity 写法 | `core-order/.../order/common/model/OrderInfo.java` |
90
+ | 枚举写法 | `core-order/.../order/common/constants/OrderStateEnum.java` |
91
+ | 配置文件 | `core-base/src/main/resources/bootstrap.yml` |
137
92
 
138
- ## 配置文件位置
93
+ ---
139
94
 
140
- | 配置 | 位置 | 说明 |
141
- |------|------|------|
142
- | 后端主配置 | `ruoyi-admin/src/main/resources/application.yml` | 主配置文件 |
143
- | 后端开发配置 | `ruoyi-admin/src/main/resources/application-dev.yml` | 开发环境配置(数据库连接) |
144
- | 后端生产配置 | `ruoyi-admin/src/main/resources/application-prod.yml` | 生产环境配置 |
145
- | 日志配置 | `ruoyi-admin/src/main/resources/logback-plus.xml` | 日志配置 |
95
+ ## 前端项目
146
96
 
147
- ---
97
+ **根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
148
98
 
149
- ## 数据库脚本位置
99
+ ### src/ 核心目录
150
100
 
151
- | 脚本 | 位置 | 说明 |
101
+ | 目录 | 说明 | 规模 |
152
102
  |------|------|------|
153
- | 系统表初始化 | `script/sql/ry_vue_5.X.sql` | 用户、角色、菜单、系统表等 |
154
- | 任务表初始化 | `script/sql/ry_job.sql` | 定时任务相关表 |
155
- | 工作流表初始化 | `script/sql/ry_workflow.sql` | 工作流相关表 |
156
- | Oracle 脚本 | `script/sql/oracle/` | Oracle 数据库脚本 |
157
- | PostgreSQL 脚本 | `script/sql/postgres/` | PostgreSQL 数据库脚本 |
158
- | SQL Server 脚本 | `script/sql/sqlserver/` | SQL Server 数据库脚本 |
103
+ | `api/` | 接口定义 | 63 个文件 |
104
+ | `leniuview/` | 业务模块页面 | 33 个模块 |
105
+ | `leniu-components/` | 业务组件库 | 12 个组件包 |
106
+ | `components/` | 通用组件 | ~87 |
107
+ | `store/` | Vuex 状态管理 | 30+ 个模块 |
108
+ | `utils/` | 工具函数 | 37 个文件 |
109
+
110
+ ### 常用前端文件
111
+
112
+ | 需要查找 | 路径 |
113
+ |---------|------|
114
+ | 主入口 | `src/main.js` |
115
+ | 权限路由守卫 | `src/permission.js` |
116
+ | 请求封装 | `src/utils/request.js` |
117
+ | Token/租户工具 | `src/utils/auth.js` |
118
+ | 全局工具 | `src/utils/index.js` |
119
+ | Vuex 根配置 | `src/store/index.js` |
120
+ | 构建配置 | `vue.config.js` |
121
+
122
+ ### 前端业务模块(leniuview 33 个)
159
123
 
160
- ---
161
-
162
- ## 快速查找
124
+ ```
125
+ accountCenter、canteenBackcourt、cost、dashboard、dataScreen、
126
+ deviceMange、dormitory、marketing、menudish、orderCenter、
127
+ purchase、reportCenter、stock、supplyChain、attendance、
128
+ campus、approvalManage、noticeV2、personalV2 ...
129
+ ```
163
130
 
164
- ### 我想找...
131
+ ---
165
132
 
166
- | 需求 | 位置 |
167
- |------|------|
168
- | 参考后端代码 | `ruoyi-modules/ruoyi-system/` 的系统模块 |
169
- | 看 Entity 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java` |
170
- | 看 Service 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java` |
171
- | 看 Controller 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java` |
172
- | 看 Mapper 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java` |
173
- | 看 BO/VO 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/` |
174
- | 数据库表结构 | `script/sql/ry_vue_5.X.sql` |
175
- | 工具类 | `ruoyi-common/ruoyi-common-core/` |
176
- | MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
177
- | Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
178
- | 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
179
- | **前端项目根目录** | `/Users/xujiajun/Developer/frontProj/web/` |
180
- | **前端 src 目录** | `/Users/xujiajun/Developer/frontProj/web/src/` |
181
- | 前端主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |
182
- | 前端路由守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
183
- | 前端路由配置 | `/Users/xujiajun/Developer/frontProj/web/src/router/` |
184
- | 前端 API 接口定义 | `/Users/xujiajun/Developer/frontProj/web/src/api/`(65个文件) |
185
- | 前端视图页面 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/`(34个业务模块) |
186
- | 前端业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
187
- | 前端公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/`(~87个) |
188
- | 前端 Vuex Store | `/Users/xujiajun/Developer/frontProj/web/src/store/`(28个模块) |
189
- | 前端请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
190
- | 前端 Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
191
- | 前端全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
192
- | 前端 Mixin 文件 | `/Users/xujiajun/Developer/frontProj/web/src/mixins/` |
193
- | 前端国际化配置 | `/Users/xujiajun/Developer/frontProj/web/src/lang/` |
194
- | 前端自定义指令 | `/Users/xujiajun/Developer/frontProj/web/src/directive/` |
195
- | 前端全局样式 | `/Users/xujiajun/Developer/frontProj/web/src/styles/` |
196
- | 前端构建配置 | `/Users/xujiajun/Developer/frontProj/web/vue.config.js` |
197
- | 前端依赖配置 | `/Users/xujiajun/Developer/frontProj/web/package.json` |
133
+ ## 技能系统导航
198
134
 
199
- ---
135
+ **技能路径**:`.claude/skills/{技能名}/SKILL.md`
200
136
 
201
- ## 模块与表前缀对应
137
+ ### 按开发场景选择技能
202
138
 
203
- | 模块 | 表前缀 | 包路径 |
204
- |------|--------|--------|
205
- | system | `sys_` | `org.dromara.system` |
206
- | demo | `test_` | `org.dromara.demo` |
207
- | workflow | `flow_` | `org.dromara.workflow` |
208
- | 自定义业务 | 自定义 | `org.dromara.xxx` |
139
+ | 场景 | 技能 |
140
+ |------|------|
141
+ | 新建 CRUD 模块 | `leniu-crud-development` |
142
+ | API 接口设计 | `leniu-api-development` |
143
+ | 建表/SQL | `leniu-database-ops` |
144
+ | Entity/VO/DTO | `leniu-java-entity` |
145
+ | MyBatis/Mapper | `leniu-java-mybatis` |
146
+ | 异常处理 | `leniu-error-handler` |
147
+ | 工具类使用 | `leniu-utils-toolkit` |
148
+ | 注解使用 | `leniu-backend-annotations` |
149
+ | 代码规范 | `leniu-code-patterns` |
150
+ | 数据权限/双库 | `leniu-data-permission` |
151
+ | 定制报表 | `leniu-report-customization` |
152
+ | 标准报表 | `leniu-report-standard-customization` |
153
+ | 金额处理 | `leniu-java-amount-handling` |
154
+ | 并发/异步 | `leniu-java-concurrent` |
155
+ | 导出功能 | `leniu-java-export` |
156
+ | 定时任务 | `leniu-java-task` |
157
+ | 消息队列 | `leniu-java-mq` |
158
+ | Redis 缓存 | `leniu-redis-cache` |
159
+ | 合计行查询 | `leniu-java-total-line` |
160
+ | 报表查询入参 | `leniu-java-report-query-param` |
161
+ | 营销计费规则 | `leniu-marketing-price-rule-customizer` |
162
+ | 营销充值规则 | `leniu-marketing-recharge-rule-customizer` |
163
+ | 餐次处理 | `leniu-mealtime` |
164
+ | 定制开发位置 | `leniu-customization-location` |
165
+ | Bug 排查 | `bug-detective`(数据问题自动联动 `mysql-debug`) |
166
+ | 数据库查询验证 | `mysql-debug` |
167
+ | Codex 代码审查 | `codex-code-review` |
168
+ | 前端组件/权限 | `ui-pc` |
169
+ | 前端 Vuex | `store-pc` |
170
+ | 方案设计 | `leniu-brainstorm` |
171
+ | 架构设计 | `leniu-architecture-design` |
172
+ | 安全认证 | `leniu-security-guard` |
173
+
174
+ ### 快速命令
175
+
176
+ | 命令 | 用途 |
177
+ |------|------|
178
+ | `/dev` | 开发新功能 |
179
+ | `/crud` | 快速生成 CRUD |
180
+ | `/check` | 代码规范检查 |
181
+ | `/start` | 项目快速了解 |
182
+ | `/progress` | 查看项目进度 |
183
+ | `/next` | 下一步建议 |
184
+ | `/add-todo` | 添加待办事项 |
209
185
 
210
186
  ---
211
187
 
212
- ## 常用查找命令
188
+ ## 常用搜索模式
213
189
 
214
190
  ```bash
215
- # 查找 Java 类
216
- Glob ruoyi-modules/**/*[类名]*.java
217
-
218
- # 查找包含特定内容的文件
219
- Grep "[关键词]" ruoyi-modules/ --type java
220
-
221
- # 查找配置文件
222
- Glob ruoyi-admin/src/main/resources/application*.yml
191
+ # 查找某模块的 Controller
192
+ Glob core-order/**/*Controller*.java
223
193
 
224
194
  # 查找 Service 实现类
225
- Glob ruoyi-modules/**/impl/*ServiceImpl.java
226
-
227
- # 查找 Mapper 接口
228
- Glob ruoyi-modules/**/*Mapper.java
229
-
230
- # 查找 Entity 类
231
- Glob ruoyi-modules/**/domain/*.java
232
-
233
- # 查找工具类
234
- Glob ruoyi-common/**/*Utils.java
235
- ```
236
-
237
- ---
238
-
239
- ## 三层架构代码示例
240
-
241
- ### Service 实现类结构(重点参考)
242
-
243
- ```java
244
- @Service
245
- public class TestDemoServiceImpl implements ITestDemoService {
246
-
247
- private final TestDemoMapper baseMapper; // 直接注入 Mapper,无 DAO 层
248
-
249
- /**
250
- * 构建查询条件(在 Service 层)
251
- */
252
- private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
253
- Map<String, Object> params = bo.getParams();
254
- LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
255
- lqw.eq(bo.getDeptId() != null, TestDemo::getDeptId, bo.getDeptId());
256
- lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
257
- return lqw;
258
- }
259
-
260
- @Override
261
- public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
262
- LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
263
- Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
264
- return TableDataInfo.build(result);
265
- }
266
- }
267
- ```
268
-
269
- ### BO 类结构
270
-
271
- ```java
272
- @Data
273
- @AutoMapper(target = TestDemo.class, reverseConvertGenerate = false) // ✅ 单数
274
- public class TestDemoBo extends BaseEntity {
275
- private Long id;
276
- private String testKey;
277
- // ...
278
- }
279
- ```
280
-
281
- ### Controller 结构
282
-
283
- ```java
284
- @RestController
285
- @RequestMapping("/demo/demo")
286
- public class TestDemoController extends BaseController {
287
-
288
- private final ITestDemoService testDemoService;
195
+ Glob core-order/**/impl/*Service*.java
289
196
 
290
- @GetMapping("/list") // 分页查询
291
- public TableDataInfo<TestDemoVo> list(TestDemoBo bo, PageQuery pageQuery) { }
197
+ # 查找 Mapper XML
198
+ Glob core-order/**/*Mapper.xml
292
199
 
293
- @GetMapping("/{id}") // 获取详情
294
- public R<TestDemoVo> getInfo(@PathVariable Long id) { }
200
+ # 查找 Entity
201
+ Glob core-order/**/model/*.java
295
202
 
296
- @PostMapping // 新增
297
- public R<Void> add(@RequestBody TestDemoBo bo) { }
203
+ # 查找某接口路由
204
+ Grep "/api/v2/web/order" --type java
298
205
 
299
- @PutMapping // 修改
300
- public R<Void> edit(@RequestBody TestDemoBo bo) { }
206
+ # 查找前端某页面
207
+ Glob src/leniuview/**/index.vue
301
208
 
302
- @DeleteMapping("/{ids}") // 删除
303
- public R<Void> remove(@PathVariable Long[] ids) { }
304
- }
209
+ # 查找前端接口定义
210
+ Glob src/api/*.js
305
211
  ```
@@ -10,6 +10,8 @@ description: |
10
10
  - 日志文件分析(./logs/sys-console.log)
11
11
  - 前端页面不显示、API 调用异常
12
12
 
13
+ 联动技能:数据问题自动联动 mysql-debug 查库验证
14
+
13
15
  触发词:Bug、报错、异常、不工作、500错误、NullPointerException、SQLException、数据查不到、日志分析、排查、调试、debug、错误排查、精度丢失
14
16
  ---
15
17
 
@@ -204,31 +206,28 @@ XxxVO vo = BeanUtil.copyProperties(entity, XxxVO.class); // 源对象为 null
204
206
 
205
207
  ---
206
208
 
207
- ## 数据库排查
209
+ ## 数据库排查(委托 mysql-debug)
208
210
 
209
- ### 主动排查流程
211
+ 当诊断结果指向数据问题时,**必须联动 `mysql-debug` 技能**进行数据库查询验证:
210
212
 
211
213
  ```
212
- 1. 读取数据库配置(bootstrap.yml / application-dev.yml)
213
- 2. 连接数据库执行诊断 SQL
214
- 3. 分析结果给出方案
214
+ 诊断决策树判定"数据相关问题"
215
+
216
+ 自动激活 mysql-debug 技能
217
+
218
+ mysql-debug 执行:配置检查 → 日志提取数据库名 → 执行只读 SQL → 返回结果
219
+
220
+ bug-detective 结合查询结果给出修复方案
215
221
  ```
216
222
 
217
- ### 常用诊断 SQL
218
-
219
- ```sql
220
- -- 数据存在性(注意 del_flag=2 是正常)
221
- SELECT * FROM 表名 WHERE id = ? AND del_flag = 2;
222
-
223
- -- 最近数据
224
- SELECT * FROM 表名 ORDER BY crtime DESC LIMIT 10;
223
+ **触发 mysql-debug 的信号**:
224
+ - 查询返回空/数据不存在
225
+ - 数据数量、金额、状态不对
226
+ - SQL 异常(DataIntegrityViolation、DuplicateKey)
227
+ - 关联数据不一致
228
+ - 特定租户才出现的问题
225
229
 
226
- -- 表结构
227
- DESC 表名;
228
-
229
- -- 执行计划
230
- EXPLAIN SELECT ...;
231
- ```
230
+ > 如果 mysql-debug 配置未就绪(密码未设置/mysql CLI 未安装),仍可继续纯代码分析路径。
232
231
 
233
232
  ---
234
233
 
@@ -250,6 +249,7 @@ EXPLAIN SELECT ...;
250
249
 
251
250
  | 排查发现 | 推荐 Skill |
252
251
  |---------|-----------|
252
+ | 数据问题(查不到/不一致/状态异常) | `mysql-debug`(自动联动) |
253
253
  | SQL 性能慢 | `performance-doctor` |
254
254
  | 权限配置问题 | `security-guard` |
255
255
  | BO/VO 映射错误 | `leniu-crud-development` |
@@ -1,305 +1,211 @@
1
1
  ---
2
2
  name: project-navigator
3
3
  description: |
4
- 当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供项目结构导航和资源索引。
4
+ 当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供 leniu 云食堂项目的精确导航。
5
5
 
6
6
  触发场景:
7
- - 不知道文件在哪里
8
- - 想了解项目结构
9
- - 查找某个功能的代码位置
10
- - 了解模块职责
11
- - 查看已有的工具类、组件、API、Store
12
- - 寻找参考代码
13
-
14
- 触发词:项目结构、文件在哪、目录、模块、代码位置、找、定位、结构、在哪里、哪个文件、参考、已有
15
- ---
7
+ - 询问某个功能/文件在哪里
8
+ - 新建模块时需要确认目录位置
9
+ - 查找参考代码(Controller/Service/Mapper/Entity 示例)
10
+ - 了解项目整体结构和模块划分
11
+ - 查找技能、命令、Hook 的位置
16
12
 
17
- # 项目导航指南
13
+ 触发词:项目结构、文件在哪、代码位置、目录结构、模块在哪、参考代码、怎么找、哪个文件、路径、在哪里
14
+ ---
18
15
 
19
- > **说明**:后端项目(RuoYi-Vue-Plus)在当前目录,前端项目在 `/Users/xujiajun/Developer/frontProj/web`(独立维护)。
16
+ # leniu 项目导航指南
20
17
 
21
- ## 项目整体结构
18
+ ## 工程化配置项目
22
19
 
23
20
  ```
24
- RuoYi-Vue-Plus/
25
- ├── ruoyi-admin/ # 后端启动入口
26
- │ └── src/main/resources/
27
- ├── application.yml # 主配置
28
- └── application-dev.yml # 开发环境配置(数据库连接)
29
-
30
- ├── ruoyi-common/ # 通用工具模块(24个子模块)
31
- ├── ruoyi-common-bom/ # BOM 依赖管理
32
- │ ├── ruoyi-common-core/ # 核心工具(StringUtils, MapstructUtils)
33
- │ ├── ruoyi-common-mybatis/ # MyBatis 扩展(BaseMapperPlus, TableDataInfo)
34
- │ ├── ruoyi-common-tenant/ # 多租户(TenantEntity)
35
- │ ├── ruoyi-common-redis/ # Redis 缓存
36
- │ ├── ruoyi-common-satoken/ # 权限认证
37
- │ ├── ruoyi-common-excel/ # Excel 导入导出
38
- │ ├── ruoyi-common-oss/ # 对象存储
39
- │ ├── ruoyi-common-doc/ # 接口文档
40
- │ ├── ruoyi-common-encrypt/ # 数据加密
41
- │ ├── ruoyi-common-idempotent/ # 幂等性
42
- │ ├── ruoyi-common-job/ # 定时任务
43
- │ ├── ruoyi-common-json/ # JSON 处理
44
- │ ├── ruoyi-common-log/ # 日志记录
45
- │ ├── ruoyi-common-mail/ # 邮件发送
46
- │ ├── ruoyi-common-ratelimiter/ # 限流
47
- │ ├── ruoyi-common-security/ # 安全
48
- │ ├── ruoyi-common-sensitive/ # 敏感数据
49
- │ ├── ruoyi-common-sms/ # 短信
50
- │ ├── ruoyi-common-social/ # 社交登录
51
- │ ├── ruoyi-common-sse/ # SSE 推送
52
- │ ├── ruoyi-common-translation/ # 翻译
53
- │ ├── ruoyi-common-web/ # Web 通用
54
- │ └── ruoyi-common-websocket/ # WebSocket
55
-
56
- ├── ruoyi-extend/ # 扩展功能模块
57
-
58
- ├── ruoyi-modules/ # 业务功能模块
59
- │ ├── ruoyi-system/ # 系统管理模块(用户、角色、菜单等)
60
- │ ├── ruoyi-demo/ # 演示功能模块
61
- │ ├── ruoyi-job/ # 定时任务模块
62
- │ ├── ruoyi-generator/ # 代码生成器
63
- │ └── ruoyi-workflow/ # 工作流模块
64
-
65
- ├── script/sql/ # 数据库脚本
66
- │ ├── ry_vue_5.X.sql # 系统表(用户、角色、菜单等)
67
- │ ├── ry_job.sql # 定时任务表
68
- │ └── ry_workflow.sql # 工作流表
69
-
70
- ├── docs/ # 项目文档
71
- ├── .claude/ # Claude AI 配置目录
72
- │ └── skills/ # 技能库
73
-
74
- └── pom.xml # Maven 项目配置
21
+ ai-engineering-init/ # 当前工作目录(本仓库根目录)
22
+ ├── CLAUDE.md # 项目规范(核心约束必读)
23
+ ├── AGENTS.md # Agent 配置文档
24
+ ├── .claude/
25
+ ├── skills/ # 73 个技能模块
26
+ ├── commands/ # 10 个快速命令(/dev /crud /check 等)
27
+ ├── hooks/ # Hooks(skill-forced-eval.js 强制技能评估)
28
+ └── docs/ # 开发文档
29
+ └── .codex/skills/ # Codex CLI 技能同步目录
75
30
  ```
76
31
 
77
32
  ---
78
33
 
79
- ## 后端模块位置
34
+ ## 后端 Java 项目
80
35
 
81
- ### 已有主要模块
36
+ **根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
82
37
 
83
- | 模块 | 位置 | 说明 |
84
- |------|------|------|
85
- | **系统管理** (System) | `ruoyi-modules/ruoyi-system/` | ⭐ 系统核心功能(用户、菜单、权限等) |
86
- | **演示模块** (Demo) | `ruoyi-modules/ruoyi-demo/` | 功能演示示例 |
87
- | **定时任务** (Job) | `ruoyi-modules/ruoyi-job/` | 任务调度功能 |
88
- | **代码生成** (Generator) | `ruoyi-modules/ruoyi-generator/` | 代码生成器 |
89
- | **工作流** (Workflow) | `ruoyi-modules/ruoyi-workflow/` | 工作流引擎 |
38
+ ### 业务模块(25 core-* 模块)
90
39
 
91
- ### 🔴 标准模块代码结构(三层架构)
92
-
93
- > **重要**:本项目是三层架构(Controller Service → Mapper),**没有 DAO 层**。
40
+ | 模块 | 职责 |
41
+ |------|------|
42
+ | `core-order` | 订单管理 |
43
+ | `core-menu` | 菜品管理 |
44
+ | `core-marketing` | 营销(充值/优惠) |
45
+ | `core-report` | 报表统计 |
46
+ | `core-pay` | 支付 |
47
+ | `core-account` | 账号管理 |
48
+ | `core-merchant` | 商户配置 |
49
+ | `core-customer` | 用户/员工 |
50
+ | `core-device` | 设备管理 |
51
+ | `core-attendance` | 考勤 |
52
+ | `core-kitchen` / `core-backfield` | 后场厨房 |
53
+ | `core-drp` | 供应链 |
54
+ | `core-dorm` | 宿舍管理 |
55
+ | `core-notice` | 通知消息 |
56
+ | `core-open` | 开放接口 |
57
+ | `core-nutrition` | 营养管理 |
58
+ | `core-supermarket` | 超市 |
59
+ | `core-common` / `core-base` | 公共基础 |
60
+ | `core-auth` / `core-starter` | 认证/启动 |
61
+
62
+ ### 标准包结构(四层架构)
94
63
 
95
64
  ```
96
- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/
97
- ├── controller/ # 控制器
98
- └── system/
99
- └── SysXxxController.java # @RestController
100
- ├── service/ # 服务层
101
- ├── ISysXxxService.java # 服务接口
102
- │ └── impl/
103
- │ └── SysXxxServiceImpl.java # 服务实现(包含 buildQueryWrapper)
104
- ├── mapper/ # Mapper 接口(extends BaseMapperPlus)
105
- │ └── SysXxxMapper.java
106
- ├── domain/ # 实体类和业务对象
107
- ├── SysXxx.java # 实体类(extends TenantEntity
108
- ├── bo/ # 业务对象
109
- │ │ └── SysXxxBo.java # 业务对象(@AutoMapper)
110
- └── vo/ # 视图对象
111
- │ └── SysXxxVo.java # 视图对象
112
- ├── listener/ # 事件监听器
113
- └── runner/ # 启动运行器
65
+ net.xnzn.core.{module}/
66
+ ├── controller/
67
+ ├── web/ # Web 管理端(/api/v2/web/{module})
68
+ ├── mobile/ # 移动端(/api/v2/mobile/{module})
69
+ ├── android/ # 设备端(/api/v2/android/{module})
70
+ └── open/ # 开放接口(/api/v2/open/{module})
71
+ ├── business/impl/ # Business 层(跨 Service 编排)
72
+ ├── service/impl/ # Service 层(单表 CRUD、事务)
73
+ ├── mapper/ # Mapper + XML(同目录!非 resources/mapper/)
74
+ ├── model/ # Entity
75
+ ├── vo/ # 响应对象
76
+ ├── dto/ # 请求参数(含 Param
77
+ ├── constants/ # 枚举、常量
78
+ ├── mq/ # 消息队列
79
+ └── task/ # 定时任务
114
80
  ```
115
81
 
116
- **关键点**:
117
- - Service 实现类**不继承任何基类**,直接注入 Mapper
118
- - `buildQueryWrapper()` 方法在 **Service 实现类**中
119
- - BO 使用 `@AutoMapper`(单数)注解;多目标映射时可用 `@AutoMappers`(复数)
120
-
121
- ### 核心工具类位置
122
-
123
- | 工具类 | 位置 | 说明 |
124
- |--------|------|------|
125
- | `MapstructUtils` | `ruoyi-common-core` | 对象转换(必须使用) |
126
- | `StringUtils` | `ruoyi-common-core` | 字符串工具 |
127
- | `DateUtils` | `ruoyi-common-core` | 日期工具 |
128
- | `ServiceException` | `ruoyi-common-core` | 业务异常 |
129
- | `TenantEntity` | `ruoyi-common-tenant` | 租户实体基类 |
130
- | `BaseMapperPlus` | `ruoyi-common-mybatis` | Mapper 基类接口 |
131
- | `PageQuery` | `ruoyi-common-mybatis` | 分页查询参数 |
132
- | `TableDataInfo` | `ruoyi-common-mybatis` | 分页结果 |
133
- | `RedisUtils` | `ruoyi-common-redis` | Redis 缓存工具 |
134
- | `LoginHelper` | `ruoyi-common-satoken` | 登录用户信息 |
82
+ ### 参考代码位置
135
83
 
136
- ---
84
+ | 需要参考 | 路径 |
85
+ |---------|------|
86
+ | Controller 写法 | `core-order/.../order/web/controller/OrderInfoWebController.java` |
87
+ | Business 层写法 | `core-order/.../order/web/business/impl/OrderWebBusiness.java` |
88
+ | Service 写法 | `core-order/.../order/common/service/impl/OrderInfoService.java` |
89
+ | Entity 写法 | `core-order/.../order/common/model/OrderInfo.java` |
90
+ | 枚举写法 | `core-order/.../order/common/constants/OrderStateEnum.java` |
91
+ | 配置文件 | `core-base/src/main/resources/bootstrap.yml` |
137
92
 
138
- ## 配置文件位置
93
+ ---
139
94
 
140
- | 配置 | 位置 | 说明 |
141
- |------|------|------|
142
- | 后端主配置 | `ruoyi-admin/src/main/resources/application.yml` | 主配置文件 |
143
- | 后端开发配置 | `ruoyi-admin/src/main/resources/application-dev.yml` | 开发环境配置(数据库连接) |
144
- | 后端生产配置 | `ruoyi-admin/src/main/resources/application-prod.yml` | 生产环境配置 |
145
- | 日志配置 | `ruoyi-admin/src/main/resources/logback-plus.xml` | 日志配置 |
95
+ ## 前端项目
146
96
 
147
- ---
97
+ **根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
148
98
 
149
- ## 数据库脚本位置
99
+ ### src/ 核心目录
150
100
 
151
- | 脚本 | 位置 | 说明 |
101
+ | 目录 | 说明 | 规模 |
152
102
  |------|------|------|
153
- | 系统表初始化 | `script/sql/ry_vue_5.X.sql` | 用户、角色、菜单、系统表等 |
154
- | 任务表初始化 | `script/sql/ry_job.sql` | 定时任务相关表 |
155
- | 工作流表初始化 | `script/sql/ry_workflow.sql` | 工作流相关表 |
156
- | Oracle 脚本 | `script/sql/oracle/` | Oracle 数据库脚本 |
157
- | PostgreSQL 脚本 | `script/sql/postgres/` | PostgreSQL 数据库脚本 |
158
- | SQL Server 脚本 | `script/sql/sqlserver/` | SQL Server 数据库脚本 |
103
+ | `api/` | 接口定义 | 63 个文件 |
104
+ | `leniuview/` | 业务模块页面 | 33 个模块 |
105
+ | `leniu-components/` | 业务组件库 | 12 个组件包 |
106
+ | `components/` | 通用组件 | ~87 |
107
+ | `store/` | Vuex 状态管理 | 30+ 个模块 |
108
+ | `utils/` | 工具函数 | 37 个文件 |
109
+
110
+ ### 常用前端文件
111
+
112
+ | 需要查找 | 路径 |
113
+ |---------|------|
114
+ | 主入口 | `src/main.js` |
115
+ | 权限路由守卫 | `src/permission.js` |
116
+ | 请求封装 | `src/utils/request.js` |
117
+ | Token/租户工具 | `src/utils/auth.js` |
118
+ | 全局工具 | `src/utils/index.js` |
119
+ | Vuex 根配置 | `src/store/index.js` |
120
+ | 构建配置 | `vue.config.js` |
121
+
122
+ ### 前端业务模块(leniuview 33 个)
159
123
 
160
- ---
161
-
162
- ## 快速查找
124
+ ```
125
+ accountCenter、canteenBackcourt、cost、dashboard、dataScreen、
126
+ deviceMange、dormitory、marketing、menudish、orderCenter、
127
+ purchase、reportCenter、stock、supplyChain、attendance、
128
+ campus、approvalManage、noticeV2、personalV2 ...
129
+ ```
163
130
 
164
- ### 我想找...
131
+ ---
165
132
 
166
- | 需求 | 位置 |
167
- |------|------|
168
- | 参考后端代码 | `ruoyi-modules/ruoyi-system/` 的系统模块 |
169
- | 看 Entity 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java` |
170
- | 看 Service 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java` |
171
- | 看 Controller 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java` |
172
- | 看 Mapper 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java` |
173
- | 看 BO/VO 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/` |
174
- | 数据库表结构 | `script/sql/ry_vue_5.X.sql` |
175
- | 工具类 | `ruoyi-common/ruoyi-common-core/` |
176
- | MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
177
- | Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
178
- | 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
179
- | **前端项目根目录** | `/Users/xujiajun/Developer/frontProj/web/` |
180
- | **前端 src 目录** | `/Users/xujiajun/Developer/frontProj/web/src/` |
181
- | 前端主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |
182
- | 前端路由守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
183
- | 前端路由配置 | `/Users/xujiajun/Developer/frontProj/web/src/router/` |
184
- | 前端 API 接口定义 | `/Users/xujiajun/Developer/frontProj/web/src/api/`(65个文件) |
185
- | 前端视图页面 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/`(34个业务模块) |
186
- | 前端业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
187
- | 前端公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/`(~87个) |
188
- | 前端 Vuex Store | `/Users/xujiajun/Developer/frontProj/web/src/store/`(28个模块) |
189
- | 前端请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
190
- | 前端 Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
191
- | 前端全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
192
- | 前端 Mixin 文件 | `/Users/xujiajun/Developer/frontProj/web/src/mixins/` |
193
- | 前端国际化配置 | `/Users/xujiajun/Developer/frontProj/web/src/lang/` |
194
- | 前端自定义指令 | `/Users/xujiajun/Developer/frontProj/web/src/directive/` |
195
- | 前端全局样式 | `/Users/xujiajun/Developer/frontProj/web/src/styles/` |
196
- | 前端构建配置 | `/Users/xujiajun/Developer/frontProj/web/vue.config.js` |
197
- | 前端依赖配置 | `/Users/xujiajun/Developer/frontProj/web/package.json` |
133
+ ## 技能系统导航
198
134
 
199
- ---
135
+ **技能路径**:`.claude/skills/{技能名}/SKILL.md`
200
136
 
201
- ## 模块与表前缀对应
137
+ ### 按开发场景选择技能
202
138
 
203
- | 模块 | 表前缀 | 包路径 |
204
- |------|--------|--------|
205
- | system | `sys_` | `org.dromara.system` |
206
- | demo | `test_` | `org.dromara.demo` |
207
- | workflow | `flow_` | `org.dromara.workflow` |
208
- | 自定义业务 | 自定义 | `org.dromara.xxx` |
139
+ | 场景 | 技能 |
140
+ |------|------|
141
+ | 新建 CRUD 模块 | `leniu-crud-development` |
142
+ | API 接口设计 | `leniu-api-development` |
143
+ | 建表/SQL | `leniu-database-ops` |
144
+ | Entity/VO/DTO | `leniu-java-entity` |
145
+ | MyBatis/Mapper | `leniu-java-mybatis` |
146
+ | 异常处理 | `leniu-error-handler` |
147
+ | 工具类使用 | `leniu-utils-toolkit` |
148
+ | 注解使用 | `leniu-backend-annotations` |
149
+ | 代码规范 | `leniu-code-patterns` |
150
+ | 数据权限/双库 | `leniu-data-permission` |
151
+ | 定制报表 | `leniu-report-customization` |
152
+ | 标准报表 | `leniu-report-standard-customization` |
153
+ | 金额处理 | `leniu-java-amount-handling` |
154
+ | 并发/异步 | `leniu-java-concurrent` |
155
+ | 导出功能 | `leniu-java-export` |
156
+ | 定时任务 | `leniu-java-task` |
157
+ | 消息队列 | `leniu-java-mq` |
158
+ | Redis 缓存 | `leniu-redis-cache` |
159
+ | 合计行查询 | `leniu-java-total-line` |
160
+ | 报表查询入参 | `leniu-java-report-query-param` |
161
+ | 营销计费规则 | `leniu-marketing-price-rule-customizer` |
162
+ | 营销充值规则 | `leniu-marketing-recharge-rule-customizer` |
163
+ | 餐次处理 | `leniu-mealtime` |
164
+ | 定制开发位置 | `leniu-customization-location` |
165
+ | Bug 排查 | `bug-detective`(数据问题自动联动 `mysql-debug`) |
166
+ | 数据库查询验证 | `mysql-debug` |
167
+ | Codex 代码审查 | `codex-code-review` |
168
+ | 前端组件/权限 | `ui-pc` |
169
+ | 前端 Vuex | `store-pc` |
170
+ | 方案设计 | `leniu-brainstorm` |
171
+ | 架构设计 | `leniu-architecture-design` |
172
+ | 安全认证 | `leniu-security-guard` |
173
+
174
+ ### 快速命令
175
+
176
+ | 命令 | 用途 |
177
+ |------|------|
178
+ | `/dev` | 开发新功能 |
179
+ | `/crud` | 快速生成 CRUD |
180
+ | `/check` | 代码规范检查 |
181
+ | `/start` | 项目快速了解 |
182
+ | `/progress` | 查看项目进度 |
183
+ | `/next` | 下一步建议 |
184
+ | `/add-todo` | 添加待办事项 |
209
185
 
210
186
  ---
211
187
 
212
- ## 常用查找命令
188
+ ## 常用搜索模式
213
189
 
214
190
  ```bash
215
- # 查找 Java 类
216
- Glob ruoyi-modules/**/*[类名]*.java
217
-
218
- # 查找包含特定内容的文件
219
- Grep "[关键词]" ruoyi-modules/ --type java
220
-
221
- # 查找配置文件
222
- Glob ruoyi-admin/src/main/resources/application*.yml
191
+ # 查找某模块的 Controller
192
+ Glob core-order/**/*Controller*.java
223
193
 
224
194
  # 查找 Service 实现类
225
- Glob ruoyi-modules/**/impl/*ServiceImpl.java
226
-
227
- # 查找 Mapper 接口
228
- Glob ruoyi-modules/**/*Mapper.java
229
-
230
- # 查找 Entity 类
231
- Glob ruoyi-modules/**/domain/*.java
232
-
233
- # 查找工具类
234
- Glob ruoyi-common/**/*Utils.java
235
- ```
236
-
237
- ---
238
-
239
- ## 三层架构代码示例
240
-
241
- ### Service 实现类结构(重点参考)
242
-
243
- ```java
244
- @Service
245
- public class TestDemoServiceImpl implements ITestDemoService {
246
-
247
- private final TestDemoMapper baseMapper; // 直接注入 Mapper,无 DAO 层
248
-
249
- /**
250
- * 构建查询条件(在 Service 层)
251
- */
252
- private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
253
- Map<String, Object> params = bo.getParams();
254
- LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
255
- lqw.eq(bo.getDeptId() != null, TestDemo::getDeptId, bo.getDeptId());
256
- lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
257
- return lqw;
258
- }
259
-
260
- @Override
261
- public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
262
- LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
263
- Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
264
- return TableDataInfo.build(result);
265
- }
266
- }
267
- ```
268
-
269
- ### BO 类结构
270
-
271
- ```java
272
- @Data
273
- @AutoMapper(target = TestDemo.class, reverseConvertGenerate = false) // ✅ 单数
274
- public class TestDemoBo extends BaseEntity {
275
- private Long id;
276
- private String testKey;
277
- // ...
278
- }
279
- ```
280
-
281
- ### Controller 结构
282
-
283
- ```java
284
- @RestController
285
- @RequestMapping("/demo/demo")
286
- public class TestDemoController extends BaseController {
287
-
288
- private final ITestDemoService testDemoService;
195
+ Glob core-order/**/impl/*Service*.java
289
196
 
290
- @GetMapping("/list") // 分页查询
291
- public TableDataInfo<TestDemoVo> list(TestDemoBo bo, PageQuery pageQuery) { }
197
+ # 查找 Mapper XML
198
+ Glob core-order/**/*Mapper.xml
292
199
 
293
- @GetMapping("/{id}") // 获取详情
294
- public R<TestDemoVo> getInfo(@PathVariable Long id) { }
200
+ # 查找 Entity
201
+ Glob core-order/**/model/*.java
295
202
 
296
- @PostMapping // 新增
297
- public R<Void> add(@RequestBody TestDemoBo bo) { }
203
+ # 查找某接口路由
204
+ Grep "/api/v2/web/order" --type java
298
205
 
299
- @PutMapping // 修改
300
- public R<Void> edit(@RequestBody TestDemoBo bo) { }
206
+ # 查找前端某页面
207
+ Glob src/leniuview/**/index.vue
301
208
 
302
- @DeleteMapping("/{ids}") // 删除
303
- public R<Void> remove(@PathVariable Long[] ids) { }
304
- }
209
+ # 查找前端接口定义
210
+ Glob src/api/*.js
305
211
  ```
@@ -9,6 +9,10 @@
9
9
  */
10
10
 
11
11
  const fs = require('fs');
12
+ const path = require('path');
13
+
14
+ // 项目根目录:__dirname 是 .cursor/hooks/,向上两级
15
+ const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
12
16
 
13
17
  // 从 stdin 读取用户输入
14
18
  let inputData = '';
@@ -158,6 +162,12 @@ const skillMap = [
158
162
  name: 'leniu-mealtime',
159
163
  keywords: ['餐次', '早餐', '午餐', '下午茶', '晚餐', '夜宵', 'mealtimeTypes']
160
164
  },
165
+ {
166
+ name: 'leniu-customization-location',
167
+ keywords: ['定制开发', '定制代码位置', 'Dz前缀', 'leniu-yunshitang', 'dz_表名', '定制仓库',
168
+ '覆盖Service', '@Primary', '迁移core文件', '定制开始', '定制结束', 'net.xnzn.yunshitang',
169
+ 'wuhanxiehe定制', 'bootstrap-ext']
170
+ },
161
171
 
162
172
  // ========== OpenSpec 工作流 ==========
163
173
  {
@@ -313,6 +323,48 @@ const skillMap = [
313
323
  {
314
324
  name: 'store-pc',
315
325
  keywords: ['Vuex', 'store', 'mapState', 'mapActions', '状态管理']
326
+ },
327
+ {
328
+ name: 'add-skill',
329
+ keywords: ['添加技能', '创建技能', '新技能', '技能开发', '写技能', 'SKILL.md', '新增skill']
330
+ },
331
+ {
332
+ name: 'banana-image',
333
+ keywords: ['生成图片', 'AI图片', '产品图', '海报', '缩略图', '4K图片', '高清图', '制作图片', '/image']
334
+ },
335
+ {
336
+ name: 'collaborating-with-codex',
337
+ keywords: ['codex协作', '委托codex', 'openai codex', 'codex分析', '多模型协作', '让codex']
338
+ },
339
+ {
340
+ name: 'collaborating-with-gemini',
341
+ keywords: ['gemini协作', '委托gemini', 'google gemini', 'gemini分析', '让gemini', 'gemini前端']
342
+ },
343
+ {
344
+ name: 'leniu-brainstorm',
345
+ keywords: ['leniu-头脑风暴', '云食堂方案', '云食堂设计', '云食堂功能规划', 'leniu-方案设计',
346
+ '云食堂怎么设计', '云食堂可行性']
347
+ },
348
+ {
349
+ name: 'leniu-report-customization',
350
+ keywords: ['定制报表', 'report_order_info', 'report_order_detail', 'report_account_flow',
351
+ '退款汇总', '消费金额统计', '订单报表', '流水报表', '汇总报表']
352
+ },
353
+ {
354
+ name: 'leniu-report-standard-customization',
355
+ keywords: ['标准版报表', 'core-report', 'report_refund', 'report_refund_detail',
356
+ '经营分析', '营业额分析', '用户活跃度', '菜品排行', '操作员统计', '账户日结',
357
+ 'ReportOrderConsumeService', 'ReportAccountConsumeService']
358
+ },
359
+ {
360
+ name: 'mysql-debug',
361
+ keywords: ['mysql查询', '查数据库', '查表', '执行SQL', '数据库排查', '验证数据',
362
+ '数据库调试', 'db查询', 'mysql调试', '直接查库']
363
+ },
364
+ {
365
+ name: 'openspec-onboard',
366
+ keywords: ['openspec入门', 'opsx:onboard', 'openspec onboard', 'openspec教程',
367
+ 'openspec新手', '学习openspec工作流']
316
368
  }
317
369
  ];
318
370
 
@@ -335,7 +387,7 @@ if (matchedSkills.length === 0) {
335
387
  }
336
388
 
337
389
  // 构建技能文档路径列表
338
- const skillPaths = matchedSkills.map(name => `.cursor/skills/${name}/SKILL.md`);
390
+ const skillPaths = matchedSkills.map(name => path.join(PROJECT_ROOT, '.cursor', 'skills', name, 'SKILL.md'));
339
391
 
340
392
  const skillList = matchedSkills.map((name, i) => `- **${name}**: \`${skillPaths[i]}\``).join('\n');
341
393
 
@@ -4,19 +4,19 @@
4
4
  "beforeSubmitPrompt": [
5
5
  {
6
6
  "matcher": "",
7
- "command": "node \"$(git rev-parse --show-toplevel)/.cursor/hooks/cursor-skill-eval.js\""
7
+ "command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/cursor-skill-eval.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/cursor-skill-eval.js');if(fs.existsSync(f))require(f);\""
8
8
  }
9
9
  ],
10
10
  "preToolUse": [
11
11
  {
12
12
  "matcher": "Shell|Write|CreateFile|EditFile",
13
- "command": "node \"$(git rev-parse --show-toplevel)/.cursor/hooks/cursor-pre-tool-use.js\""
13
+ "command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/cursor-pre-tool-use.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/cursor-pre-tool-use.js');if(fs.existsSync(f))require(f);\""
14
14
  }
15
15
  ],
16
16
  "stop": [
17
17
  {
18
18
  "matcher": "",
19
- "command": "node \"$(git rev-parse --show-toplevel)/.cursor/hooks/stop.js\""
19
+ "command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/stop.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/stop.js');if(fs.existsSync(f))require(f);\""
20
20
  }
21
21
  ]
22
22
  }
@@ -16,7 +16,7 @@ description: |
16
16
 
17
17
  # 项目导航指南
18
18
 
19
- > **说明**:后端项目(RuoYi-Vue-Plus)在当前目录,前端项目在 `/Users/xujiajun/Developer/frontProj/web`(独立维护)。
19
+ > **说明**:后端项目(RuoYi-Vue-Plus)在当前目录,前端项目在独立目录(路径由用户在 CLAUDE.md 中配置)。
20
20
 
21
21
  ## 项目整体结构
22
22
 
@@ -176,25 +176,25 @@ ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/
176
176
  | MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
177
177
  | Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
178
178
  | 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
179
- | **前端项目根目录** | `/Users/xujiajun/Developer/frontProj/web/` |
180
- | **前端 src 目录** | `/Users/xujiajun/Developer/frontProj/web/src/` |
181
- | 前端主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |
182
- | 前端路由守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
183
- | 前端路由配置 | `/Users/xujiajun/Developer/frontProj/web/src/router/` |
184
- | 前端 API 接口定义 | `/Users/xujiajun/Developer/frontProj/web/src/api/`(65个文件) |
185
- | 前端视图页面 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/`(34个业务模块) |
186
- | 前端业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
187
- | 前端公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/`(~87个) |
188
- | 前端 Vuex Store | `/Users/xujiajun/Developer/frontProj/web/src/store/`(28个模块) |
189
- | 前端请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
190
- | 前端 Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
191
- | 前端全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
192
- | 前端 Mixin 文件 | `/Users/xujiajun/Developer/frontProj/web/src/mixins/` |
193
- | 前端国际化配置 | `/Users/xujiajun/Developer/frontProj/web/src/lang/` |
194
- | 前端自定义指令 | `/Users/xujiajun/Developer/frontProj/web/src/directive/` |
195
- | 前端全局样式 | `/Users/xujiajun/Developer/frontProj/web/src/styles/` |
196
- | 前端构建配置 | `/Users/xujiajun/Developer/frontProj/web/vue.config.js` |
197
- | 前端依赖配置 | `/Users/xujiajun/Developer/frontProj/web/package.json` |
179
+ | **前端项目根目录** | CLAUDE.md 配置(各用户路径不同) |
180
+ | **前端 src 目录** | `src/`(前端项目根目录下) |
181
+ | 前端主入口 | `src/main.js` |
182
+ | 前端路由守卫 | `src/permission.js` |
183
+ | 前端路由配置 | `src/router/` |
184
+ | 前端 API 接口定义 | `src/api/`(65个文件) |
185
+ | 前端视图页面 | `src/leniuview/`(34个业务模块) |
186
+ | 前端业务组件 | `src/leniu-components/` |
187
+ | 前端公共组件 | `src/components/`(~87个) |
188
+ | 前端 Vuex Store | `src/store/`(28个模块) |
189
+ | 前端请求封装 | `src/utils/request.js` |
190
+ | 前端 Token/租户工具 | `src/utils/auth.js` |
191
+ | 前端全局工具函数 | `src/utils/index.js` |
192
+ | 前端 Mixin 文件 | `src/mixins/` |
193
+ | 前端国际化配置 | `src/lang/` |
194
+ | 前端自定义指令 | `src/directive/` |
195
+ | 前端全局样式 | `src/styles/` |
196
+ | 前端构建配置 | `vue.config.js` |
197
+ | 前端依赖配置 | `package.json` |
198
198
 
199
199
  ---
200
200
 
package/CLAUDE.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # CLAUDE.md - leniu-tengyun-core 云食堂项目
2
2
 
3
+ ## Workflow Orchestration
4
+
5
+ ### 1. Plan Mode Default
6
+ - Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)
7
+ - If something goes sideways, STOP and re-plan immediately - don't keep pushing
8
+ - Use plan mode for verification steps, not just building
9
+ - Write detailed specs upfront to reduce ambiguity
10
+
11
+ ### 2. Agent Team Strategy
12
+ - Use subagents liberally to keep main context window clean
13
+ - One task per subagent for focused execution
14
+ - **Parallel execution**: Launch independent agents concurrently (research + exploration + analysis in one message)
15
+ - **Background agents**: Use `run_in_background` for long-running tasks, continue other work while waiting
16
+ - **Agent type selection**: Match agent to task — `Explore` for codebase search, `Plan` for architecture, `bug-analyzer` for debugging, `general-purpose` for complex multi-step work
17
+ - **Resume capability**: Resume completed agents by ID for follow-up work instead of starting fresh
18
+ - For complex problems, decompose into parallel agents — throw more compute at it
19
+
20
+ ### 3. Self-Improvement Loop
21
+ - After ANY correction from the user: update `tasks/lessons.md` with the pattern
22
+ - Write rules for yourself that prevent the same mistake
23
+ - Ruthlessly iterate on these lessons until mistake rate drops
24
+ - Review lessons at session start for relevant project
25
+
26
+ ### 4. Verification Before Done
27
+ - Never mark a task complete without proving it works
28
+ - Diff behavior between main and your changes when relevant
29
+ - Ask yourself: "Would a staff engineer approve this?"
30
+ - Run tests, check logs, demonstrate correctness
31
+
32
+ ### 5. Demand Elegance (Balanced)
33
+ - For non-trivial changes: pause and ask "is there a more elegant way?"
34
+ - If a fix feels hacky: "Knowing everything I know now, implement the elegant solution"
35
+ - Skip this for simple, obvious fixes - don't over-engineer
36
+ - Challenge your own work before presenting it
37
+
38
+ ### 6. Autonomous Bug Fixing
39
+ - When given a bug report: just fix it. Don't ask for hand-holding
40
+ - Point at logs, errors, failing tests - then resolve them
41
+ - Zero context switching required from the user
42
+ - Go fix failing CI tests without being told how
43
+
44
+ ## Task Management
45
+
46
+ 1. **Plan First**: Write plan to `tasks/todo.md` with checkable items
47
+ 2. **Verify Plan**: Check in before starting implementation
48
+ 3. **Track Progress**: Mark items complete as you go
49
+ 4. **Explain Changes**: High-level summary at each step
50
+ 5. **Document Results**: Add review section to `tasks/todo.md`
51
+ 6. **Capture Lessons**: Update `tasks/lessons.md` after corrections
52
+
53
+ ## Core Principles
54
+
55
+ - **Simplicity First**: Make every change as simple as possible. Impact minimal code.
56
+ - **No Laziness**: Find root causes. No temporary fixes. Senior developer standards.
57
+ - **Minimal Impact**: Changes should only touch what's necessary. Avoid introducing bugs.
58
+
59
+ ---
60
+
3
61
  ## 语言设置
4
62
  **必须使用中文**与用户对话。
5
63
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-engineering-init",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "AI 工程化配置初始化工具 — 一键为 Claude Code、OpenAI Codex 等 AI 工具初始化 Skills 和项目规范",
5
5
  "keywords": [
6
6
  "claude-code",