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,152 @@
1
+ ---
2
+ name: architecture-design
3
+ description: |
4
+ 通用架构设计指南。涵盖分层架构、模块划分、依赖管理等架构决策方法论。
5
+ 触发场景:系统设计、模块拆分、架构评审、技术选型。
6
+ 触发词:架构设计、分层架构、模块划分、系统设计、技术选型。
7
+ 注意:如果项目有专属技能(如 `leniu-architecture`),优先使用专属版本。
8
+ ---
9
+
10
+ # 架构设计指南
11
+
12
+ > 通用模板。如果项目有专属技能(如 `leniu-architecture`),优先使用。
13
+
14
+ ## 核心规范
15
+
16
+ ### 分层架构对比
17
+
18
+ #### 三层架构(标准 Spring Boot)
19
+
20
+ ```
21
+ Controller -> Service -> Mapper/Repository
22
+ (接口层) (业务层) (数据访问层)
23
+ ```
24
+
25
+ - **适用场景**:中小型项目、业务逻辑相对简单
26
+ - **优点**:结构清晰、上手快、团队共识强
27
+ - **缺点**:Service 层容易膨胀为"上帝类"
28
+
29
+ #### 四层架构(增加编排层)
30
+
31
+ ```
32
+ Controller -> Business/Facade -> Service -> Mapper/Repository
33
+ (接口层) (业务编排层) (领域服务) (数据访问层)
34
+ ```
35
+
36
+ - **适用场景**:大型项目、复杂业务编排、跨 Service 协调
37
+ - **优点**:职责更细粒度、Service 保持纯净
38
+ - **缺点**:层次多、小项目过度设计
39
+
40
+ #### 选择建议
41
+
42
+ | 条件 | 推荐 |
43
+ |------|------|
44
+ | 单表 CRUD 为主 | 三层架构 |
45
+ | 跨模块协调频繁 | 四层架构 |
46
+ | 团队 < 5 人 | 三层架构 |
47
+ | 微服务拆分 | 三层 + DDD |
48
+
49
+ ### 模块划分原则
50
+
51
+ 1. **高内聚低耦合**:模块内部紧密关联,模块间依赖最小化
52
+ 2. **按业务域拆分**:而非按技术层拆分
53
+ 3. **单一职责**:每个模块只负责一个业务领域
54
+ 4. **接口隔离**:模块间通过接口/API 通信,不直接依赖实现
55
+
56
+ ### 推荐模块结构
57
+
58
+ ```
59
+ project-root/
60
+ ├── project-common/ # 公共模块(工具类、通用常量)
61
+ ├── project-api/ # 对外 API 定义(Feign 接口、DTO)
62
+ ├── project-module-order/ # 订单模块
63
+ ├── project-module-user/ # 用户模块
64
+ ├── project-module-payment/ # 支付模块
65
+ └── project-gateway/ # 网关(微服务场景)
66
+ ```
67
+
68
+ ### 每个模块内部结构
69
+
70
+ ```
71
+ [你的包名].[module]/
72
+ ├── controller/ # 接口层
73
+ ├── service/
74
+ │ └── impl/ # 业务实现
75
+ ├── mapper/ # 数据访问
76
+ ├── entity/ # 实体
77
+ ├── dto/ # 请求参数
78
+ ├── vo/ # 响应对象
79
+ ├── enums/ # 枚举
80
+ └── config/ # 模块配置
81
+ ```
82
+
83
+ ## 代码示例
84
+
85
+ ### 依赖方向(必须单向)
86
+
87
+ ```
88
+ Controller --> Service --> Mapper
89
+ | |
90
+ v v
91
+ DTO/VO Entity
92
+ ```
93
+
94
+ - 上层可以依赖下层,下层不能依赖上层
95
+ - 同层之间避免循环依赖
96
+ - 公共模块被所有业务模块依赖,但公共模块不依赖任何业务模块
97
+
98
+ ### 模块间通信模式
99
+
100
+ ```java
101
+ // 方式一:直接依赖(单体应用)
102
+ @Service
103
+ @RequiredArgsConstructor
104
+ public class OrderServiceImpl implements IOrderService {
105
+ private final IUserService userService; // 直接注入其他模块 Service
106
+ }
107
+
108
+ // 方式二:事件驱动(解耦)
109
+ @Service
110
+ @RequiredArgsConstructor
111
+ public class OrderServiceImpl implements IOrderService {
112
+ private final ApplicationEventPublisher eventPublisher;
113
+
114
+ public void createOrder(OrderCreateDTO dto) {
115
+ // ... 创建订单
116
+ eventPublisher.publishEvent(new OrderCreatedEvent(order));
117
+ }
118
+ }
119
+
120
+ // 方式三:Feign 调用(微服务)
121
+ @FeignClient(name = "user-service")
122
+ public interface UserFeignClient {
123
+ @GetMapping("/api/v1/users/{id}")
124
+ UserVO getUserById(@PathVariable Long id);
125
+ }
126
+ ```
127
+
128
+ ### 配置分层
129
+
130
+ ```yaml
131
+ # application.yml - 通用配置
132
+ spring:
133
+ profiles:
134
+ active: ${SPRING_PROFILES_ACTIVE:dev}
135
+
136
+ # application-dev.yml - 开发环境
137
+ # application-test.yml - 测试环境
138
+ # application-prod.yml - 生产环境
139
+ ```
140
+
141
+ ## 常见错误
142
+
143
+ | 错误 | 正确做法 |
144
+ |------|---------|
145
+ | Controller 直接调 Mapper | 必须经过 Service 层 |
146
+ | Service 之间循环依赖 | 提取公共 Service 或事件驱动 |
147
+ | Entity 直接暴露给前端 | 用 VO 封装响应 |
148
+ | 公共模块依赖业务模块 | 公共模块必须独立,被业务模块依赖 |
149
+ | 按技术层拆分模块(all-controller、all-service) | 按业务域拆分 |
150
+ | 所有逻辑堆在 Service 一个方法里 | 拆分私有方法或引入编排层 |
151
+ | 硬编码配置值 | 使用配置文件 + `@Value` 或 `@ConfigurationProperties` |
152
+ | 跨模块直接操作其他模块的数据库表 | 通过对方 Service 接口调用 |
@@ -0,0 +1,453 @@
1
+ ---
2
+ name: auto-test
3
+ description: |
4
+ API 自动化测试技能。基于 Apifox MCP 读取接口文档,使用 Hurl 生成并执行真实 HTTP 测试,
5
+ 支持单接口测试、单业务组合(CRUD 生命周期)、跨业务串联(多模块流程),生成 HTML/JSON 测试报告。
6
+ 测试失败时自动调用 fix-bug 技能走标准修复流程。
7
+
8
+ 触发场景:
9
+ - 需要对 API 接口进行自动化测试
10
+ - 需要验证接口是否符合文档定义
11
+ - 需要组合多个接口形成业务流程测试
12
+ - 需要生成接口测试报告
13
+ - 开发完成后需要回归测试验证
14
+
15
+ 触发词:自动测试、auto-test、接口测试、API测试、Hurl、测试报告、回归测试
16
+ ---
17
+
18
+ # API 自动化测试(Hurl + Apifox MCP)
19
+
20
+ ## 概述
21
+
22
+ 通过 Apifox MCP 读取接口文档 → AI 生成 Hurl 测试文件 → 执行真实 HTTP 请求 → 生成测试报告 → 失败项**自动调用 `/fix-bug` 走标准修复流程**。
23
+
24
+ **前置依赖**:
25
+ - Hurl CLI(`brew install hurl` / `winget install hurl` / `apt install hurl`)
26
+ - Apifox MCP Server(已配置项目 ID 和 Access Token)
27
+ - 后端服务运行中
28
+
29
+ ## 测试粒度
30
+
31
+ | 粒度 | 说明 | 文件命名 | 示例 |
32
+ |------|------|---------|------|
33
+ | **单接口** | 一个 API 端点的正常+异常场景 | `{接口名}.hurl` | `create-order.hurl` |
34
+ | **单业务组合** | 一个模块的 CRUD 生命周期 | `{模块}-lifecycle.hurl` | `order-lifecycle.hurl` |
35
+ | **跨业务串联** | 多模块联动的完整业务流程 | `{流程名}-flow.hurl` | `menu-order-payment-flow.hurl` |
36
+
37
+ ## 文件结构
38
+
39
+ ```
40
+ tests/hurl/
41
+ ├── env/
42
+ │ ├── dev.env # 开发环境变量
43
+ │ ├── test.env # 测试环境
44
+ │ └── prod.env # 生产环境(只读接口)
45
+ ├── {模块名}/ # 按业务模块组织
46
+ │ ├── {接口名}.hurl # 单接口测试
47
+ │ └── {模块}-lifecycle.hurl # 单业务组合
48
+ ├── flows/ # 跨业务串联
49
+ │ └── {流程名}-flow.hurl
50
+ └── reports/ # 测试报告(gitignore)
51
+ ├── index.html
52
+ └── report.json
53
+ ```
54
+
55
+ ## 系统接口请求响应规范
56
+
57
+ > 详细参考:`references/api-conventions.md`(首次生成测试时必须读取)
58
+
59
+ ### 核心契约速查
60
+
61
+ | 项目 | 规范 |
62
+ |------|------|
63
+ | 请求封装 | `{"content": { ... }}` (LeRequest) |
64
+ | 成功码 | `code == 10000` |
65
+ | 认证头 | `X-Token` + `merchant-id` + `Merchant-Id` |
66
+ | 未授权 | 不带 X-Token → HTTP 401 |
67
+
68
+ ### 返回类型 → data 结构映射
69
+
70
+ | Controller 返回类型 | data 结构 | 断言关键路径 |
71
+ |---------------------|----------|-------------|
72
+ | `Long`(save) | 雪花 ID | `$.data` isInteger |
73
+ | `void`(delete/submit/export) | null | 仅验证 `$.code == 10000` |
74
+ | `XxxVO`(detail) | 对象 | `$.data.id` exists |
75
+ | `PageVO<T>`(设置类 page) | `$.data.records[]` | `$.data.records` isCollection |
76
+ | `ReportBaseTotalVO<T>`(报表 page) | `$.data.resultPage.records[]` + `$.data.totalLine` | 分页 + 合计行 |
77
+
78
+ ### content 传值类型(最易出错)
79
+
80
+ | 场景 | content 类型 | 示例 |
81
+ |------|-------------|------|
82
+ | 分页查询 | 对象 | `{"page":{"current":1,"size":10},"keyword":"xxx"}` |
83
+ | 新增/编辑 | 对象 | `{"name":"xxx","entries":[...]}` |
84
+ | 详情/删除/提交 | **裸 Long** | `{{id}}`(不是 `{"id":{{id}}}`) |
85
+
86
+ > **关键区别**:detail/delete/submit 的 content 是**直接传 ID 值**,不需要包装成对象。
87
+
88
+ ## Hurl 语法速查
89
+
90
+ ### 请求头规范(必须遵守)
91
+
92
+ 每个需要认证的请求必须携带以下 Header:
93
+
94
+ | Header | 来源 | 用途 |
95
+ |--------|------|------|
96
+ | `X-Token` | 环境变量 `{{x_token}}`(配置文件提供) | 认证令牌 |
97
+ | `merchant-id` | 环境变量 `{{merchant_id}}` | 商户路由(数据源切换) |
98
+ | `Merchant-Id` | 环境变量 `{{merchant_id_auth}}` | 商户权限校验 |
99
+
100
+ ### 基础请求 + 断言
101
+
102
+ ```hurl
103
+ # 请求
104
+ POST {{base_url}}/api/v2/web/order/add
105
+ Content-Type: application/json
106
+ X-Token: {{x_token}}
107
+ merchant-id: {{merchant_id}}
108
+ Merchant-Id: {{merchant_id_auth}}
109
+ {
110
+ "content": {
111
+ "menuId": 1001,
112
+ "quantity": 2
113
+ }
114
+ }
115
+
116
+ # 响应断言
117
+ HTTP 200
118
+ [Asserts]
119
+ jsonpath "$.code" == 10000
120
+ jsonpath "$.msg" == "操作成功"
121
+ jsonpath "$.data" isInteger
122
+ ```
123
+
124
+ ### 变量捕获(请求间传递数据)
125
+
126
+ ```hurl
127
+ # 如果需要动态获取 Token,可以通过登录接口捕获
128
+ POST {{base_url}}/api/v2/web/auth/login
129
+ Content-Type: application/json
130
+ {
131
+ "username": "{{username}}",
132
+ "password": "{{password}}"
133
+ }
134
+
135
+ HTTP 200
136
+ [Captures]
137
+ x_token: jsonpath "$.data.token"
138
+ ```
139
+
140
+ > 注意:X-Token 优先使用 env 文件中预配置的值,避免每次都调登录接口。
141
+ > 仅在测试登录流程本身或 Token 过期场景时,才通过登录接口动态获取。
142
+
143
+ ### 常用断言
144
+
145
+ ```hurl
146
+ [Asserts]
147
+ # 状态码
148
+ status == 200
149
+
150
+ # JSON 路径
151
+ jsonpath "$.code" == 10000
152
+ jsonpath "$.data" exists
153
+ jsonpath "$.data" isCollection
154
+ jsonpath "$.data.id" isInteger
155
+ jsonpath "$.data.name" isString
156
+ jsonpath "$.data.list" count > 0
157
+
158
+ # 类型检查
159
+ jsonpath "$.data.price" isFloat
160
+
161
+ # 包含
162
+ jsonpath "$.msg" contains "成功"
163
+
164
+ # 正则
165
+ jsonpath "$.data.phone" matches "^1[3-9]\\d{9}$"
166
+ ```
167
+
168
+ ### 环境变量文件格式
169
+
170
+ ```properties
171
+ # env/dev.env
172
+ base_url=http://192.168.97.235:58300
173
+
174
+ # 认证 Token(X-Token 请求头,配置后所有请求自动携带)
175
+ x_token=你的Token值
176
+
177
+ # 商户路由(merchant-id 请求头,用于数据源切换)
178
+ merchant_id=你的商户ID
179
+
180
+ # 商户权限(Merchant-Id 请求头,用于权限校验)
181
+ merchant_id_auth=你的商户ID
182
+ ```
183
+
184
+ ## 执行命令
185
+
186
+ ```bash
187
+ # 运行单个测试
188
+ hurl --test --variables-file tests/hurl/env/dev.env tests/hurl/order/create-order.hurl
189
+
190
+ # 运行模块所有测试
191
+ hurl --test --variables-file tests/hurl/env/dev.env tests/hurl/order/*.hurl
192
+
193
+ # 运行全部测试 + 生成报告
194
+ hurl --test \
195
+ --variables-file tests/hurl/env/dev.env \
196
+ --report-html tests/hurl/reports \
197
+ --report-json tests/hurl/reports/report.json \
198
+ tests/hurl/**/*.hurl
199
+
200
+ # 传递动态变量(如时间戳避免唯一键冲突)
201
+ TS=$(date +%s) && hurl --test \
202
+ --variables-file tests/hurl/env/dev.env \
203
+ --variable "voucher_type_ts=$TS" \
204
+ --variable "voucher_word_ts=$TS" \
205
+ tests/hurl/finance/*.hurl
206
+
207
+ # 指定超时(毫秒)
208
+ hurl --test --connect-timeout 5000 --max-time 30000 ...
209
+
210
+ # 失败时继续执行(不中断)
211
+ hurl --test --continue-on-error ...
212
+ ```
213
+
214
+ ## 生成测试的流程
215
+
216
+ ### 第一步:读取接口文档
217
+
218
+ 通过 Apifox MCP 读取指定模块的接口列表:
219
+ - 接口路径、HTTP 方法
220
+ - 请求参数(Header、Body、Query)
221
+ - 响应结构(字段名、类型、示例值)
222
+
223
+ ### 第二步:读取 Param/VO 源码(关键!)
224
+
225
+ **必须读取后端源码**以确保测试完整性:
226
+
227
+ 1. **Param 类**:提取所有查询条件字段,确保每个字段都有对应测试用例
228
+ 2. **VO 类**:提取所有响应字段,在断言中验证字段存在性和类型
229
+ 3. **Mapper XML**:理解 SQL 逻辑、JOIN 关系、动态条件
230
+
231
+ ```
232
+ 示例:SubjectDetailParam 有 startDate、endDate、areaId、canteenId、keyword
233
+ → 测试用例必须覆盖:
234
+ - 基础分页查询(startDate + endDate)
235
+ - keyword 搜索(科目编码/名称)
236
+ - 区域+食堂筛选(areaId + canteenId)
237
+ - 单日查询(startDate == endDate)
238
+ - 空结果区间(验证空数组返回)
239
+ - 分页第二页
240
+ - 导出接口
241
+ - 未授权测试
242
+ ```
243
+
244
+ ### 第三步:准备测试数据(先查后用,禁止硬编码)
245
+
246
+ **核心原则:测试数据必须从真实环境动态获取,不能硬编码不存在的 ID 或编码。**
247
+
248
+ ```hurl
249
+ # ✅ 正确:先查询获取真实数据,再用于后续请求
250
+ # 0a. 获取真实食堂 ID
251
+ POST {{base_url}}/api/v2/alloc/canteen/page-canteen
252
+ ...
253
+ [Captures]
254
+ canteen_id: jsonpath "$.data.records[0].canteenId"
255
+ area_id: jsonpath "$.data.records[0].areaId"
256
+
257
+ # 0b. 获取关联表的真实记录
258
+ POST {{base_url}}/report/finance/setting/voucher-type/page
259
+ ...
260
+ [Captures]
261
+ voucher_type_id: jsonpath "$.data.records[0].id"
262
+ ```
263
+
264
+ ```hurl
265
+ # ❌ 错误:硬编码不存在的引用数据
266
+ {
267
+ "content": {
268
+ "costNo": "9999", # 可能不存在
269
+ "voucherTypeId": 1 # 可能不存在
270
+ }
271
+ }
272
+ ```
273
+
274
+ **测试数据准备检查清单**:
275
+ - [ ] 外键引用的 ID 通过查询接口动态获取
276
+ - [ ] 业务编码(如 costNo)使用数据库中已存在的真实记录
277
+ - [ ] 唯一键字段使用时间戳变量避免冲突(`{{xxx_ts}}`)
278
+ - [ ] 创建的测试数据标记 summary 含 `auto-test` 便于识别清理
279
+ - [ ] 测试结束后有清理步骤(删除测试数据)
280
+
281
+ ### 第四步:生成 .hurl 文件
282
+
283
+ **查询条件完整覆盖**(每个 Param 字段都要有测试用例):
284
+
285
+ ```
286
+ 单接口测试场景清单:
287
+ 1. 基础分页查询 — 必填参数,预期 code=10000,验证分页结构+VO 所有字段
288
+ 2. 合计行验证 — 如有 totalLine,验证所有合计字段存在
289
+ 3. 逐个查询条件 — 每个 Param 字段单独或组合测试
290
+ 4. 空结果验证 — 故意使用不匹配的条件,验证 records count == 0
291
+ 5. 分页翻页 — current=2 验证翻页正确
292
+ 6. 导出接口 — 验证 code=10000(异步导出返回 void)
293
+ 7. 未授权测试 — 不带 X-Token,预期 HTTP 401
294
+ 8. 数据清理 — 删除测试创建的数据
295
+ ```
296
+
297
+ **数据正确性验证**(不只是结构存在,还要验证值合理):
298
+
299
+ ```hurl
300
+ # ✅ 结构验证 + 数据正确性
301
+ [Asserts]
302
+ jsonpath "$.code" == 10000
303
+ jsonpath "$.data.resultPage.records" isCollection
304
+ jsonpath "$.data.resultPage.records" count > 0
305
+ # VO 字段存在性
306
+ jsonpath "$.data.resultPage.records[0].costNo" isString
307
+ jsonpath "$.data.resultPage.records[0].costTypeName" isString # 关联字段不能为 null
308
+ jsonpath "$.data.resultPage.records[0].debitAmount" exists
309
+ # 合计行数据合理性
310
+ jsonpath "$.data.totalLine.debitAmount" exists
311
+ jsonpath "$.data.totalLine.creditAmount" exists
312
+ ```
313
+
314
+ ### 第五步:执行并生成报告
315
+
316
+ ```bash
317
+ hurl --test \
318
+ --variables-file tests/hurl/env/dev.env \
319
+ --report-html tests/hurl/reports \
320
+ --report-json tests/hurl/reports/report.json \
321
+ --continue-on-error \
322
+ tests/hurl/{模块}/*.hurl
323
+ ```
324
+
325
+ ### 第六步:解析报告
326
+
327
+ 读取 `report.json`,输出摘要:
328
+
329
+ ```markdown
330
+ ## 测试报告摘要
331
+
332
+ | 状态 | 数量 | 占比 |
333
+ |------|------|------|
334
+ | PASS | 15 | 75% |
335
+ | FAIL | 3 | 15% |
336
+ | ERROR| 2 | 10% |
337
+
338
+ ### 失败详情
339
+
340
+ | 文件 | 接口 | 失败原因 |
341
+ |------|------|---------|
342
+ | order/create-order.hurl | POST /api/v2/web/order/add | 预期 code=10000,实际 code=40001 |
343
+ | menu/query-menu.hurl | GET /api/v2/web/menu/get/1 | 预期 HTTP 200,实际 HTTP 500 |
344
+ ```
345
+
346
+ ### 第七步:失败项自动触发 fix-bug 流程
347
+
348
+ **当测试存在失败项时,必须自动调用 `/fix-bug` 走标准修复流程:**
349
+
350
+ ```
351
+ 测试失败 → 分析失败原因 → 分类处理:
352
+
353
+ 1. 测试数据问题(非代码 Bug):
354
+ - 引用数据不存在 → 修正测试用例中的数据
355
+ - 唯一键冲突 → 添加时间戳变量
356
+ - 权限/状态限制 → 调整测试前置条件
357
+
358
+ 2. 后端代码 Bug:
359
+ → 自动调用 Skill(fix-bug) 走标准修复流程
360
+ → 包含:排查报告 → 用户确认 → 修复代码 → 重跑测试验证
361
+
362
+ 3. 接口文档与实现不一致:
363
+ → 输出差异报告,等待用户确认以哪个为准
364
+ ```
365
+
366
+ **fix-bug 自动触发条件**:
367
+ - HTTP 状态码非预期(如 500)
368
+ - 业务码非预期(如 code != 10000)
369
+ - 响应字段缺失或类型不匹配
370
+ - 关联字段为 null(如 costTypeName 为 null 说明 JOIN 失败)
371
+ - 导出数据异常(原始字段暴露、金额未转换等)
372
+
373
+ **Bug 报告格式**(传递给 fix-bug):
374
+
375
+ ```
376
+ Bug 信息:
377
+ - 接口:{METHOD} {URL}
378
+ - 请求参数:{request body}
379
+ - 预期响应:{expected}
380
+ - 实际响应:{actual}
381
+ - Hurl 文件:{file path}
382
+ - 失败断言:{assertion detail}
383
+ - 关联源码:{Controller/Service/Mapper 文件路径}
384
+ ```
385
+
386
+ ## LeRequest 适配
387
+
388
+ leniu 项目的 POST 请求体使用 `LeRequest<T>` 封装:
389
+
390
+ ```hurl
391
+ # ✅ 正确:使用 content 包装 + 三个必要 Header
392
+ POST {{base_url}}/api/v2/web/order/add
393
+ Content-Type: application/json
394
+ X-Token: {{x_token}}
395
+ merchant-id: {{merchant_id}}
396
+ Merchant-Id: {{merchant_id_auth}}
397
+ {
398
+ "content": {
399
+ "menuId": 1001,
400
+ "quantity": 2
401
+ }
402
+ }
403
+
404
+ # ❌ 错误:直接传业务字段 / 缺少 Header
405
+ POST {{base_url}}/api/v2/web/order/add
406
+ {
407
+ "menuId": 1001,
408
+ "quantity": 2
409
+ }
410
+ ```
411
+
412
+ ## 已知陷阱(Lessons Learned)
413
+
414
+ ### 1. del_flag 约定不统一
415
+ leniu 主表用 `2=正常, 1=删除`,但某些设置表(如 `finance_voucher_type`, `finance_voucher_word`)使用 `@TableLogic` 默认值 `0=正常, 1=删除`。**不要盲目统一,要检查每张表的实际约定。**
416
+
417
+ ### 2. 测试数据必须使用真实存在的引用数据
418
+ 关联查询(JOIN)依赖引用数据存在且状态正确。例如:
419
+ - `cost_type` 表的 `state = 1` 才是有效记录
420
+ - `costNo` 必须在 `cost_type` 中存在且 `state = 1`
421
+ - 否则 LEFT JOIN 后关联字段(如 `costTypeName`)为 null
422
+
423
+ ### 3. 导出验证要点
424
+ 导出接口是异步的(返回 void → code=10000),需要额外关注:
425
+ - VO 的 `@ExcelIgnore` 是否正确标记了内部字段
426
+ - `@ExcelProperty(order=N)` 的顺序是否符合产品要求
427
+ - 金额字段是否配置了 `converter = CustomNumberConverter.class`(分→元)
428
+ - 枚举字段是否有对应的描述字段(如 submitStatus → submitStatusDesc)
429
+
430
+ ### 4. 唯一键冲突
431
+ CRUD 生命周期测试中,新增记录的唯一键字段(如 typeCode)需要加时间戳变量:
432
+ ```hurl
433
+ "typeCode": "AT_HURL_{{voucher_type_ts}}"
434
+ ```
435
+ 执行时通过 `--variable "voucher_type_ts=$(date +%s)"` 传入。
436
+
437
+ ### 5. 后端未重启
438
+ 修改后端代码后必须重启服务才能生效。如果测试结果不符合预期,先确认后端是否已重启。
439
+
440
+ ## .gitignore 配置
441
+
442
+ ```gitignore
443
+ # Hurl 测试报告
444
+ tests/hurl/reports/
445
+ ```
446
+
447
+ ## 注意
448
+
449
+ - 测试文件(`.hurl`)需要 Git 管理,报告目录不需要
450
+ - `env/*.env` 中的密码/Token 建议用环境变量替代,不要提交敏感信息
451
+ - 如果是 leniu 项目的 POST 接口,请求体必须用 `{"content": {...}}` 包装
452
+ - 生成测试前确保 Hurl CLI 已安装(`hurl --version`)
453
+ - 与 `test-development` 技能的区别:本技能是真实 HTTP 请求的集成测试,`test-development` 是 JUnit5 单元测试/MockMvc 测试