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,338 @@
1
+ ---
2
+ name: leniu-java-mq
3
+ description: |
4
+ leniu-tengyun-core / leniu-yunshitang 项目消息队列规范。当使用消息队列(MQ)时使用此skill,包括消息发送、消费和事务消息规范。
5
+
6
+ 触发场景:
7
+ - 使用消息队列发送/消费消息
8
+ - 实现延迟消息(延迟队列)
9
+ - 消息消费失败重试处理
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
+ 触发词:消息队列、MQ、MqUtil、@MqConsumer、延迟消息、消息重试、事务消息
17
+ ---
18
+
19
+ # leniu-tengyun-core 消息队列规范
20
+
21
+ ## 项目特征
22
+
23
+ | 特征 | 说明 |
24
+ |------|------|
25
+ | **包名前缀** | `net.xnzn.core.*` |
26
+ | **JDK 版本** | 21 |
27
+ | **消息工具** | `MqUtil` |
28
+ | **消费者注解** | `@MQMessageListener(group, topic, tag)` |
29
+ | **消费者接口** | `implements MQListener<MqPayload<String>>` |
30
+ | **主题常量** | `LeMqConstant.Topic` |
31
+ | **延迟枚举** | `LeMqConstant.DelayDuration` |
32
+ | **JSON工具** | `JacksonUtil` |
33
+ | **异常类** | `LeException` |
34
+
35
+ ## 核心架构:三层分工
36
+
37
+ ```
38
+ MsgSend(静态工具类)→ Listener(接收消息)→ Handler(分发处理)
39
+ ```
40
+
41
+ | 层 | 职责 | 示例 |
42
+ |----|------|------|
43
+ | **XxxMessageSend** | 静态工具类,封装消息发送逻辑 | `OrderMessageSend` |
44
+ | **XxxMqListenerYyy** | 消费者,接收 MQ 消息并分发到 Handler | `OrderMqListenerAsyncSave` |
45
+ | **XxxMqHandler** | 业务处理,统一处理各类消息 | `OrderMqHandler` |
46
+
47
+ ## 消息发送
48
+
49
+ ### 三种发送方式
50
+
51
+ ```java
52
+ import net.xnzn.core.common.mq.MqUtil;
53
+ import net.xnzn.core.common.constant.LeMqConstant;
54
+ import net.xnzn.core.common.utils.JacksonUtil;
55
+
56
+ // 1. 普通消息(立即发送)
57
+ MqUtil.send(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC);
58
+
59
+ // 2. 事务消息(在 DB 事务提交后发送,保证一致性)
60
+ MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC);
61
+
62
+ // 3. 延迟消息(指定延迟时长后触发)
63
+ MqUtil.sendDelay(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC, LeMqConstant.DelayDuration.ONE_MINUTE);
64
+ ```
65
+
66
+ **关键点**:
67
+ - 消息体必须用 `JacksonUtil.writeValueAsString()` 序列化为 **String** 再发送
68
+ - 事务消息用 `sendByTxEnd()`(如 DB 事务回滚则不发送)
69
+ - 延迟时间用 `LeMqConstant.DelayDuration` 枚举(不用 `Duration.ofMinutes()`)
70
+
71
+ ### DelayDuration 枚举(常用值)
72
+
73
+ ```java
74
+ LeMqConstant.DelayDuration.ONE_MINUTE // 1分钟
75
+ LeMqConstant.DelayDuration.THIRTY_MINUTES // 30分钟
76
+ // 其他枚举值参见 LeMqConstant.DelayDuration
77
+ ```
78
+
79
+ ### 消息发送类(静态工具类模式)
80
+
81
+ ```java
82
+ /**
83
+ * 订单消息发送
84
+ * 关键特征:
85
+ * 1. 不是 @Component,是纯静态工具类
86
+ * 2. 私有构造器
87
+ * 3. PO 中包含 traceId 和 tenantId(用于跨线程追踪)
88
+ */
89
+ @Slf4j
90
+ public class XxxMessageSend {
91
+
92
+ private XxxMessageSend() {} // 禁止实例化
93
+
94
+ private static final String MQ_ERROR_LOG = "发送MQ消息失败";
95
+
96
+ /**
97
+ * 普通消息(适用于非事务性发送)
98
+ */
99
+ public static void sendXxxEvent(XxxPO po) {
100
+ log.info("[XxxMQ]发送xxx事件");
101
+ po.setTraceId(LogUtil.getCurrentTraceId());
102
+ po.setTenantId(TenantContextHolder.getTenantId());
103
+ MqUtil.send(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC);
104
+ }
105
+
106
+ /**
107
+ * 事务消息(在 @Transactional 方法中使用,事务提交后才发送)
108
+ */
109
+ public static void sendXxxEventByTx(XxxPO po) {
110
+ log.info("[XxxMQ]发送xxx事务消息");
111
+ po.setTraceId(LogUtil.getCurrentTraceId());
112
+ po.setTenantId(TenantContextHolder.getTenantId());
113
+ try {
114
+ MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC);
115
+ } catch (Exception e) {
116
+ log.error(MQ_ERROR_LOG, e);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * 延迟消息(超时取消等场景)
122
+ */
123
+ public static void sendXxxDelay(XxxPO po, LeMqConstant.DelayDuration delayDuration) {
124
+ log.info("[XxxMQ]发送xxx延迟消息");
125
+ po.setTraceId(LogUtil.getCurrentTraceId());
126
+ po.setTenantId(TenantContextHolder.getTenantId());
127
+ MqUtil.sendDelay(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.XXX_TOPIC, delayDuration);
128
+ }
129
+ }
130
+ ```
131
+
132
+ ### PO 消息体规范
133
+
134
+ ```java
135
+ import lombok.Data;
136
+
137
+ /**
138
+ * MQ 消息 PO(Message Payload Object)
139
+ * 必须包含 traceId 和 tenantId 字段
140
+ */
141
+ @Data
142
+ public class XxxPO {
143
+
144
+ /** 链路追踪ID */
145
+ private String traceId;
146
+
147
+ /** 租户ID */
148
+ private String tenantId;
149
+
150
+ /** 业务字段 */
151
+ private Long orderId;
152
+ private String outTradeNo;
153
+ // 其他字段...
154
+ }
155
+ ```
156
+
157
+ ## 消息消费
158
+
159
+ ### Listener 类(真实代码模式)
160
+
161
+ ```java
162
+ import lombok.extern.slf4j.Slf4j;
163
+ import net.xnzn.core.common.mq.MqPayload;
164
+ import net.xnzn.framework.mq.MQListener;
165
+ import net.xnzn.framework.mq.MQMessageListener;
166
+ import org.springframework.beans.factory.annotation.Autowired;
167
+ import org.springframework.context.annotation.Lazy;
168
+
169
+ /**
170
+ * MQ 消费者 Listener
171
+ * @see LeMqConstant.Topic#XXX_TOPIC
172
+ */
173
+ @Slf4j
174
+ @MQMessageListener(
175
+ group = "module-xxx-topic-name", // 消费组,格式:模块名-topic-tag
176
+ topic = "xxx", // Topic 名称
177
+ tag = "xxx-topic-name" // Tag 名称(对应 LeMqConstant.Topic)
178
+ )
179
+ public class XxxMqListenerYyy implements MQListener<MqPayload<String>> {
180
+
181
+ @Autowired
182
+ @Lazy // ⚠️ 必须 @Lazy,避免循环依赖
183
+ private XxxMqHandler xxxMqHandler;
184
+
185
+ @Override
186
+ public void onMessage(MqPayload<String> payload) {
187
+ // 委托给 Handler 处理,使用方法引用
188
+ xxxMqHandler.handleMessage(payload, XxxPO.class, XxxMqHandler::handleXxx);
189
+ }
190
+ }
191
+ ```
192
+
193
+ ### Handler 类(统一处理消息)
194
+
195
+ ```java
196
+ import cn.hutool.core.text.CharSequenceUtil;
197
+ import com.pig4cloud.pigx.common.core.exception.LeException;
198
+ import lombok.extern.slf4j.Slf4j;
199
+ import net.xnzn.core.common.export.util.I18nUtil;
200
+ import net.xnzn.core.common.mq.MqPayload;
201
+ import net.xnzn.core.common.utils.JacksonUtil;
202
+ import net.xnzn.framework.data.tenant.TenantContextHolder;
203
+ import org.springframework.beans.factory.annotation.Autowired;
204
+ import org.springframework.context.annotation.Lazy;
205
+ import org.springframework.stereotype.Service;
206
+
207
+ import java.util.function.BiConsumer;
208
+
209
+ @Slf4j
210
+ @Service
211
+ public class XxxMqHandler {
212
+
213
+ @Lazy
214
+ @Autowired
215
+ private XxxService xxxService;
216
+
217
+ /**
218
+ * 统一处理调用(核心模板方法)
219
+ * 负责:反序列化、设置租户上下文、异常兜底
220
+ */
221
+ public <T> void handleMessage(MqPayload<String> payload, Class<T> clz, BiConsumer<XxxMqHandler, T> handleFunc) {
222
+ I18nUtil.loadDefaultLocale();
223
+ try {
224
+ log.info("[Xxx消息]收到消息 {}", payload);
225
+ T payloadData = JacksonUtil.readValue(payload.getData(), clz);
226
+ if (payloadData != null) {
227
+ TenantContextHolder.setTenantId(payload.getTenantId()); // 设置租户上下文
228
+ handleFunc.accept(this, payloadData);
229
+ } else {
230
+ log.error("[Xxx消息]解析失败");
231
+ }
232
+ } catch (Exception e) {
233
+ log.error("[Xxx消息]处理异常", e);
234
+ }
235
+ }
236
+
237
+ /**
238
+ * 处理 xxx 事件
239
+ */
240
+ public void handleXxx(XxxPO payload) {
241
+ try {
242
+ log.info("[Xxx事件]MQ消费:开始");
243
+ xxxService.processXxx(payload);
244
+ log.info("[Xxx事件]MQ消费:消息消费完成");
245
+ } catch (Exception e) {
246
+ log.error("[Xxx事件]MQ消费:处理异常", e);
247
+ }
248
+ }
249
+ }
250
+ ```
251
+
252
+ ## 常见场景
253
+
254
+ ### 场景1:事务消息(下单后通知)
255
+
256
+ ```java
257
+ @Transactional(rollbackFor = Exception.class)
258
+ public void createOrder(OrderParam param) {
259
+ // 1. 保存订单
260
+ OrderInfo order = OrderInfo.newDefaultInstance();
261
+ order.setCanteenId(param.getCanteenId());
262
+ orderMapper.insert(order);
263
+
264
+ // 2. 事务提交后发送消息(保证一致性)
265
+ OrderPlacedPO po = new OrderPlacedPO();
266
+ po.setOrderInfo(order);
267
+ OrderMessageSend.sendOrderPlacedByTx(po); // 内部使用 sendByTxEnd
268
+
269
+ log.info("订单创建成功,orderId:{}", order.getId());
270
+ }
271
+ ```
272
+
273
+ ### 场景2:延迟消息(订单超时取消)
274
+
275
+ ```java
276
+ public static LocalDateTime sendOrderTimeout(String macOrderId, LeMqConstant.DelayDuration delayDuration) {
277
+ log.info("[订单MQv3]发送未支付订单异步支付超时通知");
278
+ OrderCancelPO po = new OrderCancelPO();
279
+ po.setMacOrderId(macOrderId);
280
+ po.setTenantId(TenantContextHolder.getTenantId());
281
+ po.setTraceId(LogUtil.getCurrentTraceId());
282
+
283
+ // 延迟发送
284
+ MqUtil.sendDelay(JacksonUtil.writeValueAsString(po), LeMqConstant.Topic.ORDER_V3_ASYNC_TIMEOUT, delayDuration);
285
+
286
+ // 返回预计触发时间
287
+ return LocalDateTime.now().plusSeconds(delayDuration.getMilliseconds() / 1000);
288
+ }
289
+ ```
290
+
291
+ ### 场景3:带 Redisson 分布式锁的 MQ 消费
292
+
293
+ ```java
294
+ public void orderAsyncSave(OrderSavePO payload) {
295
+ // 消费时加分布式锁(防止并发处理同一订单)
296
+ RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCacheSaveLockKey(payload.getMacOrderId()));
297
+ lock.lock();
298
+ try {
299
+ log.info("[订单异步保存]MQ消费:开始");
300
+ doSaveOrder(payload);
301
+ log.info("[订单异步保存]MQ消费:消息消费完成");
302
+ } catch (Exception e) {
303
+ log.error("[订单异步保存]MQ消费:处理异常", e);
304
+ } finally {
305
+ // 安全释放锁
306
+ try {
307
+ if (lock.isHeldByCurrentThread() && lock.isLocked()) {
308
+ lock.unlock();
309
+ }
310
+ } catch (Exception e) {
311
+ log.error("解锁异常", e);
312
+ }
313
+ }
314
+ }
315
+ ```
316
+
317
+ ## 日志规范
318
+
319
+ ```java
320
+ // 发送端日志格式
321
+ log.info("[模块MQv3]发送xxx事件");
322
+
323
+ // 消费端日志格式
324
+ log.info("[xxx事件]MQ消费:开始");
325
+ log.info("[xxx事件]MQ消费:消息消费完成");
326
+ log.error("[xxx事件]MQ消费:处理异常", e);
327
+ ```
328
+
329
+ ## 常见错误
330
+
331
+ | 错误写法 | 正确写法 | 说明 |
332
+ |---------|---------|------|
333
+ | `MqUtil.send(dto, topic)` 直接传对象 | `MqUtil.send(JacksonUtil.writeValueAsString(dto), topic)` | 必须先序列化为 String |
334
+ | `@MqConsumer(topic = ...)` | `@MQMessageListener(group, topic, tag)` + `implements MQListener<MqPayload<String>>` | 实际框架注解不同 |
335
+ | `Duration.ofMinutes(30)` | `LeMqConstant.DelayDuration.THIRTY_MINUTES` | 延迟枚举不是 Duration |
336
+ | 忘记在 PO 中设置 `traceId`/`tenantId` | `po.setTraceId(LogUtil.getCurrentTraceId())` | 多租户追踪必须设置 |
337
+ | 消费方法直接 `@Autowired` 服务 | `@Autowired @Lazy` | 避免循环依赖 |
338
+ | 在 MQ 发送类上加 `@Component` | 纯静态工具类(私有构造器,不注入 Spring) | 发送类是静态工具 |
@@ -0,0 +1,267 @@
1
+ ---
2
+ name: leniu-java-mybatis
3
+ description: |
4
+ leniu-tengyun-core 项目 MyBatis/MyBatis-Plus 使用规范。当编写 Mapper、XML 映射、分页查询时使用此 skill。
5
+
6
+ 触发场景:
7
+ - 编写 Mapper 接口(extends BaseMapper)
8
+ - 编写 MyBatis XML 映射文件(动态 SQL)
9
+ - 使用 LambdaQueryWrapper 构建查询
10
+ - 分页查询(PageHelper + PageVO)
11
+ - 租户隔离控制(@InterceptorIgnore)
12
+
13
+ 触发词:MyBatis、MyBatisPlus、Mapper、LambdaQueryWrapper、XML映射、动态SQL、BaseMapper、分页查询、租户隔离、报表Mapper、PageHelper
14
+ ---
15
+
16
+ # leniu MyBatis 规范
17
+
18
+ ## 项目特征速查
19
+
20
+ | 项 | 值 |
21
+ |---|---|
22
+ | XML 位置 | **与 Mapper 接口同目录**(非 `resources/mapper/`) |
23
+ | 分页 | PageHelper → `PageMethod.startPage(PageDTO)` → `PageVO.of(list)` |
24
+ | 逻辑删除 | **1=删除,2=正常**(与 RuoYi 相反) |
25
+ | Service | 无接口,直接 `@Service` 类,Mapper 字段名统一用 `baseMapper` |
26
+ | 循环依赖 | 跨模块依赖用 `@Autowired @Lazy` |
27
+
28
+ ## Mapper 接口模板
29
+
30
+ ### 基础 Mapper
31
+
32
+ ```java
33
+ @Mapper
34
+ public interface XxxMapper extends BaseMapper<XxxEntity> {
35
+
36
+ List<XxxVO> listByParam(@Param("param") XxxParam param);
37
+ }
38
+ ```
39
+
40
+ ### 忽略租户隔离(方法级)
41
+
42
+ ```java
43
+ @Mapper
44
+ public interface XxxMapper extends BaseMapper<XxxEntity> {
45
+
46
+ @InterceptorIgnore(tenantLine = "true")
47
+ List<XxxVO> queryWithoutTenant(@Param("param") XxxParam param);
48
+ }
49
+ ```
50
+
51
+ ### 全量忽略拦截器(类级别)
52
+
53
+ ```java
54
+ @Mapper
55
+ @InterceptorIgnore // 无参数,跳过所有拦截器(租户、数据权限等)
56
+ public interface XxxMapper extends BaseMapper<XxxEntity>, BaseExistsMapper<XxxEntity> {
57
+
58
+ List<XxxVO> listVoByIds(@Param("orderIds") List<Long> ids, @Param("tenantId") String tenantId);
59
+
60
+ @QueryExtension
61
+ List<XxxIdDateVO> queryXxx(@Param("param") XxxSearchParam param,
62
+ @Param("permission") XxxUserPermissionDTO permission);
63
+ }
64
+ ```
65
+
66
+ - `BaseExistsMapper` 提供 `existsOne(Wrapper)` 方法(比 `selectCount > 0` 高效)
67
+ - 适用于数据量大、需跨租户查询的核心表
68
+
69
+ ## XML 模板
70
+
71
+ ```xml
72
+ <?xml version="1.0" encoding="UTF-8"?>
73
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
74
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
75
+ <mapper namespace="net.xnzn.core.xxx.mapper.XxxMapper">
76
+
77
+ <select id="listByParam" resultType="net.xnzn.core.xxx.vo.XxxVO">
78
+ SELECT
79
+ t.id,
80
+ t.name,
81
+ t.status
82
+ FROM table_name t
83
+ <where>
84
+ t.del_flag = 2
85
+ <if test="param.status != null">
86
+ AND t.status = #{param.status}
87
+ </if>
88
+ <if test="param.keyword != null and param.keyword != ''">
89
+ AND t.name LIKE CONCAT('%', #{param.keyword}, '%')
90
+ </if>
91
+ </where>
92
+ ORDER BY t.crtime DESC
93
+ </select>
94
+ </mapper>
95
+ ```
96
+
97
+ ### XML 编写规则
98
+
99
+ | 规则 | 说明 |
100
+ |------|------|
101
+ | 禁止 `SELECT *` | 必须明确指定字段 |
102
+ | `del_flag = 2` | 正常数据条件 |
103
+ | `#{}` 占位符 | 禁止 `${}`(SQL 注入) |
104
+ | `<where>` 标签 | 自动处理 AND 前缀 |
105
+ | 特殊字符 | `&lt;` / `&gt;` 或 `<![CDATA[ ]]>` |
106
+
107
+ ### 常用动态 SQL 片段
108
+
109
+ ```xml
110
+ <!-- IN 查询 -->
111
+ <if test="param.ids != null and param.ids.size() > 0">
112
+ AND t.id IN
113
+ <foreach collection="param.ids" item="id" open="(" separator="," close=")">
114
+ #{id}
115
+ </foreach>
116
+ </if>
117
+
118
+ <!-- 多条件 OR -->
119
+ <if test="param.keyword != null and param.keyword != ''">
120
+ AND (t.name LIKE CONCAT('%', #{param.keyword}, '%')
121
+ OR t.code LIKE CONCAT('%', #{param.keyword}, '%'))
122
+ </if>
123
+
124
+ <!-- 时间范围 -->
125
+ <if test="param.startDate != null">
126
+ AND t.crtime >= #{param.startDate}
127
+ </if>
128
+ <if test="param.endDate != null">
129
+ AND t.crtime &lt;= #{param.endDate}
130
+ </if>
131
+ ```
132
+
133
+ ## LambdaQuery 使用
134
+
135
+ ```java
136
+ List<XxxEntity> list = mapper.selectList(
137
+ Wrappers.lambdaQuery(XxxEntity.class)
138
+ .eq(XxxEntity::getStatus, 1)
139
+ .eq(XxxEntity::getDelFlag, 2) // 2=正常
140
+ .in(CollUtil.isNotEmpty(idList), XxxEntity::getId, idList)
141
+ .like(StrUtil.isNotBlank(name), XxxEntity::getName, name)
142
+ .ge(startDate != null, XxxEntity::getCrtime, startDate)
143
+ .le(endDate != null, XxxEntity::getCrtime, endDate)
144
+ .orderByDesc(XxxEntity::getCrtime)
145
+ );
146
+ ```
147
+
148
+ ## Service 注入规范
149
+
150
+ ```java
151
+ @Slf4j
152
+ @Service
153
+ @Validated
154
+ public class XxxService {
155
+
156
+ @Autowired
157
+ private XxxMapper baseMapper; // ✅ 统一命名 baseMapper
158
+
159
+ @Autowired @Lazy
160
+ private XxxDetailService xxxDetailService; // ✅ 跨模块用 @Lazy
161
+
162
+ public XxxEntity getOne(Long id) {
163
+ return baseMapper.selectById(id);
164
+ }
165
+
166
+ public boolean exists(String macOrderId) {
167
+ return baseMapper.existsOne(
168
+ Wrappers.lambdaQuery(XxxEntity.class)
169
+ .eq(XxxEntity::getMacOrderId, macOrderId)
170
+ .eq(XxxEntity::getDelFlag, 2)
171
+ );
172
+ }
173
+ }
174
+ ```
175
+
176
+ ## 分页查询
177
+
178
+ ```java
179
+ public PageVO<XxxVO> pageList(XxxParam param) {
180
+ // ✅ 传入 PageDTO 对象(不要拆 pageNum/pageSize)
181
+ if (Objects.nonNull(param.getPage())) {
182
+ PageMethod.startPage(param.getPage());
183
+ }
184
+
185
+ List<XxxVO> records = xxxMapper.listByParam(param);
186
+
187
+ return PageVO.of(records); // 自动提取 total 等信息
188
+ }
189
+ ```
190
+
191
+ Mapper 方法返回 `List<XxxVO>` 即可,PageHelper 拦截器自动处理分页。
192
+
193
+ ## 报表 Mapper(无 BaseMapper)
194
+
195
+ ```java
196
+ @Mapper
197
+ public interface ReportXxxMapper { // ✅ 不继承 BaseMapper
198
+
199
+ List<XxxVO> listSummary(
200
+ @Param("param") XxxParam param,
201
+ @Param("authPO") MgrUserAuthPO authPO,
202
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
203
+ );
204
+
205
+ XxxVO getSummaryTotal( // 合计行
206
+ @Param("param") XxxParam param,
207
+ @Param("authPO") MgrUserAuthPO authPO,
208
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
209
+ );
210
+ }
211
+ ```
212
+
213
+ **命名规律**:`listXxx()` 分页数据 / `listXxx_COUNT()` 计数 / `getSummaryTotal()` 合计行 / `listXxxByDay()` 按维度
214
+
215
+ ## 合计行查询
216
+
217
+ ```xml
218
+ <!-- 列表查询 -->
219
+ <select id="listByParam" resultType="XxxVO">
220
+ SELECT id, name, amount, count
221
+ FROM table_name
222
+ <where>...</where>
223
+ ORDER BY id DESC
224
+ </select>
225
+
226
+ <!-- 合计查询:只返回数值字段 -->
227
+ <select id="getSummaryTotal" resultType="XxxVO">
228
+ SELECT SUM(amount) AS amount, SUM(count) AS count
229
+ FROM table_name
230
+ <where>...</where>
231
+ </select>
232
+ ```
233
+
234
+ 除零处理:
235
+ ```xml
236
+ CASE WHEN SUM(count) = 0 THEN 0 ELSE SUM(amount) / SUM(count) END AS avgAmount
237
+ ```
238
+
239
+ ## 禁止项
240
+
241
+ ```java
242
+ // ❌ 继承 RuoYi TenantEntity
243
+ import org.dromara.common.mybatis.core.domain.TenantEntity;
244
+
245
+ // ❌ delFlag: 0=正常(leniu 是 2=正常)
246
+ wrapper.eq(XxxEntity::getDelFlag, 0);
247
+
248
+ // ❌ XML 放 resources/mapper/(必须与 Mapper 接口同目录)
249
+
250
+ // ❌ MapstructUtils(用 BeanUtil.copyProperties)
251
+ MapstructUtils.convert(source, Target.class);
252
+
253
+ // ❌ Service 继承 IService / ServiceImpl
254
+ public interface IXxxService extends IService<XxxEntity> {}
255
+ ```
256
+
257
+ ## XML 文件位置
258
+
259
+ ```
260
+ net.xnzn.core.xxx.mapper/
261
+ ├── XxxMapper.java # 接口
262
+ └── XxxMapper.xml # XML(同目录!)
263
+ ```
264
+
265
+ ## 参考文档
266
+
267
+ - 报表 Mapper 完整示例:详见 `references/report-mapper.md`
@@ -0,0 +1,88 @@
1
+ # 报表 Mapper 完整示例
2
+
3
+ ## Mapper 接口(来自 ReportAnalysisTurnoverMapper 真实代码)
4
+
5
+ ```java
6
+ @Mapper
7
+ public interface ReportXxxMapper {
8
+
9
+ // 分页列表查询(PageHelper 拦截,方法返回 List)
10
+ List<XxxVO> listSummary(
11
+ @Param("param") XxxParam param,
12
+ @Param("authPO") MgrUserAuthPO authPO,
13
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
14
+ );
15
+
16
+ // 合计行查询(不分页,返回单个汇总 VO)
17
+ XxxVO getSummaryTotal(
18
+ @Param("param") XxxParam param,
19
+ @Param("authPO") MgrUserAuthPO authPO,
20
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
21
+ );
22
+
23
+ // 按日/按月分组(对应 dateType 参数)
24
+ List<XxxVO> listSummaryByDay(
25
+ @Param("param") XxxParam param,
26
+ @Param("authPO") MgrUserAuthPO authPO,
27
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
28
+ );
29
+ List<XxxVO> listSummaryByMonth(
30
+ @Param("param") XxxParam param,
31
+ @Param("authPO") MgrUserAuthPO authPO,
32
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
33
+ );
34
+
35
+ // 汇总数据(总金额、人次等)
36
+ ReportTurnoverPO getTurnoverTotal(
37
+ @Param("param") XxxParam param,
38
+ @Param("authPO") MgrUserAuthPO authPO,
39
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
40
+ );
41
+
42
+ // 排行榜类(不需要 authPO 时可省略)
43
+ List<RankVO> getXxxRank(
44
+ @Param("param") RankParam param,
45
+ @Param("dataPermission") ReportDataPermissionParam dataPermission
46
+ );
47
+ }
48
+ ```
49
+
50
+ ## 关键规则
51
+
52
+ 1. `@Mapper` 注解,**不继承 BaseMapper**(报表无 CRUD)
53
+ 2. 所有参数必须加 `@Param`,顺序:`param` -> `authPO` -> `dataPermission`
54
+ 3. 分页列表返回 `List<VO>`,由 Service 层调用 `PageMethod.startPage()` 控制
55
+ 4. 合计行返回单个 PO/VO 对象
56
+ 5. COUNT 方法(`listXxx_COUNT`)配合 `CompletableFuture` 并发使用
57
+
58
+ ## 命名规律
59
+
60
+ | 类型 | 命名 |
61
+ |------|------|
62
+ | 分页数据 | `listXxx()` |
63
+ | 对应 COUNT | `listXxx_COUNT()`(下划线 + COUNT) |
64
+ | 合计行 | `getSummaryTotal()` / `getSummaryXxxTotal()` |
65
+ | 按维度变体 | `listXxxByDay()` / `listXxxByDay_COUNT()` |
66
+
67
+ ## 合计 SQL 常用函数
68
+
69
+ | 函数 | 用途 |
70
+ |------|------|
71
+ | `SUM()` | 求和 |
72
+ | `COUNT(*)` | 计数 |
73
+ | `AVG()` | 平均值 |
74
+ | `MAX()` / `MIN()` | 极值 |
75
+
76
+ ## 除零处理
77
+
78
+ ```xml
79
+ CASE
80
+ WHEN SUM(count) = 0 THEN 0
81
+ ELSE SUM(amount) / SUM(count)
82
+ END AS avgAmount
83
+
84
+ CASE
85
+ WHEN SUM(staff_count) = 0 THEN 0
86
+ ELSE SUM(avg_salary) / COUNT(DISTINCT tenant_id)
87
+ END AS avgSalary
88
+ ```