create-yss-spec 2.2.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) 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/ask-matt/SKILL.md +1 -1
  7. package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -3
  8. package/template/.agents/skills/component-selection-imports/SKILL.md +2 -2
  9. package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
  10. package/template/.agents/skills/wayfinder/SKILL.md +2 -2
  11. package/template/.agents/skills/yss-api-integration/SKILL.md +85 -339
  12. package/template/.agents/skills/yss-application/SKILL.md +7 -5
  13. package/template/.agents/skills/yss-application/references/application-layer-guide.md +60 -105
  14. package/template/.agents/skills/yss-components/SKILL.md +1 -1
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  18. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  23. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  24. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  25. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  31. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  32. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  33. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  34. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  35. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  36. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  37. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  38. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  39. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  40. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  41. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  42. package/template/.agents/skills/yss-design-system/references/design-system.md +2 -2
  43. package/template/.agents/skills/yss-domain/SKILL.md +5 -4
  44. package/template/.agents/skills/yss-domain/agents/openai.yaml +2 -2
  45. package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +62 -235
  46. package/template/.agents/skills/yss-dto/SKILL.md +11 -5
  47. package/template/.agents/skills/yss-dto/references/README.md +2 -2
  48. package/template/.agents/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  49. package/template/.agents/skills/yss-exception/SKILL.md +2 -0
  50. package/template/.agents/skills/yss-formily/SKILL.md +1 -1
  51. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  52. package/template/.agents/skills/yss-page-module-development/SKILL.md +2 -0
  53. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +1 -1
  54. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  55. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  56. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  57. package/template/.agents/skills/yss-repository/SKILL.md +19 -15
  58. package/template/.agents/skills/yss-repository/agents/openai.yaml +2 -2
  59. package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  60. package/template/.agents/skills/yss-research/SKILL.md +73 -0
  61. package/template/.agents/skills/yss-research/agents/openai.yaml +3 -0
  62. package/template/.agents/skills/yss-research/assets/evidence-template.yaml +68 -0
  63. package/template/.agents/skills/yss-research/assets/research-brief-template.md +36 -0
  64. package/template/.agents/skills/yss-research/references/evidence-contract.md +42 -0
  65. package/template/.agents/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  66. package/template/.agents/skills/yss-research/tests/run-scenarios.mjs +81 -0
  67. package/template/.agents/skills/yss-router/references/router-contract.yaml +48 -10
  68. package/template/.agents/skills/yss-stage-decision/SKILL.md +2 -1
  69. package/template/.agents/skills/yss-ui/SKILL.md +6 -5
  70. package/template/.agents/skills/yss-ui/references/component-routing.md +1 -1
  71. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  72. package/template/.agents/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  73. package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  74. package/template/.agents/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  75. package/template/.agents/skills/yss-use-table-height/SKILL.md +78 -297
  76. package/template/.agents/skills/yss-use-tree-height/SKILL.md +51 -393
  77. package/template/.agents/skills/yss-web-controller/SKILL.md +26 -19
  78. package/template/.agents/skills/yss-web-controller/agents/openai.yaml +2 -2
  79. package/template/.agents/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  80. package/template/.agents/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  81. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  82. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  83. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  84. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  85. package/template/.agents/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  86. package/template/.agents/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  87. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  88. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  89. package/template/.claude/skills/ask-matt/SKILL.md +1 -1
  90. package/template/.claude/skills/code-review/references/yss-review-standards.md +3 -3
  91. package/template/.claude/skills/component-selection-imports/SKILL.md +2 -2
  92. package/template/.claude/skills/frontend-commit/SKILL.md +1 -1
  93. package/template/.claude/skills/wayfinder/SKILL.md +2 -2
  94. package/template/.claude/skills/yss-api-integration/SKILL.md +85 -339
  95. package/template/.claude/skills/yss-application/SKILL.md +7 -5
  96. package/template/.claude/skills/yss-application/references/application-layer-guide.md +60 -105
  97. package/template/.claude/skills/yss-components/SKILL.md +1 -1
  98. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  99. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  100. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  101. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  102. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  103. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  104. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  105. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  106. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  107. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  108. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  109. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  110. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  111. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  112. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  113. package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  114. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  115. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  116. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  117. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  118. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  119. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  120. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  121. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  122. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  123. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  124. package/template/.claude/skills/yss-design-system/SKILL.md +2 -2
  125. package/template/.claude/skills/yss-design-system/references/design-system.md +2 -2
  126. package/template/.claude/skills/yss-domain/SKILL.md +5 -4
  127. package/template/.claude/skills/yss-domain/agents/openai.yaml +2 -2
  128. package/template/.claude/skills/yss-domain/references/domain-layer-guide.md +62 -235
  129. package/template/.claude/skills/yss-dto/SKILL.md +11 -5
  130. package/template/.claude/skills/yss-dto/references/README.md +2 -2
  131. package/template/.claude/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  132. package/template/.claude/skills/yss-exception/SKILL.md +2 -0
  133. package/template/.claude/skills/yss-formily/SKILL.md +1 -1
  134. package/template/.claude/skills/yss-mybatis/SKILL.md +2 -2
  135. package/template/.claude/skills/yss-page-module-development/SKILL.md +2 -0
  136. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +1 -1
  137. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  138. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  139. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  140. package/template/.claude/skills/yss-repository/SKILL.md +19 -15
  141. package/template/.claude/skills/yss-repository/agents/openai.yaml +2 -2
  142. package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  143. package/template/.claude/skills/yss-research/SKILL.md +73 -0
  144. package/template/.claude/skills/yss-research/agents/openai.yaml +3 -0
  145. package/template/.claude/skills/yss-research/assets/evidence-template.yaml +68 -0
  146. package/template/.claude/skills/yss-research/assets/research-brief-template.md +36 -0
  147. package/template/.claude/skills/yss-research/references/evidence-contract.md +42 -0
  148. package/template/.claude/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  149. package/template/.claude/skills/yss-research/tests/run-scenarios.mjs +81 -0
  150. package/template/.claude/skills/yss-router/references/router-contract.yaml +48 -10
  151. package/template/.claude/skills/yss-stage-decision/SKILL.md +2 -1
  152. package/template/.claude/skills/yss-ui/SKILL.md +6 -5
  153. package/template/.claude/skills/yss-ui/references/component-routing.md +1 -1
  154. package/template/.claude/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  155. package/template/.claude/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  156. package/template/.claude/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  157. package/template/.claude/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  158. package/template/.claude/skills/yss-use-table-height/SKILL.md +78 -297
  159. package/template/.claude/skills/yss-use-tree-height/SKILL.md +51 -393
  160. package/template/.claude/skills/yss-web-controller/SKILL.md +26 -19
  161. package/template/.claude/skills/yss-web-controller/agents/openai.yaml +2 -2
  162. package/template/.claude/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  163. package/template/.claude/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  164. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  165. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  166. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  167. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  168. package/template/.claude/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  169. package/template/.claude/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  170. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  171. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  172. package/template/.codex/skills/ask-matt/SKILL.md +1 -1
  173. package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -3
  174. package/template/.codex/skills/component-selection-imports/SKILL.md +2 -2
  175. package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
  176. package/template/.codex/skills/product-design/package.json +4 -2
  177. package/template/.codex/skills/product-design/skills/research/SKILL.md +22 -0
  178. package/template/.codex/skills/product-design/skills/research/assets/evidence-template.yaml +65 -0
  179. package/template/.codex/skills/product-design/skills/research/assets/research-brief-template.md +33 -0
  180. package/template/.codex/skills/product-design/skills/research/references/evidence-audited.md +80 -0
  181. package/template/.codex/skills/product-design/skills/research/scripts/validate-research-package.mjs +149 -0
  182. package/template/.codex/skills/product-design/skills/research/tests/run-scenarios.mjs +72 -0
  183. package/template/.codex/skills/wayfinder/SKILL.md +2 -2
  184. package/template/.codex/skills/yss-api-integration/SKILL.md +85 -339
  185. package/template/.codex/skills/yss-application/SKILL.md +7 -5
  186. package/template/.codex/skills/yss-application/references/application-layer-guide.md +60 -105
  187. package/template/.codex/skills/yss-components/SKILL.md +1 -1
  188. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  189. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  190. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  191. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  192. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  193. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  194. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  195. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  196. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  197. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  198. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  199. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  200. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  201. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  202. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  203. package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  204. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  205. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  206. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  207. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  208. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  209. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  210. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  211. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  212. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  213. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  214. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  215. package/template/.codex/skills/yss-design-system/references/design-system.md +2 -2
  216. package/template/.codex/skills/yss-domain/SKILL.md +5 -4
  217. package/template/.codex/skills/yss-domain/agents/openai.yaml +2 -2
  218. package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +62 -235
  219. package/template/.codex/skills/yss-dto/SKILL.md +11 -5
  220. package/template/.codex/skills/yss-dto/references/README.md +2 -2
  221. package/template/.codex/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  222. package/template/.codex/skills/yss-exception/SKILL.md +2 -0
  223. package/template/.codex/skills/yss-formily/SKILL.md +1 -1
  224. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  225. package/template/.codex/skills/yss-page-module-development/SKILL.md +2 -0
  226. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +1 -1
  227. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  228. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  229. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  230. package/template/.codex/skills/yss-repository/SKILL.md +19 -15
  231. package/template/.codex/skills/yss-repository/agents/openai.yaml +2 -2
  232. package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  233. package/template/.codex/skills/yss-research/SKILL.md +73 -0
  234. package/template/.codex/skills/yss-research/agents/openai.yaml +3 -0
  235. package/template/.codex/skills/yss-research/assets/evidence-template.yaml +68 -0
  236. package/template/.codex/skills/yss-research/assets/research-brief-template.md +36 -0
  237. package/template/.codex/skills/yss-research/references/evidence-contract.md +42 -0
  238. package/template/.codex/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  239. package/template/.codex/skills/yss-research/tests/run-scenarios.mjs +81 -0
  240. package/template/.codex/skills/yss-router/references/router-contract.yaml +48 -10
  241. package/template/.codex/skills/yss-stage-decision/SKILL.md +2 -1
  242. package/template/.codex/skills/yss-ui/SKILL.md +6 -5
  243. package/template/.codex/skills/yss-ui/references/component-routing.md +1 -1
  244. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  245. package/template/.codex/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  246. package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  247. package/template/.codex/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  248. package/template/.codex/skills/yss-use-table-height/SKILL.md +78 -297
  249. package/template/.codex/skills/yss-use-tree-height/SKILL.md +51 -393
  250. package/template/.codex/skills/yss-web-controller/SKILL.md +26 -19
  251. package/template/.codex/skills/yss-web-controller/agents/openai.yaml +2 -2
  252. package/template/.codex/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  253. package/template/.codex/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  254. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  255. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  256. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  257. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  258. package/template/.codex/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  259. package/template/.codex/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  260. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  261. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  262. package/template/.cursor/mcp.json +8 -0
  263. package/template/.cursor/skills/ask-matt/SKILL.md +1 -1
  264. package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -3
  265. package/template/.cursor/skills/component-selection-imports/SKILL.md +2 -2
  266. package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
  267. package/template/.cursor/skills/wayfinder/SKILL.md +2 -2
  268. package/template/.cursor/skills/yss-api-integration/SKILL.md +85 -339
  269. package/template/.cursor/skills/yss-application/SKILL.md +7 -5
  270. package/template/.cursor/skills/yss-application/references/application-layer-guide.md +60 -105
  271. package/template/.cursor/skills/yss-components/SKILL.md +1 -1
  272. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  273. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  274. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  275. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  276. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  277. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  278. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  279. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  280. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  281. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  282. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  283. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  284. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  285. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  286. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  287. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  288. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  289. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  290. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  291. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  292. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  293. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  294. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  295. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  296. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  297. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  298. package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
  299. package/template/.cursor/skills/yss-design-system/references/design-system.md +2 -2
  300. package/template/.cursor/skills/yss-domain/SKILL.md +5 -4
  301. package/template/.cursor/skills/yss-domain/agents/openai.yaml +2 -2
  302. package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +62 -235
  303. package/template/.cursor/skills/yss-dto/SKILL.md +11 -5
  304. package/template/.cursor/skills/yss-dto/references/README.md +2 -2
  305. package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  306. package/template/.cursor/skills/yss-exception/SKILL.md +2 -0
  307. package/template/.cursor/skills/yss-formily/SKILL.md +1 -1
  308. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  309. package/template/.cursor/skills/yss-page-module-development/SKILL.md +2 -0
  310. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +1 -1
  311. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  312. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  313. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  314. package/template/.cursor/skills/yss-repository/SKILL.md +19 -15
  315. package/template/.cursor/skills/yss-repository/agents/openai.yaml +2 -2
  316. package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  317. package/template/.cursor/skills/yss-research/SKILL.md +73 -0
  318. package/template/.cursor/skills/yss-research/agents/openai.yaml +3 -0
  319. package/template/.cursor/skills/yss-research/assets/evidence-template.yaml +68 -0
  320. package/template/.cursor/skills/yss-research/assets/research-brief-template.md +36 -0
  321. package/template/.cursor/skills/yss-research/references/evidence-contract.md +42 -0
  322. package/template/.cursor/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  323. package/template/.cursor/skills/yss-research/tests/run-scenarios.mjs +81 -0
  324. package/template/.cursor/skills/yss-router/references/router-contract.yaml +48 -10
  325. package/template/.cursor/skills/yss-stage-decision/SKILL.md +2 -1
  326. package/template/.cursor/skills/yss-ui/SKILL.md +6 -5
  327. package/template/.cursor/skills/yss-ui/references/component-routing.md +1 -1
  328. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  329. package/template/.cursor/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  330. package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  331. package/template/.cursor/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  332. package/template/.cursor/skills/yss-use-table-height/SKILL.md +78 -297
  333. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +51 -393
  334. package/template/.cursor/skills/yss-web-controller/SKILL.md +26 -19
  335. package/template/.cursor/skills/yss-web-controller/agents/openai.yaml +2 -2
  336. package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  337. package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  338. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  339. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  340. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  341. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  342. package/template/.cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  343. package/template/.cursor/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  344. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  345. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  346. package/template/.cursorrules +9 -5
  347. package/template/.gemini/settings.json +8 -0
  348. package/template/.hermes/skills/ask-matt/SKILL.md +1 -1
  349. package/template/.hermes/skills/code-review/references/yss-review-standards.md +3 -3
  350. package/template/.hermes/skills/component-selection-imports/SKILL.md +2 -2
  351. package/template/.hermes/skills/frontend-commit/SKILL.md +1 -1
  352. package/template/.hermes/skills/wayfinder/SKILL.md +2 -2
  353. package/template/.hermes/skills/yss-api-integration/SKILL.md +85 -339
  354. package/template/.hermes/skills/yss-application/SKILL.md +7 -5
  355. package/template/.hermes/skills/yss-application/references/application-layer-guide.md +60 -105
  356. package/template/.hermes/skills/yss-components/SKILL.md +1 -1
  357. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  358. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  359. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  360. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  361. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  362. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  363. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  364. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  365. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  366. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  367. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  368. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  369. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  370. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  371. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  372. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  373. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  374. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  375. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  376. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  377. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  378. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  379. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  380. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  381. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  382. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  383. package/template/.hermes/skills/yss-design-system/SKILL.md +2 -2
  384. package/template/.hermes/skills/yss-design-system/references/design-system.md +2 -2
  385. package/template/.hermes/skills/yss-domain/SKILL.md +5 -4
  386. package/template/.hermes/skills/yss-domain/agents/openai.yaml +2 -2
  387. package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +62 -235
  388. package/template/.hermes/skills/yss-dto/SKILL.md +11 -5
  389. package/template/.hermes/skills/yss-dto/references/README.md +2 -2
  390. package/template/.hermes/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  391. package/template/.hermes/skills/yss-exception/SKILL.md +2 -0
  392. package/template/.hermes/skills/yss-formily/SKILL.md +1 -1
  393. package/template/.hermes/skills/yss-mybatis/SKILL.md +2 -2
  394. package/template/.hermes/skills/yss-page-module-development/SKILL.md +2 -0
  395. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +1 -1
  396. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  397. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  398. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  399. package/template/.hermes/skills/yss-repository/SKILL.md +19 -15
  400. package/template/.hermes/skills/yss-repository/agents/openai.yaml +2 -2
  401. package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  402. package/template/.hermes/skills/yss-research/SKILL.md +73 -0
  403. package/template/.hermes/skills/yss-research/agents/openai.yaml +3 -0
  404. package/template/.hermes/skills/yss-research/assets/evidence-template.yaml +68 -0
  405. package/template/.hermes/skills/yss-research/assets/research-brief-template.md +36 -0
  406. package/template/.hermes/skills/yss-research/references/evidence-contract.md +42 -0
  407. package/template/.hermes/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  408. package/template/.hermes/skills/yss-research/tests/run-scenarios.mjs +81 -0
  409. package/template/.hermes/skills/yss-router/references/router-contract.yaml +48 -10
  410. package/template/.hermes/skills/yss-stage-decision/SKILL.md +2 -1
  411. package/template/.hermes/skills/yss-ui/SKILL.md +6 -5
  412. package/template/.hermes/skills/yss-ui/references/component-routing.md +1 -1
  413. package/template/.hermes/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  414. package/template/.hermes/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  415. package/template/.hermes/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  416. package/template/.hermes/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  417. package/template/.hermes/skills/yss-use-table-height/SKILL.md +78 -297
  418. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +51 -393
  419. package/template/.hermes/skills/yss-web-controller/SKILL.md +26 -19
  420. package/template/.hermes/skills/yss-web-controller/agents/openai.yaml +2 -2
  421. package/template/.hermes/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  422. package/template/.hermes/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  423. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  424. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  425. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  426. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  427. package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  428. package/template/.hermes/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  429. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  430. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  431. package/template/.kiro/settings/mcp.json +8 -0
  432. package/template/.mcp.json +8 -0
  433. package/template/.pi/skills/ask-matt/SKILL.md +1 -1
  434. package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -3
  435. package/template/.pi/skills/component-selection-imports/SKILL.md +2 -2
  436. package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
  437. package/template/.pi/skills/wayfinder/SKILL.md +2 -2
  438. package/template/.pi/skills/yss-api-integration/SKILL.md +85 -339
  439. package/template/.pi/skills/yss-application/SKILL.md +7 -5
  440. package/template/.pi/skills/yss-application/references/application-layer-guide.md +60 -105
  441. package/template/.pi/skills/yss-components/SKILL.md +1 -1
  442. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  443. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  444. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  445. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  446. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  447. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  448. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  449. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  450. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  451. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  452. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  453. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  454. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  455. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  456. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  457. package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  458. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  459. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  460. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  461. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  462. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  463. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  464. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  465. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  466. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  467. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  468. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  469. package/template/.pi/skills/yss-design-system/references/design-system.md +2 -2
  470. package/template/.pi/skills/yss-domain/SKILL.md +5 -4
  471. package/template/.pi/skills/yss-domain/agents/openai.yaml +2 -2
  472. package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +62 -235
  473. package/template/.pi/skills/yss-dto/SKILL.md +11 -5
  474. package/template/.pi/skills/yss-dto/references/README.md +2 -2
  475. package/template/.pi/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  476. package/template/.pi/skills/yss-exception/SKILL.md +2 -0
  477. package/template/.pi/skills/yss-formily/SKILL.md +1 -1
  478. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  479. package/template/.pi/skills/yss-page-module-development/SKILL.md +2 -0
  480. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +1 -1
  481. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  482. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  483. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  484. package/template/.pi/skills/yss-repository/SKILL.md +19 -15
  485. package/template/.pi/skills/yss-repository/agents/openai.yaml +2 -2
  486. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  487. package/template/.pi/skills/yss-research/SKILL.md +73 -0
  488. package/template/.pi/skills/yss-research/agents/openai.yaml +3 -0
  489. package/template/.pi/skills/yss-research/assets/evidence-template.yaml +68 -0
  490. package/template/.pi/skills/yss-research/assets/research-brief-template.md +36 -0
  491. package/template/.pi/skills/yss-research/references/evidence-contract.md +42 -0
  492. package/template/.pi/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  493. package/template/.pi/skills/yss-research/tests/run-scenarios.mjs +81 -0
  494. package/template/.pi/skills/yss-router/references/router-contract.yaml +48 -10
  495. package/template/.pi/skills/yss-stage-decision/SKILL.md +2 -1
  496. package/template/.pi/skills/yss-ui/SKILL.md +6 -5
  497. package/template/.pi/skills/yss-ui/references/component-routing.md +1 -1
  498. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  499. package/template/.pi/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  500. package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  501. package/template/.pi/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  502. package/template/.pi/skills/yss-use-table-height/SKILL.md +78 -297
  503. package/template/.pi/skills/yss-use-tree-height/SKILL.md +51 -393
  504. package/template/.pi/skills/yss-web-controller/SKILL.md +26 -19
  505. package/template/.pi/skills/yss-web-controller/agents/openai.yaml +2 -2
  506. package/template/.pi/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  507. package/template/.pi/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  508. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  509. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  510. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  511. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  512. package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  513. package/template/.pi/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  514. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  515. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  516. package/template/.qoder/skills/ask-matt/SKILL.md +1 -1
  517. package/template/.qoder/skills/code-review/references/yss-review-standards.md +3 -3
  518. package/template/.qoder/skills/component-selection-imports/SKILL.md +2 -2
  519. package/template/.qoder/skills/frontend-commit/SKILL.md +1 -1
  520. package/template/.qoder/skills/wayfinder/SKILL.md +2 -2
  521. package/template/.qoder/skills/yss-api-integration/SKILL.md +85 -339
  522. package/template/.qoder/skills/yss-application/SKILL.md +7 -5
  523. package/template/.qoder/skills/yss-application/references/application-layer-guide.md +60 -105
  524. package/template/.qoder/skills/yss-components/SKILL.md +1 -1
  525. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  526. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  527. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  528. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  529. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  530. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  531. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  532. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  533. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  534. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  535. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  536. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  537. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  538. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  539. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  540. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  541. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  542. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  543. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  544. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  545. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  546. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  547. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  548. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  549. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  550. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  551. package/template/.qoder/skills/yss-design-system/SKILL.md +2 -2
  552. package/template/.qoder/skills/yss-design-system/references/design-system.md +2 -2
  553. package/template/.qoder/skills/yss-domain/SKILL.md +5 -4
  554. package/template/.qoder/skills/yss-domain/agents/openai.yaml +2 -2
  555. package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +62 -235
  556. package/template/.qoder/skills/yss-dto/SKILL.md +11 -5
  557. package/template/.qoder/skills/yss-dto/references/README.md +2 -2
  558. package/template/.qoder/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  559. package/template/.qoder/skills/yss-exception/SKILL.md +2 -0
  560. package/template/.qoder/skills/yss-formily/SKILL.md +1 -1
  561. package/template/.qoder/skills/yss-mybatis/SKILL.md +2 -2
  562. package/template/.qoder/skills/yss-page-module-development/SKILL.md +2 -0
  563. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +1 -1
  564. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  565. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  566. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  567. package/template/.qoder/skills/yss-repository/SKILL.md +19 -15
  568. package/template/.qoder/skills/yss-repository/agents/openai.yaml +2 -2
  569. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  570. package/template/.qoder/skills/yss-research/SKILL.md +73 -0
  571. package/template/.qoder/skills/yss-research/agents/openai.yaml +3 -0
  572. package/template/.qoder/skills/yss-research/assets/evidence-template.yaml +68 -0
  573. package/template/.qoder/skills/yss-research/assets/research-brief-template.md +36 -0
  574. package/template/.qoder/skills/yss-research/references/evidence-contract.md +42 -0
  575. package/template/.qoder/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  576. package/template/.qoder/skills/yss-research/tests/run-scenarios.mjs +81 -0
  577. package/template/.qoder/skills/yss-router/references/router-contract.yaml +48 -10
  578. package/template/.qoder/skills/yss-stage-decision/SKILL.md +2 -1
  579. package/template/.qoder/skills/yss-ui/SKILL.md +6 -5
  580. package/template/.qoder/skills/yss-ui/references/component-routing.md +1 -1
  581. package/template/.qoder/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  582. package/template/.qoder/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  583. package/template/.qoder/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  584. package/template/.qoder/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  585. package/template/.qoder/skills/yss-use-table-height/SKILL.md +78 -297
  586. package/template/.qoder/skills/yss-use-tree-height/SKILL.md +51 -393
  587. package/template/.qoder/skills/yss-web-controller/SKILL.md +26 -19
  588. package/template/.qoder/skills/yss-web-controller/agents/openai.yaml +2 -2
  589. package/template/.qoder/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  590. package/template/.qoder/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  591. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  592. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  593. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  594. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  595. package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  596. package/template/.qoder/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  597. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  598. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  599. package/template/.trae/skills/ask-matt/SKILL.md +1 -1
  600. package/template/.trae/skills/code-review/references/yss-review-standards.md +3 -3
  601. package/template/.trae/skills/component-selection-imports/SKILL.md +2 -2
  602. package/template/.trae/skills/frontend-commit/SKILL.md +1 -1
  603. package/template/.trae/skills/wayfinder/SKILL.md +2 -2
  604. package/template/.trae/skills/yss-api-integration/SKILL.md +85 -339
  605. package/template/.trae/skills/yss-application/SKILL.md +7 -5
  606. package/template/.trae/skills/yss-application/references/application-layer-guide.md +60 -105
  607. package/template/.trae/skills/yss-components/SKILL.md +1 -1
  608. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +39 -14
  609. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  610. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  611. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  612. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  613. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  614. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  615. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  616. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  617. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  618. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  619. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  620. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  621. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  622. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  623. package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  624. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +90 -385
  625. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  626. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +42 -122
  627. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +225 -0
  628. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +164 -0
  629. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  630. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +153 -42
  631. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +172 -0
  632. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  633. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +335 -12
  634. package/template/.trae/skills/yss-design-system/SKILL.md +2 -2
  635. package/template/.trae/skills/yss-design-system/references/design-system.md +2 -2
  636. package/template/.trae/skills/yss-domain/SKILL.md +5 -4
  637. package/template/.trae/skills/yss-domain/agents/openai.yaml +2 -2
  638. package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +62 -235
  639. package/template/.trae/skills/yss-dto/SKILL.md +11 -5
  640. package/template/.trae/skills/yss-dto/references/README.md +2 -2
  641. package/template/.trae/skills/yss-dto/references/openapi-wire-profile.yaml +9 -3
  642. package/template/.trae/skills/yss-exception/SKILL.md +2 -0
  643. package/template/.trae/skills/yss-formily/SKILL.md +1 -1
  644. package/template/.trae/skills/yss-mybatis/SKILL.md +2 -2
  645. package/template/.trae/skills/yss-page-module-development/SKILL.md +2 -0
  646. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +1 -1
  647. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  648. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +54 -21
  649. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  650. package/template/.trae/skills/yss-repository/SKILL.md +19 -15
  651. package/template/.trae/skills/yss-repository/agents/openai.yaml +2 -2
  652. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  653. package/template/.trae/skills/yss-research/SKILL.md +73 -0
  654. package/template/.trae/skills/yss-research/agents/openai.yaml +3 -0
  655. package/template/.trae/skills/yss-research/assets/evidence-template.yaml +68 -0
  656. package/template/.trae/skills/yss-research/assets/research-brief-template.md +36 -0
  657. package/template/.trae/skills/yss-research/references/evidence-contract.md +42 -0
  658. package/template/.trae/skills/yss-research/scripts/validate-research-package.mjs +128 -0
  659. package/template/.trae/skills/yss-research/tests/run-scenarios.mjs +81 -0
  660. package/template/.trae/skills/yss-router/references/router-contract.yaml +48 -10
  661. package/template/.trae/skills/yss-stage-decision/SKILL.md +2 -1
  662. package/template/.trae/skills/yss-ui/SKILL.md +6 -5
  663. package/template/.trae/skills/yss-ui/references/component-routing.md +1 -1
  664. package/template/.trae/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  665. package/template/.trae/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  666. package/template/.trae/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  667. package/template/.trae/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  668. package/template/.trae/skills/yss-use-table-height/SKILL.md +78 -297
  669. package/template/.trae/skills/yss-use-tree-height/SKILL.md +51 -393
  670. package/template/.trae/skills/yss-web-controller/SKILL.md +26 -19
  671. package/template/.trae/skills/yss-web-controller/agents/openai.yaml +2 -2
  672. package/template/.trae/skills/yss-web-controller/assets/templates/Controller.java.template +21 -22
  673. package/template/.trae/skills/yss-web-controller/assets/templates/WebConvertor.java.template +19 -12
  674. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  675. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +21 -0
  676. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  677. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  678. package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +63 -145
  679. package/template/.trae/skills/yss-web-controller/references/web-generation-contract.schema.json +97 -0
  680. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.mjs +168 -19
  681. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.test.mjs +144 -7
  682. package/template/.vscode/mcp.json +8 -0
  683. package/template/AGENTS.md +2 -2
  684. package/template/CONTEXT.md +1 -1
  685. package/template/README.md +3 -0
  686. package/template/docs/agents/digital-human-roles.yaml +3 -3
  687. package/template/docs/agents/skills-maintenance.md +7 -4
  688. package/template/docs/agents/yss-skill-registry.yaml +25 -4
  689. package/template/docs/agents/yss-ui-skills-integration.md +24 -0
  690. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -0
  691. package/template/docs/process/template-verification-profiles.yaml +11 -0
  692. package/template/docs/templates/implementation-routing-template.md +5 -3
  693. package/template/docs/templates/review-report-template.md +2 -2
  694. package/template/docs/user-guide/yss-ui-mcp.md +43 -0
  695. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +1 -1
  696. package/template/scripts/lib/scenario-checks.mjs +11 -7
  697. package/template/scripts/lib/skill-governance.mjs +36 -2
  698. package/template/scripts/lib/skill-registry.mjs +51 -6
  699. package/template/scripts/lib/skill-supply-chain.mjs +75 -3
  700. package/template/scripts/verify-scaffold-generator-scenarios +150 -44
  701. package/template/scripts/verify-skill-governance +1 -1
  702. package/template/scripts/verify-upstream-skill-source +38 -3
  703. package/template/scripts/verify-yss-dto-openapi-profile +12 -2
  704. package/template/skills-lock.json +182 -107
  705. package/template/yss-public-skills.json +2 -0
  706. package/template.manifest.json +4 -0
  707. package/template.snapshot.json +5 -5
  708. package/template/.agents/skills/research/SKILL.md +0 -12
  709. package/template/.agents/skills/research/agents/openai.yaml +0 -3
  710. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  711. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  712. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  713. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  714. package/template/.agents/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  715. package/template/.claude/skills/research/SKILL.md +0 -12
  716. package/template/.claude/skills/research/agents/openai.yaml +0 -3
  717. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  718. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  719. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  720. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  721. package/template/.claude/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  722. package/template/.codex/skills/research/SKILL.md +0 -12
  723. package/template/.codex/skills/research/agents/openai.yaml +0 -3
  724. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  725. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  726. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  727. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  728. package/template/.codex/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  729. package/template/.cursor/skills/research/SKILL.md +0 -12
  730. package/template/.cursor/skills/research/agents/openai.yaml +0 -3
  731. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  732. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  733. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  734. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  735. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  736. package/template/.hermes/skills/research/SKILL.md +0 -12
  737. package/template/.hermes/skills/research/agents/openai.yaml +0 -3
  738. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  739. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  740. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  741. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  742. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  743. package/template/.pi/skills/research/SKILL.md +0 -12
  744. package/template/.pi/skills/research/agents/openai.yaml +0 -3
  745. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  746. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  747. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  748. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  749. package/template/.pi/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  750. package/template/.qoder/skills/research/SKILL.md +0 -12
  751. package/template/.qoder/skills/research/agents/openai.yaml +0 -3
  752. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  753. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  754. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  755. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  756. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  757. package/template/.trae/skills/research/SKILL.md +0 -12
  758. package/template/.trae/skills/research/agents/openai.yaml +0 -3
  759. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  760. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  761. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  762. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  763. package/template/.trae/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
