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,328 @@
1
+ ---
2
+ name: crud-development
3
+ description: |
4
+ 通用 CRUD 开发指南。基于 Spring Boot 三层架构(Controller -> Service -> Mapper),
5
+ 提供 Entity、DTO、VO、Service、Controller 的标准模板。
6
+ 触发场景:新增业务模块、增删改查开发、快速生成 CRUD 代码。
7
+ 触发词:CRUD、增删改查、新增模块、生成代码。
8
+ 注意:如果项目有专属技能(如 `leniu-crud`),优先使用专属版本。
9
+ ---
10
+
11
+ # CRUD 开发指南
12
+
13
+ > 通用模板。如果项目有专属技能(如 `leniu-crud`),优先使用。
14
+
15
+ ## 核心规范
16
+
17
+ ### 三层架构
18
+
19
+ | 层 | 职责 | 命名示例 |
20
+ |----|------|---------|
21
+ | Controller | 接收请求、参数校验、路由分发 | `OrderController` |
22
+ | Service | 业务逻辑、事务管理 | `OrderService` / `OrderServiceImpl` |
23
+ | Mapper | 数据访问(ORM 映射) | `OrderMapper` |
24
+
25
+ ### 标准包结构
26
+
27
+ ```
28
+ [你的包名]/
29
+ ├── controller/ # 控制器
30
+ ├── service/
31
+ │ └── impl/ # 服务实现
32
+ ├── mapper/ # 数据访问层
33
+ ├── entity/ # 实体类
34
+ ├── dto/ # 请求参数对象
35
+ ├── vo/ # 响应视图对象
36
+ ├── enums/ # 枚举常量
37
+ └── config/ # 模块配置
38
+ ```
39
+
40
+ ## 代码示例
41
+
42
+ ### 1. Entity(实体类)
43
+
44
+ ```java
45
+ package [你的包名].entity;
46
+
47
+ import com.baomidou.mybatisplus.annotation.*;
48
+ import lombok.Data;
49
+ import java.time.LocalDateTime;
50
+
51
+ @Data
52
+ @TableName("t_order")
53
+ public class Order {
54
+
55
+ @TableId(type = IdType.ASSIGN_ID)
56
+ private Long id;
57
+
58
+ private String orderNo;
59
+
60
+ private Integer status;
61
+
62
+ private Long amount;
63
+
64
+ @TableField(fill = FieldFill.INSERT)
65
+ private String createBy;
66
+
67
+ @TableField(fill = FieldFill.INSERT)
68
+ private LocalDateTime createTime;
69
+
70
+ @TableField(fill = FieldFill.INSERT_UPDATE)
71
+ private String updateBy;
72
+
73
+ @TableField(fill = FieldFill.INSERT_UPDATE)
74
+ private LocalDateTime updateTime;
75
+
76
+ @TableLogic(value = "0", delval = "1")
77
+ private Integer deleted;
78
+ }
79
+ ```
80
+
81
+ ### 2. DTO(请求参数)
82
+
83
+ ```java
84
+ package [你的包名].dto;
85
+
86
+ import jakarta.validation.constraints.*;
87
+ import lombok.Data;
88
+
89
+ @Data
90
+ public class OrderCreateDTO {
91
+
92
+ @NotBlank(message = "订单号不能为空")
93
+ private String orderNo;
94
+
95
+ @NotNull(message = "金额不能为空")
96
+ @Min(value = 1, message = "金额必须大于0")
97
+ private Long amount;
98
+ }
99
+ ```
100
+
101
+ ```java
102
+ package [你的包名].dto;
103
+
104
+ import lombok.Data;
105
+
106
+ @Data
107
+ public class OrderQueryDTO {
108
+
109
+ private String orderNo;
110
+
111
+ private Integer status;
112
+
113
+ private Integer pageNum = 1;
114
+
115
+ private Integer pageSize = 10;
116
+ }
117
+ ```
118
+
119
+ ### 3. VO(响应对象)
120
+
121
+ ```java
122
+ package [你的包名].vo;
123
+
124
+ import lombok.Data;
125
+ import java.time.LocalDateTime;
126
+
127
+ @Data
128
+ public class OrderVO {
129
+
130
+ private Long id;
131
+
132
+ private String orderNo;
133
+
134
+ private Integer status;
135
+
136
+ private Long amount;
137
+
138
+ private LocalDateTime createTime;
139
+ }
140
+ ```
141
+
142
+ ### 4. Mapper
143
+
144
+ ```java
145
+ package [你的包名].mapper;
146
+
147
+ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
148
+ import [你的包名].entity.Order;
149
+ import org.apache.ibatis.annotations.Mapper;
150
+
151
+ @Mapper
152
+ public interface OrderMapper extends BaseMapper<Order> {
153
+ }
154
+ ```
155
+
156
+ ### 5. Service
157
+
158
+ ```java
159
+ package [你的包名].service;
160
+
161
+ import com.baomidou.mybatisplus.extension.service.IService;
162
+ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
163
+ import [你的包名].entity.Order;
164
+ import [你的包名].dto.OrderCreateDTO;
165
+ import [你的包名].dto.OrderQueryDTO;
166
+ import [你的包名].vo.OrderVO;
167
+
168
+ public interface IOrderService extends IService<Order> {
169
+
170
+ Long createOrder(OrderCreateDTO dto);
171
+
172
+ void updateOrder(Long id, OrderCreateDTO dto);
173
+
174
+ OrderVO getOrderDetail(Long id);
175
+
176
+ Page<OrderVO> pageQuery(OrderQueryDTO query);
177
+ }
178
+ ```
179
+
180
+ ```java
181
+ package [你的包名].service.impl;
182
+
183
+ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
184
+ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
185
+ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
186
+ import [你的包名].dto.OrderCreateDTO;
187
+ import [你的包名].dto.OrderQueryDTO;
188
+ import [你的包名].entity.Order;
189
+ import [你的包名].mapper.OrderMapper;
190
+ import [你的包名].service.IOrderService;
191
+ import [你的包名].vo.OrderVO;
192
+ import lombok.RequiredArgsConstructor;
193
+ import org.springframework.stereotype.Service;
194
+ import org.springframework.transaction.annotation.Transactional;
195
+ import org.springframework.util.StringUtils;
196
+
197
+ @Service
198
+ @RequiredArgsConstructor
199
+ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
200
+
201
+ @Override
202
+ @Transactional(rollbackFor = Exception.class)
203
+ public Long createOrder(OrderCreateDTO dto) {
204
+ Order order = new Order();
205
+ // 使用 [你的对象转换工具] 或手动赋值
206
+ order.setOrderNo(dto.getOrderNo());
207
+ order.setAmount(dto.getAmount());
208
+ order.setStatus(0);
209
+ this.save(order);
210
+ return order.getId();
211
+ }
212
+
213
+ @Override
214
+ @Transactional(rollbackFor = Exception.class)
215
+ public void updateOrder(Long id, OrderCreateDTO dto) {
216
+ Order order = this.getById(id);
217
+ if (order == null) {
218
+ throw new [你的业务异常类]("订单不存在");
219
+ }
220
+ order.setOrderNo(dto.getOrderNo());
221
+ order.setAmount(dto.getAmount());
222
+ this.updateById(order);
223
+ }
224
+
225
+ @Override
226
+ public OrderVO getOrderDetail(Long id) {
227
+ Order order = this.getById(id);
228
+ if (order == null) {
229
+ throw new [你的业务异常类]("订单不存在");
230
+ }
231
+ OrderVO vo = new OrderVO();
232
+ // 使用 [你的对象转换工具] 或手动赋值
233
+ vo.setId(order.getId());
234
+ vo.setOrderNo(order.getOrderNo());
235
+ vo.setStatus(order.getStatus());
236
+ vo.setAmount(order.getAmount());
237
+ vo.setCreateTime(order.getCreateTime());
238
+ return vo;
239
+ }
240
+
241
+ @Override
242
+ public Page<OrderVO> pageQuery(OrderQueryDTO query) {
243
+ Page<Order> page = new Page<>(query.getPageNum(), query.getPageSize());
244
+ LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<Order>()
245
+ .like(StringUtils.hasText(query.getOrderNo()), Order::getOrderNo, query.getOrderNo())
246
+ .eq(query.getStatus() != null, Order::getStatus, query.getStatus())
247
+ .orderByDesc(Order::getCreateTime);
248
+ Page<Order> result = this.page(page, wrapper);
249
+
250
+ // 转换为 VO
251
+ Page<OrderVO> voPage = new Page<>(result.getCurrent(), result.getSize(), result.getTotal());
252
+ voPage.setRecords(result.getRecords().stream().map(order -> {
253
+ OrderVO vo = new OrderVO();
254
+ vo.setId(order.getId());
255
+ vo.setOrderNo(order.getOrderNo());
256
+ vo.setStatus(order.getStatus());
257
+ vo.setAmount(order.getAmount());
258
+ vo.setCreateTime(order.getCreateTime());
259
+ return vo;
260
+ }).toList());
261
+ return voPage;
262
+ }
263
+ }
264
+ ```
265
+
266
+ ### 6. Controller
267
+
268
+ ```java
269
+ package [你的包名].controller;
270
+
271
+ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
272
+ import [你的包名].dto.OrderCreateDTO;
273
+ import [你的包名].dto.OrderQueryDTO;
274
+ import [你的包名].service.IOrderService;
275
+ import [你的包名].vo.OrderVO;
276
+ import jakarta.validation.Valid;
277
+ import lombok.RequiredArgsConstructor;
278
+ import org.springframework.http.ResponseEntity;
279
+ import org.springframework.web.bind.annotation.*;
280
+
281
+ @RestController
282
+ @RequestMapping("/api/v1/orders")
283
+ @RequiredArgsConstructor
284
+ public class OrderController {
285
+
286
+ private final IOrderService orderService;
287
+
288
+ @PostMapping
289
+ public ResponseEntity<Long> create(@Valid @RequestBody OrderCreateDTO dto) {
290
+ return ResponseEntity.ok(orderService.createOrder(dto));
291
+ }
292
+
293
+ @PutMapping("/{id}")
294
+ public ResponseEntity<Void> update(@PathVariable Long id,
295
+ @Valid @RequestBody OrderCreateDTO dto) {
296
+ orderService.updateOrder(id, dto);
297
+ return ResponseEntity.ok().build();
298
+ }
299
+
300
+ @GetMapping("/{id}")
301
+ public ResponseEntity<OrderVO> detail(@PathVariable Long id) {
302
+ return ResponseEntity.ok(orderService.getOrderDetail(id));
303
+ }
304
+
305
+ @GetMapping
306
+ public ResponseEntity<Page<OrderVO>> page(OrderQueryDTO query) {
307
+ return ResponseEntity.ok(orderService.pageQuery(query));
308
+ }
309
+
310
+ @DeleteMapping("/{id}")
311
+ public ResponseEntity<Void> delete(@PathVariable Long id) {
312
+ orderService.removeById(id);
313
+ return ResponseEntity.ok().build();
314
+ }
315
+ }
316
+ ```
317
+
318
+ ## 常见错误
319
+
320
+ | 错误 | 正确做法 |
321
+ |------|---------|
322
+ | Controller 里写业务逻辑 | 业务逻辑放 Service 层 |
323
+ | 直接返回 Entity 给前端 | 使用 VO 封装响应数据 |
324
+ | 用 Map 传递业务数据 | 使用 DTO/VO 强类型对象 |
325
+ | 忘记加 `@Transactional` | 写操作方法加事务注解 |
326
+ | 逻辑删除字段值搞反 | 确认项目约定(通用:0=正常, 1=删除) |
327
+ | 分页参数未设默认值 | DTO 中给 pageNum/pageSize 默认值 |
328
+ | Service 之间循环依赖 | 提取公共 Service 或使用事件机制解耦 |
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: data-permission
3
+ description: |
4
+ 通用行级数据权限设计指南。通过 AOP + MyBatis 拦截器模式实现数据隔离,支持部门权限、本人权限、自定义权限等多种隔离粒度。
5
+ 触发场景:
6
+ - 为业务模块添加行级数据过滤
7
+ - 设计部门级 / 本人级数据隔离
8
+ - 扩展自定义数据权限类型
9
+ - 临时忽略数据权限查全量数据
10
+ - 排查数据权限不生效问题
11
+ 触发词:数据权限、行级权限、数据隔离、部门权限、本人权限、自定义权限、DataScope、DataPermission、数据过滤
12
+ 注意:如果项目有专属技能(如 `leniu-data-permission`),优先使用专属版本。
13
+ ---
14
+
15
+ # 行级数据权限开发指南
16
+
17
+ > 通用模板。如果项目有专属技能(如 `leniu-data-permission`),优先使用。
18
+
19
+ ## 设计原则
20
+
21
+ 1. **对业务透明**:数据权限通过拦截器自动注入 SQL 条件,业务代码无需感知。
22
+ 2. **声明式配置**:通过注解声明字段映射关系,框架自动拼接过滤条件。
23
+ 3. **可扩展**:权限类型(部门、本人、自定义等)可通过枚举或策略模式扩展。
24
+ 4. **安全兜底**:未配置权限范围时默认为"仅本人",避免数据泄露。
25
+
26
+ ---
27
+
28
+ ## 权限类型设计
29
+
30
+ | 类型 | 标识 | SQL 效果 | 适用场景 |
31
+ |------|------|---------|---------|
32
+ | 全部数据 | 1 | 不拼接条件 | 超管、全局数据查看 |
33
+ | 自定义权限 | 2 | `dept_id IN (角色关联的部门ID)` | 跨部门协作 |
34
+ | 本部门 | 3 | `dept_id = ?` | 部门经理 |
35
+ | 本部门及以下 | 4 | `dept_id IN (当前部门及子部门)` | 上级部门 |
36
+ | 仅本人 | 5 | `created_by = ?` | 普通员工 |
37
+ | 部门及以下或本人 | 6 | `dept_id IN (...) OR created_by = ?` | 混合场景 |
38
+
39
+ ---
40
+
41
+ ## 实现模式
42
+
43
+ ### 架构概览
44
+
45
+ ```
46
+ Controller -> Service (加注解) -> Mapper -> MyBatis 拦截器
47
+ |
48
+ 自动注入 WHERE 条件
49
+ |
50
+ [你的权限处理器] (查询当前用户权限范围)
51
+ ```
52
+
53
+ ### 步骤 1:定义注解
54
+
55
+ ```java
56
+ @Target({ElementType.METHOD, ElementType.TYPE})
57
+ @Retention(RetentionPolicy.RUNTIME)
58
+ public @interface DataPermission {
59
+ DataColumn[] value();
60
+ String joinStr() default "AND"; // 多角色权限连接方式
61
+ }
62
+
63
+ @Target(ElementType.ANNOTATION_TYPE)
64
+ @Retention(RetentionPolicy.RUNTIME)
65
+ public @interface DataColumn {
66
+ String key() default "deptName"; // 占位符关键字
67
+ String value() default "dept_id"; // 对应的表字段名
68
+ String permission() default ""; // 拥有此权限则不过滤
69
+ }
70
+ ```
71
+
72
+ ### 步骤 2:实现 MyBatis 拦截器
73
+
74
+ ```java
75
+ @Intercepts({@Signature(type = Executor.class, method = "query", args = {...})})
76
+ public class DataPermissionInterceptor implements Interceptor {
77
+
78
+ @Override
79
+ public Object intercept(Invocation invocation) throws Throwable {
80
+ // 1. 从线程上下文获取 @DataPermission 注解
81
+ // 2. 获取当前用户的角色及数据权限范围
82
+ // 3. 根据权限类型拼接 WHERE 条件
83
+ // 4. 修改原始 SQL,追加过滤条件
84
+ return invocation.proceed();
85
+ }
86
+ }
87
+ ```
88
+
89
+ ### 步骤 3:在 Service / Mapper 上使用
90
+
91
+ ```java
92
+ @Service
93
+ public class OrderServiceImpl implements OrderService {
94
+
95
+ @Autowired
96
+ private OrderMapper orderMapper;
97
+
98
+ // 按部门 + 创建人过滤
99
+ @DataPermission({
100
+ @DataColumn(key = "deptName", value = "dept_id"),
101
+ @DataColumn(key = "userName", value = "created_by")
102
+ })
103
+ @Override
104
+ public List<OrderVo> listWithPermission(OrderQuery query) {
105
+ return orderMapper.selectList(buildWrapper(query));
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### 步骤 4:确保数据库表有权限字段
111
+
112
+ ```sql
113
+ CREATE TABLE biz_order (
114
+ id BIGINT NOT NULL COMMENT '主键',
115
+ -- 业务字段 ...
116
+ dept_id BIGINT DEFAULT NULL COMMENT '所属部门', -- 必须
117
+ created_by BIGINT DEFAULT NULL COMMENT '创建人', -- 必须
118
+ created_time DATETIME DEFAULT CURRENT_TIMESTAMP,
119
+ PRIMARY KEY (id)
120
+ );
121
+ ```
122
+
123
+ ### 多表关联(使用表别名)
124
+
125
+ ```java
126
+ // SQL: SELECT o.*, u.user_name FROM biz_order o LEFT JOIN sys_user u ON ...
127
+ @DataPermission({
128
+ @DataColumn(key = "deptName", value = "o.dept_id"),
129
+ @DataColumn(key = "userName", value = "o.created_by")
130
+ })
131
+ List<OrderVo> selectWithJoin(@Param("query") OrderQuery query);
132
+ ```
133
+
134
+ ### 临时忽略数据权限
135
+
136
+ ```java
137
+ // 使用工具类忽略权限过滤,查全量数据
138
+ Long total = [你的权限工具类].ignore(() -> orderService.count());
139
+
140
+ // 无返回值
141
+ [你的权限工具类].ignore(() -> {
142
+ configService.refreshAll();
143
+ return null;
144
+ });
145
+ ```
146
+
147
+ ### 指定权限标识跳过过滤
148
+
149
+ ```java
150
+ // 拥有 order:all 权限的角色不过滤
151
+ @DataPermission({
152
+ @DataColumn(key = "deptName", value = "dept_id", permission = "order:all")
153
+ })
154
+ ```
155
+
156
+ ---
157
+
158
+ ## 选型建议
159
+
160
+ | 方案 | 优点 | 缺点 | 适用场景 |
161
+ |------|------|------|---------|
162
+ | MyBatis 拦截器 | 对业务透明、自动注入 | 依赖 MyBatis | 绝大多数 Java Web 项目 |
163
+ | AOP + SQL 改写 | 框架无关 | 需自行解析 SQL | 非 MyBatis 项目 |
164
+ | 数据库视图 | 完全透明 | 难以动态切换 | 权限固定的场景 |
165
+ | 应用层过滤 | 实现简单 | 性能差(全量查出再过滤) | 数据量小 |
166
+
167
+ ### 多角色权限计算
168
+
169
+ - **SELECT 查询**:多角色权限用 `OR` 连接(并集,看到更多数据)
170
+ - **UPDATE / DELETE**:多角色权限用 `AND` 连接(交集,更安全)
171
+
172
+ ---
173
+
174
+ ## 常见错误
175
+
176
+ ```java
177
+ // 1. 注解放在 Controller 层(无效,拦截器在 Mapper 执行前生效)
178
+ @Controller
179
+ public class OrderController {
180
+ @DataPermission({...}) // 无效!应在 Service 或 Mapper 上
181
+ public Result<?> list() { }
182
+ }
183
+
184
+ // 2. 表别名不匹配
185
+ @DataColumn(key = "deptName", value = "user.dept_id") // SQL 中别名是 u
186
+ // 应为 value = "u.dept_id"
187
+
188
+ // 3. 在权限服务内部调用带权限的方法(死循环)
189
+ public String getDeptAndChild(Long deptId) {
190
+ deptService.list(wrapper); // 如果 list 也带 @DataPermission -> 死循环
191
+ // 应直接用 Mapper 或 ignore() 包装
192
+ }
193
+
194
+ // 4. 忘记在表中添加部门/创建人字段
195
+ // 没有 dept_id / created_by 字段,权限 SQL 会报错
196
+
197
+ // 5. 超级管理员测试数据权限
198
+ // 超管通常跳过权限过滤,应使用普通用户账号测试
199
+
200
+ // 6. @DataPermission 注解为空
201
+ @DataPermission // 空注解,无 @DataColumn 映射,不会生效
202
+ ```
203
+
204
+ ### 问题排查
205
+
206
+ | 检查项 | 可能原因 | 解决方案 |
207
+ |--------|---------|---------|
208
+ | 超级管理员? | 超管自动跳过权限 | 用普通用户测试 |
209
+ | 角色数据范围? | 范围为"全部数据" | 修改角色数据权限配置 |
210
+ | 注解位置? | 不在 Service / Mapper 层 | 移动注解到正确位置 |
211
+ | 表别名? | value 别名与 SQL 不一致 | 检查并修正别名 |
212
+ | Unknown column? | 表中没有该字段 | 检查数据库表结构 |
213
+
214
+ **调试**:开启 SQL 日志查看拼接结果
215
+
216
+ ```yaml
217
+ # MyBatis SQL 日志
218
+ logging:
219
+ level:
220
+ [你的Mapper包路径]: debug
221
+ ```
@@ -0,0 +1,90 @@
1
+ # 扩展自定义数据权限类型 - 完整指南
2
+
3
+ ## 步骤 1:修改 DataScopeType 枚举
4
+
5
+ 位置:`ruoyi-common-mybatis/.../enums/DataScopeType.java`
6
+
7
+ ```java
8
+ public enum DataScopeType {
9
+
10
+ // ... 现有类型 ...
11
+
12
+ /**
13
+ * 按区域过滤(自定义类型示例)
14
+ */
15
+ REGION("7", "按区域", "#{#regionName} IN ( #{@sdss.getUserRegions( #user.userId )} )"),
16
+ ;
17
+
18
+ // ... 其他代码 ...
19
+ }
20
+ ```
21
+
22
+ ## 步骤 2:在 ISysDataScopeService 中添加方法
23
+
24
+ ```java
25
+ // 接口
26
+ public interface ISysDataScopeService {
27
+ // ... 现有方法 ...
28
+
29
+ /**
30
+ * 获取用户关联的区域ID列表
31
+ */
32
+ String getUserRegions(Long userId);
33
+ }
34
+
35
+ // 实现
36
+ @Service("sdss")
37
+ public class SysDataScopeServiceImpl implements ISysDataScopeService {
38
+
39
+ @Override
40
+ @Cacheable(cacheNames = CacheNames.SYS_USER_REGIONS, key = "#userId")
41
+ public String getUserRegions(Long userId) {
42
+ List<Long> regionIds = userRegionMapper.selectRegionIdsByUserId(userId);
43
+ if (CollUtil.isEmpty(regionIds)) {
44
+ return "-1"; // 返回 -1 表示无权限
45
+ }
46
+ return StringUtils.join(regionIds, ",");
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## 步骤 3:使用新权限类型
52
+
53
+ ```java
54
+ @DataPermission({
55
+ @DataColumn(key = "regionName", value = "region_id")
56
+ })
57
+ @Override
58
+ public List<Store> listByRegion(StoreBo bo) {
59
+ return list(buildQueryWrapper(bo));
60
+ }
61
+ ```
62
+
63
+ ## 添加自定义变量
64
+
65
+ 通过 `DataPermissionHelper` 设置自定义变量供 SpEL 表达式使用。
66
+
67
+ ```java
68
+ @Service
69
+ @RequiredArgsConstructor
70
+ public class OrderServiceImpl implements IOrderService {
71
+
72
+ private final OrderMapper baseMapper;
73
+
74
+ @Override
75
+ public TableDataInfo<OrderVo> pageByShop(Long shopId, OrderBo bo, PageQuery pageQuery) {
76
+ // 设置自定义变量(请求结束后 SaStorage 自动清理,无需手动移除)
77
+ DataPermissionHelper.setVariable("shopId", shopId);
78
+ return pageWithPermission(bo, pageQuery);
79
+ }
80
+
81
+ @DataPermission({
82
+ @DataColumn(key = "shopId", value = "shop_id")
83
+ })
84
+ private TableDataInfo<OrderVo> pageWithPermission(OrderBo bo, PageQuery pageQuery) {
85
+ LambdaQueryWrapper<Order> lqw = buildQueryWrapper(bo);
86
+ Page<OrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
87
+ return TableDataInfo.build(result);
88
+ }
89
+ }
90
+ ```