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
@@ -1,12 +1,17 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { parseDocument } from "../vendor/yaml.mjs";
4
- import { nestedSkillPaths, PROJECTION_ROOTS, ROOT, unregisteredNestedSkillPaths } from "./skill-supply-chain.mjs";
4
+ import { nestedSkillPaths, OBSOLETE, PROJECTION_ROOTS, ROOT, unregisteredNestedSkillPaths } from "./skill-supply-chain.mjs";
5
5
 
6
6
  export const DEFAULT_REGISTRY = path.join(ROOT, "docs/agents/yss-skill-registry.yaml");
7
7
  const LOCK_PATH = path.join(ROOT, "skills-lock.json");
8
8
  const COMPILER_CONTRACT = path.join(ROOT, ".agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml");
9
- const LIFECYCLE_CONTRACT = path.join(ROOT, ".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml");
9
+ const LIFECYCLE_CONTRACT = [
10
+ path.join(ROOT, ".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml"),
11
+ path.join(ROOT, ".agents/skills/harness-orchestrator/references/orchestration-contract.yaml"),
12
+ ].find((candidate) => existsSync(candidate))
13
+ ?? path.join(ROOT, ".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml");
14
+ const BACKEND_PLATFORMS = path.join(ROOT, "docs/engineering/backend-platforms.json");
10
15
  const LAYERS = new Set(["core", "specialist", "compatibility", "maintainer-only"]);
11
16
  const MATURITIES = new Set(["draft", "verified", "supported", "deprecated"]);
12
17
  const INVOCATION_MODES = new Set(["user", "model", "both"]);
