leniu-dev 2.0.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 (670) hide show
  1. package/.claude/agents/auto-test-generator.md +315 -0
  2. package/.claude/agents/bug-analyzer.md +103 -0
  3. package/.claude/agents/code-reviewer.md +122 -0
  4. package/.claude/agents/code-scanner.md +145 -0
  5. package/.claude/agents/image-reader.md +154 -0
  6. package/.claude/agents/loki-runner.md +80 -0
  7. package/.claude/agents/mysql-runner.md +81 -0
  8. package/.claude/agents/project-manager.md +159 -0
  9. package/.claude/agents/requirements-analyzer.md +175 -0
  10. package/.claude/agents/task-fetcher.md +75 -0
  11. package/.claude/audio/completed.wav +0 -0
  12. package/.claude/commands/add-todo.md +255 -0
  13. package/.claude/commands/auto-test.md +252 -0
  14. package/.claude/commands/check.md +210 -0
  15. package/.claude/commands/crud.md +454 -0
  16. package/.claude/commands/dev.md +532 -0
  17. package/.claude/commands/init-config.md +154 -0
  18. package/.claude/commands/init-docs.md +681 -0
  19. package/.claude/commands/next.md +281 -0
  20. package/.claude/commands/opsx-apply.md +147 -0
  21. package/.claude/commands/opsx-archive.md +105 -0
  22. package/.claude/commands/opsx-bulk-archive.md +237 -0
  23. package/.claude/commands/opsx-continue.md +109 -0
  24. package/.claude/commands/opsx-explore.md +281 -0
  25. package/.claude/commands/opsx-ff.md +92 -0
  26. package/.claude/commands/opsx-new.md +65 -0
  27. package/.claude/commands/opsx-onboard.md +397 -0
  28. package/.claude/commands/opsx-sync.md +129 -0
  29. package/.claude/commands/opsx-verify.md +159 -0
  30. package/.claude/commands/progress.md +264 -0
  31. package/.claude/commands/release.md +109 -0
  32. package/.claude/commands/start.md +199 -0
  33. package/.claude/commands/sync.md +307 -0
  34. package/.claude/commands/update-status.md +428 -0
  35. package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
  36. package/.claude/docs/README.md +167 -0
  37. package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
  38. package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
  39. package/.claude/docs//345/267/245/344/275/234/346/265/201/345/274/200/345/217/221/346/214/207/345/215/227.md +714 -0
  40. package/.claude/docs//345/267/245/345/205/267/347/261/273/344/275/277/347/224/250/346/214/207/345/215/227.md +463 -0
  41. package/.claude/docs//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/350/247/204/350/214/203.md +390 -0
  42. package/.claude/docs//346/226/260/345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213/350/247/204/350/214/203.md +688 -0
  43. package/.claude/docs//346/226/260/351/241/271/347/233/256/345/274/200/345/217/221/346/265/201/347/250/213.md +365 -0
  44. package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
  45. package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
  46. package/.claude/framework-config.json +73 -0
  47. package/.claude/hooks/lib/notify.js +310 -0
  48. package/.claude/hooks/pre-tool-use.js +117 -0
  49. package/.claude/hooks/skill-forced-eval.js +161 -0
  50. package/.claude/hooks/stop.js +55 -0
  51. package/.claude/notify-config.json +9 -0
  52. package/.claude/settings.json +57 -0
  53. package/.claude/skills/add-skill/SKILL.md +488 -0
  54. package/.claude/skills/analyze-requirements/SKILL.md +112 -0
  55. package/.claude/skills/api-development/SKILL.md +315 -0
  56. package/.claude/skills/architecture-design/SKILL.md +152 -0
  57. package/.claude/skills/auto-test/SKILL.md +625 -0
  58. package/.claude/skills/auto-test/references/api-conventions.md +260 -0
  59. package/.claude/skills/backend-annotations/SKILL.md +248 -0
  60. package/.claude/skills/banana-image/CHANGELOG.md +37 -0
  61. package/.claude/skills/banana-image/README.md +146 -0
  62. package/.claude/skills/banana-image/SKILL.md +171 -0
  63. package/.claude/skills/banana-image/assets/logo.png +0 -0
  64. package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
  65. package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
  66. package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  67. package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
  68. package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
  69. package/.claude/skills/banana-image/scripts/package.json +18 -0
  70. package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
  71. package/.claude/skills/banana-image/templates/poster.json +22 -0
  72. package/.claude/skills/banana-image/templates/product.json +17 -0
  73. package/.claude/skills/banana-image/templates/social.json +22 -0
  74. package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
  75. package/.claude/skills/brainstorm/SKILL.md +216 -0
  76. package/.claude/skills/bug-detective/SKILL.md +295 -0
  77. package/.claude/skills/bug-detective/references/error-patterns.md +242 -0
  78. package/.claude/skills/chrome-cdp/SKILL.md +81 -0
  79. package/.claude/skills/chrome-cdp/scripts/cdp.mjs +838 -0
  80. package/.claude/skills/chrome-cdp/scripts/run-cdp.sh +7 -0
  81. package/.claude/skills/code-patterns/SKILL.md +163 -0
  82. package/.claude/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  83. package/.claude/skills/codex-code-review/SKILL.md +327 -0
  84. package/.claude/skills/collaborating-with-codex/SKILL.md +180 -0
  85. package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  86. package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
  87. package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  88. package/.claude/skills/crud-development/SKILL.md +328 -0
  89. package/.claude/skills/data-permission/SKILL.md +221 -0
  90. package/.claude/skills/data-permission/references/custom-data-scope.md +90 -0
  91. package/.claude/skills/database-ops/SKILL.md +210 -0
  92. package/.claude/skills/error-handler/SKILL.md +310 -0
  93. package/.claude/skills/file-oss-management/SKILL.md +260 -0
  94. package/.claude/skills/file-oss-management/references/entities.md +105 -0
  95. package/.claude/skills/file-oss-management/references/service-impl.md +104 -0
  96. package/.claude/skills/fix-bug/SKILL.md +269 -0
  97. package/.claude/skills/git-workflow/SKILL.md +179 -0
  98. package/.claude/skills/jenkins-deploy/SKILL.md +134 -0
  99. package/.claude/skills/jenkins-deploy/assets/env_param.template.json +51 -0
  100. package/.claude/skills/jenkins-deploy/assets/jk_build.py +400 -0
  101. package/.claude/skills/json-serialization/SKILL.md +341 -0
  102. package/.claude/skills/lanhu-design/SKILL.md +99 -0
  103. package/.claude/skills/leniu-api-development/SKILL.md +319 -0
  104. package/.claude/skills/leniu-api-development/references/real-examples.md +273 -0
  105. package/.claude/skills/leniu-architecture-design/SKILL.md +383 -0
  106. package/.claude/skills/leniu-backend-annotations/SKILL.md +277 -0
  107. package/.claude/skills/leniu-brainstorm/SKILL.md +242 -0
  108. package/.claude/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  109. package/.claude/skills/leniu-code-patterns/SKILL.md +411 -0
  110. package/.claude/skills/leniu-crud-development/SKILL.md +404 -0
  111. package/.claude/skills/leniu-crud-development/references/templates.md +597 -0
  112. package/.claude/skills/leniu-customization-location/SKILL.md +410 -0
  113. package/.claude/skills/leniu-data-permission/SKILL.md +341 -0
  114. package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
  115. package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
  116. package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
  117. package/.claude/skills/leniu-java-entity/SKILL.md +237 -0
  118. package/.claude/skills/leniu-java-entity/references/templates.md +237 -0
  119. package/.claude/skills/leniu-java-logging/SKILL.md +229 -0
  120. package/.claude/skills/leniu-java-logging/references/data-mask.md +46 -0
  121. package/.claude/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  122. package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
  123. package/.claude/skills/leniu-java-mybatis/SKILL.md +267 -0
  124. package/.claude/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  125. package/.claude/skills/leniu-java-task/SKILL.md +367 -0
  126. package/.claude/skills/leniu-marketing-scenario/SKILL.md +448 -0
  127. package/.claude/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  128. package/.claude/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  129. package/.claude/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  130. package/.claude/skills/leniu-redis-cache/SKILL.md +331 -0
  131. package/.claude/skills/leniu-report-scenario/SKILL.md +508 -0
  132. package/.claude/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  133. package/.claude/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  134. package/.claude/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  135. package/.claude/skills/leniu-report-scenario/references/customization.md +356 -0
  136. package/.claude/skills/leniu-report-scenario/references/data-permission.md +182 -0
  137. package/.claude/skills/leniu-report-scenario/references/export.md +553 -0
  138. package/.claude/skills/leniu-report-scenario/references/mealtime.md +197 -0
  139. package/.claude/skills/leniu-report-scenario/references/query-param.md +274 -0
  140. package/.claude/skills/leniu-report-scenario/references/report-tables.md +162 -0
  141. package/.claude/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  142. package/.claude/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  143. package/.claude/skills/leniu-report-scenario/references/total-line.md +179 -0
  144. package/.claude/skills/leniu-security-guard/SKILL.md +306 -0
  145. package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
  146. package/.claude/skills/loki-log-query/SKILL.md +430 -0
  147. package/.claude/skills/mysql-debug/SKILL.md +406 -0
  148. package/.claude/skills/performance-doctor/SKILL.md +297 -0
  149. package/.claude/skills/project-navigator/SKILL.md +211 -0
  150. package/.claude/skills/redis-cache/SKILL.md +282 -0
  151. package/.claude/skills/redis-cache/references/listeners.md +23 -0
  152. package/.claude/skills/scheduled-jobs/SKILL.md +277 -0
  153. package/.claude/skills/security-guard/SKILL.md +245 -0
  154. package/.claude/skills/security-guard/references/encrypt-config.md +103 -0
  155. package/.claude/skills/security-guard/references/sensitive-strategies.md +42 -0
  156. package/.claude/skills/sms-mail/SKILL.md +346 -0
  157. package/.claude/skills/sms-mail/references/mail-config.md +88 -0
  158. package/.claude/skills/sms-mail/references/sms-config.md +74 -0
  159. package/.claude/skills/social-login/SKILL.md +328 -0
  160. package/.claude/skills/social-login/references/provider-configs.md +118 -0
  161. package/.claude/skills/store-pc/SKILL.md +366 -0
  162. package/.claude/skills/sync-back-merge/SKILL.md +66 -0
  163. package/.claude/skills/task-tracker/SKILL.md +307 -0
  164. package/.claude/skills/tech-decision/SKILL.md +393 -0
  165. package/.claude/skills/tenant-management/SKILL.md +272 -0
  166. package/.claude/skills/tenant-management/references/tenant-scenarios.md +91 -0
  167. package/.claude/skills/test-development/SKILL.md +301 -0
  168. package/.claude/skills/test-development/references/parameterized-examples.md +119 -0
  169. package/.claude/skills/ui-pc/SKILL.md +438 -0
  170. package/.claude/skills/utils-toolkit/SKILL.md +354 -0
  171. package/.claude/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  172. package/.claude/skills/websocket-sse/SKILL.md +350 -0
  173. package/.claude/skills/workflow-engine/SKILL.md +249 -0
  174. package/.claude/skills/yunxiao-task-management/SKILL.md +401 -0
  175. package/.claude/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  176. package/.claude/templates/env-config.md +27 -0
  177. package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
  178. package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
  179. package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
  180. package/.codex/skills/add-skill/SKILL.md +488 -0
  181. package/.codex/skills/add-todo/SKILL.md +269 -0
  182. package/.codex/skills/analyze-requirements/SKILL.md +112 -0
  183. package/.codex/skills/api-development/SKILL.md +315 -0
  184. package/.codex/skills/architecture-design/SKILL.md +152 -0
  185. package/.codex/skills/auto-test/SKILL.md +453 -0
  186. package/.codex/skills/auto-test/references/api-conventions.md +260 -0
  187. package/.codex/skills/backend-annotations/SKILL.md +248 -0
  188. package/.codex/skills/banana-image/CHANGELOG.md +37 -0
  189. package/.codex/skills/banana-image/README.md +146 -0
  190. package/.codex/skills/banana-image/SKILL.md +171 -0
  191. package/.codex/skills/banana-image/assets/logo.png +0 -0
  192. package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
  193. package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
  194. package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  195. package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
  196. package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
  197. package/.codex/skills/banana-image/scripts/package.json +18 -0
  198. package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
  199. package/.codex/skills/banana-image/templates/poster.json +22 -0
  200. package/.codex/skills/banana-image/templates/product.json +17 -0
  201. package/.codex/skills/banana-image/templates/social.json +22 -0
  202. package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
  203. package/.codex/skills/brainstorm/SKILL.md +216 -0
  204. package/.codex/skills/bug-detective/SKILL.md +295 -0
  205. package/.codex/skills/bug-detective/references/error-patterns.md +242 -0
  206. package/.codex/skills/check/SKILL.md +367 -0
  207. package/.codex/skills/code-patterns/SKILL.md +163 -0
  208. package/.codex/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  209. package/.codex/skills/collaborating-with-codex/SKILL.md +180 -0
  210. package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  211. package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
  212. package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  213. package/.codex/skills/crud/SKILL.md +265 -0
  214. package/.codex/skills/crud-development/SKILL.md +328 -0
  215. package/.codex/skills/data-permission/SKILL.md +221 -0
  216. package/.codex/skills/data-permission/references/custom-data-scope.md +90 -0
  217. package/.codex/skills/database-ops/SKILL.md +210 -0
  218. package/.codex/skills/dev/SKILL.md +187 -0
  219. package/.codex/skills/error-handler/SKILL.md +310 -0
  220. package/.codex/skills/file-oss-management/SKILL.md +260 -0
  221. package/.codex/skills/file-oss-management/references/entities.md +105 -0
  222. package/.codex/skills/file-oss-management/references/service-impl.md +104 -0
  223. package/.codex/skills/fix-bug/SKILL.md +269 -0
  224. package/.codex/skills/git-workflow/SKILL.md +179 -0
  225. package/.codex/skills/init-docs/SKILL.md +194 -0
  226. package/.codex/skills/jenkins-deploy/SKILL.md +134 -0
  227. package/.codex/skills/json-serialization/SKILL.md +341 -0
  228. package/.codex/skills/lanhu-design/SKILL.md +99 -0
  229. package/.codex/skills/leniu-api-development/SKILL.md +319 -0
  230. package/.codex/skills/leniu-api-development/references/real-examples.md +273 -0
  231. package/.codex/skills/leniu-architecture-design/SKILL.md +383 -0
  232. package/.codex/skills/leniu-backend-annotations/SKILL.md +277 -0
  233. package/.codex/skills/leniu-brainstorm/SKILL.md +242 -0
  234. package/.codex/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  235. package/.codex/skills/leniu-code-patterns/SKILL.md +411 -0
  236. package/.codex/skills/leniu-crud-development/SKILL.md +404 -0
  237. package/.codex/skills/leniu-crud-development/references/templates.md +597 -0
  238. package/.codex/skills/leniu-customization-location/SKILL.md +410 -0
  239. package/.codex/skills/leniu-data-permission/SKILL.md +341 -0
  240. package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
  241. package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
  242. package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
  243. package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
  244. package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
  245. package/.codex/skills/leniu-java-entity/SKILL.md +237 -0
  246. package/.codex/skills/leniu-java-entity/references/templates.md +237 -0
  247. package/.codex/skills/leniu-java-logging/SKILL.md +229 -0
  248. package/.codex/skills/leniu-java-logging/references/data-mask.md +46 -0
  249. package/.codex/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  250. package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
  251. package/.codex/skills/leniu-java-mybatis/SKILL.md +267 -0
  252. package/.codex/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  253. package/.codex/skills/leniu-java-task/SKILL.md +367 -0
  254. package/.codex/skills/leniu-marketing-scenario/SKILL.md +448 -0
  255. package/.codex/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  256. package/.codex/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  257. package/.codex/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  258. package/.codex/skills/leniu-redis-cache/SKILL.md +331 -0
  259. package/.codex/skills/leniu-report-scenario/SKILL.md +508 -0
  260. package/.codex/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  261. package/.codex/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  262. package/.codex/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  263. package/.codex/skills/leniu-report-scenario/references/customization.md +356 -0
  264. package/.codex/skills/leniu-report-scenario/references/data-permission.md +182 -0
  265. package/.codex/skills/leniu-report-scenario/references/export.md +553 -0
  266. package/.codex/skills/leniu-report-scenario/references/mealtime.md +197 -0
  267. package/.codex/skills/leniu-report-scenario/references/query-param.md +274 -0
  268. package/.codex/skills/leniu-report-scenario/references/report-tables.md +162 -0
  269. package/.codex/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  270. package/.codex/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  271. package/.codex/skills/leniu-report-scenario/references/total-line.md +179 -0
  272. package/.codex/skills/leniu-security-guard/SKILL.md +306 -0
  273. package/.codex/skills/leniu-utils-toolkit/SKILL.md +380 -0
  274. package/.codex/skills/loki-log-query/SKILL.md +430 -0
  275. package/.codex/skills/loki-log-query/environments.json +45 -0
  276. package/.codex/skills/mysql-debug/SKILL.md +406 -0
  277. package/.codex/skills/next/SKILL.md +137 -0
  278. package/.codex/skills/openspec-apply-change/SKILL.md +165 -0
  279. package/.codex/skills/openspec-archive-change/SKILL.md +122 -0
  280. package/.codex/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  281. package/.codex/skills/openspec-continue-change/SKILL.md +126 -0
  282. package/.codex/skills/openspec-explore/SKILL.md +299 -0
  283. package/.codex/skills/openspec-ff-change/SKILL.md +109 -0
  284. package/.codex/skills/openspec-new-change/SKILL.md +82 -0
  285. package/.codex/skills/openspec-onboard/SKILL.md +414 -0
  286. package/.codex/skills/openspec-sync-specs/SKILL.md +146 -0
  287. package/.codex/skills/openspec-verify-change/SKILL.md +176 -0
  288. package/.codex/skills/performance-doctor/SKILL.md +297 -0
  289. package/.codex/skills/progress/SKILL.md +193 -0
  290. package/.codex/skills/project-navigator/SKILL.md +211 -0
  291. package/.codex/skills/redis-cache/SKILL.md +282 -0
  292. package/.codex/skills/redis-cache/references/listeners.md +23 -0
  293. package/.codex/skills/scheduled-jobs/SKILL.md +277 -0
  294. package/.codex/skills/security-guard/SKILL.md +245 -0
  295. package/.codex/skills/security-guard/references/encrypt-config.md +103 -0
  296. package/.codex/skills/security-guard/references/sensitive-strategies.md +42 -0
  297. package/.codex/skills/skill-creator/LICENSE.txt +202 -0
  298. package/.codex/skills/skill-creator/SKILL.md +479 -0
  299. package/.codex/skills/skill-creator/agents/analyzer.md +274 -0
  300. package/.codex/skills/skill-creator/agents/comparator.md +202 -0
  301. package/.codex/skills/skill-creator/agents/grader.md +223 -0
  302. package/.codex/skills/skill-creator/assets/eval_review.html +146 -0
  303. package/.codex/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  304. package/.codex/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  305. package/.codex/skills/skill-creator/references/schemas.md +430 -0
  306. package/.codex/skills/skill-creator/scripts/__init__.py +0 -0
  307. package/.codex/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  308. package/.codex/skills/skill-creator/scripts/generate_report.py +326 -0
  309. package/.codex/skills/skill-creator/scripts/improve_description.py +248 -0
  310. package/.codex/skills/skill-creator/scripts/package_skill.py +136 -0
  311. package/.codex/skills/skill-creator/scripts/quick_validate.py +103 -0
  312. package/.codex/skills/skill-creator/scripts/run_eval.py +310 -0
  313. package/.codex/skills/skill-creator/scripts/run_loop.py +332 -0
  314. package/.codex/skills/skill-creator/scripts/utils.py +47 -0
  315. package/.codex/skills/sms-mail/SKILL.md +346 -0
  316. package/.codex/skills/sms-mail/references/mail-config.md +88 -0
  317. package/.codex/skills/sms-mail/references/sms-config.md +74 -0
  318. package/.codex/skills/social-login/SKILL.md +328 -0
  319. package/.codex/skills/social-login/references/provider-configs.md +118 -0
  320. package/.codex/skills/start/SKILL.md +154 -0
  321. package/.codex/skills/store-pc/SKILL.md +366 -0
  322. package/.codex/skills/sync/SKILL.md +149 -0
  323. package/.codex/skills/sync-back-merge/SKILL.md +66 -0
  324. package/.codex/skills/task-tracker/SKILL.md +307 -0
  325. package/.codex/skills/tech-decision/SKILL.md +393 -0
  326. package/.codex/skills/tenant-management/SKILL.md +272 -0
  327. package/.codex/skills/tenant-management/references/tenant-scenarios.md +91 -0
  328. package/.codex/skills/test-development/SKILL.md +301 -0
  329. package/.codex/skills/test-development/references/parameterized-examples.md +119 -0
  330. package/.codex/skills/ui-pc/SKILL.md +438 -0
  331. package/.codex/skills/update-status/SKILL.md +159 -0
  332. package/.codex/skills/utils-toolkit/SKILL.md +354 -0
  333. package/.codex/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  334. package/.codex/skills/websocket-sse/SKILL.md +350 -0
  335. package/.codex/skills/workflow-engine/SKILL.md +249 -0
  336. package/.codex/skills/yunxiao-task-management/SKILL.md +401 -0
  337. package/.codex/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  338. package/.cursor/agents/bug-analyzer.md +102 -0
  339. package/.cursor/agents/code-reviewer.md +122 -0
  340. package/.cursor/agents/code-scanner.md +145 -0
  341. package/.cursor/agents/image-reader.md +154 -0
  342. package/.cursor/agents/loki-runner.md +80 -0
  343. package/.cursor/agents/mysql-runner.md +81 -0
  344. package/.cursor/agents/project-manager.md +159 -0
  345. package/.cursor/agents/requirements-analyzer.md +141 -0
  346. package/.cursor/agents/task-fetcher.md +75 -0
  347. package/.cursor/audio/completed.wav +0 -0
  348. package/.cursor/commands/opsx-apply.md +152 -0
  349. package/.cursor/commands/opsx-archive.md +157 -0
  350. package/.cursor/commands/opsx-bulk-archive.md +242 -0
  351. package/.cursor/commands/opsx-continue.md +114 -0
  352. package/.cursor/commands/opsx-explore.md +174 -0
  353. package/.cursor/commands/opsx-ff.md +94 -0
  354. package/.cursor/commands/opsx-new.md +69 -0
  355. package/.cursor/commands/opsx-onboard.md +525 -0
  356. package/.cursor/commands/opsx-sync.md +134 -0
  357. package/.cursor/commands/opsx-verify.md +164 -0
  358. package/.cursor/hooks/cursor-pre-tool-use.js +122 -0
  359. package/.cursor/hooks/cursor-skill-eval.js +466 -0
  360. package/.cursor/hooks/lib/notify.js +310 -0
  361. package/.cursor/hooks/stop.js +55 -0
  362. package/.cursor/hooks.json +23 -0
  363. package/.cursor/mcp.json +22 -0
  364. package/.cursor/rules/skill-activation.mdc +99 -0
  365. package/.cursor/skills/add-skill/SKILL.md +488 -0
  366. package/.cursor/skills/analyze-requirements/SKILL.md +112 -0
  367. package/.cursor/skills/api-development/SKILL.md +315 -0
  368. package/.cursor/skills/architecture-design/SKILL.md +152 -0
  369. package/.cursor/skills/auto-test/SKILL.md +453 -0
  370. package/.cursor/skills/auto-test/references/api-conventions.md +260 -0
  371. package/.cursor/skills/backend-annotations/SKILL.md +248 -0
  372. package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
  373. package/.cursor/skills/banana-image/README.md +146 -0
  374. package/.cursor/skills/banana-image/SKILL.md +171 -0
  375. package/.cursor/skills/banana-image/assets/logo.png +0 -0
  376. package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
  377. package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
  378. package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  379. package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
  380. package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
  381. package/.cursor/skills/banana-image/scripts/package.json +18 -0
  382. package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
  383. package/.cursor/skills/banana-image/templates/poster.json +22 -0
  384. package/.cursor/skills/banana-image/templates/product.json +17 -0
  385. package/.cursor/skills/banana-image/templates/social.json +22 -0
  386. package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
  387. package/.cursor/skills/brainstorm/SKILL.md +216 -0
  388. package/.cursor/skills/bug-detective/SKILL.md +295 -0
  389. package/.cursor/skills/bug-detective/references/error-patterns.md +242 -0
  390. package/.cursor/skills/code-patterns/SKILL.md +163 -0
  391. package/.cursor/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  392. package/.cursor/skills/collaborating-with-codex/SKILL.md +180 -0
  393. package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  394. package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
  395. package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  396. package/.cursor/skills/crud-development/SKILL.md +328 -0
  397. package/.cursor/skills/data-permission/SKILL.md +221 -0
  398. package/.cursor/skills/data-permission/references/custom-data-scope.md +90 -0
  399. package/.cursor/skills/database-ops/SKILL.md +210 -0
  400. package/.cursor/skills/error-handler/SKILL.md +310 -0
  401. package/.cursor/skills/file-oss-management/SKILL.md +260 -0
  402. package/.cursor/skills/file-oss-management/references/entities.md +105 -0
  403. package/.cursor/skills/file-oss-management/references/service-impl.md +104 -0
  404. package/.cursor/skills/fix-bug/SKILL.md +269 -0
  405. package/.cursor/skills/git-workflow/SKILL.md +179 -0
  406. package/.cursor/skills/jenkins-deploy/SKILL.md +134 -0
  407. package/.cursor/skills/json-serialization/SKILL.md +341 -0
  408. package/.cursor/skills/lanhu-design/SKILL.md +99 -0
  409. package/.cursor/skills/leniu-api-development/SKILL.md +319 -0
  410. package/.cursor/skills/leniu-api-development/references/real-examples.md +273 -0
  411. package/.cursor/skills/leniu-architecture-design/SKILL.md +383 -0
  412. package/.cursor/skills/leniu-backend-annotations/SKILL.md +277 -0
  413. package/.cursor/skills/leniu-brainstorm/SKILL.md +242 -0
  414. package/.cursor/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  415. package/.cursor/skills/leniu-code-patterns/SKILL.md +411 -0
  416. package/.cursor/skills/leniu-crud-development/SKILL.md +404 -0
  417. package/.cursor/skills/leniu-crud-development/references/templates.md +597 -0
  418. package/.cursor/skills/leniu-customization-location/SKILL.md +410 -0
  419. package/.cursor/skills/leniu-data-permission/SKILL.md +341 -0
  420. package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
  421. package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
  422. package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
  423. package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
  424. package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
  425. package/.cursor/skills/leniu-java-entity/SKILL.md +237 -0
  426. package/.cursor/skills/leniu-java-entity/references/templates.md +237 -0
  427. package/.cursor/skills/leniu-java-logging/SKILL.md +229 -0
  428. package/.cursor/skills/leniu-java-logging/references/data-mask.md +46 -0
  429. package/.cursor/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  430. package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
  431. package/.cursor/skills/leniu-java-mybatis/SKILL.md +267 -0
  432. package/.cursor/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  433. package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
  434. package/.cursor/skills/leniu-marketing-scenario/SKILL.md +448 -0
  435. package/.cursor/skills/leniu-marketing-scenario/references/pay-meal-rules.md +197 -0
  436. package/.cursor/skills/leniu-marketing-scenario/references/price-rules.md +286 -0
  437. package/.cursor/skills/leniu-marketing-scenario/references/recharge-rules.md +188 -0
  438. package/.cursor/skills/leniu-redis-cache/SKILL.md +331 -0
  439. package/.cursor/skills/leniu-report-scenario/SKILL.md +508 -0
  440. package/.cursor/skills/leniu-report-scenario/references/amount-handling.md +448 -0
  441. package/.cursor/skills/leniu-report-scenario/references/analysis-module.md +64 -0
  442. package/.cursor/skills/leniu-report-scenario/references/customization-table-fields.md +93 -0
  443. package/.cursor/skills/leniu-report-scenario/references/customization.md +356 -0
  444. package/.cursor/skills/leniu-report-scenario/references/data-permission.md +182 -0
  445. package/.cursor/skills/leniu-report-scenario/references/export.md +553 -0
  446. package/.cursor/skills/leniu-report-scenario/references/mealtime.md +197 -0
  447. package/.cursor/skills/leniu-report-scenario/references/query-param.md +274 -0
  448. package/.cursor/skills/leniu-report-scenario/references/report-tables.md +162 -0
  449. package/.cursor/skills/leniu-report-scenario/references/standard-customization.md +112 -0
  450. package/.cursor/skills/leniu-report-scenario/references/standard-table-fields.md +113 -0
  451. package/.cursor/skills/leniu-report-scenario/references/total-line.md +179 -0
  452. package/.cursor/skills/leniu-security-guard/SKILL.md +306 -0
  453. package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
  454. package/.cursor/skills/loki-log-query/SKILL.md +430 -0
  455. package/.cursor/skills/loki-log-query/environments.json +45 -0
  456. package/.cursor/skills/mysql-debug/SKILL.md +406 -0
  457. package/.cursor/skills/openspec-apply-change/SKILL.md +165 -0
  458. package/.cursor/skills/openspec-archive-change/SKILL.md +122 -0
  459. package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  460. package/.cursor/skills/openspec-continue-change/SKILL.md +126 -0
  461. package/.cursor/skills/openspec-explore/SKILL.md +299 -0
  462. package/.cursor/skills/openspec-ff-change/SKILL.md +109 -0
  463. package/.cursor/skills/openspec-new-change/SKILL.md +82 -0
  464. package/.cursor/skills/openspec-onboard/SKILL.md +414 -0
  465. package/.cursor/skills/openspec-sync-specs/SKILL.md +146 -0
  466. package/.cursor/skills/openspec-verify-change/SKILL.md +176 -0
  467. package/.cursor/skills/performance-doctor/SKILL.md +297 -0
  468. package/.cursor/skills/project-navigator/SKILL.md +211 -0
  469. package/.cursor/skills/redis-cache/SKILL.md +282 -0
  470. package/.cursor/skills/redis-cache/references/listeners.md +23 -0
  471. package/.cursor/skills/scheduled-jobs/SKILL.md +277 -0
  472. package/.cursor/skills/security-guard/SKILL.md +245 -0
  473. package/.cursor/skills/security-guard/references/encrypt-config.md +103 -0
  474. package/.cursor/skills/security-guard/references/sensitive-strategies.md +42 -0
  475. package/.cursor/skills/skill-creator/LICENSE.txt +202 -0
  476. package/.cursor/skills/skill-creator/SKILL.md +479 -0
  477. package/.cursor/skills/skill-creator/agents/analyzer.md +274 -0
  478. package/.cursor/skills/skill-creator/agents/comparator.md +202 -0
  479. package/.cursor/skills/skill-creator/agents/grader.md +223 -0
  480. package/.cursor/skills/skill-creator/assets/eval_review.html +146 -0
  481. package/.cursor/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  482. package/.cursor/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  483. package/.cursor/skills/skill-creator/references/schemas.md +430 -0
  484. package/.cursor/skills/skill-creator/scripts/__init__.py +0 -0
  485. package/.cursor/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  486. package/.cursor/skills/skill-creator/scripts/generate_report.py +326 -0
  487. package/.cursor/skills/skill-creator/scripts/improve_description.py +248 -0
  488. package/.cursor/skills/skill-creator/scripts/package_skill.py +136 -0
  489. package/.cursor/skills/skill-creator/scripts/quick_validate.py +103 -0
  490. package/.cursor/skills/skill-creator/scripts/run_eval.py +310 -0
  491. package/.cursor/skills/skill-creator/scripts/run_loop.py +332 -0
  492. package/.cursor/skills/skill-creator/scripts/utils.py +47 -0
  493. package/.cursor/skills/sms-mail/SKILL.md +346 -0
  494. package/.cursor/skills/sms-mail/references/mail-config.md +88 -0
  495. package/.cursor/skills/sms-mail/references/sms-config.md +74 -0
  496. package/.cursor/skills/social-login/SKILL.md +328 -0
  497. package/.cursor/skills/social-login/references/provider-configs.md +118 -0
  498. package/.cursor/skills/store-pc/SKILL.md +366 -0
  499. package/.cursor/skills/sync-back-merge/SKILL.md +66 -0
  500. package/.cursor/skills/task-tracker/SKILL.md +307 -0
  501. package/.cursor/skills/tech-decision/SKILL.md +393 -0
  502. package/.cursor/skills/tenant-management/SKILL.md +272 -0
  503. package/.cursor/skills/tenant-management/references/tenant-scenarios.md +91 -0
  504. package/.cursor/skills/test-development/SKILL.md +301 -0
  505. package/.cursor/skills/test-development/references/parameterized-examples.md +119 -0
  506. package/.cursor/skills/ui-pc/SKILL.md +438 -0
  507. package/.cursor/skills/utils-toolkit/SKILL.md +354 -0
  508. package/.cursor/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  509. package/.cursor/skills/websocket-sse/SKILL.md +350 -0
  510. package/.cursor/skills/workflow-engine/SKILL.md +249 -0
  511. package/.cursor/skills/yunxiao-task-management/SKILL.md +401 -0
  512. package/.cursor/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  513. package/.cursor/templates/env-config.md +27 -0
  514. package/AGENTS.md +275 -0
  515. package/CLAUDE.md +285 -0
  516. package/README.md +104 -0
  517. package/bin/index.js +3069 -0
  518. package/init.sh +178 -0
  519. package/package.json +40 -0
  520. package/scripts/build-skills.js +180 -0
  521. package/src/platform-map.json +100 -0
  522. package/src/skills/add-skill/SKILL.md +488 -0
  523. package/src/skills/add-todo/SKILL.md +269 -0
  524. package/src/skills/analyze-requirements/SKILL.md +112 -0
  525. package/src/skills/api-development/SKILL.md +315 -0
  526. package/src/skills/architecture-design/SKILL.md +152 -0
  527. package/src/skills/backend-annotations/SKILL.md +248 -0
  528. package/src/skills/banana-image/CHANGELOG.md +37 -0
  529. package/src/skills/banana-image/README.md +146 -0
  530. package/src/skills/banana-image/SKILL.md +171 -0
  531. package/src/skills/banana-image/assets/logo.png +0 -0
  532. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  533. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  534. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  535. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  536. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  537. package/src/skills/banana-image/scripts/package.json +18 -0
  538. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  539. package/src/skills/banana-image/templates/poster.json +22 -0
  540. package/src/skills/banana-image/templates/product.json +17 -0
  541. package/src/skills/banana-image/templates/social.json +22 -0
  542. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  543. package/src/skills/brainstorm/SKILL.md +216 -0
  544. package/src/skills/bug-detective/SKILL.md +295 -0
  545. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  546. package/src/skills/check/SKILL.md +367 -0
  547. package/src/skills/code-patterns/SKILL.md +163 -0
  548. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  549. package/src/skills/codex-code-review/SKILL.md +327 -0
  550. package/src/skills/collaborating-with-codex/SKILL.md +180 -0
  551. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  552. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  553. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  554. package/src/skills/crud/SKILL.md +265 -0
  555. package/src/skills/crud-development/SKILL.md +328 -0
  556. package/src/skills/data-permission/SKILL.md +221 -0
  557. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  558. package/src/skills/database-ops/SKILL.md +210 -0
  559. package/src/skills/dev/SKILL.md +187 -0
  560. package/src/skills/error-handler/SKILL.md +310 -0
  561. package/src/skills/file-oss-management/SKILL.md +260 -0
  562. package/src/skills/file-oss-management/references/entities.md +105 -0
  563. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  564. package/src/skills/fix-bug/SKILL.md +269 -0
  565. package/src/skills/git-workflow/SKILL.md +179 -0
  566. package/src/skills/init-docs/SKILL.md +194 -0
  567. package/src/skills/json-serialization/SKILL.md +341 -0
  568. package/src/skills/leniu-api-development/SKILL.md +319 -0
  569. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  570. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  571. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  572. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  573. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  574. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  575. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  576. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  577. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  578. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  579. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  580. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  581. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  582. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  583. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  584. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  585. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  586. package/src/skills/leniu-java-export/SKILL.md +570 -0
  587. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  588. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  589. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  590. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  591. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  592. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  593. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  594. package/src/skills/leniu-java-task/SKILL.md +367 -0
  595. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  596. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  597. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  598. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  599. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  600. package/src/skills/leniu-report-customization/SKILL.md +415 -0
  601. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  602. package/src/skills/leniu-report-standard-customization/SKILL.md +391 -0
  603. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  604. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  605. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  606. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  607. package/src/skills/loki-log-query/SKILL.md +400 -0
  608. package/src/skills/loki-log-query/environments.json +45 -0
  609. package/src/skills/mysql-debug/SKILL.md +400 -0
  610. package/src/skills/next/SKILL.md +137 -0
  611. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  612. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  613. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  614. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  615. package/src/skills/openspec-explore/SKILL.md +299 -0
  616. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  617. package/src/skills/openspec-new-change/SKILL.md +82 -0
  618. package/src/skills/openspec-onboard/SKILL.md +414 -0
  619. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  620. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  621. package/src/skills/performance-doctor/SKILL.md +297 -0
  622. package/src/skills/progress/SKILL.md +193 -0
  623. package/src/skills/project-navigator/SKILL.md +211 -0
  624. package/src/skills/redis-cache/SKILL.md +282 -0
  625. package/src/skills/redis-cache/references/listeners.md +23 -0
  626. package/src/skills/scheduled-jobs/SKILL.md +277 -0
  627. package/src/skills/security-guard/SKILL.md +245 -0
  628. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  629. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  630. package/src/skills/skill-creator/LICENSE.txt +202 -0
  631. package/src/skills/skill-creator/SKILL.md +479 -0
  632. package/src/skills/skill-creator/agents/analyzer.md +274 -0
  633. package/src/skills/skill-creator/agents/comparator.md +202 -0
  634. package/src/skills/skill-creator/agents/grader.md +223 -0
  635. package/src/skills/skill-creator/assets/eval_review.html +146 -0
  636. package/src/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  637. package/src/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  638. package/src/skills/skill-creator/references/schemas.md +430 -0
  639. package/src/skills/skill-creator/scripts/__init__.py +0 -0
  640. package/src/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  641. package/src/skills/skill-creator/scripts/generate_report.py +326 -0
  642. package/src/skills/skill-creator/scripts/improve_description.py +248 -0
  643. package/src/skills/skill-creator/scripts/package_skill.py +136 -0
  644. package/src/skills/skill-creator/scripts/quick_validate.py +103 -0
  645. package/src/skills/skill-creator/scripts/run_eval.py +310 -0
  646. package/src/skills/skill-creator/scripts/run_loop.py +332 -0
  647. package/src/skills/skill-creator/scripts/utils.py +47 -0
  648. package/src/skills/sms-mail/SKILL.md +346 -0
  649. package/src/skills/sms-mail/references/mail-config.md +88 -0
  650. package/src/skills/sms-mail/references/sms-config.md +74 -0
  651. package/src/skills/social-login/SKILL.md +328 -0
  652. package/src/skills/social-login/references/provider-configs.md +118 -0
  653. package/src/skills/start/SKILL.md +154 -0
  654. package/src/skills/store-pc/SKILL.md +366 -0
  655. package/src/skills/sync/SKILL.md +149 -0
  656. package/src/skills/sync-back-merge/SKILL.md +66 -0
  657. package/src/skills/task-tracker/SKILL.md +307 -0
  658. package/src/skills/tech-decision/SKILL.md +393 -0
  659. package/src/skills/tenant-management/SKILL.md +272 -0
  660. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  661. package/src/skills/test-development/SKILL.md +301 -0
  662. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  663. package/src/skills/ui-pc/SKILL.md +438 -0
  664. package/src/skills/update-status/SKILL.md +159 -0
  665. package/src/skills/utils-toolkit/SKILL.md +354 -0
  666. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  667. package/src/skills/websocket-sse/SKILL.md +350 -0
  668. package/src/skills/workflow-engine/SKILL.md +249 -0
  669. package/src/skills/yunxiao-task-management/SKILL.md +401 -0
  670. package/src/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
