ai-engineering-init 1.4.3 → 1.5.0

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.
Files changed (129) hide show
  1. package/.cursor/skills/bug-detective/SKILL.md +19 -19
  2. package/.cursor/skills/project-navigator/SKILL.md +164 -258
  3. package/package.json +7 -1
  4. package/scripts/build-skills.js +180 -0
  5. package/src/platform-map.json +56 -0
  6. package/src/skills/add-skill/SKILL.md +488 -0
  7. package/src/skills/add-todo/SKILL.md +269 -0
  8. package/src/skills/api-development/SKILL.md +266 -0
  9. package/src/skills/architecture-design/SKILL.md +262 -0
  10. package/src/skills/backend-annotations/SKILL.md +302 -0
  11. package/src/skills/banana-image/CHANGELOG.md +37 -0
  12. package/src/skills/banana-image/README.md +146 -0
  13. package/src/skills/banana-image/SKILL.md +171 -0
  14. package/src/skills/banana-image/assets/logo.png +0 -0
  15. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  16. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  17. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  18. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  19. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  20. package/src/skills/banana-image/scripts/package.json +18 -0
  21. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  22. package/src/skills/banana-image/templates/poster.json +22 -0
  23. package/src/skills/banana-image/templates/product.json +17 -0
  24. package/src/skills/banana-image/templates/social.json +22 -0
  25. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  26. package/src/skills/brainstorm/SKILL.md +216 -0
  27. package/src/skills/bug-detective/SKILL.md +256 -0
  28. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  29. package/src/skills/check/SKILL.md +367 -0
  30. package/src/skills/code-patterns/SKILL.md +280 -0
  31. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  32. package/src/skills/codex-code-review/SKILL.md +135 -0
  33. package/src/skills/collaborating-with-codex/SKILL.md +174 -0
  34. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  35. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  36. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  37. package/src/skills/crud/SKILL.md +265 -0
  38. package/src/skills/crud-development/SKILL.md +409 -0
  39. package/src/skills/data-permission/SKILL.md +292 -0
  40. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  41. package/src/skills/database-ops/SKILL.md +407 -0
  42. package/src/skills/dev/SKILL.md +187 -0
  43. package/src/skills/error-handler/SKILL.md +371 -0
  44. package/src/skills/file-oss-management/SKILL.md +255 -0
  45. package/src/skills/file-oss-management/references/entities.md +105 -0
  46. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  47. package/src/skills/git-workflow/SKILL.md +397 -0
  48. package/src/skills/init-docs/SKILL.md +194 -0
  49. package/src/skills/json-serialization/SKILL.md +357 -0
  50. package/src/skills/leniu-api-development/SKILL.md +319 -0
  51. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  52. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  53. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  54. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  55. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  56. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  57. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  58. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  59. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  60. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  61. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  62. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  63. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  64. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  65. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  66. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  67. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  68. package/src/skills/leniu-java-export/SKILL.md +570 -0
  69. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  70. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  71. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  72. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  73. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  74. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  75. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  76. package/src/skills/leniu-java-task/SKILL.md +367 -0
  77. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  78. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  79. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  80. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  81. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  82. package/src/skills/leniu-report-customization/SKILL.md +335 -0
  83. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  84. package/src/skills/leniu-report-standard-customization/SKILL.md +328 -0
  85. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  86. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  87. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  88. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  89. package/src/skills/mysql-debug/SKILL.md +364 -0
  90. package/src/skills/next/SKILL.md +137 -0
  91. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  92. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  93. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  94. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  95. package/src/skills/openspec-explore/SKILL.md +299 -0
  96. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  97. package/src/skills/openspec-new-change/SKILL.md +82 -0
  98. package/src/skills/openspec-onboard/SKILL.md +414 -0
  99. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  100. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  101. package/src/skills/performance-doctor/SKILL.md +303 -0
  102. package/src/skills/progress/SKILL.md +193 -0
  103. package/src/skills/project-navigator/SKILL.md +211 -0
  104. package/src/skills/redis-cache/SKILL.md +333 -0
  105. package/src/skills/redis-cache/references/listeners.md +23 -0
  106. package/src/skills/scheduled-jobs/SKILL.md +314 -0
  107. package/src/skills/security-guard/SKILL.md +353 -0
  108. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  109. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  110. package/src/skills/sms-mail/SKILL.md +308 -0
  111. package/src/skills/sms-mail/references/mail-config.md +88 -0
  112. package/src/skills/sms-mail/references/sms-config.md +74 -0
  113. package/src/skills/social-login/SKILL.md +266 -0
  114. package/src/skills/social-login/references/provider-configs.md +118 -0
  115. package/src/skills/start/SKILL.md +154 -0
  116. package/src/skills/store-pc/SKILL.md +366 -0
  117. package/src/skills/sync/SKILL.md +149 -0
  118. package/src/skills/task-tracker/SKILL.md +307 -0
  119. package/src/skills/tech-decision/SKILL.md +393 -0
  120. package/src/skills/tenant-management/SKILL.md +288 -0
  121. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  122. package/src/skills/test-development/SKILL.md +301 -0
  123. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  124. package/src/skills/ui-pc/SKILL.md +438 -0
  125. package/src/skills/update-status/SKILL.md +159 -0
  126. package/src/skills/utils-toolkit/SKILL.md +362 -0
  127. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  128. package/src/skills/websocket-sse/SKILL.md +271 -0
  129. package/src/skills/workflow-engine/SKILL.md +321 -0
