ai-engineering-init 1.3.3 → 1.3.4
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.
- package/.claude/hooks/skill-forced-eval.js +2 -1
- package/.claude/skills/add-skill/SKILL.md +205 -116
- package/.claude/skills/leniu-report-customization/SKILL.md +42 -2
- package/.claude/skills/leniu-report-standard-customization/SKILL.md +551 -0
- package/.codex/skills/add-skill/SKILL.md +205 -116
- package/.codex/skills/leniu-report-customization/SKILL.md +42 -2
- package/.codex/skills/leniu-report-standard-customization/SKILL.md +551 -0
- package/.cursor/rules/skill-activation.mdc +2 -0
- package/.cursor/skills/add-skill/SKILL.md +205 -116
- package/.cursor/skills/leniu-report-customization/SKILL.md +42 -2
- package/.cursor/skills/leniu-report-standard-customization/SKILL.md +551 -0
- package/AGENTS.md +1 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* UserPromptSubmit Hook - 强制技能评估 (跨平台版本)
|
|
4
4
|
* 功能: 开发场景下,将 Skills 激活率从约 25% 提升到 90% 以上
|
|
5
5
|
*
|
|
6
|
-
* 适配项目:
|
|
6
|
+
* 适配项目: leniu (纯后端项目)
|
|
7
7
|
* 架构: 三层架构 (Controller → Service → Mapper)
|
|
8
8
|
* 包名: org.dromara.*
|
|
9
9
|
*/
|
|
@@ -107,6 +107,7 @@ const instructions = `## 强制技能激活流程(必须执行)
|
|
|
107
107
|
- leniu-java-task: 定时任务/XXL-Job/@XxlJob/TenantLoader/任务调度/分布式定时
|
|
108
108
|
- leniu-java-total-line: 合计行/totalLine/报表合计/SUM合计/ReportBaseTotalVO/合计查询
|
|
109
109
|
- leniu-report-customization: 定制报表/汇总报表/report_order_info/report_order_detail/report_account_flow/退款汇总/消费金额统计/订单报表/流水报表
|
|
110
|
+
- leniu-report-standard-customization: 标准版报表/core-report/report_refund/report_refund_detail/经营分析/营业额分析/用户活跃度/菜品排行/操作员统计/账户日结/钱包消费汇总/商户消费汇总/ReportOrderConsumeService/ReportAccountConsumeService
|
|
110
111
|
- leniu-crud-development: CRUD/增删改查/新建模块/Business层/Service/Mapper/Controller/分页查询/LeRequest/PageDTO/PageVO/事务管理
|
|
111
112
|
- leniu-database-ops: 数据库/SQL/建表/双库/商户库/系统库/审计字段/crby/crtime/del_flag
|
|
112
113
|
- leniu-utils-toolkit: 工具类/BeanUtil/StrUtil/CollUtil/ObjectUtil/RedisUtil/JacksonUtil/LeBeanUtil
|
|
@@ -16,20 +16,54 @@ description: |
|
|
|
16
16
|
|
|
17
17
|
## 概述
|
|
18
18
|
|
|
19
|
-
本指南用于在
|
|
19
|
+
本指南用于在 leniu-tengyun-core 项目中添加新的技能(Skill)。项目同时支持三个 AI 编码平台,技能需在所有平台保持一致。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
### 三平台架构
|
|
22
22
|
|
|
23
|
+
| 平台 | 技能目录 | Hook 文件 | 激活方式 |
|
|
24
|
+
|------|---------|-----------|---------|
|
|
25
|
+
| **Claude Code** | `.claude/skills/{技能名}/SKILL.md` | `.claude/hooks/skill-forced-eval.js` | `Skill(技能名)` 工具调用 |
|
|
26
|
+
| **Codex CLI** | `.codex/skills/{技能名}/SKILL.md` | 无独立 hook | 依赖 AGENTS.md 引导 |
|
|
27
|
+
| **Cursor** | `.cursor/skills/{技能名}/SKILL.md` | `.cursor/hooks/cursor-skill-eval.js` | Read 文件读取 |
|
|
28
|
+
|
|
29
|
+
### 技能系统工作原理
|
|
30
|
+
|
|
31
|
+
**Claude Code**:
|
|
23
32
|
```
|
|
24
33
|
用户提交问题
|
|
25
34
|
↓ skill-forced-eval.js Hook 触发
|
|
26
|
-
|
|
35
|
+
注入技能评估指令(列出可用技能 + 触发词)
|
|
27
36
|
↓ AI 评估匹配的技能
|
|
28
37
|
逐个调用 Skill(技能名)
|
|
29
38
|
↓ 读取 .claude/skills/{技能名}/SKILL.md
|
|
30
39
|
AI 获得领域知识后开始实现
|
|
31
40
|
```
|
|
32
41
|
|
|
42
|
+
**Cursor**:
|
|
43
|
+
```
|
|
44
|
+
用户提交问题
|
|
45
|
+
↓ cursor-skill-eval.js Hook 触发
|
|
46
|
+
扫描 skillMap 关键词匹配
|
|
47
|
+
↓ 注入读取指令
|
|
48
|
+
AI 读取 .cursor/skills/{技能名}/SKILL.md
|
|
49
|
+
↓ 同时 skill-activation.mdc 规则也可触发读取
|
|
50
|
+
AI 获得领域知识后开始实现
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 各平台注册位置速查
|
|
54
|
+
|
|
55
|
+
新建技能需要修改以下文件:
|
|
56
|
+
|
|
57
|
+
| # | 文件 | 作用 | 必须 |
|
|
58
|
+
|---|------|------|------|
|
|
59
|
+
| 1 | `.claude/skills/{技能名}/SKILL.md` | 技能主文件 | 是 |
|
|
60
|
+
| 2 | `.claude/hooks/skill-forced-eval.js` | Claude Code 触发词注册 | 是 |
|
|
61
|
+
| 3 | `AGENTS.md` | Codex 技能清单 | 是 |
|
|
62
|
+
| 4 | `.cursor/skills/{技能名}/SKILL.md` | Cursor 技能文件 | 是 |
|
|
63
|
+
| 5 | `.cursor/hooks/cursor-skill-eval.js` | Cursor 关键词映射 | 是 |
|
|
64
|
+
| 6 | `.cursor/rules/skill-activation.mdc` | Cursor 规则触发 | 是 |
|
|
65
|
+
| 7 | `.codex/skills/{技能名}/SKILL.md` | Codex 技能文件 | 是 |
|
|
66
|
+
|
|
33
67
|
---
|
|
34
68
|
|
|
35
69
|
## YAML 头部规范
|
|
@@ -60,58 +94,21 @@ description: |
|
|
|
60
94
|
| **格式** | kebab-case(全小写,横线连接) | `json-serialization` |
|
|
61
95
|
| **禁止** | 下划线、驼峰、空格 | ~~`json_serialization`~~, ~~`jsonSerialization`~~ |
|
|
62
96
|
| **长度** | 1-4 个单词 | `ui-pc`, `crud-development`, `redis-cache` |
|
|
97
|
+
| **leniu 前缀** | leniu 专项技能加 `leniu-` 前缀 | `leniu-crud-development` |
|
|
63
98
|
|
|
64
99
|
### description 第一行风格
|
|
65
100
|
|
|
66
|
-
第一行没有强制格式,参考现有技能的两种常见风格:
|
|
67
|
-
|
|
68
101
|
**风格 A:直述型**(多数技能采用)
|
|
69
102
|
```yaml
|
|
70
103
|
description: |
|
|
71
|
-
后端 CRUD
|
|
72
|
-
|
|
73
|
-
后端工具类使用指南。包含 MapstructUtils、StringUtils 等。
|
|
104
|
+
后端 CRUD 开发规范。基于四层架构(Controller → Business → Service → Mapper)。
|
|
105
|
+
后端安全开发规范。包含认证授权、数据脱敏。
|
|
74
106
|
```
|
|
75
107
|
|
|
76
108
|
**风格 B:触发型**
|
|
77
109
|
```yaml
|
|
78
110
|
description: |
|
|
79
111
|
当需要进行技术选型、对比方案时自动使用此 Skill。
|
|
80
|
-
当需要为框架增加新技能时自动使用此 Skill。
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 实际技能 YAML 头部示例
|
|
84
|
-
|
|
85
|
-
```yaml
|
|
86
|
-
---
|
|
87
|
-
name: crud-development
|
|
88
|
-
description: |
|
|
89
|
-
后端 CRUD 开发规范。基于 RuoYi-Vue-Plus 三层架构(Controller → Service → Mapper),无独立 DAO 层。
|
|
90
|
-
|
|
91
|
-
触发场景:
|
|
92
|
-
- 新建业务模块的 CRUD 功能
|
|
93
|
-
- 创建 Entity、BO、VO、Service、Mapper、Controller
|
|
94
|
-
- 分页查询、新增、修改、删除、导出
|
|
95
|
-
- 查询条件构建(buildQueryWrapper)
|
|
96
|
-
|
|
97
|
-
触发词:CRUD、增删改查、新建模块、Entity、BO、VO、Service、Mapper、Controller、分页查询、buildQueryWrapper、@AutoMapper、BaseMapperPlus、TenantEntity
|
|
98
|
-
---
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
```yaml
|
|
102
|
-
---
|
|
103
|
-
name: redis-cache
|
|
104
|
-
description: |
|
|
105
|
-
当需要使用Redis缓存、分布式锁、限流等功能时自动使用此Skill。
|
|
106
|
-
|
|
107
|
-
触发场景:
|
|
108
|
-
- 使用Redis缓存数据
|
|
109
|
-
- 配置Spring Cache缓存注解
|
|
110
|
-
- 实现分布式锁
|
|
111
|
-
- 实现接口限流
|
|
112
|
-
|
|
113
|
-
触发词:Redis、缓存、Cache、@Cacheable、@CacheEvict、@CachePut、RedisUtils、CacheUtils、分布式锁、RLock、限流、RateLimiter
|
|
114
|
-
---
|
|
115
112
|
```
|
|
116
113
|
|
|
117
114
|
---
|
|
@@ -120,37 +117,26 @@ description: |
|
|
|
120
117
|
|
|
121
118
|
### 1.1 定义技能属性
|
|
122
119
|
|
|
123
|
-
创建前先明确:
|
|
124
|
-
|
|
125
120
|
| 属性 | 说明 | 示例 |
|
|
126
121
|
|------|------|------|
|
|
127
|
-
| **名称** | kebab-case 格式 | `payment-gateway` |
|
|
128
|
-
| **类别** |
|
|
122
|
+
| **名称** | kebab-case 格式 | `leniu-payment-gateway` |
|
|
123
|
+
| **类别** | 后端/通用/前端 | 后端 |
|
|
129
124
|
| **触发场景** | 至少 3 个具体场景 | 支付接入、退款处理、对账 |
|
|
130
125
|
| **触发词** | 至少 5 个关键词 | 支付、退款、订单、对账、Payment |
|
|
131
|
-
| **参考代码** | 项目中的真实代码位置 | `
|
|
126
|
+
| **参考代码** | 项目中的真实代码位置 | `sys-canteen/.../order/` |
|
|
132
127
|
|
|
133
128
|
### 1.2 检查范围冲突
|
|
134
129
|
|
|
135
130
|
查看现有技能列表,确保不与已有技能重叠:
|
|
136
131
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
| 中间件 | redis-cache, json-serialization, scheduled-jobs, file-oss-management |
|
|
144
|
-
| 通信集成 | websocket-sse, sms-mail, social-login, workflow-engine |
|
|
145
|
-
| 质量保障 | test-development, bug-detective, performance-doctor, code-patterns |
|
|
146
|
-
| 架构决策 | architecture-design, tech-decision, brainstorm, project-navigator |
|
|
147
|
-
| 工具流程 | git-workflow, task-tracker, add-skill |
|
|
148
|
-
| 前端(需 plus-ui) | ui-pc, store-pc |
|
|
149
|
-
| 特殊功能 | banana-image, collaborating-with-codex, collaborating-with-gemini |
|
|
150
|
-
|
|
151
|
-
如果新技能与现有技能有交集,在 SKILL.md 中用"注意"段落说明边界:
|
|
132
|
+
```bash
|
|
133
|
+
# 查看所有技能
|
|
134
|
+
ls .claude/skills/
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
如果新技能与现有技能有交集,在 SKILL.md 末尾用"注意"段落说明边界:
|
|
152
138
|
```markdown
|
|
153
|
-
注意:如果是认证授权(登录、Token
|
|
139
|
+
注意:如果是认证授权(登录、Token),请使用 leniu-security-guard。
|
|
154
140
|
```
|
|
155
141
|
|
|
156
142
|
---
|
|
@@ -196,27 +182,30 @@ description: |
|
|
|
196
182
|
### 2.3 内容质量要点
|
|
197
183
|
|
|
198
184
|
- **代码示例必须来自项目实际代码**,不要虚构类名、方法名
|
|
199
|
-
- **包名统一 `org.dromara
|
|
200
|
-
-
|
|
201
|
-
- **对象转换用 `
|
|
185
|
+
- **包名统一 `net.xnzn.core.*`**,不要出现 `org.dromara.*` 或 `com.ruoyi.*`
|
|
186
|
+
- **四层架构**:Controller → Business → Service → Mapper
|
|
187
|
+
- **对象转换用 `BeanUtil.copyProperties()`**(Hutool),不要写 MapstructUtils
|
|
188
|
+
- **异常用 `LeException`**,不要写 ServiceException
|
|
189
|
+
- **审计字段**:`crby/crtime/upby/uptime`,不要写 createBy/createTime
|
|
202
190
|
- 技能不需要固定行数要求,以内容实用为准(实际范围 200-650 行)
|
|
203
191
|
|
|
204
192
|
### 2.4 不同类型技能的侧重
|
|
205
193
|
|
|
206
194
|
| 类型 | 侧重 | 示例 |
|
|
207
195
|
|------|------|------|
|
|
208
|
-
| 后端开发类 | 代码模板、标准写法、禁止项 | crud-development |
|
|
209
|
-
| 工具类 | API 列表、使用示例、返回值 | utils-toolkit |
|
|
210
|
-
| 中间件类 | 配置方法、集成步骤、注意事项 | redis-cache |
|
|
211
|
-
| 流程类 | 步骤说明、决策树、检查清单 | brainstorm |
|
|
196
|
+
| 后端开发类 | 代码模板、标准写法、禁止项 | leniu-crud-development |
|
|
197
|
+
| 工具类 | API 列表、使用示例、返回值 | leniu-utils-toolkit |
|
|
198
|
+
| 中间件类 | 配置方法、集成步骤、注意事项 | leniu-redis-cache |
|
|
199
|
+
| 流程类 | 步骤说明、决策树、检查清单 | leniu-brainstorm |
|
|
200
|
+
| 报表类 | SQL 模板、fix 模式、退款处理 | leniu-report-customization |
|
|
212
201
|
|
|
213
202
|
---
|
|
214
203
|
|
|
215
|
-
## 第 3
|
|
204
|
+
## 第 3 步:注册技能(Claude Code)
|
|
216
205
|
|
|
217
|
-
|
|
206
|
+
技能需要在 **两个** 位置注册,才能被 Claude Code 识别和激活。
|
|
218
207
|
|
|
219
|
-
### 3.1 在 Hook 中注册
|
|
208
|
+
### 3.1 在 Claude Hook 中注册
|
|
220
209
|
|
|
221
210
|
**文件**:`.claude/hooks/skill-forced-eval.js`
|
|
222
211
|
|
|
@@ -228,43 +217,97 @@ description: |
|
|
|
228
217
|
|
|
229
218
|
**示例**:
|
|
230
219
|
```javascript
|
|
231
|
-
- payment-gateway: 支付/退款/对账/Payment/支付宝/微信支付
|
|
220
|
+
- leniu-payment-gateway: 支付/退款/对账/Payment/支付宝/微信支付
|
|
232
221
|
```
|
|
233
222
|
|
|
234
|
-
|
|
223
|
+
**注意**:按逻辑分组插入(leniu 专项技能放在一起),不是追加到末尾。
|
|
235
224
|
|
|
236
225
|
### 3.2 在 AGENTS.md 中注册
|
|
237
226
|
|
|
238
227
|
**文件**:`AGENTS.md` 的"技能清单与触发条件"表格
|
|
239
228
|
|
|
240
|
-
在对应分类下添加一行:
|
|
241
|
-
|
|
242
229
|
```markdown
|
|
243
230
|
| `{技能名}` | {触发条件简述} |
|
|
244
231
|
```
|
|
245
232
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
233
|
+
### 3.3 验证 Claude Code 注册
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
grep "{技能名}" .claude/hooks/skill-forced-eval.js
|
|
237
|
+
grep "{技能名}" AGENTS.md
|
|
249
238
|
```
|
|
250
239
|
|
|
251
|
-
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 第 4 步:注册技能(Cursor)
|
|
243
|
+
|
|
244
|
+
Cursor 有**三处**需要注册。
|
|
245
|
+
|
|
246
|
+
### 4.1 复制 SKILL.md 到 Cursor
|
|
252
247
|
|
|
253
248
|
```bash
|
|
254
|
-
|
|
255
|
-
|
|
249
|
+
mkdir -p .cursor/skills/{技能名}
|
|
250
|
+
cp .claude/skills/{技能名}/SKILL.md .cursor/skills/{技能名}/SKILL.md
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 4.2 在 Cursor Hook 中注册
|
|
254
|
+
|
|
255
|
+
**文件**:`.cursor/hooks/cursor-skill-eval.js`
|
|
256
256
|
|
|
257
|
-
|
|
258
|
-
|
|
257
|
+
在 `skillMap` 数组的对应分组中添加条目:
|
|
258
|
+
|
|
259
|
+
```javascript
|
|
260
|
+
// 在 skillMap 数组中找到对应分组,添加:
|
|
261
|
+
{
|
|
262
|
+
name: '{技能名}',
|
|
263
|
+
keywords: ['关键词1', '关键词2', '关键词3', '关键词4', '关键词5']
|
|
264
|
+
},
|
|
259
265
|
```
|
|
260
266
|
|
|
261
|
-
|
|
267
|
+
**分组说明**(按注释标记):
|
|
268
|
+
- `// ========== leniu 专项技能 ==========` — leniu 前缀的技能
|
|
269
|
+
- `// ========== OpenSpec 工作流 ==========` — openspec 技能
|
|
270
|
+
- `// ========== 通用技能 ==========` — 通用技能(无 leniu 前缀)
|
|
262
271
|
|
|
263
|
-
|
|
272
|
+
**示例**:
|
|
273
|
+
```javascript
|
|
274
|
+
{
|
|
275
|
+
name: 'leniu-payment-gateway',
|
|
276
|
+
keywords: ['leniu-支付', 'leniu-退款', 'leniu-对账', '支付宝', '微信支付']
|
|
277
|
+
},
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### 4.3 在 Cursor Rules 中注册
|
|
281
|
+
|
|
282
|
+
**文件**:`.cursor/rules/skill-activation.mdc`
|
|
283
|
+
|
|
284
|
+
在对应分组的表格中添加一行:
|
|
285
|
+
|
|
286
|
+
```markdown
|
|
287
|
+
| {触发词,用/分隔} | `.cursor/skills/{技能名}/SKILL.md` |
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**分组说明**:
|
|
291
|
+
- `### leniu 专项技能` — leniu 前缀的技能
|
|
292
|
+
- `### OpenSpec 工作流技能` — openspec 技能
|
|
293
|
+
- `### 通用技能` — 通用技能
|
|
294
|
+
|
|
295
|
+
**示例**:
|
|
296
|
+
```markdown
|
|
297
|
+
| leniu-支付/leniu-退款/leniu-对账/支付宝/微信支付 | `.cursor/skills/leniu-payment-gateway/SKILL.md` |
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 4.4 验证 Cursor 注册
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
grep "{技能名}" .cursor/hooks/cursor-skill-eval.js
|
|
304
|
+
grep "{技能名}" .cursor/rules/skill-activation.mdc
|
|
305
|
+
ls .cursor/skills/{技能名}/SKILL.md
|
|
306
|
+
```
|
|
264
307
|
|
|
265
|
-
|
|
308
|
+
---
|
|
266
309
|
|
|
267
|
-
|
|
310
|
+
## 第 5 步:Codex 同步
|
|
268
311
|
|
|
269
312
|
```bash
|
|
270
313
|
# 1. 创建 Codex 目录
|
|
@@ -279,46 +322,94 @@ diff .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
|
|
|
279
322
|
|
|
280
323
|
**注意**:
|
|
281
324
|
- `.codex/skills/` 中额外存放斜杠命令型技能(如 dev, crud, check 等),这些不需要在 `.claude/` 中创建
|
|
282
|
-
-
|
|
325
|
+
- 普通技能(非斜杠命令)需要保持三个目录一致
|
|
283
326
|
|
|
284
327
|
---
|
|
285
328
|
|
|
286
|
-
## 第
|
|
329
|
+
## 第 6 步:验证
|
|
287
330
|
|
|
288
331
|
### 完整检查清单
|
|
289
332
|
|
|
290
|
-
|
|
333
|
+
**主文件**:
|
|
291
334
|
- [ ] `.claude/skills/{技能名}/SKILL.md` 已创建
|
|
335
|
+
|
|
336
|
+
**Claude Code 注册**:
|
|
337
|
+
- [ ] `.claude/hooks/skill-forced-eval.js` 已添加技能条目
|
|
338
|
+
- [ ] `AGENTS.md` 已添加技能条目
|
|
339
|
+
|
|
340
|
+
**Cursor 注册**:
|
|
341
|
+
- [ ] `.cursor/skills/{技能名}/SKILL.md` 已同步
|
|
342
|
+
- [ ] `.cursor/hooks/cursor-skill-eval.js` skillMap 已添加条目
|
|
343
|
+
- [ ] `.cursor/rules/skill-activation.mdc` 已添加触发行
|
|
344
|
+
|
|
345
|
+
**Codex 同步**:
|
|
292
346
|
- [ ] `.codex/skills/{技能名}/SKILL.md` 已同步
|
|
293
347
|
|
|
294
348
|
**YAML 头部**:
|
|
295
349
|
- [ ] `name` 使用 kebab-case 格式
|
|
296
350
|
- [ ] description 包含触发场景(至少 3 个)
|
|
297
351
|
- [ ] description 包含触发词(至少 5 个)
|
|
298
|
-
- [ ] 各部分之间有空行
|
|
299
|
-
|
|
300
|
-
**注册**:
|
|
301
|
-
- [ ] `.claude/hooks/skill-forced-eval.js` 已添加技能条目
|
|
302
|
-
- [ ] `AGENTS.md` 已添加技能条目
|
|
303
352
|
|
|
304
353
|
**内容**:
|
|
305
354
|
- [ ] 代码示例来自项目实际代码,无虚构内容
|
|
306
|
-
- [ ] 包名使用 `
|
|
355
|
+
- [ ] 包名使用 `net.xnzn.core.*`
|
|
307
356
|
- [ ] 与现有技能无范围冲突(或已说明边界)
|
|
308
357
|
|
|
358
|
+
### 一键验证命令
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
SKILL_NAME="{技能名}"
|
|
362
|
+
|
|
363
|
+
echo "=== Claude ===" && \
|
|
364
|
+
ls .claude/skills/$SKILL_NAME/SKILL.md && \
|
|
365
|
+
grep "$SKILL_NAME" .claude/hooks/skill-forced-eval.js && \
|
|
366
|
+
grep "$SKILL_NAME" AGENTS.md && \
|
|
367
|
+
echo "" && echo "=== Cursor ===" && \
|
|
368
|
+
ls .cursor/skills/$SKILL_NAME/SKILL.md && \
|
|
369
|
+
grep "$SKILL_NAME" .cursor/hooks/cursor-skill-eval.js && \
|
|
370
|
+
grep "$SKILL_NAME" .cursor/rules/skill-activation.mdc && \
|
|
371
|
+
echo "" && echo "=== Codex ===" && \
|
|
372
|
+
ls .codex/skills/$SKILL_NAME/SKILL.md && \
|
|
373
|
+
echo "" && echo "=== 三平台一致性 ===" && \
|
|
374
|
+
diff .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md && \
|
|
375
|
+
diff .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md && \
|
|
376
|
+
echo "全部通过"
|
|
377
|
+
```
|
|
378
|
+
|
|
309
379
|
---
|
|
310
380
|
|
|
311
381
|
## 常见陷阱
|
|
312
382
|
|
|
313
|
-
### 1.
|
|
383
|
+
### 1. 遗漏注册(最常见)
|
|
314
384
|
|
|
315
385
|
**症状**:技能文件存在但从不被激活
|
|
316
386
|
|
|
317
|
-
**原因**:只创建了 SKILL.md
|
|
387
|
+
**原因**:只创建了 SKILL.md,没有完成注册。三平台共 **7 处**需要操作。
|
|
388
|
+
|
|
389
|
+
**解决**:对照第 6 步检查清单逐项确认
|
|
390
|
+
|
|
391
|
+
### 2. Cursor Hook 遗漏
|
|
392
|
+
|
|
393
|
+
**症状**:Claude Code 中正常,Cursor 中技能不激活
|
|
394
|
+
|
|
395
|
+
**原因**:只注册了 `.cursor/rules/skill-activation.mdc`,忘了注册 `.cursor/hooks/cursor-skill-eval.js`(或反之)
|
|
396
|
+
|
|
397
|
+
**解决**:Cursor 有两处需要注册——Hook 负责编程匹配触发,Rules 负责规则文本触发,**两处都需要**
|
|
318
398
|
|
|
319
|
-
|
|
399
|
+
### 3. 三平台 SKILL.md 不一致
|
|
320
400
|
|
|
321
|
-
|
|
401
|
+
**症状**:不同平台的 AI 给出不同的代码建议
|
|
402
|
+
|
|
403
|
+
**原因**:修改了 `.claude/` 中的 SKILL.md 后,忘记同步到 `.cursor/` 和 `.codex/`
|
|
404
|
+
|
|
405
|
+
**解决**:修改后执行同步:
|
|
406
|
+
```bash
|
|
407
|
+
SKILL_NAME="{技能名}"
|
|
408
|
+
cp .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md
|
|
409
|
+
cp .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### 4. 触发词过于宽泛
|
|
322
413
|
|
|
323
414
|
**症状**:技能在不相关场景被频繁误触发
|
|
324
415
|
|
|
@@ -326,27 +417,25 @@ diff .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
|
|
|
326
417
|
|
|
327
418
|
**解决**:使用具体术语(如"CRUD开发"、"支付接入")
|
|
328
419
|
|
|
329
|
-
###
|
|
420
|
+
### 5. 代码示例虚构
|
|
330
421
|
|
|
331
422
|
**症状**:AI 参考技能生成的代码使用了不存在的类或方法
|
|
332
423
|
|
|
333
|
-
**原因**:编写技能时没有验证引用的类名、方法名在项目中真实存在
|
|
334
|
-
|
|
335
424
|
**解决**:编写前用 Grep/Glob 搜索确认引用的类和方法确实存在
|
|
336
425
|
|
|
337
|
-
###
|
|
426
|
+
### 6. 技能范围重叠
|
|
338
427
|
|
|
339
|
-
|
|
428
|
+
**症状**:同一个问题触发多个技能,指导矛盾
|
|
340
429
|
|
|
341
|
-
|
|
430
|
+
**解决**:在 SKILL.md 末尾添加"注意"段落说明边界:
|
|
431
|
+
```
|
|
432
|
+
注意:如果是行级数据权限(@DataPermission),请使用 leniu-data-permission。
|
|
433
|
+
```
|
|
342
434
|
|
|
343
|
-
|
|
435
|
+
### 7. 包名写错
|
|
344
436
|
|
|
345
|
-
|
|
437
|
+
**症状**:生成的代码编译失败
|
|
346
438
|
|
|
347
|
-
|
|
439
|
+
**原因**:技能中写了 `org.dromara.*`(旧包名)
|
|
348
440
|
|
|
349
|
-
|
|
350
|
-
```
|
|
351
|
-
注意:如果是行级数据权限(@DataPermission),请使用 data-permission。
|
|
352
|
-
```
|
|
441
|
+
**解决**:leniu 项目统一使用 `net.xnzn.core.*`
|
|
@@ -13,11 +13,51 @@ description: |
|
|
|
13
13
|
触发词:定制报表、汇总报表、report_order_info、report_order_detail、report_account_flow、退款汇总、消费金额统计、订单报表、流水报表
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
# leniu
|
|
16
|
+
# leniu 定制报表开发指南(v5.29+版包含5.29)
|
|
17
|
+
|
|
18
|
+
## ⚠️ 版本识别(必读)
|
|
19
|
+
|
|
20
|
+
**本 skill 仅适用于 v5.29+ 版本包含5.29**。开始前必须确认项目版本。
|
|
21
|
+
|
|
22
|
+
### 如何判断当前项目版本
|
|
23
|
+
|
|
24
|
+
**方法一:查看目录结构**
|
|
25
|
+
```bash
|
|
26
|
+
# 若报表代码在 sys-canteen 内 → v5.29 版本(使用本 skill)
|
|
27
|
+
ls leniu-tengyun-core/sys-canteen/src/main/java/.../report/statistics/
|
|
28
|
+
|
|
29
|
+
# 若存在独立的 core-report 模块 → 标准版(使用 leniu-report-standard-customization)
|
|
30
|
+
ls leniu-tengyun-core/core-report/
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**方法二:查看 git tag**
|
|
34
|
+
```bash
|
|
35
|
+
git tag --sort=-v:refname | head -5
|
|
36
|
+
# v5.29.x tag → v5.29 版本,使用本 skill
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**方法三:检查 report_order_info 表字段**
|
|
40
|
+
- 有 `consume_type` 字段(1=消费,2=退款)→ v5.29 版本,使用本 skill
|
|
41
|
+
- 无 `consume_type`,有独立 `report_refund` 表 → 标准版,使用 `leniu-report-standard-customization`
|
|
42
|
+
|
|
43
|
+
### 两版本核心差异速查
|
|
44
|
+
|
|
45
|
+
| 特性 | v5.29 版本(本指南) | 标准版 |
|
|
46
|
+
|------|------------------|--------|
|
|
47
|
+
| 模块位置 | `sys-canteen` 内嵌 | `core-report` 独立模块 |
|
|
48
|
+
| 退款存储 | 合并入 `report_order_info`,`consumeType=2` | 独立 `report_refund` 表 |
|
|
49
|
+
| 退款金额 | **负数**存储,直接 SUM 即净额 | **正数**存储,需手动减退 |
|
|
50
|
+
| 第二阶段消费 | 用 `batchConsume()` 增量累加 | 用 `fix()` 按日重算 |
|
|
51
|
+
| report_order_info.consumeType | **1=消费,2=退款** | 无此字段 |
|
|
52
|
+
| 分析模块 | 无独立分析模块 | 完整引擎(6 大分析维度) |
|
|
53
|
+
|
|
54
|
+
> **标准版报表开发**请使用 `leniu-report-standard-customization` skill。
|
|
55
|
+
|
|
56
|
+
---
|
|
17
57
|
|
|
18
58
|
## 概述
|
|
19
59
|
|
|
20
|
-
|
|
60
|
+
本项目(v5.29)的定制报表基于**报表基础表**(由 MQ 消息写入)进行二次汇总。核心数据源有两类:
|
|
21
61
|
1. **订单类**:`report_order_info` + `report_order_detail`(消费/退款数据)
|
|
22
62
|
2. **账户流水类**:`report_account_flow` + `report_account_flow_detail`(钱包变动数据)
|
|
23
63
|
|