@@ -0,0 +1,400 @@
1
+ ---
2
+ name: leniu-java-concurrent
3
+ description: |
4
+ leniu-tengyun-core / leniu-yunshitang 项目并发处理规范。当编写并发代码时使用此skill,包括线程安全、异步处理、分布式锁规范。
5
+
6
+ 触发场景:
7
+ - 使用CompletableFuture进行异步处理
8
+ - 配置和使用线程池(ThreadPoolExecutor)
9
+ - 处理并发安全问题(Redis分布式锁、数据库唯一索引)
10
+ - 实现异步通知或异步日志(不等待结果)
11
+
12
+ 适用项目:
13
+ - leniu-tengyun-core:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun-core
14
+ - leniu-yunshitang:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun/leniu-yunshitang
15
+
16
+ 触发词:并发、CompletableFuture、线程池、ThreadPool、并发安全、异步处理、synchronized
17
+ ---
18
+
19
+ # leniu-tengyun-core 并发处理规范
20
+
21
+ ## 项目特征
22
+
23
+ | 特征 | 说明 |
24
+ |------|------|
25
+ | 包名 | `net.xnzn.*` |
26
+ | 异常类 | `LeException`(禁止使用 ServiceException) |
27
+ | 工具类 | Hutool(CollUtil、StrUtil 等) |
28
+ | 分布式锁 | `RedisUtil.getLock()` / `RedisUtil.setNx()` |
29
+ | JDK | 21(支持虚拟线程,推荐使用标准线程池) |
30
+
31
+ ## 并行查询
32
+
33
+ ### 使用CompletableFuture
34
+
35
+ ```java
36
+ // 并行查询多个数据源
37
+ public XxxVO getData(Long id) {
38
+ // 创建异步任务
39
+ CompletableFuture<TypeA> futureA = CompletableFuture
40
+ .supplyAsync(() -> mapperA.selectById(id));
41
+
42
+ CompletableFuture<TypeB> futureB = CompletableFuture
43
+ .supplyAsync(() -> mapperB.selectById(id));
44
+
45
+ CompletableFuture<TypeC> futureC = CompletableFuture
46
+ .supplyAsync(() -> mapperC.selectById(id));
47
+
48
+ // 等待所有任务完成
49
+ CompletableFuture.allOf(futureA, futureB, futureC).join();
50
+
51
+ // 获取结果
52
+ TypeA resultA = futureA.join();
53
+ TypeB resultB = futureB.join();
54
+ TypeC resultC = futureC.join();
55
+
56
+ // 组装结果(使用 BeanUtil.copyProperties)
57
+ XxxVO vo = new XxxVO();
58
+ BeanUtil.copyProperties(resultA, vo);
59
+ vo.setDataB(resultB);
60
+ vo.setDataC(resultC);
61
+
62
+ return vo;
63
+ }
64
+ ```
65
+
66
+ ### 指定线程池
67
+
68
+ ```java
69
+ @Autowired
70
+ private Executor asyncTaskExecutor;
71
+
72
+ public XxxVO getData(Long id) {
73
+ // 使用指定的线程池
74
+ CompletableFuture<TypeA> futureA = CompletableFuture
75
+ .supplyAsync(() -> mapperA.selectById(id), asyncTaskExecutor);
76
+
77
+ CompletableFuture<TypeB> futureB = CompletableFuture
78
+ .supplyAsync(() -> mapperB.selectById(id), asyncTaskExecutor);
79
+
80
+ // 等待并获取结果
81
+ CompletableFuture.allOf(futureA, futureB).join();
82
+
83
+ TypeA resultA = futureA.join();
84
+ TypeB resultB = futureB.join();
85
+
86
+ return buildVO(resultA, resultB);
87
+ }
88
+ ```
89
+
90
+ ### 报表模块专用线程池(yunshitangTaskExecutor)
91
+
92
+ 云食堂报表模块使用专项线程池,通过 `@Resource(name=...)` 按名称注入:
93
+
94
+ ```java
95
+ @Service
96
+ @Slf4j
97
+ public class ReportSumXxxService {
98
+
99
+ // ✅ 按名称注入报表专用线程池
100
+ @Resource(name = "yunshitangTaskExecutor")
101
+ private AsyncTaskExecutor asyncTaskExecutor;
102
+
103
+ // ✅ 报表查询标准三并发模式:COUNT + LIST + TOTAL
104
+ public ReportBaseTotalVO<XxxVO> pageSummary(XxxParam param) {
105
+ // 1. 获取认证信息和数据权限
106
+ MgrUserAuthPO authPO = mgrAuthApi.getUserAuthPO();
107
+ ReportDataPermissionParam dataPermission =
108
+ reportDataPermissionService.getDataPermission(authPO);
109
+
110
+ // 2. 三并发:count、list、total 同时执行
111
+ CompletableFuture<Long> countFuture = CompletableFuture.supplyAsync(
112
+ () -> reportMapper.listSummary_COUNT(param, authPO, dataPermission),
113
+ asyncTaskExecutor
114
+ );
115
+ CompletableFuture<List<XxxVO>> listFuture = CompletableFuture.supplyAsync(() -> {
116
+ PageMethod.startPage(param.getPage());
117
+ return reportMapper.listSummary(param, authPO, dataPermission);
118
+ }, asyncTaskExecutor);
119
+ CompletableFuture<XxxVO> totalFuture = CompletableFuture.supplyAsync(
120
+ () -> reportMapper.getSummaryTotal(param, authPO, dataPermission),
121
+ asyncTaskExecutor
122
+ );
123
+
124
+ // 3. 等待所有任务完成
125
+ CompletableFuture.allOf(countFuture, listFuture, totalFuture).join();
126
+
127
+ // 4. 组装结果
128
+ PageVO<XxxVO> pageVO = PageVO.of(listFuture.join());
129
+ return new ReportBaseTotalVO<XxxVO>()
130
+ .setResultPage(pageVO)
131
+ .setTotalLine(totalFuture.join());
132
+ }
133
+ }
134
+ ```
135
+
136
+ **注意**:
137
+ - `listSummary_COUNT` 为 Mapper 中专门的 COUNT 方法(命名规范:`listXxx_COUNT`)
138
+ - `PageMethod.startPage()` 必须在 LIST Future 内部调用(同线程)
139
+ - COUNT Future 使用 Mapper 的 COUNT 方法,不走 PageHelper
140
+ - TOTAL Future 查询合计行,只返回数值字段
141
+
142
+ ## 异步执行
143
+
144
+ ### 不等待结果
145
+
146
+ ```java
147
+ // 异步执行,不等待结果
148
+ CompletableFuture.runAsync(() -> {
149
+ // 异步操作
150
+ logService.saveLog(log);
151
+ }, asyncTaskExecutor);
152
+
153
+ // 主线程继续执行
154
+ return result;
155
+ ```
156
+
157
+ ### 异步执行并处理异常
158
+
159
+ ```java
160
+ CompletableFuture.runAsync(() -> {
161
+ try {
162
+ // 异步操作
163
+ notificationService.send(message);
164
+ } catch (Exception e) {
165
+ log.error("异步发送通知失败", e);
166
+ }
167
+ }, asyncTaskExecutor);
168
+ ```
169
+
170
+ ## 线程池配置
171
+
172
+ ### 自定义线程池
173
+
174
+ ```java
175
+ @Configuration
176
+ public class ThreadPoolConfig {
177
+
178
+ @Bean("asyncTaskExecutor")
179
+ public Executor asyncTaskExecutor() {
180
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
181
+ // 核心线程数
182
+ executor.setCorePoolSize(10);
183
+ // 最大线程数
184
+ executor.setMaxPoolSize(20);
185
+ // 队列容量
186
+ executor.setQueueCapacity(200);
187
+ // 线程名称前缀
188
+ executor.setThreadNamePrefix("async-task-");
189
+ // 拒绝策略
190
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
191
+ // 等待所有任务完成后关闭线程池
192
+ executor.setWaitForTasksToCompleteOnShutdown(true);
193
+ // 等待时间
194
+ executor.setAwaitTerminationSeconds(60);
195
+ executor.initialize();
196
+ return executor;
197
+ }
198
+ }
199
+ ```
200
+
201
+ ## 并发安全
202
+
203
+ ### 使用分布式锁(Redisson)
204
+
205
+ ```java
206
+ public void processOrder(Long orderId) {
207
+ String lockKey = "order:process:" + orderId;
208
+
209
+ // 获取Redisson分布式锁
210
+ RLock lock = RedisUtil.getLock(lockKey);
211
+ if (!lock.tryLock()) {
212
+ throw new LeException("订单正在处理中,请稍后重试");
213
+ }
214
+
215
+ try {
216
+ // 业务处理
217
+ doProcess(orderId);
218
+ } finally {
219
+ // 安全释放锁
220
+ if (lock.isHeldByCurrentThread() && lock.isLocked()) {
221
+ lock.unlock();
222
+ }
223
+ }
224
+ }
225
+ ```
226
+
227
+ ### 使用Redis setNx 轻量锁
228
+
229
+ ```java
230
+ public void processOnce(Long tenantId) {
231
+ String key = "task:process:" + tenantId;
232
+ // setNx:设置成功才继续执行,防重入
233
+ boolean ifFirst = RedisUtil.setNx(key, "1", 6);
234
+ if (!ifFirst) {
235
+ throw new LeException("任务正在执行中");
236
+ }
237
+
238
+ try {
239
+ doBusiness();
240
+ } finally {
241
+ RedisUtil.del(key);
242
+ }
243
+ }
244
+ ```
245
+
246
+ ### 使用数据库唯一索引
247
+
248
+ ```java
249
+ @Transactional(rollbackFor = Exception.class)
250
+ public void createOrder(OrderParam param) {
251
+ try {
252
+ // 插入订单(依赖唯一索引防止重复)
253
+ Order order = buildOrder(param);
254
+ orderMapper.insert(order);
255
+ } catch (DuplicateKeyException e) {
256
+ throw new LeException("订单已存在");
257
+ }
258
+ }
259
+ ```
260
+
261
+ ## 常见场景
262
+
263
+ ### 场景1:并行查询多个接口
264
+
265
+ ```java
266
+ public DashboardVO getDashboard(Long userId) {
267
+ // 并行查询多个数据
268
+ CompletableFuture<OrderSummary> orderFuture = CompletableFuture
269
+ .supplyAsync(() -> orderService.getSummary(userId), asyncTaskExecutor);
270
+
271
+ CompletableFuture<PaymentSummary> paymentFuture = CompletableFuture
272
+ .supplyAsync(() -> paymentService.getSummary(userId), asyncTaskExecutor);
273
+
274
+ CompletableFuture<InventorySummary> inventoryFuture = CompletableFuture
275
+ .supplyAsync(() -> inventoryService.getSummary(userId), asyncTaskExecutor);
276
+
277
+ // 等待所有查询完成
278
+ CompletableFuture.allOf(orderFuture, paymentFuture, inventoryFuture).join();
279
+
280
+ // 组装结果
281
+ DashboardVO dashboard = new DashboardVO();
282
+ dashboard.setOrderSummary(orderFuture.join());
283
+ dashboard.setPaymentSummary(paymentFuture.join());
284
+ dashboard.setInventorySummary(inventoryFuture.join());
285
+
286
+ return dashboard;
287
+ }
288
+ ```
289
+
290
+ ### 场景2:批量并行处理
291
+
292
+ ```java
293
+ public void batchProcess(List<Long> ids) {
294
+ // 分批处理,每批100个(使用 Hutool CollUtil)
295
+ int batchSize = 100;
296
+ List<List<Long>> batches = CollUtil.split(ids, batchSize);
297
+
298
+ // 并行处理每批数据
299
+ List<CompletableFuture<Void>> futures = batches.stream()
300
+ .map(batch -> CompletableFuture.runAsync(() -> {
301
+ processBatch(batch);
302
+ }, asyncTaskExecutor))
303
+ .collect(Collectors.toList());
304
+
305
+ // 等待所有批次完成
306
+ CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
307
+
308
+ log.info("批量处理完成,总数:{}", ids.size());
309
+ }
310
+
311
+ private void processBatch(List<Long> batch) {
312
+ for (Long id : batch) {
313
+ try {
314
+ processOne(id);
315
+ } catch (Exception e) {
316
+ log.error("处理失败,id:{}", id, e);
317
+ }
318
+ }
319
+ }
320
+ ```
321
+
322
+ ### 场景3:异步通知(不影响主流程)
323
+
324
+ ```java
325
+ @Transactional(rollbackFor = Exception.class)
326
+ public void createOrder(OrderParam param) {
327
+ // 创建订单
328
+ Order order = buildOrder(param);
329
+ orderMapper.insert(order);
330
+
331
+ // 异步发送通知(不影响主流程)
332
+ CompletableFuture.runAsync(() -> {
333
+ try {
334
+ // 发送短信
335
+ smsService.sendOrderCreated(order);
336
+ // 发送邮件
337
+ emailService.sendOrderCreated(order);
338
+ } catch (Exception e) {
339
+ log.error("发送通知失败,orderId:{}", order.getId(), e);
340
+ }
341
+ }, asyncTaskExecutor);
342
+
343
+ log.info("订单创建成功,orderId:{}", order.getId());
344
+ }
345
+ ```
346
+
347
+ ## 最佳实践
348
+
349
+ ### 1. 指定线程池
350
+
351
+ ```java
352
+ // ✅ 推荐:使用自定义线程池
353
+ CompletableFuture.supplyAsync(() -> doSomething(), asyncTaskExecutor);
354
+
355
+ // ❌ 避免:使用默认ForkJoinPool(可能影响其他业务)
356
+ CompletableFuture.supplyAsync(() -> doSomething());
357
+ ```
358
+
359
+ ### 2. 异常处理
360
+
361
+ ```java
362
+ CompletableFuture<Result> future = CompletableFuture
363
+ .supplyAsync(() -> {
364
+ try {
365
+ return doSomething();
366
+ } catch (Exception e) {
367
+ log.error("异步任务执行失败", e);
368
+ throw new CompletionException(e);
369
+ }
370
+ }, asyncTaskExecutor);
371
+
372
+ // 处理异常(leniu 项目使用 LeException)
373
+ try {
374
+ Result result = future.join();
375
+ } catch (CompletionException e) {
376
+ log.error("获取异步结果失败", e);
377
+ throw new LeException("处理失败");
378
+ }
379
+ ```
380
+
381
+ ### 3. 超时控制
382
+
383
+ ```java
384
+ try {
385
+ // 设置超时时间
386
+ Result result = future.get(5, TimeUnit.SECONDS);
387
+ } catch (TimeoutException e) {
388
+ log.error("异步任务超时", e);
389
+ throw new LeException("处理超时");
390
+ }
391
+ ```
392
+
393
+ ## 常见错误
394
+
395
+ | 错误写法 | 正确写法 | 说明 |
396
+ |---------|---------|------|
397
+ | `throw new ServiceException("msg")` | `throw new LeException("msg")` | leniu 项目异常类不同 |
398
+ | `Lists.partition(ids, batchSize)` | `CollUtil.split(ids, batchSize)` | 使用 Hutool 工具类 |
399
+ | `MapstructUtils.convert(a, B.class)` | `BeanUtil.copyProperties(a, b)` | leniu 使用 Hutool 转换 |
400
+ | `import org.dromara.*` | `import net.xnzn.*` | 包名不同 |
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: leniu-java-entity
3
+ description: |
4
+ leniu-tengyun-core 项目 Entity/VO/DTO/Param/Enum 数据类规范。
5
+
6
+ 触发场景:
7
+ - 创建 Entity 实体类(@TableName、审计字段 crby/crtime/upby/uptime)
8
+ - 创建 VO/DTO/Param 数据传输对象
9
+ - 使用 Jakarta Validation 参数校验
10
+ - 创建枚举类(含国际化 I18n)
11
+ - Excel 导出 VO(EasyExcel)
12
+
13
+ 触发词:Entity实体类、VO视图对象、DTO数据传输、Param参数类、@TableName、@TableField、审计字段、枚举类、Excel导出、Jakarta校验
14
+ ---
15
+
16
+ # leniu Entity/VO/DTO 规范
17
+
18
+ ## 项目特征速查
19
+
20
+ | 项 | 值 |
21
+ |---|---|
22
+ | 包名 | `net.xnzn.core.*` |
23
+ | JDK | 21 → `jakarta.validation.*`(禁用 javax) |
24
+ | 工具库 | Hutool(BeanUtil / CollUtil / ObjectUtil / StrUtil) |
25
+ | 金额 | `Long`(分)或 `BigDecimal`(分),前端用 `money()` 转元 |
26
+ | 审计字段 | crby / crtime / upby / uptime |
27
+ | 逻辑删除 | **1=删除,2=正常**(与 RuoYi 相反) |
28
+ | Entity 特点 | 无基类、无 Serializable |
29
+
30
+ ## Entity 模板(核心)
31
+
32
+ ```java
33
+ @Data
34
+ @Accessors(chain = true)
35
+ @TableName(value = "table_name", autoResultMap = true)
36
+ public class XxxEntity {
37
+
38
+ @TableId
39
+ @ApiModelProperty("主键ID")
40
+ private Long id;
41
+
42
+ // --- 业务字段 ---
43
+ @ApiModelProperty("名称")
44
+ private String name;
45
+
46
+ // --- 审计字段 ---
47
+ @ApiModelProperty("删除标识(1-删除,2-正常)")
48
+ private Integer delFlag;
49
+
50
+ @TableField(fill = FieldFill.INSERT)
51
+ private String crby;
52
+
53
+ @TableField(fill = FieldFill.INSERT)
54
+ private LocalDateTime crtime;
55
+
56
+ @TableField(fill = FieldFill.INSERT_UPDATE)
57
+ private String upby;
58
+
59
+ @TableField(fill = FieldFill.INSERT_UPDATE)
60
+ private LocalDateTime uptime;
61
+
62
+ // --- 静态工厂(预设默认值) ---
63
+ public static XxxEntity newDefaultInstance() {
64
+ XxxEntity e = new XxxEntity();
65
+ e.setDelFlag(2); // 2=正常
66
+ return e;
67
+ }
68
+
69
+ // --- 领域业务方法(可选) ---
70
+ }
71
+ ```
72
+
73
+ **要点**:
74
+ - 无基类,审计字段直接定义
75
+ - `@TableName` 一般带 `autoResultMap = true`;报表 Model 不带(无 BaseMapper)
76
+ - 可含 `newDefaultInstance()` 工厂方法和领域业务方法
77
+
78
+ ## VO 模板
79
+
80
+ ```java
81
+ @Data
82
+ @Accessors(chain = true)
83
+ @ApiModel("订单信息")
84
+ public class OrderVO {
85
+
86
+ @ApiModelProperty("订单ID")
87
+ private Long orderId;
88
+
89
+ @ApiModelProperty("订单金额(元)")
90
+ private BigDecimal orderAmount;
91
+
92
+ @ApiModelProperty("创建时间")
93
+ private LocalDateTime crtime;
94
+ }
95
+ ```
96
+
97
+ 带校验的 VO:
98
+
99
+ ```java
100
+ @Data
101
+ @Accessors(chain = true)
102
+ @ApiModel("订单信息")
103
+ public class OrderVO {
104
+
105
+ @NotNull(message = "用户ID不能为空")
106
+ @ApiModelProperty("用户ID")
107
+ private Long userId;
108
+
109
+ @NotNull(message = "订单金额不能为空")
110
+ @DecimalMin(value = "0.01", message = "订单金额必须大于0")
111
+ @ApiModelProperty("订单金额(元)")
112
+ private BigDecimal orderAmount;
113
+ }
114
+ ```
115
+
116
+ ## Param 模板(分页查询)
117
+
118
+ ```java
119
+ @Data
120
+ @ApiModel("订单查询参数")
121
+ public class OrderQueryParam implements Serializable {
122
+
123
+ @NotNull(message = "分页参数不能为空")
124
+ @ApiModelProperty(value = "分页参数", required = true)
125
+ private PageDTO page;
126
+
127
+ @ApiModelProperty("关键字")
128
+ private String keyword;
129
+
130
+ @ApiModelProperty("状态")
131
+ private Integer status;
132
+
133
+ @ApiModelProperty("开始日期")
134
+ private LocalDate startDate;
135
+
136
+ @ApiModelProperty("结束日期")
137
+ private LocalDate endDate;
138
+ }
139
+ ```
140
+
141
+ ## DTO 模板
142
+
143
+ ```java
144
+ @Data
145
+ @ApiModel("订单数据传输对象")
146
+ public class OrderDTO {
147
+
148
+ @ApiModelProperty("订单ID")
149
+ private Long orderId;
150
+
151
+ @ApiModelProperty("用户ID")
152
+ private Long userId;
153
+
154
+ @ApiModelProperty("订单状态")
155
+ private Integer status;
156
+ }
157
+ ```
158
+
159
+ ## 枚举模板
160
+
161
+ ```java
162
+ @Getter
163
+ @AllArgsConstructor
164
+ public enum OrderStatusEnum {
165
+
166
+ CREATED(1, "已创建"),
167
+ PAID(2, "已支付"),
168
+ COMPLETED(3, "已完成"),
169
+ CANCELLED(4, "已取消");
170
+
171
+ private final Integer key;
172
+ private final String desc;
173
+
174
+ public static OrderStatusEnum getByKey(Integer key) {
175
+ if (key == null) return null;
176
+ for (OrderStatusEnum e : values()) {
177
+ if (e.getKey().equals(key)) return e;
178
+ }
179
+ return null;
180
+ }
181
+
182
+ public static String getDescByKey(Integer key) {
183
+ OrderStatusEnum e = getByKey(key);
184
+ return e != null ? e.getDesc() : "";
185
+ }
186
+ }
187
+ ```
188
+
189
+ 含国际化时,`desc` 用占位符 `"{order.status.created}"`,重写 `getDesc()` 调用 `I18n.getMessage(desc)`。
190
+
191
+ ## 时间格式化
192
+
193
+ ```java
194
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
195
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
196
+ private LocalDateTime createTime;
197
+
198
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
199
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
200
+ private LocalDate date;
201
+ ```
202
+
203
+ ## 对象转换
204
+
205
+ ```java
206
+ // 单对象
207
+ Target t = BeanUtil.copyProperties(source, Target.class);
208
+ // 列表
209
+ List<Target> list = BeanUtil.copyToList(sources, Target.class);
210
+ ```
211
+
212
+ ## 禁止项
213
+
214
+ ```java
215
+ // ❌ 继承 RuoYi TenantEntity / BaseEntity
216
+ import org.dromara.common.mybatis.core.domain.TenantEntity;
217
+
218
+ // ❌ javax.validation(JDK 21 必须用 jakarta)
219
+ import javax.validation.constraints.NotNull;
220
+
221
+ // ❌ MapstructUtils(用 BeanUtil.copyProperties)
222
+ MapstructUtils.convert(source, Target.class);
223
+
224
+ // ❌ delFlag: 0=正常(leniu 是 2=正常)
225
+ wrapper.eq(XxxEntity::getDelFlag, 0);
226
+
227
+ // ❌ 错误审计字段名
228
+ private String createBy; // 必须 crby
229
+ private LocalDateTime createTime; // 必须 crtime
230
+
231
+ // ❌ Entity 加 tenant_id(双库物理隔离,不需要)
232
+ ```
233
+
234
+ ## 参考文档
235
+
236
+ - 完整模板示例(Excel导出VO、报表Param等):详见 `references/templates.md`
237
+ - 生产代码参考:`sys-canteen/.../order/common/model/OrderInfo.java`