create-yss-spec 3.4.5 → 3.4.7

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 (547) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  4. package/template/.agents/skills/.yss-skills-manifest.json +1 -8
  5. package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +3 -4
  6. package/template/.agents/skills/yedit-table-usage/SKILL.md +2 -0
  7. package/template/.agents/skills/yss-application/SKILL.md +8 -6
  8. package/template/.agents/skills/yss-audit-log/SKILL.md +12 -7
  9. package/template/.agents/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  10. package/template/.agents/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  11. package/template/.agents/skills/yss-audit-log/references/source-index.md +6 -39
  12. package/template/.agents/skills/yss-cache/SKILL.md +5 -1
  13. package/template/.agents/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  14. package/template/.agents/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  15. package/template/.agents/skills/yss-cache/references/source-index.md +6 -63
  16. package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  18. package/template/{.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .agents/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  23. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  24. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  25. package/template/.agents/skills/yss-distributed-id/SKILL.md +4 -0
  26. package/template/.agents/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  27. package/template/.agents/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  28. package/template/.agents/skills/yss-distributed-id/references/source-index.md +6 -82
  29. package/template/.agents/skills/yss-dto/SKILL.md +2 -2
  30. package/template/.agents/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  31. package/template/.agents/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  32. package/template/.agents/skills/yss-dto/references/source-index.md +6 -51
  33. package/template/.agents/skills/yss-excel-mvc/SKILL.md +4 -0
  34. package/template/.agents/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  35. package/template/.agents/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  36. package/template/.agents/skills/yss-excel-mvc/references/source-index.md +6 -70
  37. package/template/.agents/skills/yss-exception/SKILL.md +12 -9
  38. package/template/.agents/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  39. package/template/.agents/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  40. package/template/.agents/skills/yss-exception/references/source-index.md +6 -31
  41. package/template/.agents/skills/yss-formily/SKILL.md +2 -2
  42. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  43. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
  44. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
  45. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
  46. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
  47. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
  48. package/template/.agents/skills/yss-hook/SKILL.md +3 -2
  49. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  50. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
  51. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  52. package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  53. package/template/.agents/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  54. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  55. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  56. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  57. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  58. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  59. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
  60. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  61. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  62. package/template/.agents/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  63. package/template/.agents/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  64. package/template/.agents/skills/yss-mybatis/references/source-index.md +6 -109
  65. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
  66. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  67. package/template/.agents/skills/yss-repository/SKILL.md +1 -1
  68. package/template/.agents/skills/yss-resilience4j/SKILL.md +4 -0
  69. package/template/.agents/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  70. package/template/.agents/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  71. package/template/.agents/skills/yss-resilience4j/references/source-index.md +6 -29
  72. package/template/.agents/skills/yss-security-algorithm/SKILL.md +34 -10
  73. package/template/.agents/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  74. package/template/.agents/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  75. package/template/.agents/skills/yss-security-algorithm/references/source-index.md +6 -31
  76. package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  77. package/template/.agents/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  78. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  79. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
  80. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  81. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
  82. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  83. package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
  84. package/template/.agents/skills/yss-tactical-design/references/output-template.md +1 -1
  85. package/template/.agents/skills/yss-technical-design/SKILL.md +3 -1
  86. package/template/.agents/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  87. package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  88. package/template/.agents/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
  89. package/template/.agents/skills/yss-ui/SKILL.md +9 -6
  90. package/template/.agents/skills/yss-ui/references/component-routing.md +11 -4
  91. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +5 -1
  92. package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
  93. package/template/.agents/skills/yss-up-springboot3/SKILL.md +23 -9
  94. package/template/.agents/skills/yss-userinfo/SKILL.md +21 -14
  95. package/template/.agents/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  96. package/template/.agents/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  97. package/template/.agents/skills/yss-userinfo/references/source-index.md +6 -30
  98. package/template/.agents/skills/yss-validation/SKILL.md +12 -17
  99. package/template/.agents/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  100. package/template/.agents/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  101. package/template/.agents/skills/yss-validation/references/source-index.md +6 -29
  102. package/template/.agents/skills/yss-web-controller/SKILL.md +4 -4
  103. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  104. package/template/.agents/skills/ytable-usage/SKILL.md +14 -7
  105. package/template/.agents/skills/ytree-usage/SKILL.md +1 -0
  106. package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +3 -4
  107. package/template/.codex/skills/yedit-table-usage/SKILL.md +2 -0
  108. package/template/.codex/skills/yss-application/SKILL.md +8 -6
  109. package/template/.codex/skills/yss-audit-log/SKILL.md +12 -7
  110. package/template/.codex/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  111. package/template/.codex/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  112. package/template/.codex/skills/yss-audit-log/references/source-index.md +6 -39
  113. package/template/.codex/skills/yss-cache/SKILL.md +5 -1
  114. package/template/.codex/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  115. package/template/.codex/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  116. package/template/.codex/skills/yss-cache/references/source-index.md +6 -63
  117. package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  118. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  119. package/template/{.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .codex/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
  120. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  121. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  122. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
  123. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  124. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  125. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  126. package/template/.codex/skills/yss-distributed-id/SKILL.md +4 -0
  127. package/template/.codex/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  128. package/template/.codex/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  129. package/template/.codex/skills/yss-distributed-id/references/source-index.md +6 -82
  130. package/template/.codex/skills/yss-dto/SKILL.md +2 -2
  131. package/template/.codex/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  132. package/template/.codex/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  133. package/template/.codex/skills/yss-dto/references/source-index.md +6 -51
  134. package/template/.codex/skills/yss-excel-mvc/SKILL.md +4 -0
  135. package/template/.codex/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  136. package/template/.codex/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  137. package/template/.codex/skills/yss-excel-mvc/references/source-index.md +6 -70
  138. package/template/.codex/skills/yss-exception/SKILL.md +12 -9
  139. package/template/.codex/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  140. package/template/.codex/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  141. package/template/.codex/skills/yss-exception/references/source-index.md +6 -31
  142. package/template/.codex/skills/yss-formily/SKILL.md +2 -2
  143. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  144. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
  145. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
  146. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
  147. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
  148. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
  149. package/template/.codex/skills/yss-hook/SKILL.md +3 -2
  150. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  151. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
  152. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  153. package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  154. package/template/.codex/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  155. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  156. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  157. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  158. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  159. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  160. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
  161. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  162. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  163. package/template/.codex/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  164. package/template/.codex/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  165. package/template/.codex/skills/yss-mybatis/references/source-index.md +6 -109
  166. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
  167. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  168. package/template/.codex/skills/yss-repository/SKILL.md +1 -1
  169. package/template/.codex/skills/yss-resilience4j/SKILL.md +4 -0
  170. package/template/.codex/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  171. package/template/.codex/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  172. package/template/.codex/skills/yss-resilience4j/references/source-index.md +6 -29
  173. package/template/.codex/skills/yss-security-algorithm/SKILL.md +34 -10
  174. package/template/.codex/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  175. package/template/.codex/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  176. package/template/.codex/skills/yss-security-algorithm/references/source-index.md +6 -31
  177. package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  178. package/template/.codex/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  179. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  180. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
  181. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  182. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
  183. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  184. package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
  185. package/template/.codex/skills/yss-tactical-design/references/output-template.md +1 -1
  186. package/template/.codex/skills/yss-technical-design/SKILL.md +3 -1
  187. package/template/.codex/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  188. package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  189. package/template/.codex/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
  190. package/template/.codex/skills/yss-ui/SKILL.md +9 -6
  191. package/template/.codex/skills/yss-ui/references/component-routing.md +11 -4
  192. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +5 -1
  193. package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
  194. package/template/.codex/skills/yss-up-springboot3/SKILL.md +23 -9
  195. package/template/.codex/skills/yss-userinfo/SKILL.md +21 -14
  196. package/template/.codex/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  197. package/template/.codex/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  198. package/template/.codex/skills/yss-userinfo/references/source-index.md +6 -30
  199. package/template/.codex/skills/yss-validation/SKILL.md +12 -17
  200. package/template/.codex/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  201. package/template/.codex/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  202. package/template/.codex/skills/yss-validation/references/source-index.md +6 -29
  203. package/template/.codex/skills/yss-web-controller/SKILL.md +4 -4
  204. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  205. package/template/.codex/skills/ytable-usage/SKILL.md +14 -7
  206. package/template/.codex/skills/ytree-usage/SKILL.md +1 -0
  207. package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +3 -4
  208. package/template/.cursor/skills/yedit-table-usage/SKILL.md +2 -0
  209. package/template/.cursor/skills/yss-application/SKILL.md +8 -6
  210. package/template/.cursor/skills/yss-audit-log/SKILL.md +12 -7
  211. package/template/.cursor/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  212. package/template/.cursor/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  213. package/template/.cursor/skills/yss-audit-log/references/source-index.md +6 -39
  214. package/template/.cursor/skills/yss-cache/SKILL.md +5 -1
  215. package/template/.cursor/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  216. package/template/.cursor/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  217. package/template/.cursor/skills/yss-cache/references/source-index.md +6 -63
  218. package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  219. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  220. package/template/{.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .cursor/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
  221. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  222. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  223. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
  224. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  225. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  226. package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
  227. package/template/.cursor/skills/yss-distributed-id/SKILL.md +4 -0
  228. package/template/.cursor/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  229. package/template/.cursor/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  230. package/template/.cursor/skills/yss-distributed-id/references/source-index.md +6 -82
  231. package/template/.cursor/skills/yss-dto/SKILL.md +2 -2
  232. package/template/.cursor/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  233. package/template/.cursor/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  234. package/template/.cursor/skills/yss-dto/references/source-index.md +6 -51
  235. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +4 -0
  236. package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  237. package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  238. package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +6 -70
  239. package/template/.cursor/skills/yss-exception/SKILL.md +12 -9
  240. package/template/.cursor/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  241. package/template/.cursor/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  242. package/template/.cursor/skills/yss-exception/references/source-index.md +6 -31
  243. package/template/.cursor/skills/yss-formily/SKILL.md +2 -2
  244. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  245. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
  246. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
  247. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
  248. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
  249. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
  250. package/template/.cursor/skills/yss-hook/SKILL.md +3 -2
  251. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  252. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
  253. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  254. package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  255. package/template/.cursor/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  256. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  257. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  258. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  259. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  260. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  261. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
  262. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  263. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  264. package/template/.cursor/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  265. package/template/.cursor/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  266. package/template/.cursor/skills/yss-mybatis/references/source-index.md +6 -109
  267. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
  268. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  269. package/template/.cursor/skills/yss-repository/SKILL.md +1 -1
  270. package/template/.cursor/skills/yss-resilience4j/SKILL.md +4 -0
  271. package/template/.cursor/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  272. package/template/.cursor/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  273. package/template/.cursor/skills/yss-resilience4j/references/source-index.md +6 -29
  274. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +34 -10
  275. package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  276. package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  277. package/template/.cursor/skills/yss-security-algorithm/references/source-index.md +6 -31
  278. package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  279. package/template/.cursor/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  280. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  281. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
  282. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  283. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
  284. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  285. package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
  286. package/template/.cursor/skills/yss-tactical-design/references/output-template.md +1 -1
  287. package/template/.cursor/skills/yss-technical-design/SKILL.md +3 -1
  288. package/template/.cursor/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  289. package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  290. package/template/.cursor/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
  291. package/template/.cursor/skills/yss-ui/SKILL.md +9 -6
  292. package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -4
  293. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +5 -1
  294. package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
  295. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +23 -9
  296. package/template/.cursor/skills/yss-userinfo/SKILL.md +21 -14
  297. package/template/.cursor/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  298. package/template/.cursor/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  299. package/template/.cursor/skills/yss-userinfo/references/source-index.md +6 -30
  300. package/template/.cursor/skills/yss-validation/SKILL.md +12 -17
  301. package/template/.cursor/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  302. package/template/.cursor/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  303. package/template/.cursor/skills/yss-validation/references/source-index.md +6 -29
  304. package/template/.cursor/skills/yss-web-controller/SKILL.md +4 -4
  305. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  306. package/template/.cursor/skills/ytable-usage/SKILL.md +14 -7
  307. package/template/.cursor/skills/ytree-usage/SKILL.md +1 -0
  308. package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +3 -4
  309. package/template/.pi/skills/yedit-table-usage/SKILL.md +2 -0
  310. package/template/.pi/skills/yss-application/SKILL.md +8 -6
  311. package/template/.pi/skills/yss-audit-log/SKILL.md +12 -7
  312. package/template/.pi/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  313. package/template/.pi/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  314. package/template/.pi/skills/yss-audit-log/references/source-index.md +6 -39
  315. package/template/.pi/skills/yss-cache/SKILL.md +5 -1
  316. package/template/.pi/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  317. package/template/.pi/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  318. package/template/.pi/skills/yss-cache/references/source-index.md +6 -63
  319. package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  320. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  321. package/template/.pi/skills/yss-ddd-scaffold-generator/references/{yss-backend-scaffold-parent/SKILL.md → engineering-baseline.md} +0 -5
  322. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  323. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  324. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
  325. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  326. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  327. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  328. package/template/.pi/skills/yss-distributed-id/SKILL.md +4 -0
  329. package/template/.pi/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  330. package/template/.pi/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  331. package/template/.pi/skills/yss-distributed-id/references/source-index.md +6 -82
  332. package/template/.pi/skills/yss-dto/SKILL.md +2 -2
  333. package/template/.pi/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  334. package/template/.pi/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  335. package/template/.pi/skills/yss-dto/references/source-index.md +6 -51
  336. package/template/.pi/skills/yss-excel-mvc/SKILL.md +4 -0
  337. package/template/.pi/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  338. package/template/.pi/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  339. package/template/.pi/skills/yss-excel-mvc/references/source-index.md +6 -70
  340. package/template/.pi/skills/yss-exception/SKILL.md +12 -9
  341. package/template/.pi/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  342. package/template/.pi/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  343. package/template/.pi/skills/yss-exception/references/source-index.md +6 -31
  344. package/template/.pi/skills/yss-formily/SKILL.md +2 -2
  345. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  346. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
  347. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
  348. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
  349. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
  350. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
  351. package/template/.pi/skills/yss-hook/SKILL.md +3 -2
  352. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  353. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
  354. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  355. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  356. package/template/.pi/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  357. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  358. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  359. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  360. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  361. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  362. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
  363. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  364. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  365. package/template/.pi/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  366. package/template/.pi/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  367. package/template/.pi/skills/yss-mybatis/references/source-index.md +6 -109
  368. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
  369. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  370. package/template/.pi/skills/yss-repository/SKILL.md +1 -1
  371. package/template/.pi/skills/yss-resilience4j/SKILL.md +4 -0
  372. package/template/.pi/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  373. package/template/.pi/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  374. package/template/.pi/skills/yss-resilience4j/references/source-index.md +6 -29
  375. package/template/.pi/skills/yss-security-algorithm/SKILL.md +34 -10
  376. package/template/.pi/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  377. package/template/.pi/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  378. package/template/.pi/skills/yss-security-algorithm/references/source-index.md +6 -31
  379. package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  380. package/template/.pi/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  381. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  382. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
  383. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  384. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
  385. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  386. package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
  387. package/template/.pi/skills/yss-tactical-design/references/output-template.md +1 -1
  388. package/template/.pi/skills/yss-technical-design/SKILL.md +3 -1
  389. package/template/.pi/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  390. package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  391. package/template/.pi/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
  392. package/template/.pi/skills/yss-ui/SKILL.md +9 -6
  393. package/template/.pi/skills/yss-ui/references/component-routing.md +11 -4
  394. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +5 -1
  395. package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
  396. package/template/.pi/skills/yss-up-springboot3/SKILL.md +23 -9
  397. package/template/.pi/skills/yss-userinfo/SKILL.md +21 -14
  398. package/template/.pi/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  399. package/template/.pi/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  400. package/template/.pi/skills/yss-userinfo/references/source-index.md +6 -30
  401. package/template/.pi/skills/yss-validation/SKILL.md +12 -17
  402. package/template/.pi/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  403. package/template/.pi/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  404. package/template/.pi/skills/yss-validation/references/source-index.md +6 -29
  405. package/template/.pi/skills/yss-web-controller/SKILL.md +4 -4
  406. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  407. package/template/.pi/skills/ytable-usage/SKILL.md +14 -7
  408. package/template/.pi/skills/ytree-usage/SKILL.md +1 -0
  409. package/template/docs/agents/backend-architecture-profiles.md +1 -1
  410. package/template/docs/agents/digital-human-roles.yaml +3 -3
  411. package/template/docs/agents/skill-migrations.md +39 -3
  412. package/template/docs/agents/yss-skill-registry.yaml +93 -96
  413. package/template/docs/api/templates/openapi-draft-review-checklist.md +1 -1
  414. package/template/docs/architecture/templates/engineering-baseline-review-template.md +3 -3
  415. package/template/docs/architecture/templates/system-overview-design-template.md +1 -1
  416. package/template/docs/engineering/backend-platforms.json +662 -9
  417. package/template/docs/engineering/backend-platforms.md +33 -7
  418. package/template/docs/process/schemas/backend-architecture-identity.schema.json +102 -0
  419. package/template/docs/process/schemas/project-scaffold-contract.schema.json +16 -4
  420. package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +7 -0
  421. package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +143 -0
  422. package/template/docs/process/strategic-handoff-package.md +1 -1
  423. package/template/docs/templates/implementation-routing-template.md +1 -1
  424. package/template/docs/user-guide//346/212/200/346/234/257/350/256/276/350/256/241/347/224/250/346/210/267/346/214/207/345/215/227.md +2 -2
  425. package/template/scripts/backend-platforms +77 -8
  426. package/template/scripts/lib/backend-platform.mjs +232 -5
  427. package/template/scripts/lib/existing-backend-architecture.mjs +3 -2
  428. package/template/scripts/lib/implementation-contract-compiler.mjs +93 -9
  429. package/template/scripts/lib/skill-registry.mjs +170 -13
  430. package/template/scripts/lib/skill-supply-chain.mjs +1 -1
  431. package/template/scripts/lib/slice-contract-preparation.mjs +6 -5
  432. package/template/scripts/verify-backend-platform-matrix +1 -1
  433. package/template/skills-lock.json +38 -165
  434. package/template/yss-public-skills.json +1 -5
  435. package/template.snapshot.json +4 -4
  436. package/template/.agents/skills/component-selection-imports/SKILL.md +0 -64
  437. package/template/.agents/skills/page-form-module/SKILL.md +0 -168
  438. package/template/.agents/skills/page-list-module/SKILL.md +0 -137
  439. package/template/.agents/skills/page-skeleton/SKILL.md +0 -76
  440. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
  441. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
  442. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
  443. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  444. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
  445. package/template/.agents/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
  446. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
  447. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
  448. package/template/.agents/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
  449. package/template/.agents/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
  450. package/template/.agents/skills/vue3-best-practices/SKILL.md +0 -68
  451. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
  452. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
  453. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
  454. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
  455. package/template/.agents/skills/yss-mvc-design/SKILL.md +0 -16
  456. package/template/.agents/skills/yss-mvc-design/agents/openai.yaml +0 -4
  457. package/template/.agents/skills/yss-use-table-height/SKILL.md +0 -130
  458. package/template/.agents/skills/yss-use-table-height/agents/openai.yaml +0 -5
  459. package/template/.agents/skills/yss-use-table-height/references/frontend-docs.md +0 -9
  460. package/template/.agents/skills/yss-use-tree-height/SKILL.md +0 -98
  461. package/template/.agents/skills/yss-use-tree-height/agents/openai.yaml +0 -5
  462. package/template/.agents/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
  463. package/template/.codex/skills/component-selection-imports/SKILL.md +0 -64
  464. package/template/.codex/skills/page-form-module/SKILL.md +0 -168
  465. package/template/.codex/skills/page-list-module/SKILL.md +0 -137
  466. package/template/.codex/skills/page-skeleton/SKILL.md +0 -76
  467. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
  468. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
  469. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
  470. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  471. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
  472. package/template/.codex/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
  473. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
  474. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
  475. package/template/.codex/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
  476. package/template/.codex/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
  477. package/template/.codex/skills/vue3-best-practices/SKILL.md +0 -68
  478. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
  479. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
  480. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
  481. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
  482. package/template/.codex/skills/yss-mvc-design/SKILL.md +0 -16
  483. package/template/.codex/skills/yss-mvc-design/agents/openai.yaml +0 -4
  484. package/template/.codex/skills/yss-use-table-height/SKILL.md +0 -130
  485. package/template/.codex/skills/yss-use-table-height/agents/openai.yaml +0 -5
  486. package/template/.codex/skills/yss-use-table-height/references/frontend-docs.md +0 -9
  487. package/template/.codex/skills/yss-use-tree-height/SKILL.md +0 -98
  488. package/template/.codex/skills/yss-use-tree-height/agents/openai.yaml +0 -5
  489. package/template/.codex/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
  490. package/template/.cursor/skills/component-selection-imports/SKILL.md +0 -64
  491. package/template/.cursor/skills/page-form-module/SKILL.md +0 -168
  492. package/template/.cursor/skills/page-list-module/SKILL.md +0 -137
  493. package/template/.cursor/skills/page-skeleton/SKILL.md +0 -76
  494. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
  495. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
  496. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
  497. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  498. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
  499. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
  500. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
  501. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
  502. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
  503. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
  504. package/template/.cursor/skills/vue3-best-practices/SKILL.md +0 -68
  505. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
  506. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
  507. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
  508. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
  509. package/template/.cursor/skills/yss-mvc-design/SKILL.md +0 -16
  510. package/template/.cursor/skills/yss-mvc-design/agents/openai.yaml +0 -4
  511. package/template/.cursor/skills/yss-use-table-height/SKILL.md +0 -130
  512. package/template/.cursor/skills/yss-use-table-height/agents/openai.yaml +0 -5
  513. package/template/.cursor/skills/yss-use-table-height/references/frontend-docs.md +0 -9
  514. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +0 -98
  515. package/template/.cursor/skills/yss-use-tree-height/agents/openai.yaml +0 -5
  516. package/template/.cursor/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
  517. package/template/.pi/skills/component-selection-imports/SKILL.md +0 -64
  518. package/template/.pi/skills/page-form-module/SKILL.md +0 -168
  519. package/template/.pi/skills/page-list-module/SKILL.md +0 -137
  520. package/template/.pi/skills/page-skeleton/SKILL.md +0 -76
  521. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
  522. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
  523. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
  524. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  525. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
  526. package/template/.pi/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
  527. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
  528. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
  529. package/template/.pi/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
  530. package/template/.pi/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
  531. package/template/.pi/skills/vue3-best-practices/SKILL.md +0 -68
  532. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
  533. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
  534. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
  535. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
  536. package/template/.pi/skills/yss-mvc-design/SKILL.md +0 -16
  537. package/template/.pi/skills/yss-mvc-design/agents/openai.yaml +0 -4
  538. package/template/.pi/skills/yss-use-table-height/SKILL.md +0 -130
  539. package/template/.pi/skills/yss-use-table-height/agents/openai.yaml +0 -5
  540. package/template/.pi/skills/yss-use-table-height/references/frontend-docs.md +0 -9
  541. package/template/.pi/skills/yss-use-tree-height/SKILL.md +0 -98
  542. package/template/.pi/skills/yss-use-tree-height/agents/openai.yaml +0 -5
  543. package/template/.pi/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
  544. /package/template/.agents/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
  545. /package/template/.codex/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
  546. /package/template/.cursor/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
  547. /package/template/.pi/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
@@ -2,11 +2,10 @@
2
2
  import { createHash } from "node:crypto";
3
3
  import { execFileSync } from "node:child_process";
4
4
  import { access, mkdir, readFile, readdir, writeFile } from "node:fs/promises";
5
- import os from "node:os";
6
5
  import path from "node:path";
7
6
  import { fileURLToPath } from "node:url";
8
7
 
9
- const BACKEND = {
8
+ export const BACKEND = {
10
9
  "yss-cache": ["yss-microservice-components/yss-component-cache-parent"],
11
10
  "yss-mybatis": ["yss-microservice-components/yss-component-persistence"],
12
11
  "yss-dto": ["yss-microservice-components/yss-component-dto"],
@@ -20,21 +19,48 @@ const BACKEND = {
20
19
  "yss-microservice-components/yss-component-leaf",
21
20
  ],
22
21
  "yss-resilience4j": ["yss-microservice-components/yss-component-resilience4j-starter"],
23
- "yss-validation": [
24
- "yss-microservice-components/yss-component-validation-engine-parent",
25
- "yss-microservice-components/yss-component-validation-jsr303",
26
- ],
22
+ "yss-validation": ["yss-microservice-components/yss-component-validation-jsr303"],
27
23
  "yss-security-algorithm": ["yss-microservice-components/yss-component-security-algorithm"],
28
24
  "yss-userinfo": ["yss-microservice-components/yss-component-userinfo-starter"],
29
25
  "yss-exception": ["yss-microservice-components/yss-component-exception"],
30
26
  };
31
27
 
28
+ export const BACKEND_PLATFORM_LINES = Object.freeze({
29
+ "boot2-java8": Object.freeze({
30
+ env: "YSS_SOURCE_ROOT_BOOT2_JAVA8",
31
+ label: "Spring Boot 2.7 / Java 8 maintenance line",
32
+ }),
33
+ "boot3-java17": Object.freeze({
34
+ env: "YSS_SOURCE_ROOT_BOOT3_JAVA17",
35
+ label: "Spring Boot 3.5 / Java 17 mainline",
36
+ }),
37
+ });
38
+
39
+ const BACKEND_PATH_OVERRIDES = Object.freeze({
40
+ "boot2-java8": Object.freeze({}),
41
+ "boot3-java17": Object.freeze({
42
+ "yss-excel-mvc": Object.freeze(["yss-microservice-components/yss-component-excel-mvc"]),
43
+ }),
44
+ });
45
+
46
+ export function backendComponentPaths(skill, platformLine) {
47
+ if (!BACKEND_PLATFORM_LINES[platformLine]) throw new TypeError(`unknown backend component platform line: ${platformLine}`);
48
+ if (!BACKEND[skill]) throw new TypeError(`unknown backend component skill: ${skill}`);
49
+ return BACKEND_PATH_OVERRIDES[platformLine][skill] ?? BACKEND[skill];
50
+ }
51
+
52
+ export function backendPlatformIndexPath(skillsRoot, skill, platformLine) {
53
+ if (!BACKEND_PLATFORM_LINES[platformLine]) throw new TypeError(`unknown backend component platform line: ${platformLine}`);
54
+ return path.join(skillsRoot, skill, "references", `source-index.${platformLine}.md`);
55
+ }
56
+
32
57
  const FRONTEND = {
33
58
  "yss-ui": ["components", "hooks", "skills"],
34
59
  "yss-hook": ["hooks"],
35
60
  "yss-ui-business-page-generation": ["components", "hooks", "skills"],
36
- "yss-use-table-height": ["hooks"],
37
- "yss-use-tree-height": ["hooks"],
61
+ "ytable-usage": ["hooks"],
62
+ "yedit-table-usage": ["hooks"],
63
+ "ytree-usage": ["hooks"],
38
64
  };
39
65
 
40
66
  const URLS = {
@@ -165,42 +191,23 @@ export function sourceState(root, componentPaths) {
165
191
  }
166
192
  }
167
193
 
168
- async function sourceRoot() {
169
- if (process.env.YSS_SOURCE_ROOT) {
170
- const root = path.resolve(process.env.YSS_SOURCE_ROOT);
171
- if (await exists(path.join(root, "yss-microservice-components"))) return root;
172
- throw new Error(`YSS_SOURCE_ROOT must point to the repository root containing \`yss-microservice-components\`: ${root}`);
173
- }
174
-
175
- const home = os.homedir();
176
- const candidates = [
177
- process.cwd(),
178
- ...ancestors(process.cwd()),
179
- path.join(home, "Documents/yss-project/yss-cloud-microservice"),
180
- path.join(home, "Documents/yss-project"),
181
- path.join(home, "Projects/yss-cloud-microservice"),
182
- path.join(home, "Projects"),
183
- ];
184
- for (const base of [path.join(home, "Projects"), path.join(home, "Documents"), path.join(home, "Documents/yss-project")]) {
185
- if (!await exists(base)) continue;
186
- for (const entry of await readdir(base, { withFileTypes: true })) {
187
- if (entry.isDirectory()) candidates.push(path.join(base, entry.name));
194
+ async function configuredSourceRoots() {
195
+ const entries = [];
196
+ for (const [platformLine, contract] of Object.entries(BACKEND_PLATFORM_LINES)) {
197
+ const configured = process.env[contract.env];
198
+ if (!configured) continue;
199
+ const root = path.resolve(configured);
200
+ if (!await exists(path.join(root, "yss-microservice-components"))) {
201
+ throw new Error(`${contract.env} must point to the repository root containing \`yss-microservice-components\`: ${root}`);
188
202
  }
203
+ entries.push([platformLine, root]);
189
204
  }
190
- for (const root of candidates) {
191
- if (await exists(path.join(root, "yss-microservice-components"))) return path.resolve(root);
205
+ if (entries.length === Object.keys(BACKEND_PLATFORM_LINES).length) return Object.fromEntries(entries);
206
+ if (entries.length) {
207
+ const missing = Object.values(BACKEND_PLATFORM_LINES).filter((item) => !process.env[item.env]).map((item) => item.env);
208
+ throw new Error(`dual-track refresh requires both backend source roots; missing ${missing.join(", ")}`);
192
209
  }
193
- throw new Error("Could not find a YSS source repository containing `yss-microservice-components`. Export YSS_SOURCE_ROOT=/absolute/path/to/yss-cloud-microservice and rerun.");
194
- }
195
-
196
- function ancestors(start) {
197
- const output = [];
198
- let current = path.resolve(start);
199
- while (path.dirname(current) !== current) {
200
- current = path.dirname(current);
201
- output.push(current);
202
- }
203
- return output;
210
+ throw new Error(`Set both ${Object.values(BACKEND_PLATFORM_LINES).map((item) => item.env).join(" and ")} to clean, generation-specific YSS source roots.`);
204
211
  }
205
212
 
206
213
  async function files(bases) {
@@ -210,13 +217,170 @@ async function files(bases) {
210
217
  if (DOCS.has(path.basename(target))) output.docs.push(target);
211
218
  else if (path.basename(target) === "pom.xml") output.poms.push(target);
212
219
  else if (target.endsWith(".java") && target.includes(`${path.sep}src${path.sep}main${path.sep}java${path.sep}`)) output.java.push(target);
213
- else if (path.basename(target) === "spring.factories") output.metadata.push(target);
220
+ else if (["spring.factories", "org.springframework.boot.autoconfigure.AutoConfiguration.imports"].includes(path.basename(target))) output.metadata.push(target);
214
221
  }
215
222
  }
216
223
  for (const items of Object.values(output)) items.sort();
217
224
  return output;
218
225
  }
219
226
 
227
+ function xmlText(contents, tag) {
228
+ const match = contents.match(new RegExp(`<${tag}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/${tag}>`));
229
+ return match ? match[1].trim() : null;
230
+ }
231
+
232
+ function xmlSection(contents, tag) {
233
+ const match = contents.match(new RegExp(`<${tag}(?:\\s[^>]*)?>[\\s\\S]*?<\\/${tag}>`));
234
+ return match?.[0] ?? null;
235
+ }
236
+
237
+ function xmlProperties(contents) {
238
+ const block = xmlText(contents, "properties");
239
+ if (!block) return {};
240
+ return Object.fromEntries([...block.matchAll(/<([A-Za-z0-9_.-]+)(?:\s[^>]*)?>([^<]*)<\/\1>/g)]
241
+ .map((match) => [match[1], match[2].trim()]));
242
+ }
243
+
244
+ function pomCoordinateText(contents, tag) {
245
+ let direct = contents;
246
+ for (const nested of ["parent", "properties", "modules", "dependencyManagement", "dependencies", "build", "profiles", "repositories", "pluginRepositories", "distributionManagement", "reporting"]) {
247
+ direct = direct.replace(new RegExp(`<${nested}(?:\\s[^>]*)?>[\\s\\S]*?<\\/${nested}>`, "g"), "");
248
+ }
249
+ return xmlText(direct, tag);
250
+ }
251
+
252
+ function resolveProperties(value, properties) {
253
+ let result = value;
254
+ for (let round = 0; result && round < 8; round += 1) {
255
+ const next = result.replace(/\$\{([^}]+)\}/g, (whole, key) => properties[key] ?? whole);
256
+ if (next === result) break;
257
+ result = next;
258
+ }
259
+ return result;
260
+ }
261
+
262
+ export async function assertSourcePlatformLine(source, platformLine) {
263
+ if (!BACKEND_PLATFORM_LINES[platformLine]) throw new TypeError(`unknown backend component platform line: ${platformLine}`);
264
+ const rootPom = path.join(source, "pom.xml");
265
+ if (!await exists(rootPom)) throw new Error(`backend source root has no pom.xml: ${source}`);
266
+ const contents = (await readFile(rootPom, "utf8")).replace(/<!--[\s\S]*?-->/g, "");
267
+ const parent = xmlSection(contents, "parent");
268
+ const parentVersion = parent ? xmlText(parent, "version") : null;
269
+ const properties = {
270
+ ...xmlProperties(contents),
271
+ "project.parent.version": parentVersion,
272
+ "parent.version": parentVersion,
273
+ };
274
+ const javaVersion = resolveProperties(properties["java.version"] ?? properties["maven.compiler.release"] ?? properties["maven.compiler.source"], properties);
275
+ const bootVersion = resolveProperties(properties["spring-boot.version"] ?? parentVersion, properties);
276
+ const matches = platformLine === "boot2-java8"
277
+ ? /^(?:1\.)?8(?:\D|$)/.test(javaVersion ?? "") && /^2\./.test(bootVersion ?? "")
278
+ : /^17(?:\D|$)/.test(javaVersion ?? "") && /^3\./.test(bootVersion ?? "");
279
+ if (!matches) throw new Error(`source root does not match ${platformLine}: java=${javaVersion ?? "unknown"}, spring-boot=${bootVersion ?? "unknown"}`);
280
+ return { platformLine, javaVersion, bootVersion };
281
+ }
282
+
283
+ async function pomLineage(source, target, seen = new Set()) {
284
+ const normalized = path.resolve(target);
285
+ if (seen.has(normalized) || !await exists(normalized)) return [];
286
+ seen.add(normalized);
287
+ const contents = (await readFile(normalized, "utf8")).replace(/<!--[\s\S]*?-->/g, "");
288
+ const parent = xmlSection(contents, "parent");
289
+ let inherited = [];
290
+ if (parent && !/<relativePath\s*\/>/.test(parent)) {
291
+ const relativePath = xmlText(parent, "relativePath") ?? "../pom.xml";
292
+ const parentPath = path.resolve(path.dirname(normalized), relativePath);
293
+ const withinSource = path.relative(source, parentPath);
294
+ if (!withinSource.startsWith("..") && !path.isAbsolute(withinSource)) inherited = await pomLineage(source, parentPath, seen);
295
+ }
296
+ const body = parent ? contents.replace(parent, "") : contents;
297
+ const parentCoordinates = parent ? {
298
+ groupId: xmlText(parent, "groupId"),
299
+ artifactId: xmlText(parent, "artifactId"),
300
+ version: xmlText(parent, "version"),
301
+ } : {};
302
+ return [...inherited, {
303
+ path: relative(source, normalized),
304
+ groupId: pomCoordinateText(body, "groupId"),
305
+ artifactId: pomCoordinateText(body, "artifactId"),
306
+ version: pomCoordinateText(body, "version"),
307
+ parent: parentCoordinates,
308
+ properties: xmlProperties(contents),
309
+ }];
310
+ }
311
+
312
+ async function mavenAndPlatformFacts(source, pomFiles, javaFiles, metadataFiles) {
313
+ const gavLines = [];
314
+ const javaVersions = new Set();
315
+ const bootVersions = new Set();
316
+ for (const target of pomFiles) {
317
+ const lineage = await pomLineage(source, target);
318
+ const inheritedProperties = {};
319
+ for (const item of lineage) {
320
+ const itemParent = item.parent ?? {};
321
+ const itemResolution = {
322
+ ...inheritedProperties,
323
+ ...item.properties,
324
+ "project.groupId": item.groupId ?? itemParent.groupId,
325
+ "project.artifactId": item.artifactId,
326
+ "project.version": item.version ?? itemParent.version,
327
+ "project.parent.groupId": itemParent.groupId,
328
+ "project.parent.artifactId": itemParent.artifactId,
329
+ "project.parent.version": itemParent.version,
330
+ "parent.groupId": itemParent.groupId,
331
+ "parent.artifactId": itemParent.artifactId,
332
+ "parent.version": itemParent.version,
333
+ };
334
+ for (const [key, value] of Object.entries(item.properties)) inheritedProperties[key] = resolveProperties(value, itemResolution);
335
+ }
336
+ const current = lineage.at(-1) ?? {};
337
+ const parent = current.parent ?? {};
338
+ const properties = {
339
+ ...inheritedProperties,
340
+ "project.groupId": current.groupId ?? parent.groupId,
341
+ "project.artifactId": current.artifactId,
342
+ "project.version": current.version ?? parent.version,
343
+ "project.parent.groupId": parent.groupId,
344
+ "project.parent.artifactId": parent.artifactId,
345
+ "project.parent.version": parent.version,
346
+ "parent.groupId": parent.groupId,
347
+ "parent.artifactId": parent.artifactId,
348
+ "parent.version": parent.version,
349
+ };
350
+ const groupId = resolveProperties(current.groupId ?? parent.groupId ?? "unknown", properties);
351
+ const artifactId = resolveProperties(current.artifactId ?? "unknown", properties);
352
+ const version = resolveProperties(current.version ?? parent.version ?? "unknown", properties);
353
+ const parentGav = parent.artifactId
354
+ ? `${resolveProperties(parent.groupId ?? "unknown", properties)}:${resolveProperties(parent.artifactId, properties)}:${resolveProperties(parent.version ?? "unknown", properties)}`
355
+ : "none";
356
+ gavLines.push(`- \`${relative(source, target)}\` — GAV \`${groupId}:${artifactId}:${version}\`; parent \`${parentGav}\``);
357
+ const javaVersion = inheritedProperties["java.version"] ?? inheritedProperties["maven.compiler.release"] ?? inheritedProperties["maven.compiler.source"];
358
+ const bootVersion = inheritedProperties["spring-boot.version"]
359
+ ?? (parent.groupId === "org.springframework.boot" ? parent.version : null);
360
+ if (javaVersion) javaVersions.add(resolveProperties(javaVersion, properties));
361
+ if (bootVersion) bootVersions.add(resolveProperties(bootVersion, properties));
362
+ }
363
+ let javaxFiles = 0;
364
+ let jakartaFiles = 0;
365
+ for (const target of javaFiles) {
366
+ const contents = await readFile(target, "utf8");
367
+ if (/\b(?:import|extends|implements|new)\s+javax\.|\bjavax\./.test(contents)) javaxFiles += 1;
368
+ if (/\b(?:import|extends|implements|new)\s+jakarta\.|\bjakarta\./.test(contents)) jakartaFiles += 1;
369
+ }
370
+ const springFactories = metadataFiles.filter((target) => path.basename(target) === "spring.factories").length;
371
+ const autoConfigurationImports = metadataFiles.filter((target) => path.basename(target) === "org.springframework.boot.autoconfigure.AutoConfiguration.imports").length;
372
+ return {
373
+ gavLines,
374
+ platformLines: [
375
+ `- Inherited Java signals: ${javaVersions.size ? [...javaVersions].map((item) => `\`${item}\``).join(", ") : "not declared in the local POM lineage"}.`,
376
+ `- Inherited Spring Boot signals: ${bootVersions.size ? [...bootVersions].map((item) => `\`${item}\``).join(", ") : "not declared in the local POM lineage"}.`,
377
+ `- Namespace source signals: \`javax.*\` in ${javaxFiles} main Java files; \`jakarta.*\` in ${jakartaFiles} main Java files.`,
378
+ `- Auto-configuration metadata: ${springFactories} \`spring.factories\`; ${autoConfigurationImports} \`AutoConfiguration.imports\` files.`,
379
+ "- These are source observations, not compatibility certification. Use the approved `platform_configuration` and verified compatibility evidence before integration or generation.",
380
+ ],
381
+ };
382
+ }
383
+
220
384
  async function sha256(target) {
221
385
  return createHash("sha256").update(await readFile(target)).digest("hex");
222
386
  }
@@ -278,7 +442,7 @@ async function mybatisCapabilityMatrix(source, javaFiles, metadataFiles) {
278
442
  return output;
279
443
  }
280
444
 
281
- async function backendIndex({ skill, parts, source, found, now, stateResolver }) {
445
+ async function backendIndex({ skill, parts, source, platformLine, found, now, stateResolver }) {
282
446
  const currentState = stateResolver(source, parts);
283
447
  const bases = parts.map((item) => path.join(source, item));
284
448
  const baseHints = await Promise.all(bases.map(async (target) =>
@@ -287,14 +451,17 @@ async function backendIndex({ skill, parts, source, found, now, stateResolver })
287
451
  const treeLines = currentState.componentTrees.map(({ path: componentPath, tree }) =>
288
452
  `Component tree \`${componentPath}\`: \`${tree}\``,
289
453
  );
454
+ const facts = await mavenAndPlatformFacts(source, found.poms, found.java, found.metadata);
290
455
  const lines = [
291
456
  `# ${skill} Source Index`,
292
457
  "",
458
+ "Index schema: `backend-component-source-index-v2`",
459
+ `Platform line: \`${platformLine}\``,
293
460
  `Generated: ${now}`,
294
461
  `Source commit: \`${currentState.commit}\``,
295
462
  `Component worktree: \`${currentState.componentWorktree}\``,
296
463
  ...treeLines,
297
- "Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT` to reproduce or refresh.",
464
+ `Indexed source root: resolved at refresh time; set \`${BACKEND_PLATFORM_LINES[platformLine].env}\` to reproduce or refresh.`,
298
465
  "",
299
466
  "This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.",
300
467
  "",
@@ -312,7 +479,11 @@ async function backendIndex({ skill, parts, source, found, now, stateResolver })
312
479
  "",
313
480
  "## Maven Modules",
314
481
  "",
315
- ...list(found.poms, (target) => `- \`${relative(source, path.dirname(target))}\``, "- No Maven modules found."),
482
+ ...(facts.gavLines.length ? facts.gavLines : ["- No Maven modules found."]),
483
+ "",
484
+ "## Platform Signals",
485
+ "",
486
+ ...facts.platformLines,
316
487
  "",
317
488
  ];
318
489
 
@@ -322,8 +493,9 @@ async function backendIndex({ skill, parts, source, found, now, stateResolver })
322
493
  lines.push(
323
494
  "## Freshness and Use",
324
495
  "",
325
- "- Locate the current source root using `YSS_SOURCE_ROOT`, CodeGraph, Maven artifact names or repository search.",
496
+ `- Locate the current source root using \`${BACKEND_PLATFORM_LINES[platformLine].env}\`, CodeGraph, Maven artifact names or repository search.`,
326
497
  "- Compare each indexed `Component tree` with `git rev-parse HEAD:<component-path>` and require the current component subtree to be clean before exact guidance.",
498
+ `- Run \`node ../yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs --skill <skill-id> --platform-line ${platformLine} --source-root <root>\` from the canonical skill root before exact integration guidance.`,
327
499
  "- A repository commit difference alone is not stale when the component tree is unchanged; a component tree mismatch or component-local dirty state is stale.",
328
500
  "- Read only the source entries needed for the current decision or troubleshooting path.",
329
501
  "",
@@ -333,7 +505,7 @@ async function backendIndex({ skill, parts, source, found, now, stateResolver })
333
505
 
334
506
  export async function refresh({
335
507
  skillsRoot,
336
- source,
508
+ sources,
337
509
  now = new Date().toISOString(),
338
510
  frontend = true,
339
511
  backendSkills = Object.keys(BACKEND),
@@ -341,13 +513,35 @@ export async function refresh({
341
513
  }) {
342
514
  const unknownSkills = backendSkills.filter((skill) => !(skill in BACKEND));
343
515
  if (unknownSkills.length) throw new Error(`Unknown backend source-index skill: ${unknownSkills.join(", ")}`);
516
+ const sourceEntries = Object.entries(sources ?? {});
517
+ const unknownLines = sourceEntries.filter(([platformLine]) => !BACKEND_PLATFORM_LINES[platformLine]).map(([platformLine]) => platformLine);
518
+ if (unknownLines.length) throw new Error(`Unknown backend platform line: ${unknownLines.join(", ")}`);
519
+ if (backendSkills.length && sourceEntries.length === 0) throw new Error("Backend source-index refresh requires at least one explicit platform source root.");
520
+ for (const [platformLine, source] of sourceEntries) await assertSourcePlatformLine(source, platformLine);
344
521
  for (const skill of backendSkills) {
345
- const parts = BACKEND[skill];
346
- const bases = parts.map((item) => path.join(source, item));
347
- const found = await files(bases);
348
- const target = path.join(skillsRoot, skill, "references", "source-index.md");
349
- await mkdir(path.dirname(target), { recursive: true });
350
- await writeFile(target, await backendIndex({ skill, parts, source, found, now, stateResolver }), "utf8");
522
+ const referenceRoot = path.join(skillsRoot, skill, "references");
523
+ await mkdir(referenceRoot, { recursive: true });
524
+ for (const [platformLine, source] of sourceEntries) {
525
+ const parts = backendComponentPaths(skill, platformLine);
526
+ const bases = parts.map((item) => path.join(source, item));
527
+ const found = await files(bases);
528
+ const target = backendPlatformIndexPath(skillsRoot, skill, platformLine);
529
+ await writeFile(target, await backendIndex({ skill, parts, source, platformLine, found, now, stateResolver }), "utf8");
530
+ }
531
+ await writeFile(path.join(referenceRoot, "source-index.md"), [
532
+ `# ${skill} Source Index Router`,
533
+ "",
534
+ "Index schema: `backend-component-source-index-router-v1`",
535
+ "",
536
+ "Select the source index from the approved `platform_configuration.component_platform_line`; do not infer a line from imports, a branch name or a requested upgrade.",
537
+ "",
538
+ ...Object.entries(BACKEND_PLATFORM_LINES).map(([platformLine, contract]) =>
539
+ `- \`${platformLine}\` — [${contract.label}](source-index.${platformLine}.md)`,
540
+ ),
541
+ "",
542
+ "Run the freshness checker with the same explicit `--platform-line` and its matching clean source root before exact integration guidance.",
543
+ "",
544
+ ].join("\n"), "utf8");
351
545
  }
352
546
 
353
547
  if (frontend) {
@@ -369,7 +563,7 @@ export async function refresh({
369
563
  ].join("\n"), "utf8");
370
564
  }
371
565
  }
372
- return { backend: backendSkills.length, frontend: frontend ? Object.keys(FRONTEND).length : 0 };
566
+ return { backend: backendSkills.length, backendTracks: backendSkills.length * sourceEntries.length, frontend: frontend ? Object.keys(FRONTEND).length : 0 };
373
567
  }
374
568
 
375
569
  async function main() {
@@ -377,13 +571,13 @@ async function main() {
377
571
  const script = path.dirname(fileURLToPath(import.meta.url));
378
572
  const result = await refresh({
379
573
  skillsRoot: path.resolve(process.env.YSS_SKILLS_ROOT || path.join(script, "../..")),
380
- source: await sourceRoot(),
574
+ sources: await configuredSourceRoots(),
381
575
  frontend: !["0", "false", "no"].includes((process.env.YSS_REFRESH_FRONTEND || "true").toLowerCase()),
382
576
  backendSkills: process.env.YSS_REFRESH_BACKEND_SKILLS
383
577
  ? process.env.YSS_REFRESH_BACKEND_SKILLS.split(",").map((skill) => skill.trim()).filter(Boolean)
384
578
  : Object.keys(BACKEND),
385
579
  });
386
- console.log(`Updated ${result.backend} backend indexes and ${result.frontend} frontend doc references.`);
580
+ console.log(`Updated ${result.backendTracks} backend platform indexes for ${result.backend} skills and ${result.frontend} frontend doc references.`);
387
581
  } catch (error) {
388
582
  console.error(error.message);
389
583
  process.exitCode = 1;
@@ -4,15 +4,38 @@ import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
4
4
  import { tmpdir } from "node:os";
5
5
  import path from "node:path";
6
6
  import test from "node:test";
7
- import { refresh, sourceState } from "./refresh-yss-skill-index.mjs";
7
+ import { BACKEND, backendComponentPaths, refresh, sourceState } from "./refresh-yss-skill-index.mjs";
8
+ import { checkBackendSkillSourceIndex } from "./check-backend-skill-source-index.mjs";
9
+
10
+ const platformPom = (javaVersion, bootVersion) => `<project><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${bootVersion}</version><relativePath/></parent><artifactId>fixture</artifactId><version>1.0.0</version><properties><java.version>${javaVersion}</java.version><spring-boot.version>\${project.parent.version}</spring-boot.version></properties></project>`;
8
11
 
9
12
  test("writes Node-labelled generated indexes", async () => {
10
- const root=await mkdtemp(path.join(tmpdir(),"yss-index-")); const source=path.join(root,"source"); const skills=path.join(root,"skills");
11
- await mkdir(path.join(source,"yss-microservice-components/yss-component-cache-parent/src/main/java/demo"),{recursive:true}); await writeFile(path.join(source,"yss-microservice-components/yss-component-cache-parent/src/main/java/demo/CacheConfiguration.java"),"class CacheConfiguration {}");
13
+ const root=await mkdtemp(path.join(tmpdir(),"yss-index-")); const boot2=path.join(root,"boot2"); const boot3=path.join(root,"boot3"); const skills=path.join(root,"skills");
14
+ for (const [source, javaVersion, bootVersion] of [[boot2,"1.8","2.7.18"],[boot3,"17","3.5.16"]]) {
15
+ await mkdir(path.join(source,"yss-microservice-components/yss-component-cache-parent/src/main/java/demo"),{recursive:true});
16
+ await writeFile(path.join(source,"pom.xml"),platformPom(javaVersion,bootVersion));
17
+ await writeFile(path.join(source,"yss-microservice-components/yss-component-cache-parent/src/main/java/demo/CacheConfiguration.java"),"class CacheConfiguration {}");
18
+ }
12
19
  for(const name of ["yss-cache","yss-ui"])await mkdir(path.join(skills,name),{recursive:true});
13
- await refresh({skillsRoot:skills,source,now:"2026-01-01T00:00:00Z"});
14
- assert.match(await readFile(path.join(skills,"yss-cache/references/source-index.md"),"utf8"),/refresh-yss-skill-index\.mjs/);
20
+ await refresh({skillsRoot:skills,sources:{"boot2-java8":boot2,"boot3-java17":boot3},now:"2026-01-01T00:00:00Z"});
21
+ assert.match(await readFile(path.join(skills,"yss-cache/references/source-index.md"),"utf8"),/backend-component-source-index-router-v1/);
22
+ assert.match(await readFile(path.join(skills,"yss-cache/references/source-index.boot2-java8.md"),"utf8"),/Platform line: `boot2-java8`/);
23
+ assert.match(await readFile(path.join(skills,"yss-cache/references/source-index.boot3-java17.md"),"utf8"),/Platform line: `boot3-java17`/);
15
24
  assert.match(await readFile(path.join(skills,"yss-ui/references/frontend-docs.md"),"utf8"),/components/);
25
+ await assert.rejects(
26
+ () => refresh({skillsRoot:skills,sources:{"boot3-java17":boot2},frontend:false,backendSkills:["yss-cache"]}),
27
+ /source root does not match boot3-java17/,
28
+ );
29
+ });
30
+
31
+ test("keeps generation-specific component path sets", () => {
32
+ assert.deepEqual(backendComponentPaths("yss-excel-mvc", "boot2-java8"), [
33
+ "yss-microservice-components/yss-component-excel-mvc",
34
+ "yss-microservice-components/yss-component-excel-starter",
35
+ ]);
36
+ assert.deepEqual(backendComponentPaths("yss-excel-mvc", "boot3-java17"), [
37
+ "yss-microservice-components/yss-component-excel-mvc",
38
+ ]);
16
39
  });
17
40
 
18
41
  test("writes a source-backed MyBatis capability matrix without absolute paths", async () => {
@@ -28,6 +51,7 @@ test("writes a source-backed MyBatis capability matrix without absolute paths",
28
51
  await mkdir(path.join(baseJava, "config"), { recursive: true });
29
52
  await mkdir(commonJava, { recursive: true });
30
53
  await mkdir(path.join(skills, "yss-mybatis"), { recursive: true });
54
+ await writeFile(path.join(source, "pom.xml"), platformPom("1.8", "2.7.18"));
31
55
  await writeFile(path.join(source, component, "pom.xml"), "<project/>");
32
56
  await writeFile(path.join(plusJava, "support/BasePlusRepository.java"), [
33
57
  "public interface BasePlusRepository<T> extends BaseMapper<T> {",
@@ -48,7 +72,7 @@ test("writes a source-backed MyBatis capability matrix without absolute paths",
48
72
 
49
73
  await refresh({
50
74
  skillsRoot: skills,
51
- source,
75
+ sources: { "boot2-java8": source },
52
76
  now: "2026-01-01T00:00:00Z",
53
77
  frontend: false,
54
78
  backendSkills: ["yss-mybatis"],
@@ -59,7 +83,7 @@ test("writes a source-backed MyBatis capability matrix without absolute paths",
59
83
  }),
60
84
  });
61
85
 
62
- const index = await readFile(path.join(skills, "yss-mybatis/references/source-index.md"), "utf8");
86
+ const index = await readFile(path.join(skills, "yss-mybatis/references/source-index.boot2-java8.md"), "utf8");
63
87
  assert.match(index, /## Capability Matrix/);
64
88
  assert.match(index, /BasePlusRepository<T>/);
65
89
  assert.match(index, /yss\.mybatis\.page-helper\.enabled/);
@@ -91,3 +115,46 @@ test("source freshness is scoped to the indexed component subtree", async () =>
91
115
  await writeFile(componentFile, "<project><dirty/></project>\n");
92
116
  assert.equal(sourceState(root, [component]).componentWorktree, "dirty");
93
117
  });
118
+
119
+ test("records Maven lineage and platform signals and validates the exact component tree", async () => {
120
+ const root = await mkdtemp(path.join(tmpdir(), "yss-platform-index-"));
121
+ const source = path.join(root, "source");
122
+ const skills = path.join(root, "skills");
123
+ const component = "yss-microservice-components/yss-component-validation-jsr303";
124
+ const javaFile = path.join(source, component, "src/main/java/demo/ValidationConfiguration.java");
125
+ await mkdir(path.dirname(javaFile), { recursive: true });
126
+ await mkdir(path.join(skills, "yss-validation"), { recursive: true });
127
+ await writeFile(path.join(source, "pom.xml"), `<project>
128
+ <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/></parent>
129
+ <groupId>com.yss.cloud</groupId><artifactId>yss-cloud-microservice</artifactId><version>2.0.0-SNAPSHOT</version>
130
+ <properties><java.version>1.8</java.version><spring-boot.version>\${project.parent.version}</spring-boot.version></properties>
131
+ </project>`);
132
+ await writeFile(path.join(source, "yss-microservice-components/pom.xml"), `<project><parent>
133
+ <groupId>com.yss.cloud</groupId><artifactId>yss-cloud-microservice</artifactId><version>2.0.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath>
134
+ </parent><artifactId>yss-microservice-components</artifactId></project>`);
135
+ await writeFile(path.join(source, component, "pom.xml"), `<project><parent>
136
+ <groupId>com.yss.cloud</groupId><artifactId>yss-microservice-components</artifactId><version>2.0.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath>
137
+ </parent><artifactId>yss-component-validation-jsr303</artifactId></project>`);
138
+ await writeFile(javaFile, "package demo; import javax.validation.Valid; class ValidationConfiguration {}\n");
139
+ execFileSync("git", ["init", "-q"], { cwd: source });
140
+ execFileSync("git", ["config", "user.email", "test@example.com"], { cwd: source });
141
+ execFileSync("git", ["config", "user.name", "Test"], { cwd: source });
142
+ execFileSync("git", ["add", "."], { cwd: source });
143
+ execFileSync("git", ["commit", "-qm", "fixture"], { cwd: source });
144
+
145
+ await refresh({ skillsRoot: skills, sources: { "boot2-java8": source }, frontend: false, backendSkills: ["yss-validation"], now: "2026-01-01T00:00:00Z" });
146
+ const index = await readFile(path.join(skills, "yss-validation/references/source-index.boot2-java8.md"), "utf8");
147
+ assert.match(index, /backend-component-source-index-v2/);
148
+ assert.match(index, /GAV `com\.yss\.cloud:yss-component-validation-jsr303:2\.0\.0-SNAPSHOT`/);
149
+ assert.match(index, /Inherited Java signals: `1\.8`/);
150
+ assert.match(index, /Inherited Spring Boot signals: `2\.7\.18`/);
151
+ assert.match(index, /`javax\.\*` in 1 main Java files; `jakarta\.\*` in 0/);
152
+ assert.deepEqual(BACKEND["yss-validation"], [component]);
153
+ await checkBackendSkillSourceIndex({ skill: "yss-validation", platformLine: "boot2-java8", skillsRoot: skills, sourceRoot: source });
154
+
155
+ await writeFile(javaFile, "package demo; import jakarta.validation.Valid; class ValidationConfiguration {}\n");
156
+ await assert.rejects(
157
+ () => checkBackendSkillSourceIndex({ skill: "yss-validation", platformLine: "boot2-java8", skillsRoot: skills, sourceRoot: source }),
158
+ /component worktree is dirty/,
159
+ );
160
+ });
@@ -9,7 +9,7 @@ description: 在 YSS 技术分析阶段将批准的战略领域输入细化为
9
9
 
10
10
  ## 适用边界
11
11
 
12
- - 由 `yss-technical-design` 在已确认 `domain-driven` 的技术设计分支中调用;新建后端必须先通过 `gate.backend-architecture-platform-approved`,由用户在同一次决定中确认 DDD / MVC 与精确 Spring Boot 版本。传统 MVC 使用 `yss-mvc-design`;既有工程直接核验并复用当前登记架构及固定工程基线/POM 中的实际 Spring Boot 版本,不重复询问。不得按状态、一致性影响、目录或默认值单独推断为 DDD。
12
+ - 由 `yss-technical-design` 在已确认 `domain-driven` 的技术设计分支中调用;新建后端必须先通过 `gate.backend-architecture-platform-approved`,由用户在同一次决定中确认 DDD / MVC 与精确 Spring Boot 版本。传统 MVC 由 `yss-technical-design` 自身的 `layered-mvc` 分支负责;既有工程直接核验并复用当前登记架构及固定工程基线/POM 中的实际 Spring Boot 版本,不重复询问。不得按状态、一致性影响、目录或默认值单独推断为 DDD。
13
13
  - 输入必须是版本当前的 Spec、功能架构、战略 DDD、状态矩阵、OpenAPI Draft / Freeze、ADR 和工程约束。若输入来自 Strategic Design Handoff,必须先用 `scripts/verify-strategic-context-import` 验证历史 v3/v4 或当前 v5 的 `source_context_snapshot` / `context_delta` 已对账到目标仓根 `CONTEXT.md`,对应的 prototype 或 existing UI baseline 可读取且摘要当前,并且目标侧 `context_reconciliation` 有效;未完成时不得开始战术建模。
14
14
  - 默认将结果写入系统概要设计 / 数据架构中的 Tactical DDD Check;聚合、状态机、一致性或持久化映射复杂到无法清楚表达时,才升级为独立战术设计文档。
15
15
  - 没有聚合、状态、不变量、一致性或领域边界影响时返回 `not-applicable` 及原因,不生成空设计。
@@ -5,7 +5,7 @@ owner: ai
5
5
 
6
6
  # <功能名称> Tactical DDD Design
7
7
 
8
- 仅用于已确认 domain-driven 分支的阅读视图;引用 Technical Design Contract v2 的 design,不复制共同输入与审批状态。MVC 使用 yss-mvc-design。
8
+ 仅用于已确认 domain-driven 分支的阅读视图;引用 Technical Design Contract v2 的 design,不复制共同输入与审批状态。MVC 使用 `yss-technical-design` 的 `layered-mvc` 分支。
9
9
 
10
10
  ## 上游引用
11
11
 
@@ -20,7 +20,7 @@ description: 在 YSS 技术分析中统一承接需求与战略输入,按已
20
20
  按项目绑定架构选择的来源及摘要。新工程必须先通过 `gate.backend-architecture-platform-approved`:Agent 展示 DDD / MVC 推荐依据及平台清单中的精确 Spring Boot、Java 版本,用户在同一次决定中确认两项内容;决定持久化到 `scaffold-architecture-decisions.yaml`,再进入对应分支,后续脚手架消费同一决定。既有工程核验并沿用当前登记架构及固定工程基线/POM 中的实际 Spring Boot 版本,该门禁记录为 `not-applicable`,不重复询问;架构转换或平台升级另行立项。只有 `domain-driven` 和 `layered-mvc` 两种架构族,不能从目录推断或默认 DDD、MVC 或 Spring Boot 版本。具体 Profile 及模块边界消费技能注册表与 `docs/agents/backend-architecture-profiles.md`。
21
21
 
22
22
  - `domain-driven`:调用 `yss-tactical-design`,补齐适用的战略领域输入。
23
- - `layered-mvc`:调用 `yss-mvc-design`,不要求战略 DDD、聚合、值对象、Domain Event 或 DDD Gateway。
23
+ - `layered-mvc`:由本 skill 直接设计模块职责与依赖方向、用例流程、业务规则、状态转换、事务与回滚、幂等与并发、持久化映射、外部集成和公开测试 seam;不要求战略 DDD、聚合、值对象、Domain Event 或 DDD Gateway。分层边界消费 `docs/agents/backend-architecture-profiles.md`,不得为 MVC 加载 `yss-domain` 或生成 DDD Gateway。
24
24
 
25
25
  已有 Strategic Design Handoff 时,两种分支都必须先完成导入和目标词汇对账,再逐条承接规则与关键场景。没有战略交接包的项目直接消费批准需求,不能为 MVC 补造战略 DDD。
26
26
 
@@ -30,6 +30,8 @@ description: 在 YSS 技术分析中统一承接需求与战略输入,按已
30
30
 
31
31
  新产物使用 schema v2 Technical Design Contract:共同头记录架构来源、输入版本与摘要、规则/场景承接、评审证据和状态,`design` 保存架构专属内容。合同格式与兼容规则见 `references/technical-design-contract.md`,Schema 见 `references/technical-design.schema.json`。
32
32
 
33
+ MVC `design` 分支由 `references/mvc-design.schema.json` 约束。无状态流转或外部集成时记录有依据的不适用;业务规则和关键场景必须关联具体用例与成功/失败测试 seam。MVC 与 DDD 使用同一承接和审查要求,不能因采用分层 MVC 省略规则、一致性或测试设计。旧 MVC 设计合同必须迁移到本入口并重新编译、批准。
34
+
33
35
  运行 `node .agents/skills/yss-technical-design/scripts/validate-technical-design.mjs <合同> --root <项目根>`。整体存在延期或冲突即阻断整体;相关切片可带 `--slice <切片ID>` 按依赖核验,仍须合同已批准。校验成功只返回审查输入,不批准、不设置 `ready-for-agent`。
34
36
 
35
37
  schema v1 战术合同只按 DDD 显式兼容读取;使用 `--legacy-ddd`,不能解释为 MVC。迁移不自动批准,输入或架构变化必须重新校验并按现有门禁审查。新合同使用 `artifact.technical-design` / `evidence.technical-design-review`;旧 DDD 稳定 ID 保留原含义。
@@ -1,6 +1,6 @@
1
1
  # Technical Design Contract v2
2
2
 
3
- 共同合同字段由 `technical-design-common.schema.json` 定义,完整 `technical-design.schema.json` 通过 `scripts/generate-schema.mjs` 合并专项 Schema 派生,使用 `--check` 检查同步,`design` 按 `architecture.family` 校验:`domain-driven` 沿用 DDD v1 内容结构,`layered-mvc` 使用 `yss-mvc-design/references/mvc-design.schema.json`。DDD 内层的 schema/version/status 是分支内容版本,status 必须与共同头一致;战略交接绑定只写共同头,避免双重维护。
3
+ 共同合同字段由 `technical-design-common.schema.json` 定义,完整 `technical-design.schema.json` 通过 `scripts/generate-schema.mjs` 合并专项 Schema 派生,使用 `--check` 检查同步,`design` 按 `architecture.family` 校验:`domain-driven` 沿用 DDD v1 内容结构,`layered-mvc` 使用本 skill 的 `references/mvc-design.schema.json`。DDD 内层的 schema/version/status 是分支内容版本,status 必须与共同头一致;战略交接绑定只写共同头,避免双重维护。
4
4
 
5
5
  ## 共同头
6
6
 
@@ -5,7 +5,7 @@ const load = ref => JSON.parse(readFileSync(new URL(ref, import.meta.url), 'utf8
5
5
  const schema = load('../references/technical-design-common.schema.json');
6
6
  const branches = [
7
7
  ['domain-driven', '../../yss-tactical-design/references/tactical-design.schema.json'],
8
- ['layered-mvc', '../../yss-mvc-design/references/mvc-design.schema.json']
8
+ ['layered-mvc', '../references/mvc-design.schema.json']
9
9
  ];
10
10
  schema.$comment = 'Generated by scripts/generate-schema.mjs from common and specialist schemas. Do not hand-edit.';
11
11
  schema.allOf = branches.map(([family, ref]) => {
@@ -14,6 +14,8 @@ import { loadSkillRegistry } from '../../../../scripts/lib/skill-registry.mjs';
14
14
  const root = mkdtempSync(path.join(tmpdir(), 'yss-technical-design-'));
15
15
  let checks = 0;
16
16
  try {
17
+ const activeMvcSchema = JSON.parse(readFileSync(fileURLToPath(new URL('../references/mvc-design.schema.json', import.meta.url)), 'utf8'));
18
+ assert.equal(activeMvcSchema.title, 'YSS MVC 技术设计内容'); checks++;
17
19
  const mvc = mvcFixture(root);
18
20
  const validate = data => validateTechnicalDesign(data, { root });
19
21
  assert.equal((await validate(mvc)).architecture_family, 'layered-mvc'); checks++;
@@ -74,7 +76,7 @@ try {
74
76
  enforceTechnicalDesign(state, { root }); checks++;
75
77
  assert.throws(() => enforceTechnicalDesign({ ...state, technical_design: undefined }, { root }), /缺少已批准技术设计/); checks++;
76
78
  assert.throws(() => enforceTechnicalDesign({ ...state, architecture_identity: { architecture_family: 'domain-driven' } }, { root }), /架构不匹配/); checks++;
77
- const resolution = compileDefaultImplementationContract({ ...state, root, requiredCapabilities: ['contract.request-validation'], architecture_evidence: { engineering_baseline: identity, repository_registration: identity, manifest: identity } });
79
+ const resolution = compileDefaultImplementationContract({ ...state, root, requiredCapabilities: ['quality.java-code-style'], architecture_evidence: { engineering_baseline: identity, repository_registration: identity, manifest: identity } });
78
80
  assert.deepEqual(resolution.technical_design, technical_design); assert(!resolution.required_skills.includes('yss-domain')); checks++;
79
81
  writeFileSync(path.join(root, 'spec.md'), 'changed again');
80
82
  assert.equal(evaluateContractFreshness({ schema_version: 2, resolution }, { registry: loadSkillRegistry(), compilerContract: loadCompilerContract(), root }).freshness, 'stale'); checks++;