@@ -1,21 +1,29 @@
1
1
  #!/usr/bin/env node
2
- import { access, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { createHash } from "node:crypto";
3
+ import { constants, access, copyFile, mkdir, mkdtemp, readFile, rm, unlink, writeFile } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
3
5
  import path from "node:path";
4
6
  import { fileURLToPath } from "node:url";
5
7
 
8
+ import { parseDocument } from "../../../../scripts/vendor/yaml.mjs";
9
+
6
10
  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"]);
11
+ const PLATFORM_VALIDATION_NAMESPACES = {
12
+ "spring-boot-2.7-jdk8": "javax",
13
+ "spring-boot-3-jdk17": "jakarta"
14
+ };
15
+ const required = ["metadata-file", "contract-file", "dto-wire-profile-file", "base-package", "module-name", "domain-segment"];
16
+ const valued = new Set([...required, "output-dir", "web-project-dir", "web-output-dir", "author", "application-service-package", "validation-namespace", "scaffold-manifest-file"]);
9
17
 
10
18
  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]";
19
+ return "Usage: node generate_controller.mjs --metadata-file FILE --contract-file FILE --dto-wire-profile-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--web-project-dir DIR] [--web-output-dir DIR] [--scaffold-manifest-file FILE] [--author NAME] [--application-service-package PACKAGE] [--validation-namespace javax|jakarta]";
12
20
  }
