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,714 @@
1
+ # 工作流开发指南
2
+
3
+ > **重要提示**: 本项目是 RuoYi-Vue-Plus **纯后端项目**,采用**三层架构**。
4
+ > 工作流模块基于 **WarmFlow** 实现,提供流程定义、流程实例、任务管理等功能。
5
+
6
+ 最后更新: 2026-02-09
7
+
8
+ ---
9
+
10
+ ## 🏗️ 核心架构
11
+
12
+ ### 模块信息
13
+
14
+ | 项目 | 规范 |
15
+ |------|------|
16
+ | **模块位置** | `ruoyi-modules/ruoyi-workflow/` |
17
+ | **包路径** | `org.dromara.workflow` |
18
+ | **表前缀** | `flow_` |
19
+ | **架构** | 三层:Controller → Service → Mapper(无 DAO 层) |
20
+ | **工作流引擎** | WarmFlow |
21
+
22
+ ### 架构图
23
+
24
+ ```
25
+ ┌─────────────────────────────────────────────────────────────────┐
26
+ │ Controller Layer │
27
+ │ FlwTaskController | FlwInstanceController | FlwDefinitionController
28
+ │ FlwCategoryController | FlwSpelController | TestLeaveController │
29
+ └─────────────────────────────┬───────────────────────────────────┘
30
+
31
+ ┌─────────────────────────────▼───────────────────────────────────┐
32
+ │ Service Layer │
33
+ │ FlwTaskService | FlwInstanceService | FlwDefinitionService │
34
+ │ FlwCategoryService | FlwSpelService | TestLeaveService │
35
+ │ │ │
36
+ │ ┌───────────────────────────▼─────────────────────────────────┐│
37
+ │ │ WarmFlow Core (FlowEngine) ││
38
+ │ │ TaskService | InsService | DefService | NodeService ││
39
+ │ └─────────────────────────────────────────────────────────────┘│
40
+ └─────────────────────────────┬───────────────────────────────────┘
41
+
42
+ ┌─────────────────────────────▼───────────────────────────────────┐
43
+ │ Mapper Layer │
44
+ │ FlwCategoryMapper | FlwSpelMapper | TestLeaveMapper │
45
+ │ FlwInstanceMapper | FlwTaskMapper | FlwInstanceBizExtMapper │
46
+ └─────────────────────────────┬───────────────────────────────────┘
47
+
48
+ ┌─────────────────────────────▼───────────────────────────────────┐
49
+ │ Listener & Handler │
50
+ │ WorkflowGlobalListener (任务监听) | FlowProcessEventHandler (事件发布)
51
+ └─────────────────────────────────────────────────────────────────┘
52
+ ```
53
+
54
+ ---
55
+
56
+ ## 📁 模块目录结构
57
+
58
+ ```
59
+ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/
60
+ ├── controller/
61
+ │ ├── FlwTaskController.java # 任务管理
62
+ │ ├── FlwInstanceController.java # 实例管理
63
+ │ ├── FlwDefinitionController.java # 流程定义
64
+ │ ├── FlwCategoryController.java # 流程分类
65
+ │ ├── FlwSpelController.java # SpEL表达式
66
+ │ └── TestLeaveController.java # 请假示例
67
+ ├── service/
68
+ │ ├── IFlwTaskService.java
69
+ │ ├── IFlwInstanceService.java
70
+ │ ├── IFlwDefinitionService.java
71
+ │ ├── IFlwCategoryService.java
72
+ │ ├── IFlwSpelService.java
73
+ │ ├── IFlwTaskAssigneeService.java
74
+ │ ├── IFlwNodeExtService.java
75
+ │ ├── IFlwCommonService.java
76
+ │ ├── ITestLeaveService.java
77
+ │ └── impl/
78
+ │ ├── FlwTaskServiceImpl.java
79
+ │ ├── FlwInstanceServiceImpl.java
80
+ │ ├── FlwDefinitionServiceImpl.java
81
+ │ ├── FlwCategoryServiceImpl.java
82
+ │ ├── FlwSpelServiceImpl.java
83
+ │ ├── FlwTaskAssigneeServiceImpl.java
84
+ │ ├── FlwNodeExtServiceImpl.java
85
+ │ ├── FlwCommonServiceImpl.java
86
+ │ ├── TestLeaveServiceImpl.java
87
+ │ └── WorkflowServiceImpl.java # 通用工作流服务
88
+ ├── mapper/ # Mapper 层(非 DAO)
89
+ │ ├── FlwCategoryMapper.java
90
+ │ ├── FlwSpelMapper.java
91
+ │ ├── FlwTaskMapper.java
92
+ │ ├── FlwInstanceMapper.java
93
+ │ ├── FlwInstanceBizExtMapper.java
94
+ │ └── TestLeaveMapper.java
95
+ ├── listener/
96
+ │ └── WorkflowGlobalListener.java # 全局监听器
97
+ ├── handler/
98
+ │ ├── FlowProcessEventHandler.java # 事件发布
99
+ │ └── WorkflowPermissionHandler.java # 权限处理
100
+ ├── rule/
101
+ │ └── SpelRuleComponent.java # SpEL 规则组件
102
+ ├── domain/
103
+ │ ├── FlowCategory.java
104
+ │ ├── FlowSpel.java
105
+ │ ├── FlowInstanceBizExt.java
106
+ │ ├── TestLeave.java
107
+ │ ├── bo/ # 业务对象
108
+ │ │ ├── StartProcessBo.java
109
+ │ │ ├── CompleteTaskBo.java
110
+ │ │ ├── BackProcessBo.java
111
+ │ │ ├── TaskOperationBo.java
112
+ │ │ └── ...
113
+ │ └── vo/ # 视图对象
114
+ │ ├── FlowTaskVo.java
115
+ │ ├── FlowHisTaskVo.java
116
+ │ ├── FlowInstanceVo.java
117
+ │ └── ...
118
+ ├── config/
119
+ │ └── WarmFlowConfig.java # WarmFlow 配置
120
+ └── common/
121
+ ├── ConditionalOnEnable.java # 条件注解
122
+ ├── constant/
123
+ │ └── FlowConstant.java # 常量
124
+ └── enums/
125
+ ├── TaskStatusEnum.java # 任务状态
126
+ ├── TaskAssigneeEnum.java # 办理人类型
127
+ ├── TaskAssigneeType.java # 办理人类型扩展
128
+ ├── MessageTypeEnum.java # 消息类型
129
+ ├── ButtonPermissionEnum.java # 按钮权限
130
+ ├── CopySettingEnum.java # 抄送设置
131
+ ├── NodeExtEnum.java # 节点扩展
132
+ └── VariablesEnum.java # 变量枚举
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 🔧 核心组件
138
+
139
+ ### 1. FlowEngine 服务访问
140
+
141
+ ```java
142
+ import org.dromara.warm.flow.core.FlowEngine;
143
+
144
+ // 任务服务
145
+ FlowEngine.taskService()
146
+
147
+ // 实例服务
148
+ FlowEngine.insService()
149
+
150
+ // 流程定义服务
151
+ FlowEngine.defService()
152
+
153
+ // 节点服务
154
+ FlowEngine.nodeService()
155
+
156
+ // 历史任务服务
157
+ FlowEngine.hisTaskService()
158
+
159
+ // 用户服务
160
+ FlowEngine.userService()
161
+ ```
162
+
163
+ ### 2. 任务状态枚举
164
+
165
+ ```java
166
+ package org.dromara.workflow.common.enums;
167
+
168
+ public enum TaskStatusEnum {
169
+ CANCEL("cancel", "撤销"),
170
+ PASS("pass", "通过"),
171
+ WAITING("waiting", "待审核"),
172
+ INVALID("invalid", "作废"),
173
+ BACK("back", "退回"),
174
+ TERMINATION("termination", "终止"),
175
+ TRANSFER("transfer", "转办"),
176
+ DEPUTE("depute", "委托"),
177
+ COPY("copy", "抄送"),
178
+ SIGN("sign", "加签"),
179
+ SIGN_OFF("sign_off", "减签"),
180
+ TIMEOUT("timeout", "超时");
181
+
182
+ private final String status;
183
+ private final String desc;
184
+
185
+ // 判断状态是否为通过或退回
186
+ public static boolean isPassOrBack(String status) {
187
+ return PASS.getStatus().equals(status) || BACK.getStatus().equals(status);
188
+ }
189
+ }
190
+ ```
191
+
192
+ ### 3. 办理人类型枚举
193
+
194
+ > ⚠️ **注意**:USER 和 SPEL 类型没有前缀!
195
+
196
+ ```java
197
+ package org.dromara.workflow.common.enums;
198
+
199
+ public enum TaskAssigneeEnum {
200
+ USER("用户", ""), // ⚠️ 用户没有前缀
201
+ ROLE("角色", "role:"),
202
+ DEPT("部门", "dept:"),
203
+ POST("岗位", "post:"),
204
+ SPEL("SpEL表达式", ""); // ⚠️ SpEL 没有前缀,通过 $ 或 # 开头判断
205
+
206
+ private final String desc;
207
+ private final String code;
208
+
209
+ // 判断是否为 SPEL 表达式(以 $ 或 # 开头)
210
+ public static boolean isSpelExpression(String value) {
211
+ return StringUtils.startsWith(value, "$") || StringUtils.startsWith(value, "#");
212
+ }
213
+ }
214
+ ```
215
+
216
+ **storageId 格式示例**:
217
+ ```
218
+ 123 → 用户ID 123(无前缀)
219
+ role:456 → 角色ID 456
220
+ dept:789 → 部门ID 789
221
+ post:101 → 岗位ID 101
222
+ #{expression} → SpEL表达式(# 开头)
223
+ ${variable} → 默认变量策略($ 开头)
224
+ ```
225
+
226
+ ### 4. 流程常量
227
+
228
+ ```java
229
+ package org.dromara.workflow.common.constant;
230
+
231
+ public interface FlowConstant {
232
+ // 基础常量
233
+ String INITIATOR = "initiator"; // 流程发起人
234
+ String INITIATOR_DEPT_ID = "initiatorDeptId"; // 发起人部门ID
235
+ String BUSINESS_ID = "businessId"; // 业务ID
236
+ String BUSINESS_CODE = "businessCode"; // 业务编码
237
+ String SUBMIT = "submit"; // 申请人提交标识
238
+
239
+ // 任务操作类型
240
+ String DELEGATE_TASK = "delegateTask"; // 委托任务
241
+ String TRANSFER_TASK = "transferTask"; // 转办任务
242
+ String ADD_SIGNATURE = "addSignature"; // 加签
243
+ String REDUCTION_SIGNATURE = "reductionSignature"; // 减签
244
+
245
+ // 抄送与消息
246
+ String FLOW_COPY_LIST = "flowCopyList"; // 抄送人列表
247
+ String MESSAGE_TYPE = "messageType"; // 消息类型
248
+ String MESSAGE_NOTICE = "messageNotice"; // 消息内容
249
+
250
+ // 自动化配置
251
+ String AUTO_PASS = "autoPass"; // 自动通过标识
252
+
253
+ // 忽略标识
254
+ String VAR_IGNORE = "ignore"; // 忽略办理权限校验
255
+ }
256
+ ```
257
+
258
+ ---
259
+
260
+ ## 📋 常用操作
261
+
262
+ ### 1. 启动流程
263
+
264
+ ```java
265
+ @Autowired
266
+ private IFlwTaskService flwTaskService;
267
+
268
+ // 方式一:使用 FlwTaskService
269
+ public void startProcess() {
270
+ StartProcessBo bo = new StartProcessBo();
271
+ bo.setFlowCode("leave_apply"); // 流程编码
272
+ bo.setBusinessId("order_123"); // 业务ID
273
+ bo.setVariables(Map.of("amount", 1000)); // 流程变量
274
+
275
+ StartProcessReturnDTO result = flwTaskService.startWorkFlow(bo);
276
+ Long instanceId = result.getProcessInstanceId();
277
+ Long taskId = result.getTaskId();
278
+ }
279
+ ```
280
+
281
+ ```java
282
+ @Autowired
283
+ private WorkflowService workflowService;
284
+
285
+ // 方式二:使用 WorkflowService(供其他模块调用)
286
+ public void startProcess() {
287
+ StartProcessDTO dto = new StartProcessDTO();
288
+ dto.setFlowCode("leave_apply");
289
+ dto.setBusinessId("order_123");
290
+ dto.setVariables(Map.of("amount", 1000));
291
+
292
+ StartProcessReturnDTO result = workflowService.startWorkFlow(dto);
293
+ }
294
+ ```
295
+
296
+ ### 2. 办理任务
297
+
298
+ ```java
299
+ public void completeTask() {
300
+ CompleteTaskBo bo = new CompleteTaskBo();
301
+ bo.setTaskId(taskId); // 任务ID
302
+ bo.setMessage("同意"); // 审批意见
303
+ bo.setVariables(Map.of("approved", true)); // 流程变量
304
+
305
+ // 指定下一节点办理人(可选)
306
+ bo.setAssigneeMap(Map.of(
307
+ "pass:nodeCode", "user:1,user:2"
308
+ ));
309
+
310
+ flwTaskService.completeTask(bo);
311
+ }
312
+ ```
313
+
314
+ ### 3. 驳回任务
315
+
316
+ ```java
317
+ public void rejectTask() {
318
+ BackProcessBo bo = new BackProcessBo();
319
+ bo.setTaskId(taskId);
320
+ bo.setNodeCode("apply_node"); // 驳回到的节点
321
+ bo.setMessage("资料不完整");
322
+
323
+ flwTaskService.backProcess(bo);
324
+ }
325
+ ```
326
+
327
+ ### 4. 转办/委派
328
+
329
+ ```java
330
+ // 转办(转给他人办理,自己不再参与)
331
+ TaskOperationBo transferBo = new TaskOperationBo();
332
+ transferBo.setTaskId(taskId);
333
+ transferBo.setUserId("targetUserId");
334
+ transferBo.setMessage("转交处理");
335
+ flwTaskService.taskOperation(transferBo, FlowConstant.TRANSFER_TASK);
336
+
337
+ // 委派(委托他人代办,最终还需自己确认)
338
+ TaskOperationBo deputeBo = new TaskOperationBo();
339
+ deputeBo.setTaskId(taskId);
340
+ deputeBo.setUserId("targetUserId");
341
+ deputeBo.setMessage("请协助处理");
342
+ flwTaskService.taskOperation(deputeBo, FlowConstant.DELEGATE_TASK);
343
+ ```
344
+
345
+ ### 5. 加签/减签
346
+
347
+ ```java
348
+ // 加签(增加办理人)
349
+ TaskOperationBo addBo = new TaskOperationBo();
350
+ addBo.setTaskId(taskId);
351
+ addBo.setUserIds(List.of("user1", "user2"));
352
+ addBo.setMessage("增加会签人员");
353
+ flwTaskService.taskOperation(addBo, FlowConstant.ADD_SIGNATURE);
354
+
355
+ // 减签(减少办理人)
356
+ TaskOperationBo reduceBo = new TaskOperationBo();
357
+ reduceBo.setTaskId(taskId);
358
+ reduceBo.setUserIds(List.of("user1"));
359
+ reduceBo.setMessage("减少会签人员");
360
+ flwTaskService.taskOperation(reduceBo, FlowConstant.REDUCTION_SIGNATURE);
361
+ ```
362
+
363
+ ### 6. 查询待办/已办任务
364
+
365
+ ```java
366
+ @Autowired
367
+ private IFlwTaskService flwTaskService;
368
+
369
+ // 查询当前用户待办任务
370
+ public TableDataInfo<FlowTaskVo> getTodoList(FlowTaskBo bo, PageQuery pageQuery) {
371
+ return flwTaskService.pageByTaskWait(bo, pageQuery);
372
+ }
373
+
374
+ // 查询当前用户已办任务
375
+ public TableDataInfo<FlowHisTaskVo> getDoneList(FlowTaskBo bo, PageQuery pageQuery) {
376
+ return flwTaskService.pageByTaskFinish(bo, pageQuery);
377
+ }
378
+
379
+ // 查询所有待办任务(管理员)
380
+ public TableDataInfo<FlowTaskVo> getAllTodoList(FlowTaskBo bo, PageQuery pageQuery) {
381
+ return flwTaskService.pageByAllTaskWait(bo, pageQuery);
382
+ }
383
+
384
+ // 查询抄送任务
385
+ public TableDataInfo<FlowTaskVo> getCopyList(FlowTaskBo bo, PageQuery pageQuery) {
386
+ return flwTaskService.pageByTaskCopy(bo, pageQuery);
387
+ }
388
+ ```
389
+
390
+ ---
391
+
392
+ ## 🎯 业务集成
393
+
394
+ ### 1. 监听流程事件
395
+
396
+ > 事件类位于 `org.dromara.common.core.domain.event` 包
397
+
398
+ ```java
399
+ import org.springframework.context.event.EventListener;
400
+ import org.dromara.common.core.domain.event.ProcessEvent;
401
+ import org.dromara.common.core.domain.event.ProcessTaskEvent;
402
+ import org.dromara.common.core.domain.event.ProcessDeleteEvent;
403
+
404
+ @Component
405
+ public class OrderWorkflowListener {
406
+
407
+ /**
408
+ * 监听流程状态变更
409
+ */
410
+ @EventListener(condition = "#event.flowCode == 'order_approve'")
411
+ public void onProcessEvent(ProcessEvent event) {
412
+ String businessId = event.getBusinessId();
413
+ String status = event.getStatus();
414
+ boolean isSubmit = event.isSubmit();
415
+
416
+ // 申请人提交
417
+ if (isSubmit) {
418
+ orderService.updateStatus(businessId, "PENDING");
419
+ return;
420
+ }
421
+
422
+ // 根据流程状态更新业务数据
423
+ switch (status) {
424
+ case "finish" -> orderService.updateStatus(businessId, "APPROVED");
425
+ case "back" -> orderService.updateStatus(businessId, "REJECTED");
426
+ case "cancel" -> orderService.updateStatus(businessId, "CANCELLED");
427
+ case "termination" -> orderService.updateStatus(businessId, "TERMINATED");
428
+ case "invalid" -> orderService.updateStatus(businessId, "INVALID");
429
+ }
430
+ }
431
+
432
+ /**
433
+ * 监听任务创建(发送通知)
434
+ */
435
+ @EventListener(condition = "#event.flowCode == 'order_approve'")
436
+ public void onTaskCreated(ProcessTaskEvent event) {
437
+ Long taskId = event.getTaskId();
438
+ String businessId = event.getBusinessId();
439
+ // 获取待办人并发送通知
440
+ sendNotification(taskId);
441
+ }
442
+
443
+ /**
444
+ * 监听流程删除
445
+ */
446
+ @EventListener(condition = "#event.flowCode == 'order_approve'")
447
+ public void onProcessDeleted(ProcessDeleteEvent event) {
448
+ String businessId = event.getBusinessId();
449
+ // 清理业务相关数据
450
+ orderService.cleanupWorkflowData(businessId);
451
+ }
452
+ }
453
+ ```
454
+
455
+ ### 2. 事件类型说明
456
+
457
+ | 事件类 | 触发时机 | 主要字段 |
458
+ |-------|---------|---------|
459
+ | `ProcessEvent` | 流程状态变更(提交、通过、驳回、撤销、终止、作废、完成) | flowCode, businessId, status, submit |
460
+ | `ProcessTaskEvent` | 任务创建时 | flowCode, businessId, taskId, nodeCode |
461
+ | `ProcessDeleteEvent` | 流程删除时 | flowCode, businessId |
462
+
463
+ ### 3. 完整业务集成示例
464
+
465
+ ```java
466
+ @Service
467
+ @RequiredArgsConstructor
468
+ public class LeaveServiceImpl implements ILeaveService {
469
+
470
+ private final LeaveMapper baseMapper; // ✅ 三层架构,直接注入 Mapper
471
+ private final WorkflowService workflowService;
472
+
473
+ @Override
474
+ @Transactional(rollbackFor = Exception.class)
475
+ public boolean submitLeave(LeaveBo bo) {
476
+ // 1. 保存业务数据
477
+ Leave leave = MapstructUtils.convert(bo, Leave.class); // ✅ 使用 MapstructUtils
478
+ baseMapper.insert(leave);
479
+
480
+ // 2. 启动流程
481
+ StartProcessDTO startProcess = new StartProcessDTO();
482
+ startProcess.setBusinessId(String.valueOf(leave.getId()));
483
+ startProcess.setFlowCode("leave");
484
+ startProcess.setVariables(Map.of(
485
+ "days", leave.getDays(),
486
+ "reason", leave.getReason()
487
+ ));
488
+
489
+ StartProcessReturnDTO result = workflowService.startWorkFlow(startProcess);
490
+
491
+ // 3. 办理第一个任务(申请人节点)
492
+ workflowService.completeTask(result.getTaskId(), "提交申请");
493
+
494
+ return true;
495
+ }
496
+ }
497
+ ```
498
+
499
+ ---
500
+
501
+ ## 📡 消息通知
502
+
503
+ ### 通知类型
504
+
505
+ ```java
506
+ package org.dromara.workflow.common.enums;
507
+
508
+ public enum MessageTypeEnum {
509
+ SYSTEM_MESSAGE("system", "系统消息(SSE推送)"),
510
+ EMAIL_MESSAGE("email", "邮件"),
511
+ SMS_MESSAGE("sms", "短信");
512
+ }
513
+ ```
514
+
515
+ ### 配置消息通知
516
+
517
+ 在流程变量中设置:
518
+
519
+ ```java
520
+ Map<String, Object> variable = new HashMap<>();
521
+ variable.put(FlowConstant.MESSAGE_TYPE, List.of("system", "email")); // SSE + 邮件
522
+ variable.put(FlowConstant.MESSAGE_NOTICE, "您有新的审批任务");
523
+ ```
524
+
525
+ ---
526
+
527
+ ## 🌐 API 接口
528
+
529
+ ### 任务管理 (/workflow/task)
530
+
531
+ | 接口 | 方法 | 说明 |
532
+ |------|------|------|
533
+ | `/startWorkFlow` | POST | 启动流程 |
534
+ | `/completeTask` | POST | 办理任务 |
535
+ | `/pageByTaskWait` | GET | 当前用户待办任务 |
536
+ | `/pageByTaskFinish` | GET | 当前用户已办任务 |
537
+ | `/pageByAllTaskWait` | GET | 所有待办任务 |
538
+ | `/pageByAllTaskFinish` | GET | 所有已办任务 |
539
+ | `/pageByTaskCopy` | GET | 抄送任务列表 |
540
+ | `/getTask/{taskId}` | GET | 获取任务详情 |
541
+ | `/getNextNodeList` | POST | 获取下一节点列表 |
542
+ | `/backProcess` | POST | 驳回任务 |
543
+ | `/getBackTaskNode/{definitionId}/{nodeCode}` | GET | 获取可驳回节点 |
544
+ | `/terminationTask` | POST | 终止流程 |
545
+ | `/taskOperation/{type}` | POST | 任务操作(委托/转办/加签/减签) |
546
+ | `/currentTaskAllUser/{taskId}` | GET | 获取任务所有办理人 |
547
+ | `/updateAssignee/{userId}` | PUT | 修改任务办理人 |
548
+ | `/urgeTask` | POST | 催办任务 |
549
+
550
+ ### 实例管理 (/workflow/instance)
551
+
552
+ | 接口 | 方法 | 说明 |
553
+ |------|------|------|
554
+ | `/pageRunningInstance` | GET | 运行中的流程实例 |
555
+ | `/pageFinishInstance` | GET | 已完成的流程实例 |
556
+ | `/pageCurrentInstance` | GET | 当前用户发起的流程 |
557
+ | `/queryByBusinessId/{businessId}` | GET | 根据业务ID查询实例 |
558
+ | `/flowHisTaskList/{businessId}` | GET | 获取审批历史 |
559
+ | `/cancelProcessApply` | POST | 撤销流程 |
560
+ | `/processInvalid` | POST | 作废流程 |
561
+ | `/deleteInstance` | DELETE | 删除流程实例 |
562
+ | `/deleteHisInstance` | DELETE | 删除已完成的流程实例 |
563
+ | `/instanceVariable/{instanceId}` | GET | 获取流程变量 |
564
+ | `/updateVariable` | PUT | 更新流程变量 |
565
+
566
+ ### 流程定义 (/workflow/definition)
567
+
568
+ | 接口 | 方法 | 说明 |
569
+ |------|------|------|
570
+ | `/pageDefinitions` | GET | 已发布的流程定义 |
571
+ | `/pageUnPublishDefinitions` | GET | 未发布的流程定义 |
572
+ | `/publish/{id}` | PUT | 发布流程定义 |
573
+ | `/importJson` | POST | 导入流程定义 |
574
+ | `/exportDef/{id}` | GET | 导出流程定义 |
575
+ | `/removeDef` | DELETE | 删除流程定义 |
576
+
577
+ ### 流程分类 (/workflow/category)
578
+
579
+ | 接口 | 方法 | 说明 |
580
+ |------|------|------|
581
+ | `/list` | GET | 分页查询分类 |
582
+ | `/{id}` | GET | 获取分类详情 |
583
+ | `` | POST | 新增分类 |
584
+ | `` | PUT | 修改分类 |
585
+ | `/{ids}` | DELETE | 删除分类 |
586
+
587
+ ---
588
+
589
+ ## 🔄 全局监听器
590
+
591
+ `WorkflowGlobalListener` 实现 `GlobalListener` 接口:
592
+
593
+ ```java
594
+ @Component
595
+ public class WorkflowGlobalListener implements GlobalListener {
596
+
597
+ @Override
598
+ public void create(ListenerVariable listenerVariable) {
599
+ // 任务创建时执行
600
+ }
601
+
602
+ @Override
603
+ public void start(ListenerVariable listenerVariable) {
604
+ // 任务开始办理时执行
605
+ // 处理:抄送设置、自定义变量
606
+ }
607
+
608
+ @Override
609
+ public void assignment(ListenerVariable listenerVariable) {
610
+ // 分派监听器,动态修改待办任务办理人
611
+ // 处理:指定办理人、申请节点办理人设置
612
+ }
613
+
614
+ @Override
615
+ public void finish(ListenerVariable listenerVariable) {
616
+ // 任务完成后执行
617
+ // 处理:状态更新、消息通知、抄送、事件发布
618
+ }
619
+ }
620
+ ```
621
+
622
+ ---
623
+
624
+ ## ✅ 检查清单
625
+
626
+ - [ ] 是否正确使用 `FlowEngine` 访问核心服务?
627
+ - [ ] 是否使用 `ProcessEvent`/`ProcessTaskEvent` 监听流程状态变更?
628
+ - [ ] 是否正确配置办理人(注意:用户ID无前缀,角色/部门/岗位有前缀)?
629
+ - [ ] 是否在业务模块中正确集成 `WorkflowService`?
630
+ - [ ] 是否处理了流程各状态(通过、驳回、撤销、终止)的业务逻辑?
631
+ - [ ] 是否使用 `MapstructUtils.convert()` 进行对象转换?
632
+ - [ ] Service 是否直接注入 Mapper(无 DAO 层)?
633
+
634
+ ---
635
+
636
+ ## ❓ 常见问题
637
+
638
+ ### Q1: 用户ID和角色ID在办理人配置中的区别?
639
+
640
+ ```java
641
+ // ✅ 用户ID - 无前缀
642
+ "123" // 直接是用户ID
643
+
644
+ // ✅ 角色ID - 有 role: 前缀
645
+ "role:456" // 角色ID
646
+
647
+ // ✅ 部门ID - 有 dept: 前缀
648
+ "dept:789" // 部门ID
649
+
650
+ // ✅ 岗位ID - 有 post: 前缀
651
+ "post:101" // 岗位ID
652
+ ```
653
+
654
+ ### Q2: 如何判断是否为 SpEL 表达式?
655
+
656
+ ```java
657
+ // SpEL 表达式以 # 或 $ 开头
658
+ TaskAssigneeEnum.isSpelExpression("#{initiator}") // true
659
+ TaskAssigneeEnum.isSpelExpression("${deptLeader}") // true
660
+ TaskAssigneeEnum.isSpelExpression("user:123") // false
661
+ ```
662
+
663
+ ### Q3: 如何忽略办理权限校验?
664
+
665
+ ```java
666
+ Map<String, Object> variable = new HashMap<>();
667
+ variable.put(FlowConstant.VAR_IGNORE, true); // 忽略办理权限校验
668
+ ```
669
+
670
+ ### Q4: 如何实现自动审批?
671
+
672
+ 在流程变量中设置 `autoPass: true`,当办理人是发起人自己时,系统会自动通过该节点。
673
+
674
+ ### Q5: 如何动态指定办理人?
675
+
676
+ 1. 使用流程变量:`variables.put("nextAssignee", userId)`
677
+ 2. 使用 SpEL 表达式:配置办理人为 `#{nextAssignee}`
678
+ 3. 在办理时指定:通过 `assigneeMap` 指定下一步办理人
679
+
680
+ ---
681
+
682
+ ## 🎯 最佳实践
683
+
684
+ ### ✅ 应该做
685
+
686
+ - ✅ 业务ID 使用雪花ID,确保唯一性
687
+ - ✅ 流程编码使用有意义的英文命名(如 `leave`、`expense`)
688
+ - ✅ 通过事件监听机制同步业务状态
689
+ - ✅ 使用 `@Transactional` 确保业务数据和流程数据的一致性
690
+ - ✅ 使用 `MapstructUtils.convert()` 进行对象转换
691
+ - ✅ Service 层直接注入 Mapper(三层架构)
692
+
693
+ ### ❌ 不应该做
694
+
695
+ - ❌ 不要在业务代码中直接操作 WarmFlow 的底层 API
696
+ - ❌ 不要在流程变量中存储敏感信息
697
+ - ❌ 不要频繁查询流程状态,使用事件驱动
698
+ - ❌ 不要使用 BeanUtils 进行对象转换
699
+ - ❌ 不要创建 DAO 层(本项目是三层架构)
700
+
701
+ ---
702
+
703
+ ## 📚 参考实现
704
+
705
+ | 类型 | 参考文件 |
706
+ |------|---------|
707
+ | 请假示例 Controller | `org.dromara.workflow.controller.TestLeaveController` |
708
+ | 请假示例 Service | `org.dromara.workflow.service.impl.TestLeaveServiceImpl` |
709
+ | 请假示例 Entity | `org.dromara.workflow.domain.TestLeave` |
710
+ | 任务服务实现 | `org.dromara.workflow.service.impl.FlwTaskServiceImpl` |
711
+ | 全局监听器 | `org.dromara.workflow.listener.WorkflowGlobalListener` |
712
+ | 事件处理器 | `org.dromara.workflow.handler.FlowProcessEventHandler` |
713
+
714
+ <!-- 抓蛙师 -->