ai-engineering-init 1.1.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 (313) hide show
  1. package/.claude/agents/code-reviewer.md +139 -0
  2. package/.claude/agents/project-manager.md +159 -0
  3. package/.claude/audio/completed.wav +0 -0
  4. package/.claude/commands/add-todo.md +255 -0
  5. package/.claude/commands/check.md +210 -0
  6. package/.claude/commands/crud.md +454 -0
  7. package/.claude/commands/dev.md +503 -0
  8. package/.claude/commands/init-docs.md +681 -0
  9. package/.claude/commands/next.md +251 -0
  10. package/.claude/commands/progress.md +242 -0
  11. package/.claude/commands/start.md +199 -0
  12. package/.claude/commands/sync.md +307 -0
  13. package/.claude/commands/update-status.md +428 -0
  14. package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
  15. package/.claude/docs/README.md +167 -0
  16. package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
  17. package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
  24. package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
  25. package/.claude/framework-config.json +73 -0
  26. package/.claude/hooks/pre-tool-use.js +117 -0
  27. package/.claude/hooks/skill-forced-eval.js +167 -0
  28. package/.claude/hooks/stop.js +58 -0
  29. package/.claude/settings.json +41 -0
  30. package/.claude/skills/add-skill/SKILL.md +352 -0
  31. package/.claude/skills/api-development/SKILL.md +560 -0
  32. package/.claude/skills/architecture-design/SKILL.md +756 -0
  33. package/.claude/skills/backend-annotations/SKILL.md +674 -0
  34. package/.claude/skills/banana-image/CHANGELOG.md +37 -0
  35. package/.claude/skills/banana-image/README.md +146 -0
  36. package/.claude/skills/banana-image/SKILL.md +164 -0
  37. package/.claude/skills/banana-image/assets/logo.png +0 -0
  38. package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
  39. package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
  40. package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  41. package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
  42. package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
  43. package/.claude/skills/banana-image/scripts/package.json +18 -0
  44. package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
  45. package/.claude/skills/banana-image/templates/poster.json +22 -0
  46. package/.claude/skills/banana-image/templates/product.json +17 -0
  47. package/.claude/skills/banana-image/templates/social.json +22 -0
  48. package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
  49. package/.claude/skills/brainstorm/SKILL.md +648 -0
  50. package/.claude/skills/bug-detective/SKILL.md +1206 -0
  51. package/.claude/skills/code-patterns/SKILL.md +590 -0
  52. package/.claude/skills/collaborating-with-codex/SKILL.md +174 -0
  53. package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  54. package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
  55. package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  56. package/.claude/skills/crud-development/SKILL.md +649 -0
  57. package/.claude/skills/data-permission/SKILL.md +599 -0
  58. package/.claude/skills/database-ops/SKILL.md +407 -0
  59. package/.claude/skills/error-handler/SKILL.md +371 -0
  60. package/.claude/skills/file-oss-management/SKILL.md +863 -0
  61. package/.claude/skills/git-workflow/SKILL.md +375 -0
  62. package/.claude/skills/json-serialization/SKILL.md +357 -0
  63. package/.claude/skills/leniu-api-development/SKILL.md +803 -0
  64. package/.claude/skills/leniu-architecture-design/SKILL.md +598 -0
  65. package/.claude/skills/leniu-backend-annotations/SKILL.md +664 -0
  66. package/.claude/skills/leniu-code-patterns/SKILL.md +365 -0
  67. package/.claude/skills/leniu-crud-development/SKILL.md +1110 -0
  68. package/.claude/skills/leniu-data-permission/SKILL.md +256 -0
  69. package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
  70. package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
  71. package/.claude/skills/leniu-java-amount-handling/SKILL.md +461 -0
  72. package/.claude/skills/leniu-java-code-style/SKILL.md +510 -0
  73. package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
  74. package/.claude/skills/leniu-java-entity/SKILL.md +751 -0
  75. package/.claude/skills/leniu-java-export/SKILL.md +560 -0
  76. package/.claude/skills/leniu-java-logging/SKILL.md +832 -0
  77. package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
  78. package/.claude/skills/leniu-java-mybatis/SKILL.md +640 -0
  79. package/.claude/skills/leniu-java-report-query-param/SKILL.md +291 -0
  80. package/.claude/skills/leniu-java-task/SKILL.md +367 -0
  81. package/.claude/skills/leniu-java-total-line/SKILL.md +195 -0
  82. package/.claude/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  83. package/.claude/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  84. package/.claude/skills/leniu-mealtime/SKILL.md +215 -0
  85. package/.claude/skills/leniu-redis-cache/SKILL.md +316 -0
  86. package/.claude/skills/leniu-security-guard/SKILL.md +520 -0
  87. package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
  88. package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
  89. package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
  90. package/.claude/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  91. package/.claude/skills/openspec-continue-change/SKILL.md +118 -0
  92. package/.claude/skills/openspec-explore/SKILL.md +290 -0
  93. package/.claude/skills/openspec-ff-change/SKILL.md +101 -0
  94. package/.claude/skills/openspec-new-change/SKILL.md +74 -0
  95. package/.claude/skills/openspec-onboard/SKILL.md +529 -0
  96. package/.claude/skills/openspec-sync-specs/SKILL.md +138 -0
  97. package/.claude/skills/openspec-verify-change/SKILL.md +168 -0
  98. package/.claude/skills/performance-doctor/SKILL.md +627 -0
  99. package/.claude/skills/project-navigator/SKILL.md +305 -0
  100. package/.claude/skills/redis-cache/SKILL.md +839 -0
  101. package/.claude/skills/scheduled-jobs/SKILL.md +633 -0
  102. package/.claude/skills/security-guard/SKILL.md +748 -0
  103. package/.claude/skills/sms-mail/SKILL.md +766 -0
  104. package/.claude/skills/social-login/SKILL.md +668 -0
  105. package/.claude/skills/store-pc/SKILL.md +366 -0
  106. package/.claude/skills/task-tracker/SKILL.md +307 -0
  107. package/.claude/skills/tech-decision/SKILL.md +393 -0
  108. package/.claude/skills/tenant-management/SKILL.md +603 -0
  109. package/.claude/skills/test-development/SKILL.md +755 -0
  110. package/.claude/skills/ui-pc/SKILL.md +438 -0
  111. package/.claude/skills/utils-toolkit/SKILL.md +615 -0
  112. package/.claude/skills/websocket-sse/SKILL.md +716 -0
  113. package/.claude/skills/workflow-engine/SKILL.md +676 -0
  114. package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
  115. package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
  116. package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
  117. package/.codex/skills/add-skill/SKILL.md +352 -0
  118. package/.codex/skills/add-todo/SKILL.md +269 -0
  119. package/.codex/skills/api-development/SKILL.md +693 -0
  120. package/.codex/skills/architecture-design/SKILL.md +628 -0
  121. package/.codex/skills/backend-annotations/SKILL.md +664 -0
  122. package/.codex/skills/banana-image/CHANGELOG.md +37 -0
  123. package/.codex/skills/banana-image/README.md +146 -0
  124. package/.codex/skills/banana-image/SKILL.md +164 -0
  125. package/.codex/skills/banana-image/assets/logo.png +0 -0
  126. package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
  127. package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
  128. package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  129. package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
  130. package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
  131. package/.codex/skills/banana-image/scripts/package.json +18 -0
  132. package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
  133. package/.codex/skills/banana-image/templates/poster.json +22 -0
  134. package/.codex/skills/banana-image/templates/product.json +17 -0
  135. package/.codex/skills/banana-image/templates/social.json +22 -0
  136. package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
  137. package/.codex/skills/brainstorm/SKILL.md +648 -0
  138. package/.codex/skills/bug-detective/SKILL.md +1206 -0
  139. package/.codex/skills/check/SKILL.md +367 -0
  140. package/.codex/skills/code-patterns/SKILL.md +442 -0
  141. package/.codex/skills/collaborating-with-codex/SKILL.md +174 -0
  142. package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  143. package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
  144. package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  145. package/.codex/skills/crud/SKILL.md +265 -0
  146. package/.codex/skills/crud-development/SKILL.md +637 -0
  147. package/.codex/skills/data-permission/SKILL.md +591 -0
  148. package/.codex/skills/database-ops/SKILL.md +553 -0
  149. package/.codex/skills/dev/SKILL.md +187 -0
  150. package/.codex/skills/error-handler/SKILL.md +361 -0
  151. package/.codex/skills/file-oss-management/SKILL.md +863 -0
  152. package/.codex/skills/git-workflow/SKILL.md +375 -0
  153. package/.codex/skills/init-docs/SKILL.md +194 -0
  154. package/.codex/skills/json-serialization/SKILL.md +357 -0
  155. package/.codex/skills/leniu-api-development/SKILL.md +803 -0
  156. package/.codex/skills/leniu-architecture-design/SKILL.md +594 -0
  157. package/.codex/skills/leniu-backend-annotations/SKILL.md +662 -0
  158. package/.codex/skills/leniu-code-patterns/SKILL.md +365 -0
  159. package/.codex/skills/leniu-crud-development/SKILL.md +1110 -0
  160. package/.codex/skills/leniu-data-permission/SKILL.md +256 -0
  161. package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
  162. package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
  163. package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
  164. package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
  165. package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
  166. package/.codex/skills/leniu-java-entity/SKILL.md +751 -0
  167. package/.codex/skills/leniu-java-export/SKILL.md +560 -0
  168. package/.codex/skills/leniu-java-logging/SKILL.md +832 -0
  169. package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
  170. package/.codex/skills/leniu-java-mybatis/SKILL.md +640 -0
  171. package/.codex/skills/leniu-java-report-query-param/SKILL.md +291 -0
  172. package/.codex/skills/leniu-java-task/SKILL.md +367 -0
  173. package/.codex/skills/leniu-java-total-line/SKILL.md +195 -0
  174. package/.codex/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  175. package/.codex/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  176. package/.codex/skills/leniu-mealtime/SKILL.md +215 -0
  177. package/.codex/skills/leniu-redis-cache/SKILL.md +316 -0
  178. package/.codex/skills/leniu-security-guard/SKILL.md +520 -0
  179. package/.codex/skills/leniu-utils-toolkit/SKILL.md +378 -0
  180. package/.codex/skills/next/SKILL.md +137 -0
  181. package/.codex/skills/openspec-apply-change/SKILL.md +156 -0
  182. package/.codex/skills/openspec-archive-change/SKILL.md +114 -0
  183. package/.codex/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  184. package/.codex/skills/openspec-continue-change/SKILL.md +118 -0
  185. package/.codex/skills/openspec-explore/SKILL.md +290 -0
  186. package/.codex/skills/openspec-ff-change/SKILL.md +101 -0
  187. package/.codex/skills/openspec-new-change/SKILL.md +74 -0
  188. package/.codex/skills/openspec-onboard/SKILL.md +529 -0
  189. package/.codex/skills/openspec-sync-specs/SKILL.md +138 -0
  190. package/.codex/skills/openspec-verify-change/SKILL.md +168 -0
  191. package/.codex/skills/performance-doctor/SKILL.md +627 -0
  192. package/.codex/skills/progress/SKILL.md +193 -0
  193. package/.codex/skills/project-navigator/SKILL.md +286 -0
  194. package/.codex/skills/redis-cache/SKILL.md +829 -0
  195. package/.codex/skills/scheduled-jobs/SKILL.md +633 -0
  196. package/.codex/skills/security-guard/SKILL.md +739 -0
  197. package/.codex/skills/sms-mail/SKILL.md +766 -0
  198. package/.codex/skills/social-login/SKILL.md +668 -0
  199. package/.codex/skills/start/SKILL.md +154 -0
  200. package/.codex/skills/store-pc/SKILL.md +491 -0
  201. package/.codex/skills/sync/SKILL.md +149 -0
  202. package/.codex/skills/task-tracker/SKILL.md +307 -0
  203. package/.codex/skills/tech-decision/SKILL.md +393 -0
  204. package/.codex/skills/tenant-management/SKILL.md +603 -0
  205. package/.codex/skills/test-development/SKILL.md +755 -0
  206. package/.codex/skills/ui-pc/SKILL.md +475 -0
  207. package/.codex/skills/update-status/SKILL.md +159 -0
  208. package/.codex/skills/utils-toolkit/SKILL.md +593 -0
  209. package/.codex/skills/websocket-sse/SKILL.md +716 -0
  210. package/.codex/skills/workflow-engine/SKILL.md +676 -0
  211. package/.cursor/agents/code-reviewer.md +139 -0
  212. package/.cursor/agents/project-manager.md +159 -0
  213. package/.cursor/commands/opsx-apply.md +152 -0
  214. package/.cursor/commands/opsx-archive.md +157 -0
  215. package/.cursor/commands/opsx-bulk-archive.md +242 -0
  216. package/.cursor/commands/opsx-continue.md +114 -0
  217. package/.cursor/commands/opsx-explore.md +174 -0
  218. package/.cursor/commands/opsx-ff.md +94 -0
  219. package/.cursor/commands/opsx-new.md +69 -0
  220. package/.cursor/commands/opsx-onboard.md +525 -0
  221. package/.cursor/commands/opsx-sync.md +134 -0
  222. package/.cursor/commands/opsx-verify.md +164 -0
  223. package/.cursor/mcp.json +22 -0
  224. package/.cursor/skills/add-skill/SKILL.md +352 -0
  225. package/.cursor/skills/api-development/SKILL.md +560 -0
  226. package/.cursor/skills/architecture-design/SKILL.md +756 -0
  227. package/.cursor/skills/backend-annotations/SKILL.md +674 -0
  228. package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
  229. package/.cursor/skills/banana-image/README.md +146 -0
  230. package/.cursor/skills/banana-image/SKILL.md +164 -0
  231. package/.cursor/skills/banana-image/assets/logo.png +0 -0
  232. package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
  233. package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
  234. package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  235. package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
  236. package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
  237. package/.cursor/skills/banana-image/scripts/package.json +18 -0
  238. package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
  239. package/.cursor/skills/banana-image/templates/poster.json +22 -0
  240. package/.cursor/skills/banana-image/templates/product.json +17 -0
  241. package/.cursor/skills/banana-image/templates/social.json +22 -0
  242. package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
  243. package/.cursor/skills/brainstorm/SKILL.md +648 -0
  244. package/.cursor/skills/bug-detective/SKILL.md +1206 -0
  245. package/.cursor/skills/code-patterns/SKILL.md +590 -0
  246. package/.cursor/skills/collaborating-with-codex/SKILL.md +174 -0
  247. package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  248. package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
  249. package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  250. package/.cursor/skills/crud-development/SKILL.md +649 -0
  251. package/.cursor/skills/data-permission/SKILL.md +599 -0
  252. package/.cursor/skills/database-ops/SKILL.md +407 -0
  253. package/.cursor/skills/error-handler/SKILL.md +371 -0
  254. package/.cursor/skills/file-oss-management/SKILL.md +863 -0
  255. package/.cursor/skills/git-workflow/SKILL.md +375 -0
  256. package/.cursor/skills/json-serialization/SKILL.md +357 -0
  257. package/.cursor/skills/leniu-api-development/SKILL.md +803 -0
  258. package/.cursor/skills/leniu-architecture-design/SKILL.md +598 -0
  259. package/.cursor/skills/leniu-backend-annotations/SKILL.md +664 -0
  260. package/.cursor/skills/leniu-code-patterns/SKILL.md +365 -0
  261. package/.cursor/skills/leniu-crud-development/SKILL.md +1110 -0
  262. package/.cursor/skills/leniu-data-permission/SKILL.md +256 -0
  263. package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
  264. package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
  265. package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
  266. package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
  267. package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
  268. package/.cursor/skills/leniu-java-entity/SKILL.md +751 -0
  269. package/.cursor/skills/leniu-java-export/SKILL.md +560 -0
  270. package/.cursor/skills/leniu-java-logging/SKILL.md +832 -0
  271. package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
  272. package/.cursor/skills/leniu-java-mybatis/SKILL.md +640 -0
  273. package/.cursor/skills/leniu-java-report-query-param/SKILL.md +291 -0
  274. package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
  275. package/.cursor/skills/leniu-java-total-line/SKILL.md +195 -0
  276. package/.cursor/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  277. package/.cursor/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  278. package/.cursor/skills/leniu-mealtime/SKILL.md +215 -0
  279. package/.cursor/skills/leniu-redis-cache/SKILL.md +316 -0
  280. package/.cursor/skills/leniu-security-guard/SKILL.md +520 -0
  281. package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
  282. package/.cursor/skills/openspec-apply-change/SKILL.md +156 -0
  283. package/.cursor/skills/openspec-archive-change/SKILL.md +114 -0
  284. package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  285. package/.cursor/skills/openspec-continue-change/SKILL.md +118 -0
  286. package/.cursor/skills/openspec-explore/SKILL.md +290 -0
  287. package/.cursor/skills/openspec-ff-change/SKILL.md +101 -0
  288. package/.cursor/skills/openspec-new-change/SKILL.md +74 -0
  289. package/.cursor/skills/openspec-onboard/SKILL.md +529 -0
  290. package/.cursor/skills/openspec-sync-specs/SKILL.md +138 -0
  291. package/.cursor/skills/openspec-verify-change/SKILL.md +168 -0
  292. package/.cursor/skills/performance-doctor/SKILL.md +627 -0
  293. package/.cursor/skills/project-navigator/SKILL.md +305 -0
  294. package/.cursor/skills/redis-cache/SKILL.md +839 -0
  295. package/.cursor/skills/scheduled-jobs/SKILL.md +633 -0
  296. package/.cursor/skills/security-guard/SKILL.md +748 -0
  297. package/.cursor/skills/sms-mail/SKILL.md +766 -0
  298. package/.cursor/skills/social-login/SKILL.md +668 -0
  299. package/.cursor/skills/store-pc/SKILL.md +366 -0
  300. package/.cursor/skills/task-tracker/SKILL.md +307 -0
  301. package/.cursor/skills/tech-decision/SKILL.md +393 -0
  302. package/.cursor/skills/tenant-management/SKILL.md +603 -0
  303. package/.cursor/skills/test-development/SKILL.md +755 -0
  304. package/.cursor/skills/ui-pc/SKILL.md +438 -0
  305. package/.cursor/skills/utils-toolkit/SKILL.md +615 -0
  306. package/.cursor/skills/websocket-sse/SKILL.md +716 -0
  307. package/.cursor/skills/workflow-engine/SKILL.md +676 -0
  308. package/AGENTS.md +669 -0
  309. package/CLAUDE.md +205 -0
  310. package/README.md +205 -0
  311. package/bin/index.js +179 -0
  312. package/init.sh +178 -0
  313. package/package.json +27 -0