13
21
  export function parseArgs(argv) {
14
22
  const args = { "output-dir": "./output", author: "System", "validation-namespace": "javax", force: false };
15
23
  for (let index = 0; index < argv.length; index += 1) {
16
24
  const token = argv[index];
17
25
  if (token === "--help" || token === "-h") return { help: true };
18
- if (token === "--force") { args.force = true; continue; }
26
+ if (token === "--force") throw new Error("unsupported: initialize-only Web 生成禁止 --force、已有目标覆盖和旧项目迁移");
19
27
  if (!token.startsWith("--") || !valued.has(token.slice(2))) throw new Error(`unrecognized argument: ${token}`);
20
28
  const value = argv[++index];
21
29
  if (!value || value.startsWith("--")) throw new Error(`argument ${token} requires a value`);
@@ -32,9 +40,11 @@ const packagePath = (value) => value.replaceAll(".", path.sep);
32
40
  const ensureSubdir = (root, name) => path.basename(path.normalize(root)) === name ? root : path.join(root, name);
33
41
  const javaType = (sqlType = "") => TYPE_MAPPING[sqlType.toLowerCase().split("(")[0]] || "String";
34
42
 
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) => {
43
+ function fields(columns, selected, { command = false } = {}) {
44
+ const byName = new Map(columns.map((column) => [String(column.name), column]));
45
+ return selected.map((field) => {
46
+ const column = byName.get(field);
47
+ if (!column) throw new Error(`approved field is absent from metadata: ${field}`);
38
48
  const type = javaType(column.sql_type);
39
49
  const name = lowerCamel(column.name);
40
50
  const comment = column.comment || "";
@@ -45,33 +55,172 @@ function fields(columns, { skipPk = false, command = false, skipAudit = true } =
45
55
  }
46
56
  function render(template, context) { return template.replace(/\$(?:\{([A-Za-z_][A-Za-z0-9_]*)\}|([A-Za-z_][A-Za-z0-9_]*))/g, (_, braced, plain) => { const key = braced || plain; if (!(key in context)) throw new Error(`missing template field: ${key}`); return context[key]; }); }
47
57
  async function exists(target) { try { await access(target); return true; } catch { return false; } }
58
+ const present = (value) => value !== undefined && value !== null && value !== "";
59
+ function within(root, target) {
60
+ const relative = path.relative(path.resolve(root), path.resolve(target));
61
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
62
+ }
63
+ function simpleJavaName(javaType) {
64
+ return javaType.replace(/<.*$/, "").split(".").at(-1);
65
+ }
66
+ function paginationFields(selected, dtoProfile) {
67
+ const definitions = dtoProfile.page_query.fields;
68
+ const unique = [...new Set(selected)];
69
+ const unsupported = unique.filter((name) => !(name in definitions) || dtoProfile.page_query.forbidden_client_fields.includes(name));
70
+ if (unsupported.length) throw new Error(`unsupported pagination fields: ${unsupported.join(", ")}`);
71
+ return unique.map((name) => {
72
+ const definition = definitions[name];
73
+ const wireType = definition.wire_types.find((item) => item !== "null");
74
+ const javaType = wireType === "integer" ? (definition.nullable ? "Integer" : "int") : wireType === "string" ? "String" : null;
75
+ if (!javaType) throw new Error(`unsupported yss-dto pagination wire type for ${name}: ${definition.wire_types.join(", ")}`);
76
+ const annotation = definition.enum?.length
77
+ ? ` @Pattern(regexp = "${definition.enum.join("|")}", message = "${name} must be one of ${definition.enum.join(", ")}")\n`
78
+ : "";
79
+ const initializer = definition.default === undefined ? "" : ` = ${typeof definition.default === "string" ? JSON.stringify(definition.default) : definition.default}`;
80
+ return `${annotation} private ${javaType} ${name}${initializer};`;
81
+ }).join("\n");
82
+ }
83
+
84
+ async function loadDtoWireProfile(contract, args) {
85
+ const profilePath = path.resolve(args["dto-wire-profile-file"]);
86
+ if (profilePath !== path.resolve(contract.dto_wire_profile_ref ?? "")) throw new Error("--dto-wire-profile-file does not match the approved Web generation contract");
87
+ if (!await exists(profilePath)) throw new Error(`yss-dto wire profile not found: ${profilePath}`);
88
+ const source = await readFile(profilePath);
89
+ const digest = createHash("sha256").update(source).digest("hex");
90
+ if (digest !== contract.dto_wire_profile_digest) throw new Error("yss-dto wire profile digest does not match the approved Web generation contract");
91
+ const document = parseDocument(source.toString("utf8"), { maxAliasCount: 0, uniqueKeys: true });
92
+ if (document.errors.length) throw new Error(`invalid yss-dto wire profile: ${document.errors[0].message}`);
93
+ const profile = document.toJS({ maxAliasCount: 0 });
94
+ if (profile?.schema_version !== 1 || profile?.kind !== "yss-dto-openapi-wire-profile") throw new Error("unsupported yss-dto wire profile");
95
+ const resultPackage = profile.canonical?.java_package;
96
+ const pageResult = profile.wrappers?.PageResult;
97
+ const singleResult = profile.wrappers?.SingleResult;
98
+ const commandDtoType = profile.request_bases?.command?.java_type;
99
+ const queryDtoType = profile.request_bases?.query?.java_type;
100
+ if (![resultPackage, pageResult?.java_type, singleResult?.java_type, commandDtoType, queryDtoType].every(present)) throw new Error("incomplete yss-dto wire profile type mapping");
101
+ if (![pageResult.java_type, singleResult.java_type].every((type) => type.startsWith(`${resultPackage}.`))) throw new Error("yss-dto result wrapper package is inconsistent");
102
+ if (!profile.page_query?.fields || !Array.isArray(profile.page_query?.forbidden_client_fields)) throw new Error("incomplete yss-dto page_query mapping");
103
+ const factory = pageResult.java_factory;
104
+ const singleFactory = singleResult.java_factory;
105
+ const javaIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
106
+ if (!javaIdentifier.test(factory?.method ?? "") || !Array.isArray(factory.arguments) || !factory.arguments.length) throw new Error("incomplete yss-dto PageResult factory mapping");
107
+ if (!javaIdentifier.test(singleFactory?.method ?? "") || JSON.stringify(singleFactory.arguments) !== JSON.stringify(["data"])) throw new Error("incomplete yss-dto SingleResult factory mapping");
108
+ const expressionByArgument = { data: "toResponses(source.getData())", totalCount: "source.getTotalCount()", pageSize: "source.getPageSize()", pageIndex: "source.getPageIndex()" };
109
+ const unsupportedArguments = factory.arguments.filter((name) => !(name in expressionByArgument));
110
+ if (unsupportedArguments.length) throw new Error(`unsupported yss-dto PageResult factory arguments: ${unsupportedArguments.join(", ")}`);
111
+ return {
112
+ profile,
113
+ resultPackage,
114
+ pageResultType: pageResult.java_type.replace(/<.*$/, ""),
115
+ singleResultType: singleResult.java_type.replace(/<.*$/, ""),
116
+ pageResultFactoryMethod: factory.method,
117
+ singleResultFactoryMethod: singleFactory.method,
118
+ commandDtoType,
119
+ queryDtoType,
120
+ pageResultFactoryArguments: factory.arguments.map((name, index) => ` ${expressionByArgument[name]}${index < factory.arguments.length - 1 ? "," : ""}`).join("\n")
121
+ };
122
+ }
123
+
124
+ async function validateContract(contract, args) {
125
+ if (contract.schema_version !== 2) throw new Error(`web generation contract schema_version=${contract.schema_version} is unsupported; only schema_version=2 is accepted`);
126
+ if (contract.status !== "approved") throw new Error("web generation contract must be approved");
127
+ const requiredFields = ["contract_id", "contract_version", "current_version", "slice_id", "integration_mode", "implementation_project_root", "base_package", "module_name", "domain_segment", "application_service_package", "architecture_profile", "platform_profile", "validation_namespace", "dto_placement", "dto_wire_profile_ref", "dto_wire_profile_digest", "openapi_freeze_ref", "fields", "allowed_write_paths", "expected_evidence_files", "verification_commands"];
128
+ const missing = requiredFields.filter((name) => !present(contract[name]));
129
+ if (missing.length) throw new Error(`approved web generation contract is incomplete: ${missing.join(", ")}`);
130
+ if (contract.current_version !== contract.contract_version) throw new Error("web generation contract is not the current approved version");
131
+ if (!Number.isInteger(contract.contract_version) || contract.contract_version < 1) throw new Error("web generation contract_version must be a positive integer");
132
+ if (!["existing-project", "scaffold-v2"].includes(contract.integration_mode)) throw new Error("unsupported web generation integration_mode");
133
+ if (!["allowed_write_paths", "expected_evidence_files", "verification_commands"].every((name) => Array.isArray(contract[name]) && contract[name].length)) throw new Error("web generation contract requires non-empty allowed_write_paths, expected_evidence_files, and verification_commands");
134
+ 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");
135
+ 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");
136
+ const applicationPackage = args["application-service-package"] || `${args["base-package"]}.application.service`;
137
+ if (contract.application_service_package !== applicationPackage) throw new Error("--application-service-package does not match the approved web generation contract");
138
+ if (!(contract.platform_profile in PLATFORM_VALIDATION_NAMESPACES)) throw new Error("unsupported platform_profile in approved web generation contract");
139
+ if (PLATFORM_VALIDATION_NAMESPACES[contract.platform_profile] !== contract.validation_namespace) throw new Error("platform_profile and validation_namespace are inconsistent");
140
+ if (contract.validation_namespace !== args["validation-namespace"]) throw new Error("--validation-namespace must match the approved web generation contract");
141
+
142
+ const implementationRoot = path.resolve(contract.implementation_project_root);
143
+ if (contract.integration_mode === "existing-project") {
144
+ if (args["scaffold-manifest-file"] || present(contract.scaffold_manifest_ref)) throw new Error("existing-project Web generation must not claim a scaffold manifest");
145
+ return { applicationPackage, implementationRoot };
146
+ }
147
+
148
+ if (!args["scaffold-manifest-file"] || !present(contract.scaffold_manifest_ref)) throw new Error("scaffold-v2 Web generation requires --scaffold-manifest-file and scaffold_manifest_ref");
149
+ const manifestPath = path.resolve(args["scaffold-manifest-file"]);
150
+ if (manifestPath !== path.resolve(contract.scaffold_manifest_ref)) throw new Error("--scaffold-manifest-file does not match the approved web generation contract");
151
+ if (!await exists(manifestPath)) throw new Error(`scaffold manifest not found: ${manifestPath}`);
152
+ const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
153
+ if (manifest.schema_version !== 2) throw new Error("scaffold manifest must use schema_version=2");
154
+ if (!["empty-scaffold-verified", "first-slice-verified"].includes(manifest.completion_level)) throw new Error("scaffold manifest must be empty-scaffold-verified before Web generation");
155
+ const scaffoldRoot = path.dirname(path.dirname(manifestPath));
156
+ if (implementationRoot !== scaffoldRoot) throw new Error("implementation_project_root does not match the scaffold manifest project root");
157
+ const expectedWebProject = path.join(scaffoldRoot, `${manifest.project_name}-adapter`, `${manifest.project_name}-web`);
158
+ if (!args["web-project-dir"] || path.resolve(args["web-project-dir"]) !== expectedWebProject) throw new Error("--web-project-dir does not match the scaffold manifest project layout");
159
+ const profilePairs = [["architecture", "architecture_profile"], ["platform", "platform_profile"], ["validation_namespace", "validation_namespace"], ["dto_placement", "dto_placement"]];
160
+ for (const [manifestField, contractField] of profilePairs) {
161
+ if (manifest.profiles?.[manifestField] !== contract[contractField]) throw new Error(`scaffold manifest ${manifestField} profile does not match the approved Web contract`);
162
+ }
163
+ if (manifest.base_package !== contract.base_package) throw new Error("scaffold manifest base_package does not match the approved Web contract");
164
+ return { applicationPackage, implementationRoot };
165
+ }
48
166
 
49
167
  export async function generate(args, logger = console) {
50
168
  if (!await exists(args["metadata-file"])) throw new Error(`Metadata file not found: ${args["metadata-file"]}`);
169
+ if (!await exists(args["contract-file"])) throw new Error(`Contract file not found: ${args["contract-file"]}`);
51
170
  let metadata;
52
171
  try { metadata = JSON.parse(await readFile(args["metadata-file"], "utf8")); } catch (error) { throw new Error(`Error reading metadata file: ${error.message}`); }
172
+ let contract;
173
+ try { contract = JSON.parse(await readFile(args["contract-file"], "utf8")); } catch (error) { throw new Error(`Error reading contract file: ${error.message}`); }
174
+ const { applicationPackage, implementationRoot } = await validateContract(contract, args);
175
+ const dto = await loadDtoWireProfile(contract, args);
53
176
  const tables = metadata.tables || [];
54
177
  if (!tables.length) { logger.warn("Warning: No tables found in metadata."); return []; }
55
178
  const scriptDir = path.dirname(fileURLToPath(import.meta.url));
56
179
  const templatesDir = path.resolve(scriptDir, "../assets/templates");
57
180
  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)])));
181
+ 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"];
182
+ const templates = Object.fromEntries(await Promise.all(templateNames.map(async (name) => [name, await template(name)])));
59
183
  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
184
  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
185
  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}`); };
186
+ const planned = [];
187
+ const plan = (target, contents) => planned.push({ target, contents });
66
188
  for (const table of tables) {
67
189
  const domainClass = pascal(table.table_name); const domainVar = lowerCamel(table.table_name); const domainDesc = String(table.table_comment || domainClass).trim().replaceAll("\n", " ");
68
- 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 }));
190
+ const approvedFields = contract.fields[table.table_name];
191
+ if (!approvedFields || ["create", "update", "query", "pagination", "response"].some((name) => !Array.isArray(approvedFields[name]))) throw new Error(`approved web field contract is missing create/update/query/pagination/response allowlists for table: ${table.table_name}`);
192
+ 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"], result_package: dto.resultPackage, page_result_type: dto.pageResultType, page_result_simple_name: simpleJavaName(dto.pageResultType), page_result_factory_method: dto.pageResultFactoryMethod, single_result_type: dto.singleResultType, single_result_simple_name: simpleJavaName(dto.singleResultType), single_result_factory_method: dto.singleResultFactoryMethod, command_dto_type: dto.commandDtoType, command_dto_simple_name: simpleJavaName(dto.commandDtoType), query_dto_type: dto.queryDtoType, query_dto_simple_name: simpleJavaName(dto.queryDtoType), page_result_factory_arguments: dto.pageResultFactoryArguments };
193
+ plan(path.join(webRoot, `${domainClass}Controller.java`), render(templates["Controller.java.template"], context));
194
+ plan(path.join(webRoot, "convertor", `${domainClass}WebConvertor.java`), render(templates["WebConvertor.java.template"], context));
195
+ 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, pagination_field_declarations: paginationFields(approvedFields.pagination, dto.profile) }));
196
+ }
197
+ const targets = planned.map(({ target }) => target);
198
+ if (new Set(targets).size !== targets.length) throw new Error("approved metadata produces duplicate target files");
199
+ const existing = [];
200
+ for (const target of targets) if (await exists(target)) existing.push(target);
201
+ if (existing.length) throw new Error(`initialize-only Web generation refuses existing targets: ${existing.join(", ")}`);
202
+ const allowedRoots = contract.allowed_write_paths.map((item) => path.resolve(implementationRoot, String(item)));
203
+ const outside = targets.filter((target) => !allowedRoots.some((root) => within(root, target)));
204
+ if (outside.length) throw new Error(`planned Web targets are outside allowed_write_paths: ${outside.join(", ")}`);
205
+ const staging = await mkdtemp(path.join(tmpdir(), "yss-web-generation-"));
206
+ const created = [];
207
+ try {
208
+ for (const [index, { contents }] of planned.entries()) await writeFile(path.join(staging, String(index)), contents, "utf8");
209
+ for (const [index, { target }] of planned.entries()) {
210
+ await mkdir(path.dirname(target), { recursive: true });
211
+ await copyFile(path.join(staging, String(index)), target, constants.COPYFILE_EXCL);
212
+ created.push(target);
213
+ logger.log(`Generated: ${target}`);
214
+ }
215
+ } catch (error) {
216
+ for (const target of created.reverse()) {
217
+ try { await unlink(target); } catch (cleanupError) { if (cleanupError.code !== "ENOENT") error.cleanupError = cleanupError.message; }
218
+ }
219
+ throw error;
220
+ } finally {
221
+ await rm(staging, { recursive: true, force: true });
73
222
  }
74
- return written;
223
+ return targets;
75
224
  }
76
225
  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
226
  if (process.argv[1] === fileURLToPath(import.meta.url)) await main();
@@ -1,19 +1,156 @@
1
1
  import assert from "node:assert/strict";
2
- import { mkdtemp, readFile, writeFile } from "node:fs/promises";
2
+ import { createHash } from "node:crypto";
3
+ import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
3
4
  import { tmpdir } from "node:os";
4
5
  import path from "node:path";
5
6
  import test from "node:test";
7
+ import { fileURLToPath } from "node:url";
6
8
  import { generate, parseArgs } from "./generate_controller.mjs";
7
9
 
8
- test("generates application-service controller with requested validation profile", async () => {
10
+ const scripts = path.dirname(fileURLToPath(import.meta.url));
11
+ const dtoWireProfileFile = path.resolve(scripts, "../../yss-dto/references/openapi-wire-profile.yaml");
12
+ const dtoWireProfileDigest = createHash("sha256").update(await readFile(dtoWireProfileFile)).digest("hex");
13
+
14
+ const metadataValue = {
15
+ tables: [{
16
+ table_name: "quality_rule",
17
+ table_comment: "质量规则",
18
+ columns: [
19
+ { name: "id", sql_type: "bigint", primary: true, nullable: false },
20
+ { name: "rule_name", sql_type: "varchar(64)", nullable: false }
21
+ ]
22
+ }]
23
+ };
24
+
25
+ function webContract(root, overrides = {}) {
26
+ return {
27
+ schema_version: 2,
28
+ contract_id: "slice-quality-web-1",
29
+ contract_version: 1,
30
+ current_version: 1,
31
+ slice_id: "quality-rule-create",
32
+ status: "approved",
33
+ integration_mode: "existing-project",
34
+ implementation_project_root: root,
35
+ base_package: "com.yss.demo",
36
+ module_name: "demo",
37
+ domain_segment: "quality",
38
+ application_service_package: "com.yss.demo.application.service",
39
+ architecture_profile: "target-domain-model",
40
+ platform_profile: "spring-boot-3-jdk17",
41
+ validation_namespace: "jakarta",
42
+ dto_placement: "web",
43
+ dto_wire_profile_ref: dtoWireProfileFile,
44
+ dto_wire_profile_digest: dtoWireProfileDigest,
45
+ openapi_freeze_ref: "openapi://quality-rule@1",
46
+ allowed_write_paths: [root],
47
+ expected_evidence_files: ["evidence/web-generation.json"],
48
+ verification_commands: ["./mvnw test", "./mvnw package"],
49
+ fields: {
50
+ quality_rule: {
51
+ create: ["rule_name"],
52
+ update: ["id", "rule_name"],
53
+ query: ["rule_name"],
54
+ pagination: ["pageIndex", "pageSize"],
55
+ response: ["id", "rule_name"]
56
+ }
57
+ },
58
+ ...overrides
59
+ };
60
+ }
61
+
62
+ async function fixture(overrides = {}) {
9
63
  const root = await mkdtemp(path.join(tmpdir(), "yss-controller-"));
10
64
  const metadata = path.join(root, "metadata.json");
11
- 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
- const controller = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "QualityRuleController.java"), "utf8");
65
+ const contract = path.join(root, "web-contract.json");
66
+ const output = path.join(root, "out");
67
+ await writeFile(metadata, JSON.stringify(metadataValue));
68
+ await writeFile(contract, JSON.stringify(webContract(root, overrides)));
69
+ const args = ["--metadata-file", metadata, "--contract-file", contract, "--dto-wire-profile-file", dtoWireProfileFile, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", output, "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", overrides.validation_namespace ?? "jakarta"];
70
+ return { root, metadata, contract, output, args };
71
+ }
72
+
73
+ test("generates approved standalone Web code and exposes only approved pagination fields", async () => {
74
+ const data = await fixture();
75
+ await generate(parseArgs(data.args), { log() {}, warn() {} });
76
+ const rest = path.join(data.output, "com", "yss", "demo", "rest");
77
+ const controller = await readFile(path.join(rest, "QualityRuleController.java"), "utf8");
78
+ const convertor = await readFile(path.join(rest, "convertor", "QualityRuleWebConvertor.java"), "utf8");
79
+ const createRequest = await readFile(path.join(rest, "dto", "request", "QualityRuleCreateRequest.java"), "utf8");
80
+ const pageRequest = await readFile(path.join(rest, "dto", "request", "QualityRulePageRequest.java"), "utf8");
14
81
  assert.match(controller, /import com\.yss\.demo\.application\.service\.QualityRuleService;/);
82
+ assert.match(controller, /SingleResult\.of\(/);
15
83
  assert.match(controller, /import jakarta\.validation\.Valid;/);
16
- assert.doesNotMatch(controller, /Gateway/);
84
+ assert.match(convertor, /@Mapper\(componentModel = "spring"\)/);
85
+ assert.match(convertor, /PageResult\.of\(\s*toResponses\(source\.getData\(\)\),\s*source\.getTotalCount\(\),\s*source\.getPageSize\(\),\s*source\.getPageIndex\(\)/s);
86
+ assert.doesNotMatch(`${controller}\n${convertor}`, /Gateway|\.domain\.|Mappers\.getMapper|INSTANCE/);
87
+ assert.match(createRequest, /private String ruleName;/);
88
+ assert.doesNotMatch(createRequest, /private Long id;|@Data/);
89
+ assert.match(pageRequest, /private int pageIndex = 1;/);
90
+ assert.match(pageRequest, /private int pageSize = 10;/);
91
+ assert.doesNotMatch(pageRequest, /orderBy|orderDirection|groupBy|offset|needTotalCount|tempTotalCount|extends PageQuery/);
17
92
  });
18
93
 
19
- test("rejects missing required CLI arguments", () => assert.throws(() => parseArgs(["--module-name", "demo"]), /required/));
94
+ test("rejects a yss-dto wire profile whose digest differs from the approved contract", async () => {
95
+ const data = await fixture({ dto_wire_profile_digest: "0".repeat(64) });
96
+ await assert.rejects(() => generate(parseArgs(data.args), { log() {}, warn() {} }), /yss-dto wire profile digest/);
97
+ });
98
+
99
+ test("rejects missing CLI arguments, schema v1, draft contracts, and inconsistent platform profiles", async () => {
100
+ assert.throws(() => parseArgs(["--module-name", "demo"]), /required/);
101
+ const v1 = await fixture({ schema_version: 1 });
102
+ await assert.rejects(() => generate(parseArgs(v1.args), { log() {}, warn() {} }), /schema_version=1.*unsupported/);
103
+ const draft = await fixture({ status: "draft" });
104
+ await assert.rejects(() => generate(parseArgs(draft.args), { log() {}, warn() {} }), /approved/);
105
+ const mismatch = await fixture({ platform_profile: "spring-boot-3-jdk17", validation_namespace: "javax" });
106
+ await assert.rejects(() => generate(parseArgs(mismatch.args), { log() {}, warn() {} }), /platform_profile and validation_namespace/);
107
+ assert.throws(() => parseArgs([...draft.args, "--force"]), /initialize-only/);
108
+ });
109
+
110
+ test("binds identity and every target to the approved write scope before writing", async () => {
111
+ const data = await fixture();
112
+ await assert.rejects(() => generate(parseArgs(data.args.map((value) => value === "demo" ? "other" : value)), { log() {}, warn() {} }), /approved web generation contract/);
113
+ await writeFile(data.contract, JSON.stringify(webContract(data.root, { allowed_write_paths: [path.join(data.root, "different-root")] })));
114
+ await assert.rejects(() => generate(parseArgs(data.args), { log() {}, warn() {} }), /allowed_write_paths/);
115
+ await writeFile(data.contract, JSON.stringify(webContract(data.root)));
116
+ const existing = path.join(data.output, "com/yss/demo/rest/QualityRuleController.java");
117
+ await mkdir(path.dirname(existing), { recursive: true });
118
+ await writeFile(existing, "user-owned\n");
119
+ await assert.rejects(() => generate(parseArgs(data.args), { log() {}, warn() {} }), /initialize-only/);
120
+ assert.equal(await readFile(existing, "utf8"), "user-owned\n");
121
+ await assert.rejects(() => readFile(path.join(data.output, "com/yss/demo/rest/convertor/QualityRuleWebConvertor.java"), "utf8"), /ENOENT/);
122
+ });
123
+
124
+ test("scaffold-v2 mode requires an empty-scaffold-verified manifest with matching profile and project layout", async () => {
125
+ const data = await fixture({ platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax" });
126
+ const projectRoot = path.join(data.root, "demo-service");
127
+ const webProject = path.join(projectRoot, "demo-service-adapter", "demo-service-web");
128
+ const manifest = path.join(projectRoot, ".yss", "scaffold-generation.json");
129
+ await mkdir(path.dirname(manifest), { recursive: true });
130
+ await writeFile(manifest, JSON.stringify({ schema_version: 2, project_name: "demo-service", base_package: "com.yss.demo", completion_level: "empty-scaffold-verified", profiles: { architecture: "target-domain-model", platform: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web" } }));
131
+ const contractValue = webContract(projectRoot, {
132
+ integration_mode: "scaffold-v2",
133
+ implementation_project_root: projectRoot,
134
+ scaffold_manifest_ref: manifest,
135
+ platform_profile: "spring-boot-3-jdk17",
136
+ validation_namespace: "jakarta",
137
+ allowed_write_paths: [path.join(webProject, "src/main/java/com/yss/demo/rest")]
138
+ });
139
+ await writeFile(data.contract, JSON.stringify(contractValue));
140
+ const args = ["--metadata-file", data.metadata, "--contract-file", data.contract, "--dto-wire-profile-file", dtoWireProfileFile, "--scaffold-manifest-file", manifest, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--web-project-dir", webProject, "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", "jakarta"];
141
+ await assert.rejects(() => generate(parseArgs(args), { log() {}, warn() {} }), /scaffold manifest.*platform/i);
142
+ contractValue.platform_profile = "spring-boot-2.7-jdk8";
143
+ contractValue.validation_namespace = "javax";
144
+ await writeFile(data.contract, JSON.stringify(contractValue));
145
+ await generate(parseArgs(args.map((value) => value === "jakarta" ? "javax" : value)), { log() {}, warn() {} });
146
+ });
147
+
148
+ test("rolls back files written before a filesystem failure", async () => {
149
+ const data = await fixture();
150
+ const rest = path.join(data.output, "com/yss/demo/rest");
151
+ await mkdir(rest, { recursive: true });
152
+ await writeFile(path.join(rest, "convertor"), "blocking-file\n");
153
+ await assert.rejects(() => generate(parseArgs(data.args), { log() {}, warn() {} }));
154
+ await assert.rejects(() => readFile(path.join(rest, "QualityRuleController.java"), "utf8"), /ENOENT/);
155
+ assert.equal(await readFile(path.join(rest, "convertor"), "utf8"), "blocking-file\n");
156
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "servers": {
3
+ "yss-ui": {
4
+ "command": "npx",
5
+ "args": ["-y", "@yss-ui/mcp"]
6
+ }
7
+ }
8
+ }
@@ -53,7 +53,7 @@ README、用户指南、根目录 `CLAUDE.md` 和其他说明文档只引用或
53
53
  | 主阶段(registry) | 原生工作单元 | 技能入口(按影响面裁剪) | 关键产物 / 门禁 |
54
54
  |---|---|---|---|
55
55
  | 入口分诊 `stage.entry-triage` | `work-unit.entry-triage` | `yss-product-lifecycle` | 仓库身份、影响面、最近可信阶段;`gate.repository-identity-valid` |
56
- | Discovery `stage.discovery` | `work-unit.discovery-opportunity`、`work-unit.discovery-requirements`、`work-unit.domain-strategy-design`、`work-unit.stage-decision` | `yss-product-lifecycle`;按事实 / 领域影响使用 `competitive-intelligence`、`research`、`grilling`、`domain-modeling`、`yss-stage-decision` | Discovery、用户/MVP/非目标/成功标准、测试 seam;必要时 DDD 战略设计与阶段决策包;`gate.domain-strategy-approved`、`gate.stage-decision-package-approved` |
56
+ | Discovery `stage.discovery` | `work-unit.discovery-opportunity`、`work-unit.discovery-requirements`、`work-unit.domain-strategy-design`、`work-unit.stage-decision` | `yss-product-lifecycle`;按事实 / 领域影响使用 `competitive-intelligence`、`yss-research`、`grilling`、`domain-modeling`、`yss-stage-decision` | Discovery、用户/MVP/非目标/成功标准、测试 seam;必要时 DDD 战略设计与阶段决策包;`gate.domain-strategy-approved`、`gate.stage-decision-package-approved` |
57
57
  | Spec / 功能架构 `stage.spec-architecture` | `work-unit.spec-synthesis` | `yss-product-lifecycle`;`to-spec` 仅为显式兼容入口 | Spec、产品总体设计、功能架构;必要时 Spec Delta;`gate.spec-baseline-approved` |
58
58
  | 产品设计 `stage.product-design` | `work-unit.prototype-design` | `yss-prototype-stage` 为主合同,内部依次消费 `yss-design-system`、低保真、独立 `prototype-review`、`yss-antd-design` pre-build facts、Codex `product-design:index` focused workflow、post-build/浏览器/无障碍验证;前端落地改用 `yss-ui` | 交互说明、低 / 高保真原型、状态矩阵;`gate.prototype-reviewed`、`gate.prototype-verified`、`gate.user-confirmation` |
59
59
  | 系统 / 数据架构与工程契约 `stage.system-data-engineering` | `work-unit.technical-analysis` | `yss-router`;按影响使用 `yss-openapi-governance`、`yss-openapi-draft-review`、`codebase-design`、`implementation-repo-onboarding`、`yss-tactical-design` | OpenAPI Draft / Freeze、数据架构、工程基线、架构审查;无 API 影响记录;必要时 Tactical DDD Check;`gate.openapi-draft-reviewed`、`gate.design-reviewed`、`gate.openapi-frozen`、`gate.engineering-baseline-accepted`、`gate.architecture-reviewed` |
@@ -95,7 +95,7 @@ README、用户指南、根目录 `CLAUDE.md` 和其他说明文档只引用或
95
95
 
96
96
  | 触发情形 | 必须使用 |
97
97
  |---|---|
98
- | 技术事实、标准、第三方 API 或框架行为影响决策 | `research` 或等价的一手资料记录 |
98
+ | 技术事实、标准、第三方 API 或框架行为影响决策,或外部证据进入领域战略 / 阶段决策 | `yss-research`;技术事实使用 `technical-evidence`,战略决策证据使用 `strategy-evidence`;旧名 `research` 仅为 deprecated alias |
99
99
  | 竞品、市场或用户口碑事实 | `competitive-intelligence` |
100
100
  | UI 设计、原型、组件或主题 | `yss-prototype-stage` 持有阶段合同:`yss-design-system` → 低保真 → 独立 `prototype-review` → `yss-antd-design` pre-build facts → Codex `product-design:index` focused workflow → post-build/浏览器/无障碍验证;其他 Agent 交付等价合同资产。前端代码落地改用 `yss-ui`,不要继续调用 `yss-antd-design` |
101
101
  | Bug、测试失败或性能回退 | `diagnosing-bugs` 建立可复现反馈,再用 `tdd` |
@@ -79,7 +79,7 @@
79
79
  | 显式兼容入口 | 为已有用户操作习惯保留的 user-invoked 工作流入口,写入前由生命周期编排器预检,结果回交其验收。 | — | 不是默认路径、过时别名或可以越过门禁的第二套生命周期。 |
80
80
  | 技能成熟度 | 描述技能从 `draft`、`verified`、`supported` 到 `deprecated` 的治理状态。 | — | 不等同于文件存在、已被投影或能够安装。 |
81
81
  | 技能注册表 | 记录技能身份、别名、分层、适用影响面、成熟度、默认可发现性和 Agent 运行时入口的机器可读路由资产。 | — | 不替代 `skills-lock.json` 的来源、hash 和投影完整性职责。当前 `docs/agents/yss-skill-registry.yaml` 为 `active`,Router、生命周期编排器和实例发现面必须消费通过校验的 canonical 技能及其 alias 解析结果。 |
82
- | LLM Wiki | 由 `raw/`、`wiki/` 与 `.wiki-manifest.json` 组成的本地持久知识库。 | — | 不是 `research` 一次性笔记,也不替代权威源。`ingest` 只把用户点名的外源或已落盘研究笔记编进 IR,不改 live 权威文件。 |
82
+ | LLM Wiki | 由 `raw/`、`wiki/` 与 `.wiki-manifest.json` 组成的本地持久知识库。 | — | 不是 `yss-research` 一次性研究包,也不替代权威源。`ingest` 只把用户点名的外源或已落盘研究笔记编进 IR,不改 live 权威文件。 |
83
83
  | 生态发布清单 | 关联模板 schema 与 commit、CLI 版本与快照、公开技能来源与导出 hash 的跨仓发布证据。 | — | 不要求尚未生成的仓库 commit 互相循环引用。 |
84
84
  | 研发管理仓库 | 承载 Spec、OpenAPI、架构、Ticket、验证、发布和复盘等研发管理资产的仓库。 | — | 不等同于前端 / 后端代码 monorepo。 |
85
85
  | 实现仓库 | 承载前端、后端或其他运行时代码及其 Git、CI、MR / PR、测试命令和发布流水线的仓库。 | — | 不要把实现仓库的源码所有权混入研发管理仓库。 |
@@ -48,6 +48,8 @@
48
48
 
49
49
  YSS skills 的公开发布投影维护在 [iloveZzz/yss-spec-dev-skills](https://github.com/iloveZzz/yss-spec-dev-skills),发布清单和导出命令见 [skills 维护说明](./docs/agents/skills-maintenance.md)。
50
50
 
51
+ YSS UI 组件知识同时通过项目级 MCP 配置提供;支持的客户端、Codex 全局安装和自检方法见 [YSS UI MCP 接入](./docs/user-guide/yss-ui-mcp.md)。
52
+
51
53
  ## 模板初始化 CLI
52
54
 
53
55
  `create-yss-spec` 的目标维护位置是独立 GitHub 仓库 [iloveZzz/create-yss-spec](https://github.com/iloveZzz/create-yss-spec)。本仓库不再包含 CLI 源码、测试、发布配置或开发过程记录。CLI 的使用方法已经合并到统一用户手册:
@@ -113,6 +115,7 @@ scripts/verify-template-fast
113
115
  | [docs/process/implementation-repo-integration.md](./docs/process/implementation-repo-integration.md) | 外部前端 / 后端实现仓库接入与跨仓库切片绑定 |
114
116
  | [docs/agents/README.md](./docs/agents/README.md) | Agent 协作文档目录说明 |
115
117
  | [docs/agents/skills-maintenance.md](./docs/agents/skills-maintenance.md) | Agent skills 安装与维护 |
118
+ | [docs/user-guide/yss-ui-mcp.md](./docs/user-guide/yss-ui-mcp.md) | YSS UI MCP 项目配置、全局安装边界与自检 |
116
119
  | [docs/discovery/IDEATION.md](./docs/discovery/IDEATION.md) | 机会构想方法 |
117
120
  | [docs/architecture/README.md](./docs/architecture/README.md) | 架构设计 + 审查清单 |
118
121
  | [docs/testing/README.md](./docs/testing/README.md) | 测试策略 |
@@ -86,7 +86,7 @@ roles:
86
86
  title: YSS 需求经理
87
87
  stages: [stage.discovery, stage.spec-architecture]
88
88
  draft_artifact_ids: [artifact.discovery-record, artifact.spec]
89
- core_skills: [grilling, domain-modeling, research, competitive-intelligence, grill-with-docs]
89
+ core_skills: [grilling, domain-modeling, yss-research, competitive-intelligence, grill-with-docs]
90
90
  forbidden_skills: [yss-ui, yss-domain, yss-web-controller, yss-repository, yss-ddd-scaffold-generator, yss-frontend-scaffold-generator, implement, tdd]
91
91
  description: >-
92
92
  Own Discovery language, users, MVP, non-goals, success criteria, test
@@ -101,7 +101,7 @@ roles:
101
101
  title: YSS 产品经理
102
102
  stages: [stage.discovery, stage.spec-architecture, stage.product-design, stage.verification-release-retrospective]
103
103
  draft_artifact_ids: [artifact.product-overview, artifact.functional-architecture, artifact.interaction-spec, artifact.state-matrix, artifact.prototype-confirmation]
104
- core_skills: [yss-design-system, yss-prototype-stage, prototype-review, yss-antd-design, research, competitive-intelligence]
104
+ core_skills: [yss-design-system, yss-prototype-stage, prototype-review, yss-antd-design, yss-research, competitive-intelligence]
105
105
  forbidden_skills: [yss-ui, yss-domain, yss-repository, yss-web-controller, yss-ddd-scaffold-generator, implement, tdd]
106
106
  description: >-
107
107
  Own priority, product-design impact, interaction, state matrix, prototype
@@ -137,7 +137,7 @@ roles:
137
137
  title: YSS 前端工程师
138
138
  stages: [stage.product-design, stage.system-data-engineering, stage.ticket-formalization, stage.vertical-slice-implementation, stage.verification-release-retrospective]
139
139
  draft_artifact_ids: [artifact.frontend-implementation-plan]
140
- core_skills: [yss-ui, yss-page-module-development, yss-components, yss-formily, formily-foundation, formily-linkage-effects, formily-mode-slot-detail, formily-step-flow, ytable-usage, ytree-usage, yedit-table-usage, yss-api-integration, yss-hook, theme-token-usage, page-skeleton, page-list-module, page-form-module, component-selection-imports, vue3-best-practices, tdd]
140
+ core_skills: [yss-ui, yss-ui-business-page-generation, yss-page-module-development, yss-components, yss-formily, formily-foundation, formily-linkage-effects, formily-mode-slot-detail, formily-step-flow, ytable-usage, ytree-usage, yedit-table-usage, yss-api-integration, yss-hook, theme-token-usage, page-skeleton, page-list-module, page-form-module, component-selection-imports, vue3-best-practices, tdd]
141
141
  forbidden_skills: [yss-domain, yss-application, yss-repository, yss-mybatis, yss-web-controller, yss-ddd-scaffold-generator, java-backend-commit]
142
142
  description: >-
143
143
  Own Vue page modules, frontend tests, and frontend_implementation_plan.
@@ -18,6 +18,7 @@
18
18
  | `mattpocock/skills` | `0ab1b63a410a03d3627979a109c8695de27af954` / `skills/engineering` 及锁文件记录的关联路径 | 通用工程流程及关联 skills |
19
19
  | `anthropics/knowledge-work-plugins` | `sales/skills/competitive-intelligence` | 竞品与市场事实研究 |
20
20
  | `tt-a1i/archify` | `199360cc6687a7857b54dd188d4922b09e466a4b` / `archify` | 条件式、可验证的技术架构图;YSS 适配见 `docs/agents/archify-integration.md` |
21
+ | `iloveZzz/yss-ui` | `.agents/skills/.yss-skills-manifest.json` 锁定的 revision / `packages/skills` | 22 个 `categories.app` 业务前端 skills;排除组件库内部 `categories.library` 和后端提交 skill,适配见 `docs/agents/yss-ui-skills-integration.md` |
21
22
  | 项目本地 | `.agents/skills` 或平台专属 root | YSS 适配与项目治理 skills |
22
23
 
23
24
  `skills-lock.json` 是技能清单、来源、上游哈希、当前有效内容哈希和投影目标的权威记录:
@@ -44,10 +45,11 @@
44
45
  scripts/update-skill-lock
45
46
  ```