@@ -15,6 +20,24 @@ const TASK_MODES = new Set(["guidance", "integration", "slice-implementation", "
15
20
  const ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
16
21
  const CAPABILITY_ID_PATTERN = /^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+$/;
17
22
  const PLATFORM_ALIAS_PATTERN = /^[a-z0-9][a-z0-9-]*(?::[a-z0-9][a-z0-9-]*)?$/;
23
+ const PROVIDER_KINDS = new Set(["yss-component", "platform-managed", "none"]);
24
+ const BACKEND_SKILL_DOMAINS = new Set(["technical-design", "layered-implementation", "wire-framework-contract", "component-capability", "engineering-initialization", "platform-governance-migration"]);
25
+ const CLEANUP_STATUSES = new Set(["migration-only", "remove-ready"]);
26
+ const ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
27
+
28
+ export const SKILL_LIFECYCLE_FAILURE_CODES = Object.freeze({
29
+ deprecated: "skill-deprecated",
30
+ retired: "skill-retired"
31
+ });
32
+
33
+ export class SkillLifecycleError extends TypeError {
34
+ constructor(code, message, details = {}) {
35
+ super(`${code}: ${message}`);
36
+ this.name = "SkillLifecycleError";
37
+ this.code = code;
38
+ this.details = details;
39
+ }
40
+ }
18
41
 
19
42
  function fail(message) {
20
43
  throw new TypeError(message);
@@ -39,6 +62,34 @@ export function loadSkillRegistry(filePath = DEFAULT_REGISTRY) {
39
62
  return yamlFromFile(filePath, "技能路由注册表");
40
63
  }
41
64
 
65
+ export function resolveSkillForNewUse(registry, requestedId) {
66
+ requireString(requestedId, "requested skill id");
67
+ if (OBSOLETE.has(requestedId)) {
68
+ throw new SkillLifecycleError(
69
+ SKILL_LIFECYCLE_FAILURE_CODES.retired,
70
+ `${requestedId} 已硬退役;按迁移 tombstone 重新路由`,
71
+ { skill: requestedId, migration_ref: "docs/agents/skill-migrations.md" }
72
+ );
73
+ }
74
+ const aliases = new Map((registry.skills ?? []).flatMap((skill) => (skill.aliases ?? []).map((alias) => [alias, skill.id])));
75
+ const canonicalId = aliases.get(requestedId) ?? requestedId;
76
+ const skill = [...(registry.skills ?? []), ...(registry.external_skills ?? [])].find((item) => item.id === canonicalId);
77
+ if (!skill) fail(`未知 skill: ${requestedId}`);
78
+ if (skill.maturity === "deprecated") {
79
+ throw new SkillLifecycleError(
80
+ SKILL_LIFECYCLE_FAILURE_CODES.deprecated,
81
+ `${canonicalId} 已停止新用法;必须重新编译并显式迁移到 ${skill.replacement_skill}`,
82
+ {
83
+ skill: canonicalId,
84
+ replacement_skill: skill.replacement_skill,
85
+ remove_after: skill.deprecation.remove_after,
86
+ cleanup_status: skill.deprecation.cleanup_status
87
+ }
88
+ );
89
+ }
90
+ return skill;
91
+ }
92
+
42
93
  function frontmatterName(skillMd) {
43
94
  const match = skillMd.match(/^---\r?\n([\s\S]*?)\r?\n---/);
44
95
  if (!match) fail("SKILL.md 缺少 frontmatter");
@@ -61,6 +112,26 @@ function requireStringArray(value, field, { nonEmpty = false } = {}) {
61
112
  }
62
113
  }
63
114
 
115
+ function exactValuePaths(value, targets, current = "$", found = []) {
116
+ if (typeof value === "string" && targets.has(value)) found.push(current);
117
+ else if (Array.isArray(value)) value.forEach((item, index) => exactValuePaths(item, targets, `${current}[${index}]`, found));
118
+ else if (value && typeof value === "object") for (const [key, item] of Object.entries(value)) exactValuePaths(item, targets, `${current}.${key}`, found);
119
+ return found;
120
+ }
121
+
122
+ function validateDeprecation(skill, prefix) {
123
+ requireString(skill.replacement_skill, `${prefix}.replacement_skill`);
124
+ requireObject(skill.deprecation, `${prefix}.deprecation`);
125
+ if (skill.deprecation.new_use !== "forbidden") fail(`${prefix}.deprecation.new_use 必须为 forbidden`);
126
+ if (!CLEANUP_STATUSES.has(skill.deprecation.cleanup_status)) {
127
+ fail(`${prefix}.deprecation.cleanup_status 必须是 migration-only 或 remove-ready`);
128
+ }
129
+ requireString(skill.deprecation.remove_after, `${prefix}.deprecation.remove_after`);
130
+ if (!ISO_DATE_PATTERN.test(skill.deprecation.remove_after) || Number.isNaN(Date.parse(`${skill.deprecation.remove_after}T00:00:00Z`))) {
131
+ fail(`${prefix}.deprecation.remove_after 必须是有效 ISO 日期`);
132
+ }
133
+ }
134
+
64
135
  function effectiveInvocationContract(registry, skill) {
65
136
  const contract = registry.invocation_contract;
66
137
  return {
@@ -217,9 +288,9 @@ function validateCodeReviewRoute(route, resolve) {
217
288
  validateFindingDisposition(standards.finding_disposition);
218
289
  }
219
290
 
220
- export function validateSkillRegistry(registry, { lock, compilerContract, lifecycleContract, skillSource, externalSkillSource, nestedSkillSources } = {}) {
291
+ export function validateSkillRegistry(registry, { lock, compilerContract, lifecycleContract, skillSource, externalSkillSource, nestedSkillSources, backendPlatforms } = {}) {
221
292
  if (!registry || typeof registry !== "object" || Array.isArray(registry)) fail("技能路由注册表必须是对象");
222
- if (registry.schema_version !== 2) fail("schema_version 必须为 2;v1 已停止支持,请迁移 capability、typed dependencies 与 recipes");
293
+ if (registry.schema_version !== 3) fail("schema_version 必须为 3;v1/v2 已停止支持,请迁移 provider 与两阶段退役合同");
223
294
  if (registry.registry_id !== "yss.skill-routing") fail("registry_id 必须为 yss.skill-routing");
224
295
  if (!["shadow", "active"].includes(registry.status)) fail("status 必须是 shadow 或 active");
225
296
  requireString(registry.description, "description");
@@ -271,13 +342,10 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
271
342
  fail(`${skill.id} 作为 ${skill.layer} 不得默认可发现`);
272
343
  }
273
344
  if (skill.maturity === "deprecated") {
274
- requireString(skill.replaced_by, `${skill.id}.replaced_by`);
275
- requireString(skill.migration_deadline, `${skill.id}.migration_deadline`);
276
- requireString(skill.cleanup_status, `${skill.id}.cleanup_status`);
277
- }
278
- if (skill.replaced_by && !ids.has(skill.replaced_by) && !skills.some((item) => item.id === skill.replaced_by)) {
279
- // resolved in second pass
345
+ validateDeprecation(skill, prefix);
346
+ if (registry.invocation_contract?.overrides?.[skill.id] !== undefined) fail(`${skill.id} 进入 deprecated 后不得保留 invocation override`);
280
347
  }
348
+ else if (skill.replacement_skill !== undefined || skill.deprecation !== undefined) fail(`${skill.id} 仅 deprecated 技能可声明 replacement_skill/deprecation`);
281
349
  if (!Array.isArray(skill.aliases) || skill.aliases.some((alias) => typeof alias !== "string" || !ID_PATTERN.test(alias))) {
282
350
  fail(`${skill.id} aliases 必须是合法 id 数组`);
283
351
  }
@@ -292,7 +360,23 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
292
360
  validateInvocationContract(registry, skill);
293
361
  }
294
362
  for (const skill of skills) {
295
- if (skill.replaced_by && !ids.has(skill.replaced_by)) fail(`${skill.id}.replaced_by 引用了未登记技能: ${skill.replaced_by}`);
363
+ if (skill.maturity === "deprecated") {
364
+ if (!ids.has(skill.replacement_skill)) fail(`${skill.id}.replacement_skill 引用了未登记技能: ${skill.replacement_skill}`);
365
+ if (skills.find((item) => item.id === skill.replacement_skill)?.maturity === "deprecated") fail(`${skill.id}.replacement_skill 不得指向 deprecated 技能`);
366
+ if (skill.aliases.length) fail(`${skill.id} 进入 deprecated 后不得保留 alias`);
367
+ }
368
+ }
369
+
370
+ requireObject(registry.retirement_contract, "retirement_contract");
371
+ if (registry.retirement_contract.schema_version !== 1) fail("retirement_contract.schema_version 必须为 1");
372
+ requireStringSet(registry.retirement_contract.stages, ["deprecated", "retired"], "retirement_contract.stages");
373
+ if (registry.retirement_contract.deprecated_new_use !== "forbidden") fail("retirement_contract.deprecated_new_use 必须为 forbidden");
374
+ requireStringSet(registry.retirement_contract.cleanup_statuses, [...CLEANUP_STATUSES], "retirement_contract.cleanup_statuses");
375
+ if (registry.retirement_contract.hard_retirement_tombstone !== "docs/agents/skill-migrations.md") fail("retirement_contract.hard_retirement_tombstone 必须指向技能迁移说明");
376
+ if (registry.retirement_contract.retired_id_source !== "scripts/lib/skill-supply-chain.mjs#OBSOLETE") fail("retirement_contract.retired_id_source 必须指向统一 OBSOLETE 集");
377
+ requireObject(registry.retirement_contract.failure_codes, "retirement_contract.failure_codes");
378
+ if (registry.retirement_contract.failure_codes.deprecated !== SKILL_LIFECYCLE_FAILURE_CODES.deprecated || registry.retirement_contract.failure_codes.retired !== SKILL_LIFECYCLE_FAILURE_CODES.retired) {
379
+ fail("retirement_contract.failure_codes 必须稳定为 skill-deprecated/skill-retired");
296
380
  }
297
381
 
298
382
  const platform = registry.platform_skills ?? [];
@@ -319,6 +403,9 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
319
403
  for (const skill of external) {
320
404
  requireString(skill.id, "external_skills.id");
321
405
  requireString(skill.source, `${skill.id}.source`);
406
+ if (skill.maturity !== undefined && skill.maturity !== "deprecated") fail(`${skill.id}.maturity 仅允许 deprecated`);
407
+ if (skill.maturity === "deprecated") validateDeprecation(skill, `external_skills.${skill.id}`);
408
+ else if (skill.replacement_skill !== undefined || skill.deprecation !== undefined) fail(`${skill.id} 仅 deprecated external skill 可声明 replacement_skill/deprecation`);
322
409
  if (externalIds.has(skill.id) || ids.has(skill.id) || aliases.has(skill.id) || platformAliases.has(skill.id)) fail(`external skill 冲突: ${skill.id}`);
323
410
  const canonicalExternalSource = skill.source.startsWith(`${registry.canonical_content_root}/`);
324
411
  if (canonicalExternalSource && externalSources.has(skill.source)) fail(`external skill source 重复: ${skill.source}`);
@@ -329,6 +416,20 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
329
416
  externalIds.add(skill.id);
330
417
  externalSources.add(skill.source);
331
418
  }
419
+ for (const skill of external.filter((item) => item.maturity === "deprecated")) {
420
+ if (!ids.has(skill.replacement_skill)) fail(`${skill.id}.replacement_skill 引用了未登记技能: ${skill.replacement_skill}`);
421
+ if (skills.find((item) => item.id === skill.replacement_skill)?.maturity === "deprecated") fail(`${skill.id}.replacement_skill 不得指向 deprecated 技能`);
422
+ }
423
+ const deprecatedSkillIds = new Set([
424
+ ...skills.filter((item) => item.maturity === "deprecated").map((item) => item.id),
425
+ ...external.filter((item) => item.maturity === "deprecated").map((item) => item.id)
426
+ ]);
427
+ for (const [profileId, profile] of Object.entries(registry.architecture_profiles ?? {})) {
428
+ requireObject(profile, `architecture_profiles.${profileId}`);
429
+ requireString(profile.generator_skill, `architecture_profiles.${profileId}.generator_skill`);
430
+ if (!ids.has(profile.generator_skill)) fail(`${profileId}.generator_skill 引用了未登记技能: ${profile.generator_skill}`);
431
+ if (deprecatedSkillIds.has(profile.generator_skill)) fail(`${profileId}.generator_skill 不得使用 deprecated skill: ${profile.generator_skill}`);
432
+ }
332
433
  if (nestedSkillSources) {
333
434
  const unregistered = unregisteredNestedSkillPaths(nestedSkillSources, externalSources);
334
435
  if (unregistered.length) fail(`嵌套 SKILL.md 必须登记到 external_skills: ${unregistered.join(", ")}`);
@@ -347,7 +448,7 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
347
448
  || [...platformIds].some((key) => key.endsWith(`:${name}`));
348
449
  const capabilityContract = registry.capability_contract;
349
450
  requireObject(capabilityContract, "capability_contract");
350
- if (capabilityContract.schema_version !== 2) fail("capability_contract.schema_version 必须为 2");
451
+ if (capabilityContract.schema_version !== 3) fail("capability_contract.schema_version 必须为 3");
351
452
  requireStringSet(capabilityContract.dependency_types, [...DEPENDENCY_TYPES], "capability_contract.dependency_types");
352
453
  requireStringSet(capabilityContract.task_modes, [...TASK_MODES], "capability_contract.task_modes");
353
454
  requireObject(capabilityContract.closure, "capability_contract.closure");
@@ -360,6 +461,11 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
360
461
  if (JSON.stringify(capabilityContract.deterministic_order) !== JSON.stringify(["recipe-declaration", "dependency-topology", "skill-id"])) {
361
462
  fail("capability_contract.deterministic_order 必须固定为 recipe-declaration、dependency-topology、skill-id");
362
463
  }
464
+ requireObject(capabilityContract.platform_component_binding, "capability_contract.platform_component_binding");
465
+ if (capabilityContract.platform_component_binding.marker !== "provider" || capabilityContract.platform_component_binding.required_kind !== "yss-component" || capabilityContract.platform_component_binding.catalog_source !== "docs/engineering/backend-platforms.json") {
466
+ fail("capability_contract.platform_component_binding 必须绑定中央后端平台目录");
467
+ }
468
+ requireStringSet(capabilityContract.provider_kinds, [...PROVIDER_KINDS], "capability_contract.provider_kinds");
363
469
 
364
470
  if (!Array.isArray(registry.capabilities) || registry.capabilities.length === 0) fail("capabilities 不能为空");
365
471
  const capabilityIds = new Set();
@@ -373,14 +479,49 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
373
479
  capabilityIds.add(capability.id);
374
480
  requireString(capability.primary_skill, `${prefix}.primary_skill`);
375
481
  if (!ids.has(capability.primary_skill)) fail(`${capability.id} 的 primary_skill 未登记: ${capability.primary_skill}`);
482
+ if (skills.find((item) => item.id === capability.primary_skill)?.maturity === "deprecated") fail(`${capability.id} 不得由 deprecated skill 持有: ${capability.primary_skill}`);
376
483
  requireStringArray(capability.task_modes, `${prefix}.task_modes`, { nonEmpty: true });
377
484
  for (const mode of capability.task_modes) if (!TASK_MODES.has(mode)) fail(`${capability.id} 使用未知 task mode: ${mode}`);
485
+ requireObject(capability.provider, `${prefix}.provider`);
486
+ if (!PROVIDER_KINDS.has(capability.provider.kind)) fail(`${capability.id}.provider.kind 无效: ${capability.provider.kind}`);
487
+ if (capability.provider.kind === "none") {
488
+ if (capability.provider.binding_id !== undefined || capability.provider.new_adoption !== undefined || capability.provider.failure_code !== undefined) {
489
+ fail(`${capability.id} 的 none provider 不得声明 binding_id/new_adoption/failure_code`);
490
+ }
491
+ } else requireString(capability.provider.binding_id, `${prefix}.provider.binding_id`);
492
+ if (capability.provider.new_adoption !== undefined && capability.provider.new_adoption !== "forbidden") fail(`${capability.id}.provider.new_adoption 只能为 forbidden`);
493
+ if (capability.provider.new_adoption === "forbidden" && capability.provider.failure_code !== "component-new-adoption-forbidden") {
494
+ fail(`${capability.id}.provider.failure_code 必须为 component-new-adoption-forbidden`);
495
+ }
496
+ if (capability.provider.failure_code !== undefined && capability.provider.new_adoption !== "forbidden") fail(`${capability.id}.provider.failure_code 仅用于禁止新接入`);
497
+ if (capability.component_binding !== undefined) fail(`${capability.id}.component_binding 已由 provider 取代`);
378
498
  capabilitySkills.add(capability.primary_skill);
379
499
  }
500
+ if (backendPlatforms) {
501
+ const catalogIds = new Set((backendPlatforms.compatibility ?? []).flatMap((item) => Object.keys(item.component_capabilities ?? {})));
502
+ for (const capability of registry.capabilities.filter((item) => item.provider.kind === "yss-component")) {
503
+ if (!catalogIds.has(capability.provider.binding_id)) fail(`${capability.id} 的 YSS component binding 未登记到后端平台目录: ${capability.provider.binding_id}`);
504
+ }
505
+ }
380
506
  for (const skill of skills.filter((item) => item.impacts.includes("backend") && item.maturity !== "deprecated")) {
381
507
  if (!capabilitySkills.has(skill.id)) fail(`backend skill 缺少 capability: ${skill.id}`);
382
508
  }
383
509
 
510
+ const backendDomains = registry.backend_skill_domains;
511
+ requireObject(backendDomains, "backend_skill_domains");
512
+ if (backendDomains.schema_version !== 1 || backendDomains.scope !== "active-yss-backend-capability-owners") fail("backend_skill_domains 必须使用 schema v1 与 active-yss-backend-capability-owners scope");
513
+ requireStringSet(backendDomains.domain_ids, [...BACKEND_SKILL_DOMAINS], "backend_skill_domains.domain_ids");
514
+ requireObject(backendDomains.assignments, "backend_skill_domains.assignments");
515
+ const backendCapabilityOwners = [...new Set(registry.capabilities
516
+ .filter((capability) => capability.id !== "scaffold.frontend-vue3" && capability.primary_skill.startsWith("yss-"))
517
+ .map((capability) => capability.primary_skill))];
518
+ requireStringSet(Object.keys(backendDomains.assignments), backendCapabilityOwners, "backend_skill_domains.assignments");
519
+ for (const [skillId, domainId] of Object.entries(backendDomains.assignments)) {
520
+ if (!BACKEND_SKILL_DOMAINS.has(domainId)) fail(`backend skill ${skillId} 使用未知能力域: ${domainId}`);
521
+ if (deprecatedSkillIds.has(skillId)) fail(`deprecated skill 不得进入 active backend domain: ${skillId}`);
522
+ }
523
+ requireStringSet(backendDomains.deprecated_skills, [...deprecatedSkillIds], "backend_skill_domains.deprecated_skills");
524
+
384
525
  if (!Array.isArray(registry.recipes) || registry.recipes.length === 0) fail("recipes 不能为空");
385
526
  const recipeIds = new Set();
386
527
  for (const [index, recipe] of registry.recipes.entries()) {
@@ -399,6 +540,7 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
399
540
  const requiredGraph = new Map([...ids].map((id) => [id, []]));
400
541
  for (const [owner, dependencies] of Object.entries(registry.skill_dependencies)) {
401
542
  if (!ids.has(owner)) fail(`skill_dependencies 使用未知 owner: ${owner}`);
543
+ if (deprecatedSkillIds.has(owner)) fail(`deprecated skill 不得拥有 typed dependency: ${owner}`);
402
544
  if (!Array.isArray(dependencies)) fail(`skill_dependencies.${owner} 必须是数组`);
403
545
  const edgeKeys = new Set();
404
546
  for (const [index, dependency] of dependencies.entries()) {
@@ -406,6 +548,7 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
406
548
  requireObject(dependency, prefix);
407
549
  requireString(dependency.skill, `${prefix}.skill`);
408
550
  if (!registeredDependency(dependency.skill)) fail(`${owner} 的依赖引用了未登记技能: ${dependency.skill}`);
551
+ if (deprecatedSkillIds.has(dependency.skill)) fail(`${owner} 不得依赖 deprecated skill: ${dependency.skill}`);
409
552
  if (dependency.skill === owner) fail(`${owner} 不得依赖自身`);
410
553
  if (!DEPENDENCY_TYPES.has(dependency.type)) fail(`${owner} 使用未知依赖类型: ${dependency.type}`);
411
554
  if (dependency.type === "context-conditional") requireString(dependency.when, `${prefix}.when`);
@@ -461,6 +604,8 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
461
604
  }
462
605
 
463
606
  if (compilerContract) {
607
+ const deprecatedCompilerRefs = exactValuePaths(compilerContract, deprecatedSkillIds);
608
+ if (deprecatedCompilerRefs.length) fail(`实现合同编译器合同仍引用 deprecated skill: ${deprecatedCompilerRefs.join(", ")}`);
464
609
  if (compilerContract.schema_version !== 2) fail("compiler-contract.yaml schema_version 必须为 2;v1 已停止支持");
465
610
  if (compilerContract.compiled_by !== "yss-implementation-contract-compiler") fail("compiler-contract.yaml compiled_by 无效");
466
611
  if (compilerContract.capability_source !== "docs/agents/yss-skill-registry.yaml") fail("compiler-contract.yaml capability_source 必须指向技能注册表");
@@ -477,9 +622,12 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
477
622
 
478
623
  if (lifecycleContract || existsSync(LIFECYCLE_CONTRACT)) {
479
624
  const lifecycle = lifecycleContract ?? yamlFromFile(LIFECYCLE_CONTRACT, "生命周期编排合同");
625
+ const deprecatedLifecycleRefs = exactValuePaths(lifecycle, deprecatedSkillIds);
626
+ if (deprecatedLifecycleRefs.length) fail(`生命周期编排合同仍引用 deprecated skill: ${deprecatedLifecycleRefs.join(", ")}`);
480
627
  const routes = lifecycle.work_unit_routes;
481
628
  if (!routes || typeof routes !== "object" || Array.isArray(routes)) fail("生命周期编排合同缺少 work_unit_routes");
482
629
  const resolve = (name) => {
630
+ if (deprecatedSkillIds.has(name)) return null;
483
631
  if (ids.has(name)) return name;
484
632
  if (aliases.has(name)) return aliases.get(name);
485
633
  if (platformAliases.has(name)) return platformAliases.get(name);
@@ -494,6 +642,7 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
494
642
  if (!Array.isArray(route.skills) || route.skills.length === 0) fail(`${routeId}.skills 不能为空`);
495
643
  if (!route.applies_when || !route.not_applicable_reason) fail(`${routeId} 缺少 applies_when 或 not_applicable_reason`);
496
644
  for (const name of [route.primary_skill, ...route.supporting_skills, ...route.skills]) {
645
+ if (deprecatedSkillIds.has(name)) fail(`生命周期路由不得引用 deprecated skill: ${routeId} -> ${name}`);
497
646
  if (!resolve(name)) fail(`生命周期路由引用了未登记技能: ${routeId} -> ${name}`);
498
647
  }
499
648
  if (route.frontend_route) {
@@ -524,15 +673,23 @@ export function validateSkillRegistry(registry, { lock, compilerContract, lifecy
524
673
  if (lifecycle.review_input) validateReviewInputFinding(lifecycle.review_input);
525
674
  }
526
675
 
527
- return { skill_count: skills.length, platform_count: platform.length, status: registry.status };
676
+ return {
677
+ schema_version: registry.schema_version,
678
+ skill_count: skills.length,
679
+ platform_count: platform.length,
680
+ deprecated_count: deprecatedSkillIds.size,
681
+ status: registry.status
682
+ };
528
683
  }
529
684
 
530
685
  export function validateDefaultSkillRegistry() {
531
686
  const registry = loadSkillRegistry();
532
687
  const lock = JSON.parse(readFileSync(LOCK_PATH, "utf8"));
688
+ const backendPlatforms = JSON.parse(readFileSync(BACKEND_PLATFORMS, "utf8"));
533
689
  const compilerContract = yamlFromFile(COMPILER_CONTRACT, "实现合同编译器合同");
534
690
  return validateSkillRegistry(registry, {
535
691
  lock,
692
+ backendPlatforms,
536
693
  compilerContract,
537
694
  lifecycleContract: yamlFromFile(LIFECYCLE_CONTRACT, "生命周期编排合同"),
538
695
  skillSource: (id) => readFileSync(path.join(ROOT, ".agents/skills", id, "SKILL.md"), "utf8"),
@@ -11,7 +11,7 @@ const YSS_UI_MANIFEST_PATH = path.join(SOURCE_ROOT, ".yss-skills-manifest.json")
11
11
  const STRATEGIC_DESIGN_MANIFEST_PATH = path.join(SOURCE_ROOT, ".strategic-design-skills-manifest.json");
12
12
  export const PROJECTION_ROOTS = [".codex/skills", ".cursor/skills", ".pi/skills"];
13
13
  export const OBSOLETE = new Set(["yss-antd-design", "yss-antdv-next-design", "to-" + "prd", "to-" + "issues", "design-an-interface", "qa", "request-refactor-plan", "ubiquitous-language", "edit-article", "obsidian-vault", "writing-great-skills", "code-review-process", "yss-domain-modeling", "yss-dir", "yss-duckdb", "yss-file", "yss-filerunner", "yss-db2mybatis", "yss-mail", "yss-mapper-dynamic", "yss-quality", "yss-sql-condition", "yss-sql-tpl", "yss-valuation", "yss-variable", "yss-openapi", "web-design-engineer", "web-video-presentation", "wireframe-prototype", "wizard", "git-guardrails-claude-code", "claude-handoff", "batch-grill-me", "product-design-prototype", "research", "ask-matt", "dispatching-parallel-agents", "loop-me", "migrate-to-shoehorn", "prototype-page-acceptance", "scaffold-exercises", "setup-pre-commit", "setup-ts-deep-modules", "teach", "writing-beats", "writing-fragments", "writing-shape", "yss-microapp-commit", "yss-page-module-development", "yss-dictionary", "yss-jdbc", "yss-log", "yss-taskflow", "yss-backend-scaffold-application", "yss-backend-scaffold-domain", "yss-backend-scaffold-infrastructure", "yss-backend-scaffold-web", "yss-router", "yss-source-index"]);
14
- for (const id of ["yss-components", "yss-mvc-scaffold-generator", "yss-backend-scaffold-adapter", "yss-application-layer-reference", "yss-domain-layer-reference", "yss-infrastructure-layer-reference", "yss-web-layer-reference"]) OBSOLETE.add(id);
14
+ for (const id of ["component-selection-imports", "page-form-module", "page-list-module", "page-skeleton", "vue3-best-practices", "yss-use-table-height", "yss-use-tree-height", "yss-components", "yss-mvc-scaffold-generator", "yss-mvc-design", "yss-mvc-data-analysis-project-initializer", "yss-backend-scaffold-parent", "yss-backend-scaffold-adapter", "yss-application-layer-reference", "yss-domain-layer-reference", "yss-infrastructure-layer-reference", "yss-web-layer-reference"]) OBSOLETE.add(id);
15
15
  export function obsoleteCanonicalResidues(names, obsolete = OBSOLETE) {
16
16
  return names.filter((name) => obsolete.has(name)).sort();
17
17
  }
@@ -4,7 +4,7 @@ import path from 'node:path';
4
4
  import fs from 'node:fs';
5
5
  import { stringify } from '../vendor/yaml.mjs';
6
6
  import { safe, hash, digest, write } from './strategic-handoff-io.mjs';
7
- import { compileDefaultImplementationContract, loadCompilerContract } from './implementation-contract-compiler.mjs';
7
+ import { compileDefaultImplementationContract, digestDocument, loadCompilerContract } from './implementation-contract-compiler.mjs';
8
8
  import { normalizeSliceContract, parseSliceYaml, readSliceSources, resolveSliceBasis, sourceSliceContract, sliceArchitectureEvidence } from './slice-contract.mjs';
9
9
 
10
10
  const object=value=>value && typeof value==='object' && !Array.isArray(value);
@@ -123,11 +123,12 @@ export function prepareSliceImplementationContract({root=process.cwd(),ticket_re
123
123
  return compileDefaultImplementationContract({...compileBase,recipeIds,requiredCapabilities:[...requiredCapabilities,...(repo.project.delivery_role==='backend'?componentCapabilities:[])],architecture_identity:repo.resolution.architecture_identity,architecture_evidence:repo.resolution.architecture_evidence,technical_design:repo.resolution.technical_design,...(repo.resolution.frontend_delivery?{frontend_delivery:repo.resolution.frontend_delivery}:{}),...(approved_slice?{approved_slice,work_unit_id:input.work_units.find(u=>u.project_root===projectRoot)?.id}:{})});
124
124
  });
125
125
  if(results.some(r=>r.registry_digest!==results[0].registry_digest||r.compiler_contract_digest!==results[0].compiler_contract_digest))throw new TypeError('逐仓编译依据冲突:准备期间来源发生变化');
126
- compiled={...results[0],required_capabilities:[...new Set(results.flatMap(r=>r.required_capabilities))],required_skills:[...new Set(results.flatMap(r=>r.required_skills))],recipe_ids:[...new Set(results.flatMap(r=>r.recipe_ids))],readiness_blockers:results.flatMap(r=>r.readiness_blockers||[]),reason_chains:Object.fromEntries(Object.keys(repositories).map((p,i)=>[p,results[i].reason_chains]))};
126
+ const componentBindings=[...new Map(results.flatMap(result=>result.component_bindings||[]).map(binding=>[digestDocument(binding),binding])).values()];
127
+ compiled={...results[0],required_capabilities:[...new Set(results.flatMap(r=>r.required_capabilities))],required_skills:[...new Set(results.flatMap(r=>r.required_skills))],recipe_ids:[...new Set(results.flatMap(r=>r.recipe_ids))],readiness_blockers:results.flatMap(r=>r.readiness_blockers||[]),reason_chains:Object.fromEntries(Object.keys(repositories).map((p,i)=>[p,results[i].reason_chains])),...(componentBindings.length?{component_bindings:componentBindings,component_bindings_digest:digestDocument(componentBindings)}:{})};
127
128
  delete compiled.architecture_identity;
128
129
  } else compiled=compileDefaultImplementationContract({...compileBase,recipeIds:input.recipe_ids||[],requiredCapabilities:[...new Set([...(input.required_capabilities||[]),...componentCapabilities])],architecture_identity,architecture_evidence,technical_design:bound('technical_design'),...(bound('frontend_delivery')?{frontend_delivery:{acceptance_ref:bound('frontend_delivery').ref,digest:bound('frontend_delivery').digest}}:{}),...(approved_slice?{approved_slice}:{})});
129
130
  if(compiled.compiler_contract_digest!==digest(compilerRules).slice(7))throw new TypeError('编译规则来源冲突:准备期间发生变化');
130
- const resolution=Object.fromEntries(['required_capabilities','required_skills','recipe_ids','conditions','registry_digest','compiler_contract_digest','architecture_identity'].filter(key=>compiled[key]!==undefined).map(key=>[key,compiled[key]]));
131
+ const resolution=Object.fromEntries(['required_capabilities','required_skills','recipe_ids','conditions','registry_digest','compiler_contract_digest','architecture_identity','component_bindings','component_bindings_digest'].filter(key=>compiled[key]!==undefined).map(key=>[key,compiled[key]]));
131
132
  contract={schema_version:3,ticket_policy:{mode:'frozen-requirements',state_owner:'tracker-or-task-package'},contract_id:input.contract_id,contract_version:input.contract_version,slice_id:input.slice_id,status:'draft',basis,scope,applicability,resolution,acceptance:input.acceptance||markdownAcceptance(ticketText),verification:input.verification,work_units:input.work_units,...(input.extensions?{extensions:input.extensions}:{})};
132
133
  report.reason_chains=compiled.reason_chains;
133
134
  for(const reason of compiled.readiness_blockers||[])report.blockers.push({reason});
@@ -145,7 +146,7 @@ export function prepareSliceImplementationContract({root=process.cwd(),ticket_re
145
146
  if(field==='applicability'&&scope.risk_level)origins.push({kind:'lifecycle-rule',ref:resolveSliceBasis({basis},'lifecycle_registry').ref});
146
147
  report.provenance.push({target:field,origins,requires_professional_review:true});
147
148
  }
148
- }catch(error){if(error.code!=='SLICE_DEPENDENCIES_UNAVAILABLE')report.blockers.push({reason:error.message,recovery:'补齐已确认输入后重新准备;草案不授予执行权限'});report.checks.push({check:'assembly',result:'not-executed',reason:'前置检查未通过'});}
149
+ }catch(error){if(error.code!=='SLICE_DEPENDENCIES_UNAVAILABLE')report.blockers.push({...(error.code?{code:error.code}:{}),reason:error.message,recovery:'补齐已确认输入后重新准备;草案不授予执行权限'});report.checks.push({check:'assembly',result:'not-executed',reason:'前置检查未通过'});}
149
150
  for(const [ref,bytes] of snapshots) {
150
151
  try {if(hash(fs.readFileSync(safe(root,ref)))!==hash(bytes))report.blockers.push({field:ref,reason:'生成期间来源变化'});}catch(error){report.blockers.push({field:ref,reason:error.message});}
151
152
  report.sources[ref]=hash(bytes);
@@ -203,7 +204,7 @@ export function migrateSliceContractV2(document,{root=process.cwd(),ticket_ref,s
203
204
  const checkUnknown=(value,known,prefix)=>{for(const [key,item]of Object.entries(value||{}))if(meaningful(item)&&!known.includes(key))conflicts.push({field:`${prefix}.${key}`,reason:'未映射约束,禁止静默丢弃'});};
204
205
  checkUnknown(old,['schema_version','contract_id','contract_version','slice_id','status','suggested_owner_role_id','lifecycle_refs','readiness','resolution','common','frontend','backend','contract','cross_repo','work_units'],'root');
205
206
  checkUnknown(old.common,[...scopeKeys,'required_capabilities','required_skills','verification_commands','expected_evidence_files','quality_baseline_ref'],'common');
206
- checkUnknown(old.resolution,['schema_version','status','slice_id','architecture_identity','architecture_identity_digest','architecture_evidence','technical_design','frontend_delivery','profile_maturity','readiness_blockers','skill_profiles','recipe_ids','conditions','required_capabilities','required_skills','reason_chains','non_expanding_dependencies','excluded_conditional_dependencies','registry_digest','compiler_contract_digest','compiled_at','freshness'],'resolution');
207
+ checkUnknown(old.resolution,['schema_version','status','slice_id','architecture_identity','architecture_identity_digest','architecture_evidence','technical_design','frontend_delivery','profile_maturity','readiness_blockers','skill_profiles','recipe_ids','conditions','required_capabilities','required_skills','component_bindings','component_bindings_digest','reason_chains','non_expanding_dependencies','excluded_conditional_dependencies','registry_digest','compiler_contract_digest','compiled_at','freshness'],'resolution');
207
208
  const ticketRef=ticket_ref||old.lifecycle_refs?.ticket;
208
209
  let acceptance=refinements.acceptance;
209
210
  if(!acceptance){try{acceptance=markdownAcceptance(fs.readFileSync(safe(root,ticketRef),'utf8'));}catch(error){conflicts.push({field:'acceptance',reason:error.message});acceptance={};}}
@@ -17,7 +17,7 @@ await mkdir(evidence, { recursive: true });
17
17
  const input = values.inputs ? JSON.parse(await readFile(path.resolve(values.inputs), "utf8")) : {};
18
18
  const inputRoot = values.inputs ? path.dirname(path.resolve(values.inputs)) : process.cwd();
19
19
  const catalog = input.catalog_ref ? JSON.parse(await readFile(path.resolve(inputRoot, input.catalog_ref), "utf8")) : loadBackendPlatforms();
20
- if (catalog.schema_version !== 1 || catalog.kind !== "backend-platform-catalog" || !Array.isArray(catalog.compatibility) || platformDigest(catalog.profiles) !== platformDigest(loadBackendPlatforms().profiles)) throw new Error("candidate input must preserve the maintained platform profiles; only supply actual YSS combinations");
20
+ if (catalog.schema_version !== 2 || catalog.kind !== "backend-platform-catalog" || !Array.isArray(catalog.compatibility) || platformDigest(catalog.profiles) !== platformDigest(loadBackendPlatforms().profiles)) throw new Error("candidate input must preserve the maintained platform profiles; only supply actual YSS combinations");
21
21
  const keys = new Set();
22
22
  for (const item of input.combinations ?? []) {
23
23
  const key = `${item.profile_id}:${item.spring_boot_version}:${item.architecture_family}`;