create-yss-spec 2.2.8 → 2.2.10

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 (642) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/mcp_config.json +8 -0
  4. package/template/.agents/rules/yss-ai-skills.md +3 -1
  5. package/template/.agents/skills/.yss-skills-manifest.json +51 -25
  6. package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -3
  7. package/template/.agents/skills/component-selection-imports/SKILL.md +2 -2
  8. package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
  9. package/template/.agents/skills/yss-api-integration/SKILL.md +85 -339
  10. package/template/.agents/skills/yss-application/SKILL.md +7 -5
  11. package/template/.agents/skills/yss-application/references/application-layer-guide.md +60 -105
  12. package/template/.agents/skills/yss-components/SKILL.md +1 -1
  13. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  18. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  23. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  24. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  25. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  31. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  32. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  33. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  34. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  35. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  36. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  37. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  38. package/template/.agents/skills/yss-design-system/references/design-system.md +2 -2
  39. package/template/.agents/skills/yss-domain/SKILL.md +3 -3
  40. package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +61 -236
  41. package/template/.agents/skills/yss-dto/SKILL.md +5 -5
  42. package/template/.agents/skills/yss-dto/references/README.md +2 -2
  43. package/template/.agents/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  44. package/template/.agents/skills/yss-exception/SKILL.md +2 -0
  45. package/template/.agents/skills/yss-formily/SKILL.md +1 -1
  46. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  47. package/template/.agents/skills/yss-page-module-development/SKILL.md +2 -0
  48. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +2 -0
  49. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  50. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  51. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  52. package/template/.agents/skills/yss-repository/SKILL.md +7 -5
  53. package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  54. package/template/.agents/skills/yss-router/references/router-contract.yaml +71 -10
  55. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +14 -0
  56. package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  57. package/template/.agents/skills/yss-ui/SKILL.md +6 -5
  58. package/template/.agents/skills/yss-ui/references/component-routing.md +1 -1
  59. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  60. package/template/.agents/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  61. package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  62. package/template/.agents/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  63. package/template/.agents/skills/yss-use-table-height/SKILL.md +78 -297
  64. package/template/.agents/skills/yss-use-tree-height/SKILL.md +51 -393
  65. package/template/.agents/skills/yss-web-controller/SKILL.md +12 -11
  66. package/template/.agents/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  67. package/template/.agents/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  68. package/template/{.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .agents/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
  69. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  70. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  71. package/template/.agents/skills/yss-web-controller/assets/templates/{domain/dto/cmd/AddCmd.java.template → web/dto/UpdateRequest.java.template} +7 -11
  72. package/template/.agents/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  73. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  74. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  75. package/template/.claude/skills/code-review/references/yss-review-standards.md +3 -3
  76. package/template/.claude/skills/component-selection-imports/SKILL.md +2 -2
  77. package/template/.claude/skills/frontend-commit/SKILL.md +1 -1
  78. package/template/.claude/skills/yss-api-integration/SKILL.md +85 -339
  79. package/template/.claude/skills/yss-application/SKILL.md +7 -5
  80. package/template/.claude/skills/yss-application/references/application-layer-guide.md +60 -105
  81. package/template/.claude/skills/yss-components/SKILL.md +1 -1
  82. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  83. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  84. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  85. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  86. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  87. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  88. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  89. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  90. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  91. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  92. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  93. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  94. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  95. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  96. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  97. package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  98. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  99. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  100. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  101. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  102. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  103. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  104. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  105. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  106. package/template/.claude/skills/yss-design-system/SKILL.md +2 -2
  107. package/template/.claude/skills/yss-design-system/references/design-system.md +2 -2
  108. package/template/.claude/skills/yss-domain/SKILL.md +3 -3
  109. package/template/.claude/skills/yss-domain/references/domain-layer-guide.md +61 -236
  110. package/template/.claude/skills/yss-dto/SKILL.md +5 -5
  111. package/template/.claude/skills/yss-dto/references/README.md +2 -2
  112. package/template/.claude/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  113. package/template/.claude/skills/yss-exception/SKILL.md +2 -0
  114. package/template/.claude/skills/yss-formily/SKILL.md +1 -1
  115. package/template/.claude/skills/yss-mybatis/SKILL.md +2 -2
  116. package/template/.claude/skills/yss-page-module-development/SKILL.md +2 -0
  117. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +2 -0
  118. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  119. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  120. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  121. package/template/.claude/skills/yss-repository/SKILL.md +7 -5
  122. package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  123. package/template/.claude/skills/yss-router/references/router-contract.yaml +71 -10
  124. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +14 -0
  125. package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  126. package/template/.claude/skills/yss-ui/SKILL.md +6 -5
  127. package/template/.claude/skills/yss-ui/references/component-routing.md +1 -1
  128. package/template/.claude/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  129. package/template/.claude/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  130. package/template/.claude/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  131. package/template/.claude/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  132. package/template/.claude/skills/yss-use-table-height/SKILL.md +78 -297
  133. package/template/.claude/skills/yss-use-tree-height/SKILL.md +51 -393
  134. package/template/.claude/skills/yss-web-controller/SKILL.md +12 -11
  135. package/template/.claude/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  136. package/template/.claude/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  137. package/template/{.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
  138. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  139. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  140. package/template/{.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template} +7 -11
  141. package/template/.claude/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  142. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  143. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  144. package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -3
  145. package/template/.codex/skills/component-selection-imports/SKILL.md +2 -2
  146. package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
  147. package/template/.codex/skills/yss-api-integration/SKILL.md +85 -339
  148. package/template/.codex/skills/yss-application/SKILL.md +7 -5
  149. package/template/.codex/skills/yss-application/references/application-layer-guide.md +60 -105
  150. package/template/.codex/skills/yss-components/SKILL.md +1 -1
  151. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  152. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  153. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  154. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  155. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  156. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  157. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  158. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  159. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  160. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  161. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  162. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  163. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  164. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  165. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  166. package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  167. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  168. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  169. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  170. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  171. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  172. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  173. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  174. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  175. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  176. package/template/.codex/skills/yss-design-system/references/design-system.md +2 -2
  177. package/template/.codex/skills/yss-domain/SKILL.md +3 -3
  178. package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +61 -236
  179. package/template/.codex/skills/yss-dto/SKILL.md +5 -5
  180. package/template/.codex/skills/yss-dto/references/README.md +2 -2
  181. package/template/.codex/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  182. package/template/.codex/skills/yss-exception/SKILL.md +2 -0
  183. package/template/.codex/skills/yss-formily/SKILL.md +1 -1
  184. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  185. package/template/.codex/skills/yss-page-module-development/SKILL.md +2 -0
  186. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +2 -0
  187. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  188. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  189. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  190. package/template/.codex/skills/yss-repository/SKILL.md +7 -5
  191. package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  192. package/template/.codex/skills/yss-router/references/router-contract.yaml +71 -10
  193. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +14 -0
  194. package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  195. package/template/.codex/skills/yss-ui/SKILL.md +6 -5
  196. package/template/.codex/skills/yss-ui/references/component-routing.md +1 -1
  197. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  198. package/template/.codex/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  199. package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  200. package/template/.codex/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  201. package/template/.codex/skills/yss-use-table-height/SKILL.md +78 -297
  202. package/template/.codex/skills/yss-use-tree-height/SKILL.md +51 -393
  203. package/template/.codex/skills/yss-web-controller/SKILL.md +12 -11
  204. package/template/.codex/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  205. package/template/.codex/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  206. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  207. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  208. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  209. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  210. package/template/.codex/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  211. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  212. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  213. package/template/.cursor/mcp.json +8 -0
  214. package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -3
  215. package/template/.cursor/skills/component-selection-imports/SKILL.md +2 -2
  216. package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
  217. package/template/.cursor/skills/yss-api-integration/SKILL.md +85 -339
  218. package/template/.cursor/skills/yss-application/SKILL.md +7 -5
  219. package/template/.cursor/skills/yss-application/references/application-layer-guide.md +60 -105
  220. package/template/.cursor/skills/yss-components/SKILL.md +1 -1
  221. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  222. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  223. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  224. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  225. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  226. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  227. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  228. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  229. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  230. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  231. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  232. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  233. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  234. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  235. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  236. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  237. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  238. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  239. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  240. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  241. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  242. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  243. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  244. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  245. package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
  246. package/template/.cursor/skills/yss-design-system/references/design-system.md +2 -2
  247. package/template/.cursor/skills/yss-domain/SKILL.md +3 -3
  248. package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +61 -236
  249. package/template/.cursor/skills/yss-dto/SKILL.md +5 -5
  250. package/template/.cursor/skills/yss-dto/references/README.md +2 -2
  251. package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  252. package/template/.cursor/skills/yss-exception/SKILL.md +2 -0
  253. package/template/.cursor/skills/yss-formily/SKILL.md +1 -1
  254. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  255. package/template/.cursor/skills/yss-page-module-development/SKILL.md +2 -0
  256. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +2 -0
  257. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  258. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  259. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  260. package/template/.cursor/skills/yss-repository/SKILL.md +7 -5
  261. package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  262. package/template/.cursor/skills/yss-router/references/router-contract.yaml +71 -10
  263. package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +14 -0
  264. package/template/.cursor/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  265. package/template/.cursor/skills/yss-ui/SKILL.md +6 -5
  266. package/template/.cursor/skills/yss-ui/references/component-routing.md +1 -1
  267. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  268. package/template/.cursor/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  269. package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  270. package/template/.cursor/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  271. package/template/.cursor/skills/yss-use-table-height/SKILL.md +78 -297
  272. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +51 -393
  273. package/template/.cursor/skills/yss-web-controller/SKILL.md +12 -11
  274. package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  275. package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  276. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  277. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  278. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  279. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  280. package/template/.cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  281. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  282. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  283. package/template/.cursorrules +9 -5
  284. package/template/.gemini/settings.json +8 -0
  285. package/template/.hermes/skills/code-review/references/yss-review-standards.md +3 -3
  286. package/template/.hermes/skills/component-selection-imports/SKILL.md +2 -2
  287. package/template/.hermes/skills/frontend-commit/SKILL.md +1 -1
  288. package/template/.hermes/skills/yss-api-integration/SKILL.md +85 -339
  289. package/template/.hermes/skills/yss-application/SKILL.md +7 -5
  290. package/template/.hermes/skills/yss-application/references/application-layer-guide.md +60 -105
  291. package/template/.hermes/skills/yss-components/SKILL.md +1 -1
  292. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  293. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  294. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  295. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  296. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  297. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  298. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  299. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  300. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  301. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  302. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  303. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  304. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  305. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  306. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  307. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  308. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  309. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  310. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  311. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  312. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  313. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  314. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  315. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  316. package/template/.hermes/skills/yss-design-system/SKILL.md +2 -2
  317. package/template/.hermes/skills/yss-design-system/references/design-system.md +2 -2
  318. package/template/.hermes/skills/yss-domain/SKILL.md +3 -3
  319. package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +61 -236
  320. package/template/.hermes/skills/yss-dto/SKILL.md +5 -5
  321. package/template/.hermes/skills/yss-dto/references/README.md +2 -2
  322. package/template/.hermes/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  323. package/template/.hermes/skills/yss-exception/SKILL.md +2 -0
  324. package/template/.hermes/skills/yss-formily/SKILL.md +1 -1
  325. package/template/.hermes/skills/yss-mybatis/SKILL.md +2 -2
  326. package/template/.hermes/skills/yss-page-module-development/SKILL.md +2 -0
  327. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +2 -0
  328. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  329. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  330. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  331. package/template/.hermes/skills/yss-repository/SKILL.md +7 -5
  332. package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  333. package/template/.hermes/skills/yss-router/references/router-contract.yaml +71 -10
  334. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +14 -0
  335. package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  336. package/template/.hermes/skills/yss-ui/SKILL.md +6 -5
  337. package/template/.hermes/skills/yss-ui/references/component-routing.md +1 -1
  338. package/template/.hermes/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  339. package/template/.hermes/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  340. package/template/.hermes/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  341. package/template/.hermes/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  342. package/template/.hermes/skills/yss-use-table-height/SKILL.md +78 -297
  343. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +51 -393
  344. package/template/.hermes/skills/yss-web-controller/SKILL.md +12 -11
  345. package/template/.hermes/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  346. package/template/.hermes/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  347. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  348. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  349. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  350. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  351. package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  352. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  353. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  354. package/template/.kiro/settings/mcp.json +8 -0
  355. package/template/.mcp.json +8 -0
  356. package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -3
  357. package/template/.pi/skills/component-selection-imports/SKILL.md +2 -2
  358. package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
  359. package/template/.pi/skills/yss-api-integration/SKILL.md +85 -339
  360. package/template/.pi/skills/yss-application/SKILL.md +7 -5
  361. package/template/.pi/skills/yss-application/references/application-layer-guide.md +60 -105
  362. package/template/.pi/skills/yss-components/SKILL.md +1 -1
  363. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  364. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  365. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  366. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  367. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  368. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  369. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  370. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  371. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  372. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  373. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  374. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  375. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  376. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  377. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  378. package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  379. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  380. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  381. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  382. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  383. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  384. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  385. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  386. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  387. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  388. package/template/.pi/skills/yss-design-system/references/design-system.md +2 -2
  389. package/template/.pi/skills/yss-domain/SKILL.md +3 -3
  390. package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +61 -236
  391. package/template/.pi/skills/yss-dto/SKILL.md +5 -5
  392. package/template/.pi/skills/yss-dto/references/README.md +2 -2
  393. package/template/.pi/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  394. package/template/.pi/skills/yss-exception/SKILL.md +2 -0
  395. package/template/.pi/skills/yss-formily/SKILL.md +1 -1
  396. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  397. package/template/.pi/skills/yss-page-module-development/SKILL.md +2 -0
  398. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +2 -0
  399. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  400. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  401. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  402. package/template/.pi/skills/yss-repository/SKILL.md +7 -5
  403. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  404. package/template/.pi/skills/yss-router/references/router-contract.yaml +71 -10
  405. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +14 -0
  406. package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  407. package/template/.pi/skills/yss-ui/SKILL.md +6 -5
  408. package/template/.pi/skills/yss-ui/references/component-routing.md +1 -1
  409. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  410. package/template/.pi/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  411. package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  412. package/template/.pi/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  413. package/template/.pi/skills/yss-use-table-height/SKILL.md +78 -297
  414. package/template/.pi/skills/yss-use-tree-height/SKILL.md +51 -393
  415. package/template/.pi/skills/yss-web-controller/SKILL.md +12 -11
  416. package/template/.pi/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  417. package/template/.pi/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  418. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  419. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  420. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  421. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  422. package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  423. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  424. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  425. package/template/.qoder/skills/code-review/references/yss-review-standards.md +3 -3
  426. package/template/.qoder/skills/component-selection-imports/SKILL.md +2 -2
  427. package/template/.qoder/skills/frontend-commit/SKILL.md +1 -1
  428. package/template/.qoder/skills/yss-api-integration/SKILL.md +85 -339
  429. package/template/.qoder/skills/yss-application/SKILL.md +7 -5
  430. package/template/.qoder/skills/yss-application/references/application-layer-guide.md +60 -105
  431. package/template/.qoder/skills/yss-components/SKILL.md +1 -1
  432. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  433. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  434. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  435. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  436. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  437. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  438. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  439. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  440. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  441. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  442. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  443. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  444. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  445. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  446. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  447. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  448. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  449. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  450. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  451. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  452. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  453. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  454. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  455. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  456. package/template/.qoder/skills/yss-design-system/SKILL.md +2 -2
  457. package/template/.qoder/skills/yss-design-system/references/design-system.md +2 -2
  458. package/template/.qoder/skills/yss-domain/SKILL.md +3 -3
  459. package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +61 -236
  460. package/template/.qoder/skills/yss-dto/SKILL.md +5 -5
  461. package/template/.qoder/skills/yss-dto/references/README.md +2 -2
  462. package/template/.qoder/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  463. package/template/.qoder/skills/yss-exception/SKILL.md +2 -0
  464. package/template/.qoder/skills/yss-formily/SKILL.md +1 -1
  465. package/template/.qoder/skills/yss-mybatis/SKILL.md +2 -2
  466. package/template/.qoder/skills/yss-page-module-development/SKILL.md +2 -0
  467. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +2 -0
  468. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  469. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  470. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  471. package/template/.qoder/skills/yss-repository/SKILL.md +7 -5
  472. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  473. package/template/.qoder/skills/yss-router/references/router-contract.yaml +71 -10
  474. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +14 -0
  475. package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  476. package/template/.qoder/skills/yss-ui/SKILL.md +6 -5
  477. package/template/.qoder/skills/yss-ui/references/component-routing.md +1 -1
  478. package/template/.qoder/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  479. package/template/.qoder/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  480. package/template/.qoder/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  481. package/template/.qoder/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  482. package/template/.qoder/skills/yss-use-table-height/SKILL.md +78 -297
  483. package/template/.qoder/skills/yss-use-tree-height/SKILL.md +51 -393
  484. package/template/.qoder/skills/yss-web-controller/SKILL.md +12 -11
  485. package/template/.qoder/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  486. package/template/.qoder/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  487. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  488. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  489. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  490. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  491. package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  492. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  493. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  494. package/template/.trae/skills/code-review/references/yss-review-standards.md +3 -3
  495. package/template/.trae/skills/component-selection-imports/SKILL.md +2 -2
  496. package/template/.trae/skills/frontend-commit/SKILL.md +1 -1
  497. package/template/.trae/skills/yss-api-integration/SKILL.md +85 -339
  498. package/template/.trae/skills/yss-application/SKILL.md +7 -5
  499. package/template/.trae/skills/yss-application/references/application-layer-guide.md +60 -105
  500. package/template/.trae/skills/yss-components/SKILL.md +1 -1
  501. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  502. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  503. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  504. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  505. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  506. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  507. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  508. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  509. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  510. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  511. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  512. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  513. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  514. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  515. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  516. package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  517. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  518. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  519. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  520. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  521. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  522. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  523. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  524. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  525. package/template/.trae/skills/yss-design-system/SKILL.md +2 -2
  526. package/template/.trae/skills/yss-design-system/references/design-system.md +2 -2
  527. package/template/.trae/skills/yss-domain/SKILL.md +3 -3
  528. package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +61 -236
  529. package/template/.trae/skills/yss-dto/SKILL.md +5 -5
  530. package/template/.trae/skills/yss-dto/references/README.md +2 -2
  531. package/template/.trae/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  532. package/template/.trae/skills/yss-exception/SKILL.md +2 -0
  533. package/template/.trae/skills/yss-formily/SKILL.md +1 -1
  534. package/template/.trae/skills/yss-mybatis/SKILL.md +2 -2
  535. package/template/.trae/skills/yss-page-module-development/SKILL.md +2 -0
  536. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +2 -0
  537. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  538. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
  539. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -0
  540. package/template/.trae/skills/yss-repository/SKILL.md +7 -5
  541. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  542. package/template/.trae/skills/yss-router/references/router-contract.yaml +71 -10
  543. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +14 -0
  544. package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +5 -0
  545. package/template/.trae/skills/yss-ui/SKILL.md +6 -5
  546. package/template/.trae/skills/yss-ui/references/component-routing.md +1 -1
  547. package/template/.trae/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  548. package/template/.trae/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  549. package/template/.trae/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  550. package/template/.trae/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  551. package/template/.trae/skills/yss-use-table-height/SKILL.md +78 -297
  552. package/template/.trae/skills/yss-use-tree-height/SKILL.md +51 -393
  553. package/template/.trae/skills/yss-web-controller/SKILL.md +12 -11
  554. package/template/.trae/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  555. package/template/.trae/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  556. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  557. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  558. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  559. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  560. package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  561. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  562. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  563. package/template/.vscode/mcp.json +8 -0
  564. package/template/AGENTS.md +1 -0
  565. package/template/CONTEXT.md +2 -2
  566. package/template/DESIGN.md +203 -0
  567. package/template/README.md +3 -0
  568. package/template/docs/agents/digital-human-roles.md +1 -1
  569. package/template/docs/agents/digital-human-roles.yaml +18 -22
  570. package/template/docs/agents/skills-maintenance.md +7 -4
  571. package/template/docs/agents/yss-plugin-dependency-contract.md +45 -0
  572. package/template/docs/agents/yss-skill-registry.yaml +37 -2
  573. package/template/docs/agents/yss-ui-skills-integration.md +24 -0
  574. package/template/docs/architecture/templates/engineering-baseline-review-template.md +19 -0
  575. package/template/docs/design/README.md +12 -1
  576. package/template/docs/design/design-system-sync.yaml +12 -0
  577. package/template/docs/design/design.md +22 -2
  578. package/template/docs/design/preview-dark.html +15 -0
  579. package/template/docs/design/preview.html +20 -0
  580. package/template/docs/design/tokens/.design-md-projection.json +13 -0
  581. package/template/docs/discovery/reports/agent-governance-options.md +71 -0
  582. package/template/docs/process/harness-process-tailoring.md +7 -0
  583. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  584. package/template/docs/process/lifecycle-registry.yaml +1 -1
  585. package/template/docs/process/template-verification-profiles.yaml +18 -0
  586. package/template/docs/templates/build-architecture-checklist-template.md +2 -0
  587. package/template/docs/templates/implementation-routing-template.md +28 -3
  588. package/template/docs/templates/review-report-template.md +2 -2
  589. package/template/docs/user-guide/yss-ui-mcp.md +43 -0
  590. package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +218 -0
  591. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +55 -2
  592. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +21 -0
  593. package/template/scripts/lib/digital-human-roles.mjs +0 -1
  594. package/template/scripts/lib/scenario-checks.mjs +3 -3
  595. package/template/scripts/lib/skill-governance.mjs +36 -2
  596. package/template/scripts/lib/skill-registry.mjs +72 -1
  597. package/template/scripts/lib/skill-supply-chain.mjs +72 -1
  598. package/template/scripts/verify-digital-human-roles-scenarios +1 -1
  599. package/template/scripts/verify-scaffold-generator-scenarios +150 -44
  600. package/template/scripts/verify-skill-governance +1 -1
  601. package/template/scripts/verify-upstream-skill-source +38 -3
  602. package/template/scripts/verify-yss-dto-openapi-profile +4 -2
  603. package/template/skills-lock.json +159 -84
  604. package/template/yss-public-skills.json +2 -0
  605. package/template.manifest.json +5 -0
  606. package/template.snapshot.json +5 -5
  607. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  608. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  609. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  610. package/template/.agents/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  611. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  612. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  613. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  614. package/template/.claude/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  615. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  616. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  617. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  618. package/template/.codex/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  619. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  620. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  621. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  622. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  623. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  624. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  625. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  626. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  627. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  628. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  629. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  630. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  631. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  632. package/template/.pi/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  633. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  634. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  635. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  636. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  637. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  638. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  639. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  640. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  641. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  642. package/template/.trae/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
@@ -0,0 +1,19 @@
1
+ package ${base_package}.rest.dto.request;
2
+
3
+ import com.yss.cloud.dto.CommandDTO;
4
+ import lombok.Getter;
5
+ import lombok.Setter;
6
+ import ${validation_namespace}.validation.constraints.NotBlank;
7
+ import ${validation_namespace}.validation.constraints.NotNull;
8
+ import java.util.Date;
9
+ import java.math.BigDecimal;
10
+ import java.time.LocalDateTime;
11
+ import java.time.LocalDate;
12
+
13
+ /** ${domain_desc}新增请求。字段来自批准的 OpenAPI allowlist。 */
14
+ @Getter
15
+ @Setter
16
+ public class ${domain_class}CreateRequest extends CommandDTO {
17
+
18
+ ${field_declarations}
19
+ }
@@ -0,0 +1,24 @@
1
+ package ${base_package}.rest.dto.request;
2
+
3
+ import com.yss.cloud.dto.QueryDTO;
4
+ import lombok.Getter;
5
+ import lombok.Setter;
6
+ import java.util.Date;
7
+ import java.math.BigDecimal;
8
+ import java.time.LocalDateTime;
9
+ import java.time.LocalDate;
10
+
11
+ /**
12
+ * ${domain_desc}分页请求。仅暴露已冻结的 HTTP 查询字段。
13
+ */
14
+ @Getter
15
+ @Setter
16
+ public class ${domain_class}PageRequest extends QueryDTO {
17
+ private int pageIndex = 1;
18
+ private int pageSize = 20;
19
+ private String orderBy;
20
+ private String orderDirection;
21
+ private String groupBy;
22
+
23
+ ${field_declarations}
24
+ }
@@ -0,0 +1,18 @@
1
+ package ${base_package}.rest.dto.response;
2
+
3
+ import lombok.Getter;
4
+ import lombok.Setter;
5
+ import java.io.Serializable;
6
+ import java.util.Date;
7
+ import java.math.BigDecimal;
8
+ import java.time.LocalDateTime;
9
+ import java.time.LocalDate;
10
+
11
+ /** ${domain_desc}公开响应。字段来自批准的 OpenAPI allowlist。 */
12
+ @Getter
13
+ @Setter
14
+ public class ${domain_class}Response implements Serializable {
15
+ private static final long serialVersionUID = 1L;
16
+
17
+ ${field_declarations}
18
+ }
@@ -0,0 +1,19 @@
1
+ package ${base_package}.rest.dto.request;
2
+
3
+ import com.yss.cloud.dto.CommandDTO;
4
+ import lombok.Getter;
5
+ import lombok.Setter;
6
+ import ${validation_namespace}.validation.constraints.NotBlank;
7
+ import ${validation_namespace}.validation.constraints.NotNull;
8
+ import java.util.Date;
9
+ import java.math.BigDecimal;
10
+ import java.time.LocalDateTime;
11
+ import java.time.LocalDate;
12
+
13
+ /** ${domain_desc}更新请求。字段来自批准的 OpenAPI allowlist。 */
14
+ @Getter
15
+ @Setter
16
+ public class ${domain_class}UpdateRequest extends CommandDTO {
17
+
18
+ ${field_declarations}
19
+ }
@@ -1,168 +1,84 @@
1
- 本技能为开发 YSS 服务的**Web 适配器层**(REST API)提供指导和框架。
2
- Web 适配器负责通过 HTTP 公开业务功能、处理输入验证和格式化响应。
1
+ # YSS Web Adapter Target Profile 指南
3
2
 
4
- ## 1. 核心职责 (Core Responsibilities)
3
+ Web Adapter 负责 HTTP 边界、Wire DTO、校验、YSS Result 包装、WebConvertor 和异常翻译。它只调用 Application,不直接访问 Domain Gateway、Repository 或 PO。
5
4
 
6
- - **Request Handling**: Map HTTP requests (GET, POST, PUT, DELETE) to Java methods.
7
- - **Input Validation**: Validate request bodies and parameters using JSR-303/380 annotations (`@Valid`, `@NotNull`, etc.).
8
- - **Response Formatting**: Wrap business results into standard `Result` objects (`SingleResult`, `PageResult`, `MultiResult`).
9
- - **Orchestration Delegation**: Delegate business logic to the **Application Service**. Simple queries can be delegated directly to the **Domain Gateway** (CQRS pattern).
10
-
11
- ## 2. 代码结构 (Code Structure)
12
-
13
- Web Adapters are typically located in the `bootstrap` module or a dedicated `web` module.
5
+ ## 1. 包结构
14
6
 
7
+ ```text
8
+ {base_package}.rest
9
+ ├── dto
10
+ │ ├── request
11
+ │ └── response
12
+ ├── convertor
13
+ ├── exception
14
+ └── *Controller.java
15
15
  ```
16
- com.yss.{module}.rest
17
- ├── {Domain}Controller.java # Main REST Controller
18
- └── {Domain}ReportController.java # Optional: For reporting/stats APIs
19
- ```
20
-
21
- ## 3. 开发规范 (Development Guidelines)
22
-
23
- ### 3.1 Controller 定义
24
-
25
- - **注解**: 使用 `@RestController`。
26
- - **路径**: `@RequestMapping("/api/{module}/{domain}")` (e.g., `/api/quality/rule`).
27
- - **依赖注入**: 使用 Lombok `@RequiredArgsConstructor` 进行构造器注入。
28
- - **命名**: `{Domain}Controller` (e.g., `QualityRuleController`).
29
-
30
- ### 3.2 依赖注入原则
31
16
 
32
- - **写操作/复杂逻辑**: 必须注入 **Application Service** (`XxxService`)。
33
- - **读操作 (Query)**: 允许直接注入 **Domain Gateway** (`XxxGateway`) 以减少样板代码 (CQRS)。
17
+ DTO 固定属于 Web module。独立 client module 与把 client DTO 放进 Domain module 均为 `unsupported`;如未来确需发布复用制品,必须另行设计并批准新的 Target Profile,不能由当前脚手架推断或回退。
34
18
 
35
- ### 3.3 参数与响应
19
+ ## 2. Wire 合同
36
20
 
37
- - **Command (写)**: 使用 `@PostMapping`/`@PutMapping` + `@RequestBody` + `{Domain}Cmd` 对象。
38
- - **Query (读)**: 使用 `@PostMapping` (for complex search) + `@RequestBody` + `{Domain}Page/Query` 对象。
39
- - **Wrapper**:
40
- - `SingleResult<T>`: 单个对象或基本类型。
41
- - `MultiResult<T>`: 列表。
42
- - `PageResult<T>`: 分页数据。
43
- - **Validation**: 必须在参数前添加 `@Valid` 注解。
21
+ - Request/Response 字段必须来自冻结 OpenAPI 和批准 allowlist。
22
+ - 数据库 metadata 只补充 Java 类型候选,不能自行扩大公开字段。
23
+ - Web Page Request 不继承含内部协作字段的 `PageQuery`;只暴露批准的 `pageIndex/pageSize/orderBy/orderDirection/groupBy` 及业务查询字段。
24
+ - `orderBy` / `groupBy` 必须在 Application/Infrastructure 映射到数据库列白名单。
25
+ - `offset`、`needTotalCount`、`tempTotalCount` 禁止进入 HTTP 绑定面。
44
26
 
45
- ### 3.4 异常处理
46
-
47
- - **不要**在 Controller 中捕获通用异常 (`Exception`)。
48
- - 让全局异常处理器 (`GlobalExceptionHandler`) 统一处理运行时异常。
49
- - 仅在需要特定 HTTP 状态码转换时捕获特定异常。
50
-
51
- ## 4. 代码示例 (Code Examples)
52
-
53
- ### 4.1 标准 CRUD Controller
27
+ ## 3. Controller
54
28
 
55
29
  ```java
56
- package com.yss.{module}.rest;
57
-
58
- import com.yss.cloud.dto.result.MultiResult;
59
- import com.yss.cloud.dto.result.PageResult;
60
- import com.yss.cloud.dto.result.SingleResult;
61
- import com.yss.{module}.client.dto.cmd.{Domain}AddCmd;
62
- import com.yss.{module}.client.dto.cmd.{Domain}UpdateCmd;
63
- import com.yss.{module}.client.dto.cmd.{Domain}StatusCmd;
64
- import com.yss.{module}.client.dto.query.{Domain}Page;
65
- import com.yss.{module}.client.vo.{Domain}VO;
66
- import com.yss.{module}.core.service.{Domain}Service;
67
- // Optional: Import Gateway for direct queries
68
- // import com.yss.{module}.domain.gateway.{Domain}Gateway;
69
- import lombok.RequiredArgsConstructor;
70
- import org.springframework.web.bind.annotation.*;
71
-
72
- import javax.validation.Valid;
73
-
74
- /**
75
- * {Domain} 管理控制器
76
- *
77
- * @author {User}
78
- */
79
30
  @RestController
80
- @RequestMapping("/api/{module}/{domain-path}")
31
+ @RequestMapping("/api/quality/quality-rule")
81
32
  @RequiredArgsConstructor
82
- public class {Domain}Controller {
83
-
84
- private final {Domain}Service {domainVar}Service;
85
- // private final {Domain}Gateway {domainVar}Gateway; // For CQRS if needed
86
-
87
- /**
88
- * 分页查询 {Domain}
89
- *
90
- * @param query 查询条件
91
- * @return 分页结果
92
- */
93
- @PostMapping("/page")
94
- public PageResult<{Domain}VO> page(@Valid @RequestBody {Domain}Page query) {
95
- return {domainVar}Service.page(query);
96
- }
97
-
98
- /**
99
- * 根据ID查询详情
100
- *
101
- * @param id 主键ID
102
- * @return 详情对象
103
- */
104
- @GetMapping("/detail/{id}")
105
- public SingleResult<{Domain}VO> detail(@PathVariable String id) {
106
- return SingleResult.of({domainVar}Service.detail(id));
107
- }
33
+ @Tag(name = "质量规则管理")
34
+ public class QualityRuleController {
35
+ private final QualityRuleService service;
36
+ private final QualityRuleWebConvertor webConvertor;
108
37
 
109
- /**
110
- * 新增 {Domain}
111
- *
112
- * @param cmd 新增命令
113
- * @return 新增结果 (通常是ID或完整对象)
114
- */
115
38
  @PostMapping
116
- public SingleResult<Long> add(@Valid @RequestBody {Domain}AddCmd cmd) {
117
- return SingleResult.of({domainVar}Service.add(cmd));
118
- }
119
-
120
- /**
121
- * 更新 {Domain}
122
- *
123
- * @param cmd 更新命令
124
- * @return 更新结果
125
- */
126
- @PutMapping
127
- public SingleResult<Boolean> update(@Valid @RequestBody {Domain}UpdateCmd cmd) {
128
- {domainVar}Service.update(cmd);
129
- return SingleResult.of(true);
130
- }
131
-
132
- /**
133
- * 状态变更 (启用/禁用)
134
- *
135
- * @param cmd 状态命令
136
- * @return 变更后的状态
137
- */
138
- @PostMapping("/enabled")
139
- public SingleResult<Integer> switchStatus(@Valid @RequestBody {Domain}StatusCmd cmd) {
140
- {domainVar}Service.switchStatus(cmd);
141
- return SingleResult.of(cmd.getStatus());
39
+ public SingleResult<Long> create(@Valid @RequestBody QualityRuleCreateRequest request) {
40
+ return SingleResult.of(service.create(webConvertor.toCreateCommand(request)));
142
41
  }
143
42
  }
144
43
  ```
145
44
 
146
- ### 4.2 复杂业务操作示例
45
+ - 只使用 OpenAPI 3 `io.swagger.v3.oas.annotations`;Swagger 2 为 `unsupported`,不存在 legacy Profile。
46
+ - Controller 不捕获通用 `Exception`,不写业务规则,不手工执行持久化分页。
47
+ - Controller seam 只出现 Web Request/Response 和 Application Service。
48
+
49
+ ## 4. WebConvertor
147
50
 
148
51
  ```java
149
- /**
150
- * 执行业务操作 (e.g. 立即运行检查)
151
- *
152
- * @param cmd 执行命令
153
- * @return 执行结果ID
154
- */
155
- @PostMapping("/execute")
156
- public SingleResult<String> execute(@Valid @RequestBody {Domain}ExecuteCmd cmd) {
157
- // 调用 Service 处理复杂业务逻辑
158
- return SingleResult.of(
159
- {domainVar}Service.execute(cmd)
160
- );
161
- }
52
+ @Mapper(componentModel = "spring")
53
+ public interface QualityRuleWebConvertor {
54
+ QualityRuleCreateCommand toCreateCommand(QualityRuleCreateRequest source);
55
+ QualityRuleResponse toResponse(QualityRuleResult source);
56
+ }
162
57
  ```
163
58
 
164
- ## 5. 阶段 7 合同
59
+ - 使用构造器注入,不定义静态 `INSTANCE`。
60
+ - Request → Application Command/Query;Application Result → Response。
61
+ - 不导入 Domain Model 或 Repository PO。
62
+ - 父 POM 必须配置 MapStruct processor、Lombok 与 `lombok-mapstruct-binding`,验证生成实现真实编译。
63
+
64
+ ## 5. Exception Translator
65
+
66
+ - Domain/Application 错误经专门 Translator 映射为冻结 API 的 HTTP status、YSS error code 和消毒后的公开消息。
67
+ - known business、known system、unknown/runtime 三类都必须有 MockMvc/HTTP contract test。
68
+ - unknown/runtime 保留内部 cause/stack 用于日志,但公开响应禁止返回 `getLocalizedMessage()`。
69
+ - 复用 YSS global handler 前必须实测 auto-configuration 和 precedence;未经验证不能仅凭依赖存在宣称生效。
70
+
71
+ ## 6. 生成门禁
72
+
73
+ - `generate_controller.mjs` 必须消费 `status=approved` 的 Web generation contract。
74
+ - 合同必须声明 `base_package`、`module_name`、`domain_segment`、`target-domain-model`、平台/validation Profile、`dto_placement=web`、OpenAPI Freeze 引用和每张表的 create/update/query/response allowlist;CLI 身份必须逐项匹配。
75
+ - 生成器是 initialize-only,必须在写入前规划全部目标;任一文件已存在或传入 `--force` 时整体阻断,不允许“跳过已有文件后继续生成”的部分成功。
76
+ - 权限、校验语义、异常行为和复杂查询仍使用 `behavior-tdd`,不能由 metadata 猜测。
77
+
78
+ ## 7. 验证
165
79
 
166
- - 只消费冻结 OpenAPI/no-impact record 和批准合同;Controller 不得穿透 Application/Domain 边界。
167
- - Controller/DTO/Convertor 骨架可受控生成;权限、校验、错误映射和接口行为使用 `behavior-tdd`。
168
- - 返回统一 `YSS Skill Execution Result`,包含代码、契约/API 测试、实际验证和新增 API/权限影响。
80
+ - Controller 只依赖 Application。
81
+ - WebConvertor 无 Domain/Infrastructure import,并由 Spring 注入。
82
+ - Wire forbidden fields 无法绑定。
83
+ - OpenAPI 3 注解、YSS Result wrapper、Validation namespace 与平台 Profile 一致。
84
+ - 执行项目根 `./mvnw test/package`,并保留 HTTP/serialization/exception 证据。
@@ -4,18 +4,22 @@ import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
 
6
6
  const TYPE_MAPPING = { bigint: "Long", int: "Integer", integer: "Integer", smallint: "Integer", tinyint: "Integer", number: "Long", numeric: "BigDecimal", decimal: "BigDecimal", float: "Float", double: "Double", real: "Float", varchar: "String", varchar2: "String", nvarchar2: "String", char: "String", nchar: "String", text: "String", clob: "String", nclob: "String", date: "LocalDateTime", datetime: "LocalDateTime", timestamp: "LocalDateTime", "timestamp with time zone": "LocalDateTime", boolean: "Boolean", bool: "Boolean", bit: "Boolean", json: "String", jsonb: "String", uuid: "String" };
7
- const required = ["metadata-file", "base-package", "module-name", "domain-segment"];
8
- const valued = new Set([...required, "output-dir", "domain-project-dir", "web-project-dir", "domain-output-dir", "web-output-dir", "author", "application-service-package", "validation-namespace"]);
7
+ const PLATFORM_VALIDATION_NAMESPACES = {
8
+ "spring-boot-2.7-jdk8": "javax",
9
+ "spring-boot-3-jdk17": "jakarta"
10
+ };
11
+ const required = ["metadata-file", "contract-file", "base-package", "module-name", "domain-segment"];
12
+ const valued = new Set([...required, "output-dir", "web-project-dir", "web-output-dir", "author", "application-service-package", "validation-namespace"]);
9
13
 
10
14
  function usage() {
11
- return "Usage: node generate_controller.mjs --metadata-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--domain-project-dir DIR] [--web-project-dir DIR] [--domain-output-dir DIR] [--web-output-dir DIR] [--author NAME] [--force] [--application-service-package PACKAGE] [--validation-namespace javax|jakarta]";
15
+ return "Usage: node generate_controller.mjs --metadata-file FILE --contract-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--web-project-dir DIR] [--web-output-dir DIR] [--author NAME] [--application-service-package PACKAGE] [--validation-namespace javax|jakarta]";
12
16
  }
13
17
  export function parseArgs(argv) {
14
18
  const args = { "output-dir": "./output", author: "System", "validation-namespace": "javax", force: false };
15
19
  for (let index = 0; index < argv.length; index += 1) {
16
20
  const token = argv[index];
17
21
  if (token === "--help" || token === "-h") return { help: true };
18
- if (token === "--force") { args.force = true; continue; }
22
+ if (token === "--force") throw new Error("unsupported: initialize-only Web 生成禁止 --force、已有目标覆盖和旧项目迁移");
19
23
  if (!token.startsWith("--") || !valued.has(token.slice(2))) throw new Error(`unrecognized argument: ${token}`);
20
24
  const value = argv[++index];
21
25
  if (!value || value.startsWith("--")) throw new Error(`argument ${token} requires a value`);
@@ -32,9 +36,11 @@ const packagePath = (value) => value.replaceAll(".", path.sep);
32
36
  const ensureSubdir = (root, name) => path.basename(path.normalize(root)) === name ? root : path.join(root, name);
33
37
  const javaType = (sqlType = "") => TYPE_MAPPING[sqlType.toLowerCase().split("(")[0]] || "String";
34
38
 
35
- function fields(columns, { skipPk = false, command = false, skipAudit = true } = {}) {
36
- const audit = new Set(["create_time", "update_time", "create_by", "update_by", "deleted", "version"]);
37
- return columns.filter((column) => !(skipPk && column.primary) && !(skipAudit && audit.has(String(column.name).toLowerCase()))).map((column) => {
39
+ function fields(columns, selected, { command = false } = {}) {
40
+ const byName = new Map(columns.map((column) => [String(column.name), column]));
41
+ return selected.map((field) => {
42
+ const column = byName.get(field);
43
+ if (!column) throw new Error(`approved field is absent from metadata: ${field}`);
38
44
  const type = javaType(column.sql_type);
39
45
  const name = lowerCamel(column.name);
40
46
  const comment = column.comment || "";
@@ -48,30 +54,52 @@ async function exists(target) { try { await access(target); return true; } catch
48
54
 
49
55
  export async function generate(args, logger = console) {
50
56
  if (!await exists(args["metadata-file"])) throw new Error(`Metadata file not found: ${args["metadata-file"]}`);
57
+ if (!await exists(args["contract-file"])) throw new Error(`Contract file not found: ${args["contract-file"]}`);
51
58
  let metadata;
52
59
  try { metadata = JSON.parse(await readFile(args["metadata-file"], "utf8")); } catch (error) { throw new Error(`Error reading metadata file: ${error.message}`); }
60
+ let contract;
61
+ try { contract = JSON.parse(await readFile(args["contract-file"], "utf8")); } catch (error) { throw new Error(`Error reading contract file: ${error.message}`); }
62
+ if (contract.schema_version !== 1 || contract.status !== "approved") throw new Error("web generation contract must be schema_version=1 and approved");
63
+ if (contract.architecture_profile !== "target-domain-model" || contract.dto_placement !== "web") throw new Error("web generation only supports target-domain-model with dto_placement=web");
64
+ if (!contract.openapi_freeze_ref || !contract.fields || typeof contract.fields !== "object") throw new Error("approved web generation contract requires openapi_freeze_ref and fields");
65
+ if (!contract.base_package || !contract.module_name || !contract.domain_segment) throw new Error("approved web generation contract requires base_package, module_name, and domain_segment");
66
+ if (contract.base_package !== args["base-package"] || contract.module_name !== args["module-name"] || contract.domain_segment !== args["domain-segment"]) throw new Error("CLI generation identity does not match the approved web generation contract");
67
+ if (!(contract.platform_profile in PLATFORM_VALIDATION_NAMESPACES)) throw new Error("unsupported platform_profile in approved web generation contract");
68
+ if (PLATFORM_VALIDATION_NAMESPACES[contract.platform_profile] !== contract.validation_namespace) throw new Error("platform_profile and validation_namespace are inconsistent");
69
+ if (contract.validation_namespace !== args["validation-namespace"]) throw new Error("--validation-namespace must match the approved web generation contract");
53
70
  const tables = metadata.tables || [];
54
71
  if (!tables.length) { logger.warn("Warning: No tables found in metadata."); return []; }
55
72
  const scriptDir = path.dirname(fileURLToPath(import.meta.url));
56
73
  const templatesDir = path.resolve(scriptDir, "../assets/templates");
57
74
  const template = async (name) => { const target = path.join(templatesDir, name); if (!await exists(target)) throw new Error(`Template not found: ${target}`); return readFile(target, "utf8"); };
58
- const templates = Object.fromEntries(await Promise.all(["Controller.java.template", "WebConvertor.java.template", "domain/vo/VO.java.template", "domain/dto/cmd/AddCmd.java.template", "domain/dto/cmd/UpdateCmd.java.template", "domain/dto/query/PageQuery.java.template"].map(async (name) => [name, await template(name)])));
75
+ const templateNames = ["Controller.java.template", "WebConvertor.java.template", "web/dto/Response.java.template", "web/dto/CreateRequest.java.template", "web/dto/UpdateRequest.java.template", "web/dto/PageRequest.java.template"];
76
+ const templates = Object.fromEntries(await Promise.all(templateNames.map(async (name) => [name, await template(name)])));
59
77
  const basePath = packagePath(args["base-package"]);
60
- const domainBase = args["domain-output-dir"] || (args["domain-project-dir"] ? path.join(args["domain-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
61
78
  const webBase = args["web-output-dir"] || (args["web-project-dir"] ? path.join(args["web-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
62
- const domainRoot = ensureSubdir(domainBase, "client");
63
79
  const webRoot = ensureSubdir(webBase, "rest");
64
- const written = [];
65
- const write = async (target, contents) => { await mkdir(path.dirname(target), { recursive: true }); if (!await exists(target) || args.force) { await writeFile(target, contents, "utf8"); logger.log(`Generated: ${target}`); written.push(target); } else logger.log(`Skipped (exists): ${target}`); };
80
+ const planned = [];
81
+ const plan = (target, contents) => planned.push({ target, contents });
66
82
  for (const table of tables) {
67
83
  const domainClass = pascal(table.table_name); const domainVar = lowerCamel(table.table_name); const domainDesc = String(table.table_comment || domainClass).trim().replaceAll("\n", " ");
84
+ const approvedFields = contract.fields[table.table_name];
85
+ if (!approvedFields || ["create", "update", "query", "response"].some((name) => !Array.isArray(approvedFields[name]))) throw new Error(`approved web field contract is missing for table: ${table.table_name}`);
68
86
  const applicationPackage = args["application-service-package"] || `${args["base-package"]}.application.service`;
69
- const context = { base_package: args["base-package"], module_name: args["module-name"], domain_class: domainClass, domain_var: domainVar, domain_desc: domainDesc, domain_url_path: kebab(table.table_name), domain_pkg_name: args["domain-segment"], author: args.author, dto_imports: [`import ${args["base-package"]}.client.dto.cmd.${domainClass}AddCmd;`, `import ${args["base-package"]}.client.dto.cmd.${domainClass}UpdateCmd;`, `import ${args["base-package"]}.client.dto.query.${domainClass}PageQuery;`, `import ${args["base-package"]}.client.vo.${domainClass}VO;`].join("\n"), application_service_import: `import ${applicationPackage}.${domainClass}Service;`, domain_import: `import ${args["base-package"]}.domain.${args["domain-segment"]}.model.${domainClass};`, web_convertor_import: `import ${args["base-package"]}.rest.convertor.${domainClass}WebConvertor;`, web_convertor_class: `${domainClass}WebConvertor`, application_service_field: `private final ${domainClass}Service ${domainVar}Service;`, query_call: `${domainVar}Service.page(query)`, detail_call: `${domainVar}Service.detail(id)`, add_call: `${domainVar}Service.add(cmd)`, update_call: `${domainVar}Service.update(cmd)`, delete_call: `${domainVar}Service.delete(id)`, vo_class: `${domainClass}VO`, add_cmd_class: `${domainClass}AddCmd`, update_cmd_class: `${domainClass}UpdateCmd`, query_class: `${domainClass}PageQuery`, validation_namespace: args["validation-namespace"] };
70
- await write(path.join(webRoot, `${domainClass}Controller.java`), render(templates["Controller.java.template"], context));
71
- await write(path.join(webRoot, "convertor", `${domainClass}WebConvertor.java`), render(templates["WebConvertor.java.template"], context));
72
- for (const [templateName, target, declaration] of [["domain/vo/VO.java.template", path.join(domainRoot, "vo", `${domainClass}VO.java`), fields(table.columns || [], { skipAudit: false })], ["domain/dto/cmd/AddCmd.java.template", path.join(domainRoot, "dto/cmd", `${domainClass}AddCmd.java`), fields(table.columns || [], { skipPk: true, command: true })], ["domain/dto/cmd/UpdateCmd.java.template", path.join(domainRoot, "dto/cmd", `${domainClass}UpdateCmd.java`), fields(table.columns || [], { command: true })], ["domain/dto/query/PageQuery.java.template", path.join(domainRoot, "dto/query", `${domainClass}PageQuery.java`), fields(table.columns || [])]]) await write(target, render(templates[templateName], { ...context, field_declarations: declaration }));
87
+ const context = { base_package: args["base-package"], module_name: args["module-name"], domain_class: domainClass, domain_var: domainVar, domain_desc: domainDesc, domain_url_path: kebab(table.table_name), domain_pkg_name: args["domain-segment"], author: args.author, dto_imports: [`import ${args["base-package"]}.rest.dto.request.${domainClass}CreateRequest;`, `import ${args["base-package"]}.rest.dto.request.${domainClass}UpdateRequest;`, `import ${args["base-package"]}.rest.dto.request.${domainClass}PageRequest;`, `import ${args["base-package"]}.rest.dto.response.${domainClass}Response;`].join("\n"), application_type_imports: [`import ${args["base-package"]}.application.command.${domainClass}CreateCommand;`, `import ${args["base-package"]}.application.command.${domainClass}UpdateCommand;`, `import ${args["base-package"]}.application.query.${domainClass}PageQuery;`, `import ${args["base-package"]}.application.result.${domainClass}Result;`].join("\n"), application_service_import: `import ${applicationPackage}.${domainClass}Service;`, web_convertor_import: `import ${args["base-package"]}.rest.convertor.${domainClass}WebConvertor;`, web_convertor_class: `${domainClass}WebConvertor`, application_service_field: `private final ${domainClass}Service ${domainVar}Service;`, query_call: `${domainVar}Service.page(webConvertor.toPageQuery(request))`, detail_call: `${domainVar}Service.detail(id)`, add_call: `${domainVar}Service.add(webConvertor.toCreateCommand(request))`, update_call: `${domainVar}Service.update(webConvertor.toUpdateCommand(request))`, delete_call: `${domainVar}Service.delete(id)`, response_class: `${domainClass}Response`, create_request_class: `${domainClass}CreateRequest`, update_request_class: `${domainClass}UpdateRequest`, page_request_class: `${domainClass}PageRequest`, validation_namespace: args["validation-namespace"] };
88
+ plan(path.join(webRoot, `${domainClass}Controller.java`), render(templates["Controller.java.template"], context));
89
+ plan(path.join(webRoot, "convertor", `${domainClass}WebConvertor.java`), render(templates["WebConvertor.java.template"], context));
90
+ for (const [templateName, target, declaration] of [["web/dto/Response.java.template", path.join(webRoot, "dto", "response", `${domainClass}Response.java`), fields(table.columns || [], approvedFields.response)], ["web/dto/CreateRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}CreateRequest.java`), fields(table.columns || [], approvedFields.create, { command: true })], ["web/dto/UpdateRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}UpdateRequest.java`), fields(table.columns || [], approvedFields.update, { command: true })], ["web/dto/PageRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}PageRequest.java`), fields(table.columns || [], approvedFields.query)]]) plan(target, render(templates[templateName], { ...context, field_declarations: declaration }));
73
91
  }
74
- return written;
92
+ const targets = planned.map(({ target }) => target);
93
+ if (new Set(targets).size !== targets.length) throw new Error("approved metadata produces duplicate target files");
94
+ const existing = [];
95
+ for (const target of targets) if (await exists(target)) existing.push(target);
96
+ if (existing.length) throw new Error(`initialize-only Web generation refuses existing targets: ${existing.join(", ")}`);
97
+ for (const { target, contents } of planned) {
98
+ await mkdir(path.dirname(target), { recursive: true });
99
+ await writeFile(target, contents, "utf8");
100
+ logger.log(`Generated: ${target}`);
101
+ }
102
+ return targets;
75
103
  }
76
104
  async function main() { try { const args = parseArgs(process.argv.slice(2)); if (args.help) { console.log(usage()); return; } await generate(args); } catch (error) { console.error(`Error: ${error.message}`); process.exitCode = 1; } }
77
105
  if (process.argv[1] === fileURLToPath(import.meta.url)) await main();
@@ -1,5 +1,5 @@
1
1
  import assert from "node:assert/strict";
2
- import { mkdtemp, readFile, writeFile } from "node:fs/promises";
2
+ import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
3
3
  import { tmpdir } from "node:os";
4
4
  import path from "node:path";
5
5
  import test from "node:test";
@@ -8,12 +8,53 @@ import { generate, parseArgs } from "./generate_controller.mjs";
8
8
  test("generates application-service controller with requested validation profile", async () => {
9
9
  const root = await mkdtemp(path.join(tmpdir(), "yss-controller-"));
10
10
  const metadata = path.join(root, "metadata.json");
11
+ const contract = path.join(root, "web-contract.json");
11
12
  await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", table_comment: "质量规则", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }, { name: "rule_name", sql_type: "varchar(64)", nullable: false }] }] }));
12
- await generate(parseArgs(["--metadata-file", metadata, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out"), "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", "jakarta"]), { log() {}, warn() {} });
13
+ await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-3-jdk17", validation_namespace: "jakarta", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: ["rule_name"], update: ["id", "rule_name"], query: ["rule_name"], response: ["id", "rule_name"] } } }));
14
+ await generate(parseArgs(["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out"), "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", "jakarta"]), { log() {}, warn() {} });
13
15
  const controller = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "QualityRuleController.java"), "utf8");
16
+ const convertor = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "convertor", "QualityRuleWebConvertor.java"), "utf8");
17
+ const createRequest = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "dto", "request", "QualityRuleCreateRequest.java"), "utf8");
14
18
  assert.match(controller, /import com\.yss\.demo\.application\.service\.QualityRuleService;/);
15
19
  assert.match(controller, /import jakarta\.validation\.Valid;/);
16
- assert.doesNotMatch(controller, /Gateway/);
20
+ assert.match(controller, /webConvertor\.toCreateCommand\(request\)/);
21
+ assert.match(convertor, /@Mapper\(componentModel = "spring"\)/);
22
+ assert.match(convertor, /application\.command\.QualityRuleCreateCommand/);
23
+ assert.match(convertor, /application\.result\.QualityRuleResult/);
24
+ assert.doesNotMatch(`${controller}\n${convertor}`, /Gateway|\.domain\.|Mappers\.getMapper|INSTANCE/);
25
+ assert.match(createRequest, /private String ruleName;/);
26
+ assert.doesNotMatch(createRequest, /private Long id;|@Data/);
17
27
  });
18
28
 
19
29
  test("rejects missing required CLI arguments", () => assert.throws(() => parseArgs(["--module-name", "demo"]), /required/));
30
+
31
+ test("requires an approved target-profile field contract and refuses force overwrite", async () => {
32
+ const root = await mkdtemp(path.join(tmpdir(), "yss-controller-contract-"));
33
+ const metadata = path.join(root, "metadata.json");
34
+ const contract = path.join(root, "web-contract.json");
35
+ await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }] }] }));
36
+ await writeFile(contract, JSON.stringify({ schema_version: 1, status: "draft", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
37
+ const base = ["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out")];
38
+ await assert.rejects(() => generate(parseArgs(base), { log() {}, warn() {} }), /approved/);
39
+ await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
40
+ await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-3-jdk17", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
41
+ await assert.rejects(() => generate(parseArgs(base), { log() {}, warn() {} }), /platform_profile and validation_namespace/);
42
+ assert.throws(() => parseArgs([...base, "--force"]), /initialize-only/);
43
+ });
44
+
45
+ test("binds generation identity to the approved contract and fails before writing when any target exists", async () => {
46
+ const root = await mkdtemp(path.join(tmpdir(), "yss-controller-initialize-only-"));
47
+ const metadata = path.join(root, "metadata.json");
48
+ const contract = path.join(root, "web-contract.json");
49
+ const output = path.join(root, "out");
50
+ await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", columns: [{ name: "id", sql_type: "bigint", nullable: false }] }] }));
51
+ await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
52
+ const args = ["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", output];
53
+ await assert.rejects(() => generate(parseArgs(args.map((value) => value === "demo" ? "other" : value)), { log() {}, warn() {} }), /approved web generation contract/);
54
+ const existing = path.join(output, "com/yss/demo/rest/QualityRuleController.java");
55
+ await mkdir(path.dirname(existing), { recursive: true });
56
+ await writeFile(existing, "user-owned\n");
57
+ await assert.rejects(() => generate(parseArgs(args), { log() {}, warn() {} }), /initialize-only/);
58
+ assert.equal(await readFile(existing, "utf8"), "user-owned\n");
59
+ await assert.rejects(() => readFile(path.join(output, "com/yss/demo/rest/convertor/QualityRuleWebConvertor.java"), "utf8"), /ENOENT/);
60
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "yss-ui": {
4
+ "command": "npx",
5
+ "args": ["-y", "@yss-ui/mcp"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "yss-ui": {
4
+ "command": "npx",
5
+ "args": ["-y", "@yss-ui/mcp"]
6
+ }
7
+ }
8
+ }
@@ -12,10 +12,10 @@
12
12
  2. Slice Implementation Contract 的 `required_skills`:对每个技能读取 `.agents/skills/<id>/SKILL.md` 及该 skill 指明的 references。
13
13
  3. 影响面专项检查输入(与合同并集,不得互相替代):
14
14
  - 后端:`alibaba-java-code-style`、`yss-domain`、`yss-application`、`yss-repository`、`yss-web-controller`、`yss-dto`、`mapstruct`、`lombok`
15
- - UI:`yss-ui`、`yss-design-system`、`yss-page-module-development`
15
+ - UI:`yss-ui`、`yss-design-system`、`yss-ui-business-page-generation`、`yss-page-module-development`
16
16
  4. 报告模板中的后端 / 前端门禁表。空着的适用行视为 `missing_evidence`。
17
17
 
18
- YSS 页面模块约定(YTable、YssFormily、页面骨架等)走 Standards,不并入 UI fidelity。UI fidelity 只核原型与状态矩阵。
18
+ YSS 页面模块约定(YTable、YFormily、页面骨架等)走 Standards,不并入 UI fidelity。UI fidelity 只核原型与状态矩阵。
19
19
 
20
20
  审查者只读这些 skill,不得用它们写实现路径。`role.test-engineer` 任务包禁止 `implement` 与脚手架生成器。
21
21
 
@@ -51,4 +51,4 @@ YSS 页面模块约定(YTable、YssFormily、页面骨架等)走 Standards
51
51
  | `violation`、机器检查失败、适用行空白、`missing_evidence` | 实现者在**原合同允许路径**内修复;任何修复使候选失效,必须重新捕获并重跑 Standards、Spec、UI fidelity(若命中)和 fresh verification |
52
52
  | `drift`、`new_impacts`、`required_skills` 与真实影响不一致 | 合同标 `stale`,回 Router 或更早生命周期阶段;禁止在旧合同上继续编码 |
53
53
 
54
- `not-applicable` 仅当影响面未命中。命中后的 mandatory 不得豁免;只允许修复,或写完整 `seam-deferred`(风险、责任人、后续 Ticket、验证计划、目标版本或发布日期)。禁止为日常 Alibaba / YSS 新增生物人豁免门禁;安全 / 公共 API 仍走既有 `TODO-HUMAN-REVIEW` 与生物人门禁。
54
+ `not-applicable` 仅当影响面未命中。命中后的 mandatory 不得豁免;只允许修复,或写完整 `seam-deferred`(风险、责任人、后续 Ticket、验证计划、目标版本或发布日期)。禁止为日常 Alibaba / YSS 新增生物人豁免门禁;安全 / 公共 API 仍走既有 `TODO-HUMAN-REVIEW` 与生物人门禁。
@@ -19,8 +19,8 @@ description: 指导 YSS UI 业务页面、CRUD、列表页、表单页和组件
19
19
 
20
20
  1. 当前会话可用 yss-ui MCP 时,先用 `list_components` 确认组件、Hook 或 Utils 是否真实存在,再用 `get_component_docs` 确认名称、导出包、Props、Events 和 Slots,不只看 demo 标签名。
21
21
  2. `get_component_docs` 未命中时,先用 `search_docs` 和 `list_components` 校正别名与归属,不得立即判定为未封装。
22
- 3. MCP 工具不可用、调用失败或校正后仍无结果时,读取当前上下文中的最新 `llms-full.txt`;上下文没有时读取 `http://192.168.164.27:3200/llms-full.txt`。
23
- 4. 必要时读取 `../yss-page-module-development/references/component-map.md`、`hooks-map.md`、`utils-map.md` 快速缩小范围;文档与当前项目依赖版本不一致时,最终以当前源码和可编译导出为准。
22
+ 3. MCP 工具不可用、调用失败或校正后仍无结果时,读取当前上下文或文档站的最新 `llms-full.txt`。
23
+ 4. 必要时读取 `../yss-ui-business-page-generation/references/component-map.md`、`hooks-map.md`、`utils-map.md` 快速缩小范围;文档与当前项目依赖版本不一致时,最终以当前源码和可编译导出为准。
24
24
  5. 已导出的 YSS 能力优先从 `@yss-ui/components`、`@yss-ui/hooks`、`@yss-ui/utils` 导入;确认未封装后才从 `ant-design-vue` 导入原组件。
25
25
  6. 若文档与导出源码不一致,记录差异并按当前仓库可编译的导出处理,不猜测 API。
26
26
 
@@ -14,7 +14,7 @@ description: 分析并提交 Vue、React、TypeScript、JavaScript、Vite、微
14
14
 
15
15
  ## 不适用场景
16
16
 
17
- - yss-ui 组件库仓库自身的提交与发版:使用 `../commit-linting/SKILL.md`。
17
+ - yss-ui 组件库仓库自身的提交与发版:回到 yss-ui 源仓库使用其 `categories.library` 提交流程;该类 skill 不随业务模板分发。
18
18
  - Java、Spring Boot、Maven、Gradle 后端仓库:使用 `../java-backend-commit/SKILL.md`。
19
19
  - 仅请求代码实现,不涉及提交信息或 `git commit` 操作。
20
20
  - 无代码改动,或改动内容与提交请求不匹配。