46
47
 
47
- 若来源来自可访问的 Matt checkout,还应显式校验锁定 revision 与每个上游目录哈希:
48
+ 若来源来自可访问的上游 checkout,还应显式校验锁定 revision 与每个上游目录哈希:
48
49
 
49
50
  ```bash
50
- scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
51
+ scripts/verify-upstream-skill-source --source=mattpocock/skills --source-root <matt-skills-checkout>
52
+ scripts/verify-upstream-skill-source --source=iloveZzz/yss-ui --source-root <yss-ui-checkout>
51
53
  ```
52
54
 
53
55
  新增共享 skill 时先显式登记:`scripts/update-skill-lock --add=<skill-name>`;新增平台专属 skill 使用 `scripts/update-skill-lock --add-platform=<root>:<skill-name>`。脚本不会把工作区中偶然出现的未跟踪目录自动纳入发布清单。
@@ -74,8 +76,9 @@
74
76
  ```bash
75
77
  scripts/sync-skills --check
76
78
  scripts/update-skill-lock --check
77
- # 可选:对照锁文件中的 mattpocock/skills revision 与上游目录哈希
78
- scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
79
+ # 可选:对照锁文件中的 source revision 与上游目录哈希
80
+ scripts/verify-upstream-skill-source --source=mattpocock/skills --source-root <matt-skills-checkout>
81
+ scripts/verify-upstream-skill-source --source=iloveZzz/yss-ui --source-root <yss-ui-checkout>
79
82
  ```
