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,503 @@
1
+ # /dev - 开发新功能
2
+
3
+ 智能开发向导,专为 leniu-tengyun-core(云食堂)四层架构设计。包含表结构设计、代码生成全流程。
4
+
5
+ ## 适用场景
6
+
7
+ - ✅ 从零开始开发新业务功能
8
+ - ✅ 需要数据库表设计
9
+ - ✅ 需要完整的四层代码(Controller → Business → Service → Mapper)
10
+
11
+ ---
12
+
13
+ ## 执行流程
14
+
15
+ ### 第一步:需求确认
16
+
17
+ 询问用户:
18
+
19
+ ```
20
+ 请告诉我要开发的功能:
21
+
22
+ 1. 功能名称?(如:员工考勤管理、菜品分类管理)
23
+ 2. 所属模块?(sys-canteen / sys-kitchen / sys-drp / sys-common)
24
+ 3. 端类型?(web管理端 / mobile移动端 / android设备端 / open开放接口)
25
+ ```
26
+
27
+ 根据所属模块确定包名:
28
+
29
+ | 模块 | 包名前缀 | 路由前缀 |
30
+ |------|---------|---------|
31
+ | sys-canteen | `net.xnzn.core.canteen` | `/api/v2/web/canteen` |
32
+ | sys-kitchen | `net.xnzn.core.kitchen` | `/api/v2/web/kitchen` |
33
+ | sys-drp | `net.xnzn.core.drp` | `/api/v2/web/drp` |
34
+ | sys-common | `net.xnzn.core.common` | `/api/v2/web/common` |
35
+
36
+ ---
37
+
38
+ ### 第二步:功能重复检查(强制执行)
39
+
40
+ ```bash
41
+ # 检查是否已有相同 Controller
42
+ Grep pattern: "[功能名]Controller" path: [模块目录]/src/main/java output_mode: files_with_matches
43
+
44
+ # 检查是否已有相同 Service
45
+ Grep pattern: "[功能名]Service" path: [模块目录]/src/main/java output_mode: files_with_matches
46
+ ```
47
+
48
+ - ✅ 未存在 → 继续开发
49
+ - ⚠️ 已存在 → 停止,提示修改现有代码
50
+
51
+ ---
52
+
53
+ ### 第三步:数据库表设计
54
+
55
+ #### 3.1 智能字段命名推断
56
+
57
+ | 字段后缀 | Java 类型 | 查询方式 | 说明 |
58
+ |---------|---------|---------|------|
59
+ | `xxx_name` / `xxx_title` | String | LIKE | 名称/标题(模糊搜索)|
60
+ | `xxx_type` / `xxx_status` | Integer | EQ | 类型/状态(精确匹配)|
61
+ | `xxx_time` / `xxx_date` | LocalDateTime | BETWEEN | 时间范围查询 |
62
+ | `xxx_amount` / `xxx_price` | Long | EQ | 金额(分为单位)|
63
+ | `remark` | String | - | 备注 |
64
+ | `is_xxx` | Integer | EQ | 布尔标志(0/1)|
65
+
66
+ #### 3.2 建表 SQL 模板(leniu 规范)
67
+
68
+ ```sql
69
+ CREATE TABLE `[表名]` (
70
+ `id` BIGINT NOT NULL COMMENT '主键(雪花ID)',
71
+
72
+ -- 业务字段
73
+ `xxx_name` VARCHAR(100) NOT NULL COMMENT '名称',
74
+ `xxx_type` TINYINT DEFAULT 1 COMMENT '类型(1-xxx,2-xxx)',
75
+ `status` TINYINT DEFAULT 1 COMMENT '状态(0停用 1启用)',
76
+
77
+ -- 审计字段(注意:leniu 规范,不是 createBy/createTime)
78
+ `crby` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
79
+ `crtime` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
80
+ `upby` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
81
+ `uptime` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
82
+
83
+ -- 逻辑删除(注意:leniu 规范 2=正常,1=删除,与 RuoYi 相反)
84
+ `del_flag` TINYINT DEFAULT 2 COMMENT '删除标识(1删除 2正常)',
85
+
86
+ PRIMARY KEY (`id`),
87
+ KEY `idx_status` (`status`),
88
+ KEY `idx_crtime` (`crtime`),
89
+ KEY `idx_del_flag` (`del_flag`)
90
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[功能说明]表';
91
+ ```
92
+
93
+ **⚠️ 重要规范**:
94
+ - `id` 使用雪花ID(`Id.next()`),不使用 `AUTO_INCREMENT`
95
+ - `del_flag`:`2=正常,1=删除`(与 RuoYi 的 `0=正常` 相反)
96
+ - 无需 `tenant_id` 字段(双库物理隔离)
97
+ - 无需 `create_dept` 字段(leniu 不使用)
98
+
99
+ ---
100
+
101
+ ### 第四步:生成方案确认(仅此一次)
102
+
103
+ ```markdown
104
+ ## 代码生成方案
105
+
106
+ ### 基本配置
107
+ - **功能名称**:XXX 管理
108
+ - **模块**:sys-canteen
109
+ - **表名**:canteen_xxx
110
+ - **Java 类名前缀**:Xxx
111
+ - **包名**:net.xnzn.core.canteen.xxx
112
+ - **接口路由**:/api/v2/web/canteen/xxx
113
+
114
+ ### 文件清单(四层架构)
115
+ | 层 | 文件 | 说明 |
116
+ |----|------|------|
117
+ | Controller | `web/controller/XxxWebController.java` | Web 端接口 |
118
+ | Business | `web/business/impl/XxxWebBusiness.java` | 业务编排 |
119
+ | Service | `common/service/impl/XxxService.java` | 单表 CRUD |
120
+ | Mapper | `common/mapper/XxxMapper.java` | ORM 映射 |
121
+ | Entity | `common/model/Xxx.java` | 实体类 |
122
+ | DTO | `web/dto/XxxDTO.java` | 请求参数 |
123
+ | VO | `web/vo/XxxVO.java` | 返回对象 |
124
+
125
+ **确认开始生成?**(回复"确认"或"开始")
126
+ ```
127
+
128
+ ---
129
+
130
+ ### 第五步:自动生成代码
131
+
132
+ 用户确认后,按以下顺序生成所有文件:
133
+
134
+ #### 5.1 Entity 实体类
135
+
136
+ ```java
137
+ package net.xnzn.core.[模块].[功能].common.model;
138
+
139
+ import com.baomidou.mybatisplus.annotation.*;
140
+ import io.swagger.annotations.ApiModel;
141
+ import io.swagger.annotations.ApiModelProperty;
142
+ import lombok.Data;
143
+ import lombok.experimental.Accessors;
144
+ import java.io.Serializable;
145
+ import java.time.LocalDateTime;
146
+
147
+ /**
148
+ * [功能名称] 实体
149
+ *
150
+ * @author [作者]
151
+ * @date [日期]
152
+ */
153
+ @Data
154
+ @Accessors(chain = true)
155
+ @TableName("[表名]")
156
+ @ApiModel("[功能名称]")
157
+ public class [实体名] implements Serializable {
158
+
159
+ @ApiModelProperty("主键ID")
160
+ @TableId(value = "id", type = IdType.INPUT)
161
+ private Long id;
162
+
163
+ @ApiModelProperty("名称")
164
+ @TableField("xxx_name")
165
+ private String xxxName;
166
+
167
+ // 审计字段
168
+ @ApiModelProperty("删除标识(1删除,2正常)")
169
+ @TableField("del_flag")
170
+ private Integer delFlag;
171
+
172
+ @ApiModelProperty("创建人")
173
+ @TableField(value = "crby", fill = FieldFill.INSERT)
174
+ private String crby;
175
+
176
+ @ApiModelProperty("创建时间")
177
+ @TableField(value = "crtime", fill = FieldFill.INSERT)
178
+ private LocalDateTime crtime;
179
+
180
+ @ApiModelProperty("更新人")
181
+ @TableField(value = "upby", fill = FieldFill.INSERT_UPDATE)
182
+ private String upby;
183
+
184
+ @ApiModelProperty("更新时间")
185
+ @TableField(value = "uptime", fill = FieldFill.INSERT_UPDATE)
186
+ private LocalDateTime uptime;
187
+ }
188
+ ```
189
+
190
+ #### 5.2 DTO 请求参数
191
+
192
+ ```java
193
+ package net.xnzn.core.[模块].[功能].web.dto;
194
+
195
+ import io.swagger.annotations.ApiModel;
196
+ import io.swagger.annotations.ApiModelProperty;
197
+ import lombok.Data;
198
+ import jakarta.validation.constraints.*;
199
+ import java.io.Serializable;
200
+
201
+ @Data
202
+ @ApiModel("[功能名称] 请求参数")
203
+ public class [实体名]DTO implements Serializable {
204
+
205
+ @ApiModelProperty("主键ID(修改时必填)")
206
+ @NotNull(message = "ID不能为空", groups = {UpdateGroup.class})
207
+ private Long id;
208
+
209
+ @ApiModelProperty("名称")
210
+ @NotBlank(message = "名称不能为空", groups = {InsertGroup.class, UpdateGroup.class})
211
+ @Size(max = 100, message = "名称不能超过100个字符")
212
+ private String xxxName;
213
+
214
+ // 分页参数(查询接口使用)
215
+ @ApiModelProperty("页码")
216
+ private Integer pageNum = 1;
217
+
218
+ @ApiModelProperty("每页条数")
219
+ private Integer pageSize = 10;
220
+ }
221
+ ```
222
+
223
+ #### 5.3 VO 返回对象
224
+
225
+ ```java
226
+ package net.xnzn.core.[模块].[功能].web.vo;
227
+
228
+ import com.fasterxml.jackson.annotation.JsonFormat;
229
+ import io.swagger.annotations.ApiModel;
230
+ import io.swagger.annotations.ApiModelProperty;
231
+ import lombok.Data;
232
+ import java.io.Serializable;
233
+ import java.time.LocalDateTime;
234
+
235
+ @Data
236
+ @ApiModel("[功能名称] 返回对象")
237
+ public class [实体名]VO implements Serializable {
238
+
239
+ @ApiModelProperty("主键ID")
240
+ private Long id;
241
+
242
+ @ApiModelProperty("名称")
243
+ private String xxxName;
244
+
245
+ @ApiModelProperty("创建时间")
246
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
247
+ private LocalDateTime crtime;
248
+ }
249
+ ```
250
+
251
+ #### 5.4 Mapper 接口(与 XML 同目录)
252
+
253
+ ```java
254
+ package net.xnzn.core.[模块].[功能].common.mapper;
255
+
256
+ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
257
+ import net.xnzn.core.[模块].[功能].common.model.[实体名];
258
+ import org.apache.ibatis.annotations.Mapper;
259
+
260
+ /**
261
+ * [功能名称] Mapper
262
+ */
263
+ @Mapper
264
+ public interface [实体名]Mapper extends BaseMapper<[实体名]> {
265
+ }
266
+ ```
267
+
268
+ #### 5.5 Service 实现
269
+
270
+ ```java
271
+ package net.xnzn.core.[模块].[功能].common.service.impl;
272
+
273
+ import cn.hutool.core.bean.BeanUtil;
274
+ import cn.hutool.core.util.ObjectUtil;
275
+ import cn.hutool.core.util.StrUtil;
276
+ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
277
+ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
278
+ import com.pig4cloud.pigx.common.core.exception.LeException;
279
+ import lombok.extern.slf4j.Slf4j;
280
+ import net.xnzn.core.[模块].[功能].web.dto.[实体名]DTO;
281
+ import net.xnzn.core.[模块].[功能].common.mapper.[实体名]Mapper;
282
+ import net.xnzn.core.[模块].[功能].common.model.[实体名];
283
+ import net.xnzn.core.[模块].[功能].web.vo.[实体名]VO;
284
+ import net.xnzn.framework.id.Id;
285
+ import org.springframework.stereotype.Service;
286
+ import org.springframework.transaction.annotation.Transactional;
287
+
288
+ import javax.annotation.Resource;
289
+ import java.util.Collections;
290
+ import java.util.List;
291
+ import java.util.Optional;
292
+
293
+ @Slf4j
294
+ @Service
295
+ public class [实体名]Service {
296
+
297
+ @Resource
298
+ private [实体名]Mapper [实体名小写]Mapper;
299
+
300
+ @Transactional(rollbackFor = Exception.class)
301
+ public Long add([实体名]DTO dto) {
302
+ [实体名] entity = BeanUtil.copyProperties(dto, [实体名].class);
303
+ entity.setId(Id.next());
304
+ entity.setDelFlag(2); // 2=正常
305
+ [实体名小写]Mapper.insert(entity);
306
+ return entity.getId();
307
+ }
308
+
309
+ @Transactional(rollbackFor = Exception.class)
310
+ public void update([实体名]DTO dto) {
311
+ Optional.ofNullable([实体名小写]Mapper.selectById(dto.getId()))
312
+ .orElseThrow(() -> new LeException("记录不存在"));
313
+ [实体名] entity = BeanUtil.copyProperties(dto, [实体名].class);
314
+ [实体名小写]Mapper.updateById(entity);
315
+ }
316
+
317
+ @Transactional(rollbackFor = Exception.class)
318
+ public void delete(Long id) {
319
+ Optional.ofNullable([实体名小写]Mapper.selectById(id))
320
+ .orElseThrow(() -> new LeException("记录不存在"));
321
+ [实体名] entity = new [实体名]().setId(id).setDelFlag(1); // 1=删除
322
+ [实体名小写]Mapper.updateById(entity);
323
+ }
324
+
325
+ public [实体名]VO getById(Long id) {
326
+ [实体名] entity = Optional.ofNullable([实体名小写]Mapper.selectById(id))
327
+ .orElseThrow(() -> new LeException("记录不存在"));
328
+ return BeanUtil.copyProperties(entity, [实体名]VO.class);
329
+ }
330
+
331
+ public List<[实体名]VO> list([实体名]DTO dto) {
332
+ LambdaQueryWrapper<[实体名]> wrapper = buildWrapper(dto);
333
+ List<[实体名]> list = [实体名小写]Mapper.selectList(wrapper);
334
+ if (list == null || list.isEmpty()) {
335
+ return Collections.emptyList();
336
+ }
337
+ return BeanUtil.copyToList(list, [实体名]VO.class);
338
+ }
339
+
340
+ private LambdaQueryWrapper<[实体名]> buildWrapper([实体名]DTO dto) {
341
+ LambdaQueryWrapper<[实体名]> wrapper = Wrappers.lambdaQuery();
342
+ wrapper.eq([实体名]::getDelFlag, 2); // 只查正常数据
343
+ if (StrUtil.isNotBlank(dto.getXxxName())) {
344
+ wrapper.like([实体名]::getXxxName, dto.getXxxName());
345
+ }
346
+ wrapper.orderByDesc([实体名]::getCrtime);
347
+ return wrapper;
348
+ }
349
+ }
350
+ ```
351
+
352
+ #### 5.6 Business 业务层
353
+
354
+ ```java
355
+ package net.xnzn.core.[模块].[功能].web.business.impl;
356
+
357
+ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
358
+ import com.github.pagehelper.page.PageMethod;
359
+ import net.xnzn.core.[模块].[功能].web.dto.[实体名]DTO;
360
+ import net.xnzn.core.[模块].[功能].common.service.impl.[实体名]Service;
361
+ import net.xnzn.core.[模块].[功能].web.vo.[实体名]VO;
362
+ import lombok.extern.slf4j.Slf4j;
363
+ import org.springframework.stereotype.Service;
364
+
365
+ import javax.annotation.Resource;
366
+ import java.util.List;
367
+
368
+ @Slf4j
369
+ @Service
370
+ public class [实体名]WebBusiness {
371
+
372
+ @Resource
373
+ private [实体名]Service [实体名小写]Service;
374
+
375
+ public Long add([实体名]DTO dto) {
376
+ return [实体名小写]Service.add(dto);
377
+ }
378
+
379
+ public void update([实体名]DTO dto) {
380
+ [实体名小写]Service.update(dto);
381
+ }
382
+
383
+ public void delete(Long id) {
384
+ [实体名小写]Service.delete(id);
385
+ }
386
+
387
+ public [实体名]VO getById(Long id) {
388
+ return [实体名小写]Service.getById(id);
389
+ }
390
+
391
+ public List<[实体名]VO> page([实体名]DTO dto) {
392
+ PageMethod.startPage(dto.getPageNum(), dto.getPageSize());
393
+ return [实体名小写]Service.list(dto);
394
+ }
395
+ }
396
+ ```
397
+
398
+ #### 5.7 Controller 接口层
399
+
400
+ ```java
401
+ package net.xnzn.core.[模块].[功能].web.controller;
402
+
403
+ import com.pig4cloud.pigx.common.core.util.LeRequest;
404
+ import io.swagger.annotations.Api;
405
+ import io.swagger.annotations.ApiOperation;
406
+ import lombok.extern.slf4j.Slf4j;
407
+ import net.xnzn.core.[模块].[功能].web.business.impl.[实体名]WebBusiness;
408
+ import net.xnzn.core.[模块].[功能].web.dto.[实体名]DTO;
409
+ import net.xnzn.core.[模块].[功能].web.vo.[实体名]VO;
410
+ import net.xnzn.framework.secure.filter.annotation.RequiresAuthentication;
411
+ import org.springframework.validation.annotation.Validated;
412
+ import org.springframework.web.bind.annotation.*;
413
+
414
+ import javax.annotation.Resource;
415
+ import java.util.List;
416
+
417
+ @Slf4j
418
+ @RestController
419
+ @RequestMapping("/api/v2/web/[模块]/[功能]")
420
+ @Api(tags = "[功能名称]管理")
421
+ public class [实体名]WebController {
422
+
423
+ @Resource
424
+ private [实体名]WebBusiness [实体名小写]Business;
425
+
426
+ @PostMapping("/add")
427
+ @ApiOperation("新增")
428
+ @RequiresAuthentication
429
+ public Long add(@Validated(InsertGroup.class) @RequestBody LeRequest<[实体名]DTO> request) {
430
+ return [实体名小写]Business.add(request.getContent());
431
+ }
432
+
433
+ @PostMapping("/update")
434
+ @ApiOperation("修改")
435
+ @RequiresAuthentication
436
+ public void update(@Validated(UpdateGroup.class) @RequestBody LeRequest<[实体名]DTO> request) {
437
+ [实体名小写]Business.update(request.getContent());
438
+ }
439
+
440
+ @PostMapping("/delete")
441
+ @ApiOperation("删除")
442
+ @RequiresAuthentication
443
+ public void delete(@RequestBody LeRequest<Long> request) {
444
+ [实体名小写]Business.delete(request.getContent());
445
+ }
446
+
447
+ @GetMapping("/get/{id}")
448
+ @ApiOperation("获取详情")
449
+ @RequiresAuthentication
450
+ public [实体名]VO getById(@PathVariable Long id) {
451
+ return [实体名小写]Business.getById(id);
452
+ }
453
+
454
+ @PostMapping("/page")
455
+ @ApiOperation("分页查询")
456
+ @RequiresAuthentication
457
+ public List<[实体名]VO> page(@RequestBody LeRequest<[实体名]DTO> request) {
458
+ return [实体名小写]Business.page(request.getContent());
459
+ }
460
+ }
461
+ ```
462
+
463
+ ---
464
+
465
+ ### 第六步:完成报告
466
+
467
+ ```markdown
468
+ ## 代码生成完成!
469
+
470
+ ### 已生成文件(7 个)
471
+
472
+ | 层 | 文件 |
473
+ |----|------|
474
+ | Controller | web/controller/[实体名]WebController.java |
475
+ | Business | web/business/impl/[实体名]WebBusiness.java |
476
+ | Service | common/service/impl/[实体名]Service.java |
477
+ | Mapper | common/mapper/[实体名]Mapper.java |
478
+ | Entity | common/model/[实体名].java |
479
+ | DTO | web/dto/[实体名]DTO.java |
480
+ | VO | web/vo/[实体名]VO.java |
481
+
482
+ ### 下一步
483
+
484
+ 1. 执行建表 SQL
485
+ 2. 根据业务需求完善 buildWrapper 查询条件
486
+ 3. 如有复杂业务逻辑,在 Business 层添加编排
487
+ 4. 使用 /check 检查代码规范
488
+ ```
489
+
490
+ ---
491
+
492
+ ## 执行规则
493
+
494
+ 1. ✅ **包名**:必须是 `net.xnzn.core.[模块].*`
495
+ 2. ✅ **四层架构**:Controller → Business → Service → Mapper
496
+ 3. ✅ **审计字段**:crby/crtime/upby/uptime(不是 createBy/createTime)
497
+ 4. ✅ **del_flag**:`2=正常,1=删除`(不是 0=正常)
498
+ 5. ✅ **无 tenant_id**:双库物理隔离,Entity 不含此字段
499
+ 6. ✅ **LeRequest<T>**:POST 请求体统一封装
500
+ 7. ✅ **BeanUtil**:对象转换用 `BeanUtil.copyProperties()`(不用 MapstructUtils)
501
+ 8. ✅ **LeException**:异常用 `LeException`(不用 ServiceException)
502
+ 9. ✅ **Id.next()**:主键用雪花 ID(不用 AUTO_INCREMENT)
503
+ 10. ✅ **Mapper XML**:与 Java 文件放同一目录(不在 resources/mapper/)