@@ -0,0 +1,488 @@
1
+ ---
2
+ name: add-skill
3
+ description: |
4
+ 当需要为框架增加新技能、为新的模块功能编写技能文档时自动使用此 Skill。
5
+
6
+ 触发场景:
7
+ - 需要为新模块添加技能
8
+ - 需要为新功能编写技能文档
9
+ - 需要扩展框架的技能系统
10
+ - 需要将实现步骤转化为可复用技能
11
+
12
+ 触发词:添加技能、创建技能、新技能、技能开发、写技能、技能文档、skill 创建
13
+ ---
14
+
15
+ # 技能创建指南
16
+
17
+ ## 概述
18
+
19
+ 本指南用于在 leniu-tengyun-core 项目中添加新的技能(Skill)。项目同时支持三个 AI 编码平台,技能需在所有平台保持一致。
20
+
21
+ ## 核心设计原则
22
+
23
+ ### 精简至上
24
+
25
+ 上下文窗口是共享资源。技能与系统提示、对话历史、其他技能元数据共享窗口。
26
+
27
+ **默认假设:AI 已经很聪明。** 只添加 AI 本身不具备的知识。每段内容都应自问:"AI 真的需要这个解释吗?"、"这段内容值得占用 token 吗?"
28
+
29
+ **优先用简洁的代码示例代替冗长的文字说明。**
30
+
31
+ ### 自由度控制
32
+
33
+ 根据任务的脆弱性和变化性,匹配不同的指定程度:
34
+
35
+ | 自由度 | 适用场景 | 形式 |
36
+ |--------|---------|------|
37
+ | **高** | 多种方案均可,依赖上下文决策 | 文字描述指导 |
38
+ | **中** | 有推荐模式但允许变通 | 伪代码/带参数脚本 |
39
+ | **低** | 操作脆弱易错,必须严格一致 | 精确脚本/步骤 |
40
+
41
+ ### 渐进披露
42
+
43
+ 技能使用三级加载系统管理上下文:
44
+
45
+ 1. **元数据(name + description)** — 始终在上下文中(~100 词)
46
+ 2. **SKILL.md 正文** — 技能触发时加载(< 500 行)
47
+ 3. **捆绑资源** — 按需加载(无限制)
48
+
49
+ **SKILL.md 正文控制在 500 行以内。** 接近上限时拆分到独立文件。拆分后必须在 SKILL.md 中引用并说明何时读取。
50
+
51
+ **大技能拆分模式**:
52
+
53
+ ```
54
+ 技能名/
55
+ ├── SKILL.md # 核心流程 + 导航(< 500 行)
56
+ ├── references/ # 按需加载的参考文档
57
+ │ ├── patterns.md # 设计模式详解
58
+ │ └── examples.md # 完整代码示例
59
+ └── assets/ # 输出资源(模板、图片等)
60
+ ```
61
+
62
+ 当技能支持多种变体时,按变体组织 references:
63
+ ```
64
+ leniu-report-xxx/
65
+ ├── SKILL.md
66
+ └── references/
67
+ ├── basic-report.md # 基础报表模式
68
+ ├── summary-report.md # 汇总报表模式
69
+ └── analysis-report.md # 分析报表模式
70
+ ```
71
+
72
+ ### 三平台架构
73
+
74
+ | 平台 | 技能目录 | Hook 文件 | 激活方式 |
75
+ |------|---------|-----------|---------|
76
+ | **Claude Code** | `.claude/skills/{技能名}/SKILL.md` | `.claude/hooks/skill-forced-eval.js` | `Skill(技能名)` 工具调用 |
77
+ | **Codex CLI** | `.codex/skills/{技能名}/SKILL.md` | 无独立 hook | 依赖 AGENTS.md 引导 |
78
+ | **Cursor** | `.cursor/skills/{技能名}/SKILL.md` | `.cursor/hooks/cursor-skill-eval.js` | Read 文件读取 |
79
+
80
+ ### 技能系统工作原理
81
+
82
+ **Claude Code**:
83
+ ```
84
+ 用户提交问题
85
+ ↓ skill-forced-eval.js Hook 触发
86
+ 注入技能评估指令(列出可用技能 + 触发词)
87
+ ↓ AI 评估匹配的技能
88
+ 逐个调用 Skill(技能名)
89
+ ↓ 读取 .claude/skills/{技能名}/SKILL.md
90
+ AI 获得领域知识后开始实现
91
+ ```
92
+
93
+ **Cursor**:
94
+ ```
95
+ 用户提交问题
96
+ ↓ cursor-skill-eval.js Hook 触发
97
+ 扫描 skillMap 关键词匹配
98
+ ↓ 注入读取指令
99
+ AI 读取 .cursor/skills/{技能名}/SKILL.md
100
+ ↓ 同时 skill-activation.mdc 规则也可触发读取
101
+ AI 获得领域知识后开始实现
102
+ ```
103
+
104
+ ### 各平台注册位置速查
105
+
106
+ 新建技能需要修改以下文件:
107
+
108
+ | # | 文件 | 作用 | 必须 |
109
+ |---|------|------|------|
110
+ | 1 | `.claude/skills/{技能名}/SKILL.md` | 技能主文件 | 是 |
111
+ | 2 | `.claude/hooks/skill-forced-eval.js` | Claude Code 触发词注册 | 是 |
112
+ | 3 | `AGENTS.md` | Codex 技能清单 | 是 |
113
+ | 4 | `.cursor/skills/{技能名}/SKILL.md` | Cursor 技能文件 | 是 |
114
+ | 5 | `.cursor/hooks/cursor-skill-eval.js` | Cursor 关键词映射 | 是 |
115
+ | 6 | `.cursor/rules/skill-activation.mdc` | Cursor 规则触发 | 是 |
116
+ | 7 | `.codex/skills/{技能名}/SKILL.md` | Codex 技能文件 | 是 |
117
+
118
+ ---
119
+
120
+ ## YAML 头部规范
121
+
122
+ 每个 SKILL.md 文件**必须**以 YAML 头部开始:
123
+
124
+ ```yaml
125
+ ---
126
+ name: {技能名称}
127
+ description: |
128
+ {第一行:简短描述(一句话说明技能用途或定位)}
129
+
130
+ 触发场景:
131
+ - {场景1}
132
+ - {场景2}
133
+ - {场景3}
134
+ (至少3个场景)
135
+
136
+ 触发词:{关键词1}、{关键词2}、{关键词3}、{关键词4}、{关键词5}
137
+ (至少5个触发词,用中文顿号分隔)
138
+ ---
139
+ ```
140
+
141
+ ### name 字段规范
142
+
143
+ | 规则 | 说明 | 示例 |
144
+ |------|------|------|
145
+ | **格式** | kebab-case(全小写,横线连接) | `json-serialization` |
146
+ | **禁止** | 下划线、驼峰、空格 | ~~`json_serialization`~~, ~~`jsonSerialization`~~ |
147
+ | **长度** | 1-4 个单词 | `ui-pc`, `crud-development`, `redis-cache` |
148
+ | **leniu 前缀** | leniu 专项技能加 `leniu-` 前缀 | `leniu-crud-development` |
149
+
150
+ ### description 第一行风格
151
+
152
+ **风格 A:直述型**(多数技能采用)
153
+ ```yaml
154
+ description: |
155
+ 后端 CRUD 开发规范。基于四层架构(Controller → Business → Service → Mapper)。
156
+ 后端安全开发规范。包含认证授权、数据脱敏。
157
+ ```
158
+
159
+ **风格 B:触发型**
160
+ ```yaml
161
+ description: |
162
+ 当需要进行技术选型、对比方案时自动使用此 Skill。
163
+ ```
164
+
165
+ ---
166
+
167
+ ## 第 0 步:理解需求
168
+
169
+ > 跳过条件:技能的使用模式已经很清楚时可跳过。
170
+
171
+ 创建有效技能前,先用具体示例理解技能将如何被使用:
172
+
173
+ 1. **收集使用场景**:用户会说什么触发这个技能?
174
+ 2. **识别可复用内容**:哪些代码/模板/参考文档在每次使用时都会重复?
175
+ 3. **确定资源类型**:重复代码/技术文档 → `references/`;输出模板 → `assets/`;高频规则 → SKILL.md 正文
176
+
177
+ ---
178
+
179
+ ## 第 1 步:规划
180
+
181
+ ### 1.1 定义技能属性
182
+
183
+ | 属性 | 说明 | 示例 |
184
+ |------|------|------|
185
+ | **名称** | kebab-case 格式 | `leniu-payment-gateway` |
186
+ | **类别** | 后端/通用/前端 | 后端 |
187
+ | **触发场景** | 至少 3 个具体场景 | 支付接入、退款处理、对账 |
188
+ | **触发词** | 至少 5 个关键词 | 支付、退款、订单、对账、Payment |
189
+ | **参考代码** | 项目中的真实代码位置 | `sys-canteen/.../order/` |
190
+
191
+ ### 1.2 检查范围冲突
192
+
193
+ 查看现有技能列表,确保不与已有技能重叠:
194
+
195
+ ```bash
196
+ # 查看所有技能
197
+ ls .claude/skills/
198
+ ```
199
+
200
+ 如果新技能与现有技能有交集,在 SKILL.md 末尾用"注意"段落说明边界:
201
+ ```markdown
202
+ 注意:如果是认证授权(登录、Token),请使用 leniu-security-guard。
203
+ ```
204
+
205
+ ---
206
+
207
+ ## 第 2 步:编写 SKILL.md
208
+
209
+ ### 2.1 文件位置
210
+
211
+ ```
212
+ .claude/skills/{技能名}/SKILL.md
213
+ ```
214
+
215
+ ### 2.2 推荐内容结构
216
+
217
+ ```markdown
218
+ ---
219
+ name: {技能名称}
220
+ description: |
221
+ {描述、触发场景、触发词}
222
+ ---
223
+
224
+ # {技能标题}
225
+
226
+ ## 概述
227
+ {简明介绍,1-2 段}
228
+
229
+ ## 核心工具类/API
230
+ {主要类和方法列表}
231
+
232
+ ## 使用规范
233
+ {最佳实践和规则}
234
+
235
+ ## 代码示例
236
+ {真实代码片段}
237
+
238
+ ## 常见错误
239
+ {正确做法 vs 错误做法对比}
240
+
241
+ ## 注意
242
+ {与其他技能的边界说明}
243
+ ```
244
+
245
+ ### 2.3 内容质量要点
246
+
247
+ - **代码示例必须来自项目实际代码**,不要虚构类名、方法名
248
+ - **包名统一 `net.xnzn.core.*`**,不要出现 `org.dromara.*` 或 `com.ruoyi.*`
249
+ - **四层架构**:Controller → Business → Service → Mapper
250
+ - **对象转换用 `BeanUtil.copyProperties()`**(Hutool),不要写 MapstructUtils
251
+ - **异常用 `LeException`**,不要写 ServiceException
252
+ - **审计字段**:`crby/crtime/upby/uptime`,不要写 createBy/createTime
253
+ - 技能不需要固定行数要求,以内容实用为准(实际范围 200-650 行)
254
+
255
+ ### 2.4 不同类型技能的侧重
256
+
257
+ | 类型 | 侧重 |
258
+ |------|------|
259
+ | 后端开发类 | 代码模板、标准写法、禁止项 |
260
+ | 工具/中间件类 | API 列表、配置方法、使用示例 |
261
+ | 流程/报表类 | 步骤说明、SQL 模板、决策树 |
262
+
263
+ ---
264
+
265
+ ## 第 3 步:注册技能(Claude Code)
266
+
267
+ 技能需要在 **两个** 位置注册,才能被 Claude Code 识别和激活。
268
+
269
+ ### 3.1 在 Claude Hook 中注册
270
+
271
+ **文件**:`.claude/hooks/skill-forced-eval.js`
272
+
273
+ 在 `可用技能(纯后端项目):` 列表中添加一行:
274
+
275
+ ```javascript
276
+ - {技能名}: {触发词,用/分隔}
277
+ ```
278
+
279
+ **示例**:
280
+ ```javascript
281
+ - leniu-payment-gateway: 支付/退款/对账/Payment/支付宝/微信支付
282
+ ```
283
+
284
+ **注意**:按逻辑分组插入(leniu 专项技能放在一起),不是追加到末尾。
285
+
286
+ ### 3.2 在 AGENTS.md 中注册
287
+
288
+ **文件**:`AGENTS.md` 的"技能清单与触发条件"表格
289
+
290
+ ```markdown
291
+ | `{技能名}` | {触发条件简述} |
292
+ ```
293
+
294
+ ### 3.3 验证 Claude Code 注册
295
+
296
+ ```bash
297
+ grep "{技能名}" .claude/hooks/skill-forced-eval.js
298
+ grep "{技能名}" AGENTS.md
299
+ ```
300
+
301
+ ---
302
+
303
+ ## 第 4 步:注册技能(Cursor)
304
+
305
+ Cursor 有**三处**需要注册。
306
+
307
+ ### 4.1 复制 SKILL.md 到 Cursor
308
+
309
+ ```bash
310
+ mkdir -p .cursor/skills/{技能名}
311
+ cp .claude/skills/{技能名}/SKILL.md .cursor/skills/{技能名}/SKILL.md
312
+ ```
313
+
314
+ ### 4.2 在 Cursor Hook 中注册
315
+
316
+ **文件**:`.cursor/hooks/cursor-skill-eval.js`
317
+
318
+ 在 `skillMap` 数组的对应分组中添加条目:
319
+
320
+ ```javascript
321
+ // 在 skillMap 数组中找到对应分组,添加:
322
+ {
323
+ name: '{技能名}',
324
+ keywords: ['关键词1', '关键词2', '关键词3', '关键词4', '关键词5']
325
+ },
326
+ ```
327
+
328
+ **分组说明**(按注释标记):
329
+ - `// ========== leniu 专项技能 ==========` — leniu 前缀的技能
330
+ - `// ========== OpenSpec 工作流 ==========` — openspec 技能
331
+ - `// ========== 通用技能 ==========` — 通用技能(无 leniu 前缀)
332
+
333
+ **示例**:
334
+ ```javascript
335
+ {
336
+ name: 'leniu-payment-gateway',
337
+ keywords: ['leniu-支付', 'leniu-退款', 'leniu-对账', '支付宝', '微信支付']
338
+ },
339
+ ```
340
+
341
+ ### 4.3 在 Cursor Rules 中注册
342
+
343
+ **文件**:`.cursor/rules/skill-activation.mdc`
344
+
345
+ 在对应分组的表格中添加一行:
346
+
347
+ ```markdown
348
+ | {触发词,用/分隔} | `.cursor/skills/{技能名}/SKILL.md` |
349
+ ```
350
+
351
+ **分组说明**:
352
+ - `### leniu 专项技能` — leniu 前缀的技能
353
+ - `### OpenSpec 工作流技能` — openspec 技能
354
+ - `### 通用技能` — 通用技能
355
+
356
+ **示例**:
357
+ ```markdown
358
+ | leniu-支付/leniu-退款/leniu-对账/支付宝/微信支付 | `.cursor/skills/leniu-payment-gateway/SKILL.md` |
359
+ ```
360
+
361
+ ### 4.4 验证 Cursor 注册
362
+
363
+ ```bash
364
+ grep "{技能名}" .cursor/hooks/cursor-skill-eval.js
365
+ grep "{技能名}" .cursor/rules/skill-activation.mdc
366
+ ls .cursor/skills/{技能名}/SKILL.md
367
+ ```
368
+
369
+ ---
370
+
371
+ ## 第 5 步:Codex 同步
372
+
373
+ ```bash
374
+ # 1. 创建 Codex 目录
375
+ mkdir -p .codex/skills/{技能名}
376
+
377
+ # 2. 复制文件
378
+ cp .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
379
+
380
+ # 3. 验证一致性
381
+ diff .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
382
+ ```
383
+
384
+ **注意**:
385
+ - `.codex/skills/` 中额外存放斜杠命令型技能(如 dev, crud, check 等),这些不需要在 `.claude/` 中创建
386
+ - 普通技能(非斜杠命令)需要保持三个目录一致
387
+
388
+ ---
389
+
390
+ ## 第 6 步:验证
391
+
392
+ ### 完整检查清单
393
+
394
+ **主文件**:
395
+ - [ ] `.claude/skills/{技能名}/SKILL.md` 已创建
396
+
397
+ **Claude Code 注册**:
398
+ - [ ] `.claude/hooks/skill-forced-eval.js` 已添加技能条目
399
+ - [ ] `AGENTS.md` 已添加技能条目
400
+
401
+ **Cursor 注册**:
402
+ - [ ] `.cursor/skills/{技能名}/SKILL.md` 已同步
403
+ - [ ] `.cursor/hooks/cursor-skill-eval.js` skillMap 已添加条目
404
+ - [ ] `.cursor/rules/skill-activation.mdc` 已添加触发行
405
+
406
+ **Codex 同步**:
407
+ - [ ] `.codex/skills/{技能名}/SKILL.md` 已同步
408
+
409
+ **YAML 头部**:
410
+ - [ ] `name` 使用 kebab-case 格式
411
+ - [ ] description 包含触发场景(至少 3 个)
412
+ - [ ] description 包含触发词(至少 5 个)
413
+
414
+ **内容**:
415
+ - [ ] 代码示例来自项目实际代码,无虚构内容
416
+ - [ ] 包名使用 `net.xnzn.core.*`
417
+ - [ ] 与现有技能无范围冲突(或已说明边界)
418
+
419
+ ### 一键验证命令
420
+
421
+ ```bash
422
+ SKILL_NAME="{技能名}"
423
+
424
+ echo "=== Claude ===" && \
425
+ ls .claude/skills/$SKILL_NAME/SKILL.md && \
426
+ grep "$SKILL_NAME" .claude/hooks/skill-forced-eval.js && \
427
+ grep "$SKILL_NAME" AGENTS.md && \
428
+ echo "" && echo "=== Cursor ===" && \
429
+ ls .cursor/skills/$SKILL_NAME/SKILL.md && \
430
+ grep "$SKILL_NAME" .cursor/hooks/cursor-skill-eval.js && \
431
+ grep "$SKILL_NAME" .cursor/rules/skill-activation.mdc && \
432
+ echo "" && echo "=== Codex ===" && \
433
+ ls .codex/skills/$SKILL_NAME/SKILL.md && \
434
+ echo "" && echo "=== 三平台一致性 ===" && \
435
+ diff .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md && \
436
+ diff .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md && \
437
+ echo "全部通过"
438
+ ```
439
+
440
+ ---
441
+
442
+ ## 常见陷阱
443
+
444
+ ### 1. 遗漏注册(最常见)
445
+
446
+ **症状**:技能文件存在但从不被激活
447
+
448
+ **原因**:只创建了 SKILL.md,没有完成注册。三平台共 **7 处**需要操作。
449
+
450
+ **解决**:对照第 6 步检查清单逐项确认
451
+
452
+ ### 2. Cursor Hook 遗漏
453
+
454
+ **症状**:Claude Code 中正常,Cursor 中技能不激活
455
+
456
+ **原因**:只注册了 `.cursor/rules/skill-activation.mdc`,忘了注册 `.cursor/hooks/cursor-skill-eval.js`(或反之)
457
+
458
+ **解决**:Cursor 有两处需要注册——Hook 负责编程匹配触发,Rules 负责规则文本触发,**两处都需要**
459
+
460
+ ### 3. 三平台 SKILL.md 不一致
461
+
462
+ **症状**:不同平台的 AI 给出不同的代码建议
463
+
464
+ **原因**:修改了 `.claude/` 中的 SKILL.md 后,忘记同步到 `.cursor/` 和 `.codex/`
465
+
466
+ **解决**:修改后执行同步:
467
+ ```bash
468
+ SKILL_NAME="{技能名}"
469
+ cp .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md
470
+ cp .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md
471
+ ```
472
+
473
+ ### 4-7. 其他常见问题
474
+
475
+ | # | 症状 | 原因 | 解决 |
476
+ |---|------|------|------|
477
+ | 4 | 技能频繁误触发 | 触发词太通用(如"开发") | 用具体术语(如"CRUD开发") |
478
+ | 5 | 生成代码引用不存在的类 | 代码示例虚构 | 编写前用 Grep/Glob 确认类和方法存在 |
479
+ | 6 | 多技能触发、指导矛盾 | 技能范围重叠 | SKILL.md 末尾添加"注意"段落说明边界 |
480
+ | 7 | 生成代码编译失败 | 写了 `org.dromara.*` | 统一使用 `net.xnzn.core.*` |
481
+
482
+ ---
483
+
484
+ ## 迭代优化
485
+
486
+ 技能创建后持续改进:使用技能完成真实任务 → 发现不足 → 更新 SKILL.md → 同步三平台 → 重新测试。
487
+
488
+ > **提示**:不要创建多余的文档文件(README.md 等)。技能只包含 AI 执行任务所需的信息。