80
83
 
81
84
  前者检查所有共享投影是否指向或匹配权威内容,后者检查 `skills-lock.json` 是否与当前完整目录树一致。过时技能不会保留兼容别名;旧 skill 名称和入口按 [`docs/agents/skill-migrations.md`](./skill-migrations.md) 一次性迁移,项目文件升级由 `create-yss-spec attach` / `sync` 处理。
@@ -37,7 +37,22 @@ invocation_contract:
37
37
  maintainer-only:
38
38
  invocation_mode: user
39
39
  primary_output: maintenance-operation
40
- overrides: {}
40
+ overrides:
41
+ yss-ddd-scaffold-generator:
42
+ required_dependencies: [yss-backend-scaffold-parent, alibaba-java-code-style]
43
+ optional_dependencies: []
44
+ yss-domain:
45
+ required_dependencies: [alibaba-java-code-style]
46
+ optional_dependencies: [domain-modeling, yss-tactical-design, lombok]
47
+ yss-application:
48
+ required_dependencies: [alibaba-java-code-style]
49
+ optional_dependencies: [mapstruct, lombok]
50
+ yss-repository:
51
+ required_dependencies: [yss-mybatis, mapstruct, lombok, alibaba-java-code-style]
52
+ optional_dependencies: []
53
+ yss-web-controller:
54
+ required_dependencies: [yss-dto, yss-validation, mapstruct, lombok, alibaba-java-code-style]
55
+ optional_dependencies: [yss-exception]
41
56
  agent_runtime_roots:
