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,310 @@
1
+ ---
2
+ name: error-handler
3
+ description: |
4
+ 通用异常处理指南。涵盖自定义业务异常、全局异常处理器、参数校验等。
5
+ 触发场景:异常设计、错误处理、参数校验、全局异常捕获。
6
+ 触发词:异常处理、错误处理、参数校验、validation、异常捕获。
7
+ 注意:如果项目有专属技能(如 `leniu-error-handler`),优先使用专属版本。
8
+ ---
9
+
10
+ # 异常处理指南
11
+
12
+ > 通用模板。如果项目有专属技能(如 `leniu-error-handler`),优先使用。
13
+
14
+ ## 核心规范
15
+
16
+ ### 异常分层设计
17
+
18
+ ```
19
+ RuntimeException
20
+ └── BusinessException # 业务异常基类
21
+ ├── NotFoundException # 资源不存在 (404)
22
+ ├── ForbiddenException # 无权限 (403)
23
+ ├── BadRequestException # 参数错误 (400)
24
+ └── ConflictException # 数据冲突 (409)
25
+ ```
26
+
27
+ ### 异常处理原则
28
+
29
+ 1. **业务异常用自定义异常类**,不要直接抛 `RuntimeException`
30
+ 2. **全局统一捕获**,通过 `@RestControllerAdvice` 处理
31
+ 3. **区分异常层级**:Controller 层不 try-catch(交给全局处理器),Service 层只捕获需要转换的异常
32
+ 4. **异常信息面向用户**:不暴露堆栈、SQL 等技术细节
33
+ 5. **日志记录完整**:异常日志包含完整上下文和堆栈
34
+
35
+ ## 代码示例
36
+
37
+ ### 1. 自定义业务异常
38
+
39
+ ```java
40
+ package [你的包名].exception;
41
+
42
+ import lombok.Getter;
43
+
44
+ @Getter
45
+ public class BusinessException extends RuntimeException {
46
+
47
+ private final int code;
48
+
49
+ public BusinessException(String message) {
50
+ super(message);
51
+ this.code = 500;
52
+ }
53
+
54
+ public BusinessException(int code, String message) {
55
+ super(message);
56
+ this.code = code;
57
+ }
58
+
59
+ public BusinessException(int code, String message, Throwable cause) {
60
+ super(message, cause);
61
+ this.code = code;
62
+ }
63
+ }
64
+ ```
65
+
66
+ ```java
67
+ package [你的包名].exception;
68
+
69
+ public class NotFoundException extends BusinessException {
70
+
71
+ public NotFoundException(String message) {
72
+ super(404, message);
73
+ }
74
+
75
+ public static NotFoundException of(String resource, Object id) {
76
+ return new NotFoundException(resource + " 不存在: " + id);
77
+ }
78
+ }
79
+ ```
80
+
81
+ ### 2. 全局异常处理器
82
+
83
+ ```java
84
+ package [你的包名].handler;
85
+
86
+ import [你的包名].exception.BusinessException;
87
+ import [你的包名].exception.NotFoundException;
88
+ import jakarta.validation.ConstraintViolation;
89
+ import jakarta.validation.ConstraintViolationException;
90
+ import lombok.extern.slf4j.Slf4j;
91
+ import org.springframework.http.HttpStatus;
92
+ import org.springframework.http.ResponseEntity;
93
+ import org.springframework.validation.FieldError;
94
+ import org.springframework.web.bind.MethodArgumentNotValidException;
95
+ import org.springframework.web.bind.MissingServletRequestParameterException;
96
+ import org.springframework.web.bind.annotation.ExceptionHandler;
97
+ import org.springframework.web.bind.annotation.RestControllerAdvice;
98
+
99
+ import java.util.Map;
100
+ import java.util.stream.Collectors;
101
+
102
+ @Slf4j
103
+ @RestControllerAdvice
104
+ public class GlobalExceptionHandler {
105
+
106
+ /**
107
+ * 业务异常
108
+ */
109
+ @ExceptionHandler(BusinessException.class)
110
+ public ResponseEntity<Result<Void>> handleBusinessException(BusinessException e) {
111
+ log.warn("业务异常: {}", e.getMessage());
112
+ return ResponseEntity
113
+ .status(HttpStatus.BAD_REQUEST)
114
+ .body(Result.fail(e.getCode(), e.getMessage()));
115
+ }
116
+
117
+ /**
118
+ * 资源不存在
119
+ */
120
+ @ExceptionHandler(NotFoundException.class)
121
+ public ResponseEntity<Result<Void>> handleNotFoundException(NotFoundException e) {
122
+ log.warn("资源不存在: {}", e.getMessage());
123
+ return ResponseEntity
124
+ .status(HttpStatus.NOT_FOUND)
125
+ .body(Result.fail(404, e.getMessage()));
126
+ }
127
+
128
+ /**
129
+ * @RequestBody 参数校验失败
130
+ */
131
+ @ExceptionHandler(MethodArgumentNotValidException.class)
132
+ public ResponseEntity<Result<Map<String, String>>> handleValidationException(
133
+ MethodArgumentNotValidException e) {
134
+ Map<String, String> errors = e.getBindingResult().getFieldErrors().stream()
135
+ .collect(Collectors.toMap(
136
+ FieldError::getField,
137
+ fe -> fe.getDefaultMessage() != null ? fe.getDefaultMessage() : "校验失败",
138
+ (v1, v2) -> v1
139
+ ));
140
+ log.warn("参数校验失败: {}", errors);
141
+ return ResponseEntity
142
+ .status(HttpStatus.BAD_REQUEST)
143
+ .body(Result.fail(400, "参数校验失败"));
144
+ }
145
+
146
+ /**
147
+ * @RequestParam / @PathVariable 校验失败
148
+ */
149
+ @ExceptionHandler(ConstraintViolationException.class)
150
+ public ResponseEntity<Result<Void>> handleConstraintViolation(ConstraintViolationException e) {
151
+ String message = e.getConstraintViolations().stream()
152
+ .map(ConstraintViolation::getMessage)
153
+ .collect(Collectors.joining("; "));
154
+ log.warn("约束校验失败: {}", message);
155
+ return ResponseEntity
156
+ .status(HttpStatus.BAD_REQUEST)
157
+ .body(Result.fail(400, message));
158
+ }
159
+
160
+ /**
161
+ * 缺少请求参数
162
+ */
163
+ @ExceptionHandler(MissingServletRequestParameterException.class)
164
+ public ResponseEntity<Result<Void>> handleMissingParam(MissingServletRequestParameterException e) {
165
+ log.warn("缺少请求参数: {}", e.getParameterName());
166
+ return ResponseEntity
167
+ .status(HttpStatus.BAD_REQUEST)
168
+ .body(Result.fail(400, "缺少参数: " + e.getParameterName()));
169
+ }
170
+
171
+ /**
172
+ * 兜底:未知异常
173
+ */
174
+ @ExceptionHandler(Exception.class)
175
+ public ResponseEntity<Result<Void>> handleException(Exception e) {
176
+ log.error("系统异常", e);
177
+ return ResponseEntity
178
+ .status(HttpStatus.INTERNAL_SERVER_ERROR)
179
+ .body(Result.fail(500, "系统繁忙,请稍后重试"));
180
+ }
181
+ }
182
+ ```
183
+
184
+ ### 3. 参数校验(jakarta.validation)
185
+
186
+ ```java
187
+ package [你的包名].dto;
188
+
189
+ import jakarta.validation.constraints.*;
190
+ import lombok.Data;
191
+
192
+ @Data
193
+ public class UserCreateDTO {
194
+
195
+ @NotBlank(message = "用户名不能为空")
196
+ @Size(min = 2, max = 32, message = "用户名长度 2-32 位")
197
+ private String username;
198
+
199
+ @NotBlank(message = "邮箱不能为空")
200
+ @Email(message = "邮箱格式不正确")
201
+ private String email;
202
+
203
+ @NotNull(message = "年龄不能为空")
204
+ @Min(value = 1, message = "年龄最小为 1")
205
+ @Max(value = 150, message = "年龄最大为 150")
206
+ private Integer age;
207
+
208
+ @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
209
+ private String phone;
210
+ }
211
+ ```
212
+
213
+ **Controller 中使用**:
214
+ ```java
215
+ @PostMapping
216
+ public ResponseEntity<Result<Long>> create(@Valid @RequestBody UserCreateDTO dto) {
217
+ return ResponseEntity.ok(Result.ok(userService.create(dto)));
218
+ }
219
+ ```
220
+
221
+ ### 4. 分组校验
222
+
223
+ ```java
224
+ public interface CreateGroup {}
225
+ public interface UpdateGroup {}
226
+
227
+ @Data
228
+ public class UserDTO {
229
+
230
+ @Null(groups = CreateGroup.class, message = "创建时不能指定 ID")
231
+ @NotNull(groups = UpdateGroup.class, message = "更新时必须指定 ID")
232
+ private Long id;
233
+
234
+ @NotBlank(groups = {CreateGroup.class, UpdateGroup.class})
235
+ private String username;
236
+ }
237
+
238
+ // Controller 使用
239
+ @PostMapping
240
+ public Result<Long> create(@Validated(CreateGroup.class) @RequestBody UserDTO dto) { ... }
241
+
242
+ @PutMapping("/{id}")
243
+ public Result<Void> update(@Validated(UpdateGroup.class) @RequestBody UserDTO dto) { ... }
244
+ ```
245
+
246
+ ### 5. Service 层异常使用
247
+
248
+ ```java
249
+ @Service
250
+ public class UserServiceImpl implements IUserService {
251
+
252
+ @Override
253
+ public UserVO getById(Long id) {
254
+ User user = userMapper.selectById(id);
255
+ if (user == null) {
256
+ throw NotFoundException.of("用户", id);
257
+ }
258
+ // ... 转换为 VO
259
+ return userVO;
260
+ }
261
+
262
+ @Override
263
+ public void updateEmail(Long id, String email) {
264
+ // 检查邮箱是否已被使用
265
+ User existing = userMapper.selectByEmail(email);
266
+ if (existing != null && !existing.getId().equals(id)) {
267
+ throw new BusinessException(409, "邮箱已被其他用户使用");
268
+ }
269
+ // ... 更新逻辑
270
+ }
271
+ }
272
+ ```
273
+
274
+ ### 6. 日志规范
275
+
276
+ ```java
277
+ @Slf4j
278
+ @Service
279
+ public class OrderServiceImpl {
280
+
281
+ // 使用占位符(性能更好)
282
+ log.info("创建订单: orderNo={}, amount={}", dto.getOrderNo(), dto.getAmount());
283
+
284
+ // 异常日志带堆栈(第三个参数传异常对象)
285
+ log.error("处理失败: {}", e.getMessage(), e);
286
+
287
+ // 事务方法:所有异常都回滚
288
+ @Transactional(rollbackFor = Exception.class)
289
+ public void createOrder(OrderCreateDTO dto) {
290
+ log.info("开始创建订单, orderNo={}", dto.getOrderNo());
291
+ // ... 业务逻辑
292
+ log.info("订单创建成功, id={}", order.getId());
293
+ }
294
+ }
295
+ ```
296
+
297
+ ## 常见错误
298
+
299
+ | 错误 | 正确做法 |
300
+ |------|---------|
301
+ | 抛 `RuntimeException("xxx")` | 使用自定义业务异常类 |
302
+ | Controller 里 try-catch 所有异常 | 交给 `@RestControllerAdvice` 统一处理 |
303
+ | 异常信息暴露 SQL / 堆栈 | 对用户返回友好提示,日志记录完整信息 |
304
+ | 用 `javax.validation` 包 | JDK 17+ 使用 `jakarta.validation` |
305
+ | 吞掉异常:`catch (Exception e) {}` | 至少记录日志 `log.error("...", e)` |
306
+ | 所有异常都返回 200 状态码 | 根据异常类型返回对应 HTTP 状态码 |
307
+ | 用 `e.getMessage()` 直接返回给用户 | 第三方异常信息可能包含敏感信息,需要包装 |
308
+ | 校验逻辑写在 Controller 里 | 用 `@Valid` + DTO 注解声明式校验 |
309
+ | 日志用字符串拼接 `"失败:" + msg` | 用占位符 `log.error("失败: {}", msg, e)` |
310
+ | `@Transactional` 不指定回滚 | 加 `rollbackFor = Exception.class` |
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: file-oss-management
3
+ description: |
4
+ 当需要进行文件上传、下载、存储管理时自动使用此 Skill。支持本地存储、阿里云OSS、腾讯云COS、七牛云、MinIO等。
5
+
6
+ 触发场景:
7
+ - 文件上传下载
8
+ - 云存储配置
9
+ - 预签名URL生成
10
+ - 文件元数据管理
11
+ - OSS服务商切换
12
+
13
+ 触发词:文件上传、OSS、云存储、MinIO、阿里云、腾讯云、七牛、图片上传、文件下载、预签名、presigned、S3
14
+ ---
15
+
16
+ # 文件与云存储指南
17
+
18
+ > 统一协议:基于 AWS S3 SDK v2,兼容所有 S3 协议云服务
19
+
20
+ ## 架构概述
21
+
22
+ | 组件 | 说明 |
23
+ |----|------|
24
+ | `[你的OssClient]` | 统一操作入口(基于 AWS S3 SDK v2) |
25
+ | `S3Client` | AWS SDK 底层客户端 |
26
+ | `UploadResult` | 上传结果(url, filename, eTag) |
27
+
28
+ ---
29
+
30
+ ## 一、S3 Client 初始化
31
+
32
+ ```java
33
+ import software.amazon.awssdk.services.s3.S3Client;
34
+ import software.amazon.awssdk.services.s3.presigner.S3Presigner;
35
+ import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
36
+ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
37
+ import software.amazon.awssdk.regions.Region;
38
+
39
+ // 通用 S3 客户端构建(兼容 MinIO / 阿里云 / 腾讯云等)
40
+ S3Client s3Client = S3Client.builder()
41
+ .endpointOverride(URI.create(endpoint))
42
+ .credentialsProvider(StaticCredentialsProvider.create(
43
+ AwsBasicCredentials.create(accessKey, secretKey)))
44
+ .region(Region.of(region))
45
+ .forcePathStyle(true) // MinIO 需要开启
46
+ .build();
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 二、文件上传
52
+
53
+ ### 基础上传
54
+
55
+ ```java
56
+ import software.amazon.awssdk.services.s3.model.PutObjectRequest;
57
+ import software.amazon.awssdk.core.sync.RequestBody;
58
+
59
+ // 上传文件
60
+ PutObjectRequest request = PutObjectRequest.builder()
61
+ .bucket(bucketName)
62
+ .key("images/photo.jpg")
63
+ .contentType("image/jpeg")
64
+ .build();
65
+
66
+ s3Client.putObject(request, RequestBody.fromFile(file.toPath()));
67
+
68
+ // 上传输入流
69
+ s3Client.putObject(request, RequestBody.fromInputStream(inputStream, contentLength));
70
+
71
+ // 上传字节数组
72
+ s3Client.putObject(request, RequestBody.fromBytes(data));
73
+ ```
74
+
75
+ ### 封装上传服务(推荐模式)
76
+
77
+ ```java
78
+ @Service
79
+ @RequiredArgsConstructor
80
+ public class OssService {
81
+
82
+ private final S3Client s3Client;
83
+ private final OssProperties properties;
84
+
85
+ /**
86
+ * 上传文件,自动生成路径
87
+ */
88
+ public UploadResult upload(MultipartFile file) {
89
+ String suffix = getFileSuffix(file.getOriginalFilename());
90
+ String key = generateObjectKey(suffix); // 如 2026/03/07/uuid.jpg
91
+
92
+ PutObjectRequest request = PutObjectRequest.builder()
93
+ .bucket(properties.getBucketName())
94
+ .key(key)
95
+ .contentType(file.getContentType())
96
+ .build();
97
+
98
+ s3Client.putObject(request,
99
+ RequestBody.fromInputStream(file.getInputStream(), file.getSize()));
100
+
101
+ return UploadResult.builder()
102
+ .url(properties.getDomain() + "/" + key)
103
+ .filename(key)
104
+ .build();
105
+ }
106
+
107
+ private String generateObjectKey(String suffix) {
108
+ String datePath = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
109
+ return datePath + "/" + UUID.randomUUID() + suffix;
110
+ }
111
+ }
112
+ ```
113
+
114
+ ---
115
+
116
+ ## 三、文件下载
117
+
118
+ ```java
119
+ import software.amazon.awssdk.services.s3.model.GetObjectRequest;
120
+ import software.amazon.awssdk.core.ResponseInputStream;
121
+
122
+ // 下载到输出流(推荐用于HTTP响应)
123
+ GetObjectRequest getRequest = GetObjectRequest.builder()
124
+ .bucket(bucketName)
125
+ .key("images/photo.jpg")
126
+ .build();
127
+
128
+ ResponseInputStream<?> response = s3Client.getObject(getRequest);
129
+
130
+ // 写入 HTTP 响应
131
+ try (InputStream is = response) {
132
+ httpResponse.setContentType("image/jpeg");
133
+ httpResponse.setContentLengthLong(response.response().contentLength());
134
+ is.transferTo(httpResponse.getOutputStream());
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ ## 四、文件删除
141
+
142
+ ```java
143
+ import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
144
+
145
+ DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()
146
+ .bucket(bucketName)
147
+ .key("images/photo.jpg")
148
+ .build();
149
+
150
+ s3Client.deleteObject(deleteRequest);
151
+ ```
152
+
153
+ ---
154
+
155
+ ## 五、预签名 URL
156
+
157
+ ```java
158
+ import software.amazon.awssdk.services.s3.presigner.S3Presigner;
159
+ import software.amazon.awssdk.services.s3.presigner.model.*;
160
+
161
+ S3Presigner presigner = S3Presigner.builder()
162
+ .endpointOverride(URI.create(endpoint))
163
+ .credentialsProvider(credentialsProvider)
164
+ .region(Region.of(region))
165
+ .build();
166
+
167
+ // 下载预签名URL
168
+ GetObjectPresignRequest getPresignRequest = GetObjectPresignRequest.builder()
169
+ .signatureDuration(Duration.ofMinutes(60))
170
+ .getObjectRequest(b -> b.bucket(bucketName).key("images/photo.jpg"))
171
+ .build();
172
+ String downloadUrl = presigner.presignGetObject(getPresignRequest).url().toString();
173
+
174
+ // 上传预签名URL(前端直传)
175
+ PutObjectPresignRequest putPresignRequest = PutObjectPresignRequest.builder()
176
+ .signatureDuration(Duration.ofHours(1))
177
+ .putObjectRequest(b -> b.bucket(bucketName).key("images/upload.jpg"))
178
+ .build();
179
+ String uploadUrl = presigner.presignPutObject(putPresignRequest).url().toString();
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 六、Controller 接口(设计模式)
185
+
186
+ ```java
187
+ @RestController
188
+ @RequiredArgsConstructor
189
+ @RequestMapping("/api/oss")
190
+ public class OssController {
191
+
192
+ private final OssService ossService;
193
+
194
+ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
195
+ public UploadResult upload(@RequestPart("file") MultipartFile file) {
196
+ return ossService.upload(file);
197
+ }
198
+
199
+ @GetMapping("/download/{id}")
200
+ public void download(@PathVariable Long id, HttpServletResponse response) throws IOException {
201
+ ossService.download(id, response);
202
+ }
203
+
204
+ @DeleteMapping("/{ids}")
205
+ public void delete(@PathVariable List<Long> ids) {
206
+ ossService.deleteByIds(ids);
207
+ }
208
+ }
209
+ ```
210
+
211
+ ---
212
+
213
+ ## 七、配置模型
214
+
215
+ ```yaml
216
+ # application.yml
217
+ oss:
218
+ endpoint: https://s3.amazonaws.com # 或 MinIO/阿里云/腾讯云端点
219
+ access-key: your-access-key
220
+ secret-key: your-secret-key
221
+ bucket-name: your-bucket
222
+ region: us-east-1
223
+ domain: https://cdn.example.com # 自定义域名(可选)
224
+ ```
225
+
226
+ ```java
227
+ @Data
228
+ @ConfigurationProperties(prefix = "oss")
229
+ public class OssProperties {
230
+ private String endpoint;
231
+ private String accessKey;
232
+ private String secretKey;
233
+ private String bucketName;
234
+ private String region;
235
+ private String domain;
236
+ }
237
+ ```
238
+
239
+ ---
240
+
241
+ ## 八、服务商对照
242
+
243
+ | 服务商 | endpoint 示例 | 备注 |
244
+ |--------|-------------|------|
245
+ | 阿里云 OSS | `https://oss-cn-hangzhou.aliyuncs.com` | S3 兼容 |
246
+ | 腾讯云 COS | `https://cos.ap-guangzhou.myqcloud.com` | S3 兼容 |
247
+ | 七牛云 | `https://s3-cn-south-1.qiniucs.com` | S3 兼容 |
248
+ | MinIO | `http://localhost:9000` | 需 `forcePathStyle(true)` |
249
+ | AWS S3 | `https://s3.amazonaws.com` | 原生支持 |
250
+
251
+ ---
252
+
253
+ ## 九、设计要点
254
+
255
+ 1. **统一封装**:通过 S3 协议统一对接多个云服务商,切换只需改配置
256
+ 2. **路径生成**:按日期+UUID生成对象路径,避免冲突
257
+ 3. **私有桶**:私有桶文件通过预签名URL访问,设置合理的过期时间
258
+ 4. **文件记录**:上传后保存数据库记录,关联业务数据
259
+ 5. **大文件**:超过 100MB 考虑分片上传(`CreateMultipartUpload`)
260
+ 6. **安全**:前端直传使用预签名URL,不暴露密钥
@@ -0,0 +1,105 @@
1
+ # OSS 数据库实体类定义
2
+
3
+ ## SysOss 实体
4
+
5
+ ```java
6
+ @Data
7
+ @EqualsAndHashCode(callSuper = true)
8
+ @TableName("sys_oss")
9
+ public class SysOss extends TenantEntity {
10
+
11
+ @TableId(value = "oss_id")
12
+ private Long ossId;
13
+
14
+ private String fileName; // OSS对象键
15
+ private String originalName; // 原始文件名
16
+ private String fileSuffix; // 后缀名(如 .jpg)
17
+ private String url; // URL地址
18
+ private String ext1; // 扩展字段(JSON)
19
+ private String service; // 服务商标识
20
+
21
+ // 继承自 TenantEntity: tenantId, createTime, createBy, updateTime, updateBy, delFlag
22
+ }
23
+ ```
24
+
25
+ ## SysOssVo 视图对象
26
+
27
+ ```java
28
+ @Data
29
+ @AutoMapper(target = SysOss.class)
30
+ public class SysOssVo implements Serializable {
31
+
32
+ private Long ossId;
33
+ private String fileName;
34
+ private String originalName;
35
+ private String fileSuffix;
36
+ private String url;
37
+ private String ext1;
38
+ private Date createTime;
39
+ private Long createBy;
40
+
41
+ @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
42
+ private String createByName; // 上传人名称(自动翻译)
43
+
44
+ private String service;
45
+ }
46
+ ```
47
+
48
+ ## SysOssBo 业务对象
49
+
50
+ ```java
51
+ @Data
52
+ @EqualsAndHashCode(callSuper = true)
53
+ @AutoMapper(target = SysOss.class, reverseConvertGenerate = false)
54
+ public class SysOssBo extends BaseEntity {
55
+
56
+ private Long ossId;
57
+ private String fileName;
58
+ private String originalName;
59
+ private String fileSuffix;
60
+ private String url;
61
+ private String ext1;
62
+ private String service;
63
+ }
64
+ ```
65
+
66
+ ## SysOssExt 扩展信息对象
67
+
68
+ > 以 JSON 字符串形式存储在 ext1 字段中
69
+
70
+ ```java
71
+ @Data
72
+ public class SysOssExt implements Serializable {
73
+
74
+ private String bizType; // 业务类型(avatar、report等)
75
+ private Long fileSize; // 文件大小(字节)
76
+ private String contentType; // MIME类型
77
+ private String source; // 来源标识
78
+ private String uploadIp; // 上传IP
79
+ private String remark; // 备注
80
+ private List<String> tags; // 标签
81
+ private String refId; // 绑定业务ID
82
+ private String refType; // 绑定业务类型
83
+ private Boolean isTemp; // 是否临时文件
84
+ private String md5; // 文件MD5值
85
+ }
86
+ ```
87
+
88
+ ## OssProperties 配置类
89
+
90
+ ```java
91
+ @Data
92
+ public class OssProperties {
93
+
94
+ private String tenantId;
95
+ private String endpoint; // 访问站点
96
+ private String domain; // 自定义域名
97
+ private String prefix; // 文件前缀
98
+ private String accessKey;
99
+ private String secretKey;
100
+ private String bucketName;
101
+ private String region;
102
+ private String isHttps; // Y/N
103
+ private String accessPolicy; // 0-private, 1-public, 2-custom
104
+ }
105
+ ```