@@ -0,0 +1,365 @@
1
+ ---
2
+ name: leniu-code-patterns
3
+ description: |
4
+ leniu-tengyun-core 项目代码规范速查。基于 pigx-framework 框架的后端代码禁令和编码规范。
5
+
6
+ 触发场景:
7
+ - 查看项目禁止事项(leniu 后端代码)
8
+ - 命名规范速查
9
+ - Git 提交规范
10
+ - 避免过度工程
11
+ - 代码风格检查
12
+
13
+ 触发词:规范、禁止、命名、Git提交、代码风格、不能用、不允许、包名、架构、leniu、pigx
14
+ 注意:leniu CRUD 开发规范请激活 leniu-crud-development,API 开发规范请激活 leniu-api-development。
15
+ ---
16
+
17
+ # leniu-tengyun-core 代码规范速查
18
+
19
+ ## leniu 项目特征
20
+
21
+ | 项目特征 | 说明 |
22
+ |----------|------|
23
+ | **包名前缀** | `net.xnzn.core.*` |
24
+ | **JDK 版本** | 21 |
25
+ | **Validation** | `jakarta.validation.*` |
26
+ | **工具库** | Hutool (CollUtil, ObjectUtil, BeanUtil) |
27
+ | **分页组件** | PageHelper (PageMethod) |
28
+ | **对象转换** | `BeanUtil.copyProperties()` |
29
+ | **异常类** | `LeException` |
30
+ | **国际化** | `I18n` |
31
+ | **租户上下文** | `TenantContextHolder` |
32
+
33
+ ## 与 RuoYi-Vue-Plus 对比
34
+
35
+ | 特征 | RuoYi-Vue-Plus | leniu-tengyun-core |
36
+ |---------|----------------|-------------------|
37
+ | **包名前缀** | `org.dromara.*` | `net.xnzn.core.*` |
38
+ | **JDK 版本** | 17 | 21 |
39
+ | **Validation** | `jakarta.validation.*` | `jakarta.validation.*` |
40
+ | **工具库** | 自定义工具类 | Hutool |
41
+ | **分页** | `TableDataInfo<T>` | `Page<T>` |
42
+ | **对象转换** | `MapstructUtils.convert()` | `BeanUtil.copyProperties()` |
43
+ | **异常类** | `ServiceException` | `LeException` |
44
+ | **国际化** | `MessageUtils.message()` | `I18n.getMessage()` |
45
+ | **审计字段** | create_by/create_time/update_by/update_time | crby/crtime/upby/uptime |
46
+ | **逻辑删除** | 0=正常, 2=删除 | 1=删除, 2=正常 |
47
+
48
+ ## 后端禁令速查表
49
+
50
+ > **快速查表**:一眼定位所有后端代码禁止写法
51
+
52
+ | 禁止项 | ❌ 禁止写法 | ✅ 正确写法 | 原因 |
53
+ |--------|-----------|-----------|------|
54
+ | 包名规范 | `org.dromara.*` | `net.xnzn.core.*` | 包名统一标准 |
55
+ | 完整引用 | `org.dromara.xxx.Xxx` | `import` + 短类名 | 代码整洁 |
56
+ | Map 封装业务数据 | `Map<String, Object>` | 创建 VO 类 | 类型安全 |
57
+ | Service 继承基类 | `extends ServiceImpl<>` | `implements XxxService` | 三层架构 |
58
+ | 查询构建位置 | Controller 层 | **Service 层** | 职责分离 |
59
+ | 对象转换工具 | `MapstructUtils` | `BeanUtil.copyProperties()` | 项目统一规范 |
60
+ | 审计字段命名 | create_by/create_time | crby/crtime | 项目规范 |
61
+ | 逻辑删除值 | 0=正常, 2=删除 | 2=正常, 1=删除 | 项目规范 |
62
+ | 异常类 | `ServiceException` | `LeException` | 项目规范 |
63
+ | 国际化工具 | `MessageUtils` | `I18n` | 项目规范 |
64
+
65
+ ## 后端禁令详解
66
+
67
+ ### 1. 包名必须是 `net.xnzn.core.*`
68
+
69
+ ```java
70
+ // ✅ 正确
71
+ package net.xnzn.core.order.service;
72
+ package net.xnzn.core.marketing.handler;
73
+
74
+ // ❌ 错误
75
+ package org.dromara.system.service;
76
+ package plus.ruoyi.business.service;
77
+ ```
78
+
79
+ ### 2. 禁止使用完整类型引用
80
+
81
+ ```java
82
+ // ✅ 正确:先 import 再使用
83
+ import net.xnzn.core.common.response.LeResponse;
84
+ public LeResponse<XxxVo> getXxx(Long id) { ... }
85
+
86
+ // ❌ 错误:直接使用完整包名
87
+ public net.xnzn.core.common.response.LeResponse<XxxVo> getXxx(Long id) { ... }
88
+ ```
89
+
90
+ ### 3. 禁止使用 Map 封装业务数据
91
+
92
+ ```java
93
+ // ✅ 正确:创建 VO 类
94
+ public XxxVo getXxx(Long id) {
95
+ XxxEntity entity = mapper.selectById(id);
96
+ return BeanUtil.copyProperties(entity, XxxVo.class);
97
+ }
98
+
99
+ // ❌ 错误:使用 Map
100
+ public Map<String, Object> getXxx(Long id) {
101
+ XxxEntity entity = mapper.selectById(id);
102
+ Map<String, Object> result = new HashMap<>();
103
+ result.put("id", entity.getId());
104
+ return result;
105
+ }
106
+ ```
107
+
108
+ ### 4. Service 禁止继承 ServiceImpl 基类
109
+
110
+ ```java
111
+ // ✅ 正确:不继承任何基类,直接注入 Mapper
112
+ @Service
113
+ public class XxxServiceImpl implements XxxService {
114
+ @Autowired
115
+ private XxxMapper mapper;
116
+ }
117
+
118
+ // ❌ 错误:继承 ServiceImpl
119
+ public class XxxServiceImpl extends ServiceImpl<XxxMapper, Xxx> {
120
+ }
121
+ ```
122
+
123
+ ### 5. 查询条件必须在 Service 层构建
124
+
125
+ ```java
126
+ // ✅ 正确:在 Service 层构建查询条件
127
+ @Service
128
+ public class XxxServiceImpl implements XxxService {
129
+
130
+ @Autowired
131
+ private XxxMapper mapper;
132
+
133
+ private LambdaQueryWrapper<Xxx> buildWrapper(XxxParam param) {
134
+ return Wrappers.lambdaQuery()
135
+ .eq(param.getStatus() != null, Xxx::getStatus, param.getStatus());
136
+ }
137
+
138
+ public List<XxxVo> list(XxxParam param) {
139
+ return mapper.selectList(buildWrapper(param));
140
+ }
141
+ }
142
+
143
+ // ❌ 错误:在 Controller 层构建查询条件
144
+ @RestController
145
+ public class XxxController {
146
+ @GetMapping("/list")
147
+ public LeResponse<List<XxxVo>> list(XxxParam param) {
148
+ LambdaQueryWrapper<Xxx> wrapper = new LambdaQueryWrapper<>(); // 禁止!
149
+ }
150
+ }
151
+ ```
152
+
153
+ ### 6. 使用正确的对象转换工具
154
+
155
+ ```java
156
+ // ✅ 正确:使用 BeanUtil
157
+ import cn.hutool.core.bean.BeanUtil;
158
+
159
+ XxxVo vo = BeanUtil.copyProperties(entity, XxxVo.class);
160
+ List<XxxVo> voList = BeanUtil.copyToList(entities, XxxVo.class);
161
+
162
+ // ❌ 错误:使用 MapstructUtils(RuoYi 的工具类)
163
+ import org.dromara.common.core.utils.MapstructUtils;
164
+
165
+ XxxVo vo = MapstructUtils.convert(entity, XxxVo.class);
166
+ ```
167
+
168
+ ### 7. 使用正确的审计字段命名
169
+
170
+ ```java
171
+ // ✅ 正确:leniu 审计字段
172
+ @Data
173
+ public class XxxEntity {
174
+ private String crby; // 创建人
175
+ private LocalDateTime crtime; // 创建时间
176
+ private String upby; // 更新人
177
+ private LocalDateTime uptime; // 更新时间
178
+ private Integer delFlag; // 删除标识(1=删除,2=正常)
179
+ }
180
+
181
+ // ❌ 错误:RuoYi 审计字段
182
+ @Data
183
+ public class XxxEntity {
184
+ private String createBy; // ❌
185
+ private LocalDateTime createTime; // ❌
186
+ private String updateBy; // ❌
187
+ private LocalDateTime updateTime; // ❌
188
+ }
189
+ ```
190
+
191
+ ### 8. 使用正确的逻辑删除值
192
+
193
+ ```java
194
+ // ✅ 正确:leniu 使用 2 表示正常
195
+ wrapper.eq(XxxEntity::getDelFlag, 2);
196
+
197
+ // ❌ 错误:RuoYi 使用 0 表示正常
198
+ wrapper.eq(XxxEntity::getDelFlag, 0);
199
+ ```
200
+
201
+ ### 9. 使用正确的异常类
202
+
203
+ ```java
204
+ // ✅ 正确:使用 leniu 的异常
205
+ import net.xnzn.core.common.exception.LeException;
206
+
207
+ throw new LeException("订单不存在");
208
+ throw new LeException(I18n.getMessage("order.not.exists"));
209
+
210
+ // ❌ 错误:使用 RuoYi 的异常
211
+ import org.dromara.common.core.exception.ServiceException;
212
+
213
+ throw new ServiceException("订单不存在");
214
+ ```
215
+
216
+ ### 10. 使用正确的国际化工具
217
+
218
+ ```java
219
+ // ✅ 正确:使用 leniu 的国际化
220
+ import net.xnzn.core.common.i18n.I18n;
221
+
222
+ throw new LeException(I18n.getMessage("order.not.exists"));
223
+ throw new LeException(I18n.getMessage("user.password.retry.limit.exceed", maxRetryCount));
224
+
225
+ // ❌ 错误:使用 RuoYi 的国际化
226
+ import org.dromara.common.core.utils.MessageUtils;
227
+
228
+ throw new ServiceException(MessageUtils.message("order.not.exists"));
229
+ ```
230
+
231
+ ## 命名规范速查
232
+
233
+ ### 后端命名
234
+
235
+ | 类型 | 规范 | 示例 |
236
+ |------|------|------|
237
+ | 包名 | 小写,点分隔 | `net.xnzn.core.order` |
238
+ | 类名 | 大驼峰 | `OrderServiceImpl` |
239
+ | 方法名 | 小驼峰 | `pageList`, `getById` |
240
+ | 变量名 | 小驼峰 | `userName`, `crtime` |
241
+ | 常量 | 全大写下划线 | `MAX_PAGE_SIZE` |
242
+ | 表名 | 小写下划线 | `order_table` |
243
+ | 字段名 | 小写下划线 | `order_amount`, `crby` |
244
+
245
+ ### 类命名后缀
246
+
247
+ | 类型 | 后缀 | 示例 |
248
+ |------|------|------|
249
+ | 实体类 | 无/Entity | `Order`, `OrderEntity` |
250
+ | VO | XxxVO | `OrderVO` |
251
+ | DTO | XxxDTO | `OrderDTO` |
252
+ | Param | XxxParam/XxxQueryParam | `OrderQueryParam` |
253
+ | Service 接口 | XxxService | `OrderService` |
254
+ | Service 实现 | XxxServiceImpl | `OrderServiceImpl` |
255
+ | Controller | XxxController | `OrderController` |
256
+ | Mapper | XxxMapper | `OrderMapper` |
257
+ | Enum | XxxEnum | `OrderStatusEnum` |
258
+ | Handler | XxxHandler | `OrderHandler` |
259
+
260
+ ### 方法命名
261
+
262
+ | 操作 | Service 方法 | Mapper 方法 |
263
+ |------|-------------|-------------|
264
+ | 分页查询 | `pageXxx` | `pageXxx` |
265
+ | 查询列表 | `listXxx` | `listXxx` |
266
+ | 查询单个 | `getXxx` | `selectById` |
267
+ | 新增 | `save` / `add` / `create` | `insert` |
268
+ | 更新 | `update` / `modify` | `updateById` |
269
+ | 删除 | `delete` / `remove` | `deleteById` |
270
+
271
+ ## 避免过度工程
272
+
273
+ ### 不要做的事
274
+
275
+ 1. **不要创建不必要的抽象**
276
+ - 只有一处使用的代码不需要抽取
277
+ - 三处以上相同代码才考虑抽取
278
+
279
+ 2. **不要添加不需要的功能**
280
+ - 只实现当前需求
281
+ - 不要"以防万一"添加功能
282
+
283
+ 3. **不要过早优化**
284
+ - 优先使用简单直接的方案
285
+ - 复杂方案需要有明确理由
286
+
287
+ 4. **不要添加无用注释**
288
+ - 不要给显而易见的代码加注释
289
+ - 只在逻辑复杂处添加注释
290
+
291
+ 5. **不要保留废弃代码**
292
+ - 删除不用的代码,不要注释保留
293
+ - Git 有历史记录
294
+
295
+ ## Git 提交规范
296
+
297
+ ### 格式
298
+
299
+ ```
300
+ <type>(<scope>): <description>
301
+ ```
302
+
303
+ ### 类型
304
+
305
+ | type | 说明 |
306
+ |------|------|
307
+ | `feat` | 新功能 |
308
+ | `fix` | 修复 Bug |
309
+ | `docs` | 文档更新 |
310
+ | `style` | 代码格式(不影响逻辑) |
311
+ | `refactor` | 重构(不是新功能或修复) |
312
+ | `perf` | 性能优化 |
313
+ | `test` | 测试 |
314
+ | `chore` | 构建/工具 |
315
+
316
+ ### 示例
317
+
318
+ ```bash
319
+ feat(order): 新增订单创建功能
320
+ fix(order): 修复订单状态显示错误
321
+ docs(readme): 更新安装说明
322
+ refactor(common): 重构分页查询工具类
323
+ perf(order): 优化订单列表查询性能
324
+ ```
325
+
326
+ ## Hutool 工具类速查
327
+
328
+ ```java
329
+ import cn.hutool.core.collection.CollUtil;
330
+ import cn.hutool.core.util.ObjectUtil;
331
+ import cn.hutool.core.util.StrUtil;
332
+ import cn.hutool.core.bean.BeanUtil;
333
+
334
+ // 集合判空
335
+ if (CollUtil.isEmpty(list)) { }
336
+ if (CollUtil.isNotEmpty(list)) { }
337
+
338
+ // 对象判空
339
+ if (ObjectUtil.isNull(obj)) { }
340
+ if (ObjectUtil.isNotNull(obj)) { }
341
+
342
+ // 字符串判空
343
+ if (StrUtil.isBlank(str)) { }
344
+ if (StrUtil.isNotBlank(str)) { }
345
+
346
+ // 对象拷贝
347
+ Target target = BeanUtil.copyProperties(source, Target.class);
348
+ List<Target> targets = BeanUtil.copyToList(sources, Target.class);
349
+ ```
350
+
351
+ ## 通用代码规范
352
+
353
+ 无论使用哪种项目架构,以下规范都是通用的:
354
+
355
+ 1. **禁止使用 `SELECT *`**:明确指定字段
356
+ 2. **使用参数化查询**:`#{}` 而非 `${}`
357
+ 3. **异常必须处理**:不能吞掉异常
358
+ 4. **日志使用占位符**:`log.info("msg: {}", value)`
359
+ 5. **敏感信息脱敏**:不记录密码、身份证等
360
+ 6. **集合判空**:使用 `CollUtil.isEmpty()` 或类似方法
361
+ 7. **空指针防护**:使用 `ObjectUtil.isNull()`
362
+
363
+ ## 参考文档
364
+
365
+ 详见:[leniu-tengyun-core 源码](/Users/xujiajun/Developer/gongsi_proj/core/leniu-tengyun-core)