42
57
  claude: .claude/skills
43
58
  codex: .codex/skills
@@ -197,11 +212,11 @@ skills:
197
212
  instance_default_discoverable: true
198
213
  aliases: []
199
214
  impacts: [prototype]
200
- - id: research
215
+ - id: yss-research
201
216
  layer: core
202
217
  maturity: supported
203
218
  instance_default_discoverable: true
204
- aliases: []
219
+ aliases: [research]
205
220
  impacts: [discovery]
206
221
  - id: resolving-merge-conflicts
207
222
  layer: core
@@ -447,7 +462,7 @@ skills:
447
462
  layer: specialist
448
463
  maturity: supported
449
464
  instance_default_discoverable: false
450
- aliases: [page-module-development, yss-ui-business-page-generation]
465
+ aliases: [page-module-development]
451
466
  impacts: [frontend]
452
467
  - id: yss-product-lifecycle
453
468
  layer: core
@@ -503,6 +518,12 @@ skills:
503
518
  instance_default_discoverable: false
504
519
  aliases: []
505
520
  impacts: [frontend]
521
+ - id: yss-ui-business-page-generation
522
+ layer: specialist
523
+ maturity: supported
524
+ instance_default_discoverable: false
525
+ aliases: []
526
+ impacts: [frontend]
506
527
  - id: yss-up-springboot3
507
528
  layer: specialist
508
529
  maturity: supported