create-yss-spec 3.3.8 → 3.4.1

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 (628) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +3 -13
  4. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  5. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  6. package/template/.agents/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  7. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  8. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  11. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  12. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  13. package/template/.agents/skills/yss-design-system/SKILL.md +19 -19
  14. package/template/.agents/skills/yss-design-system/references/data-quality-theme.md +13 -0
  15. package/template/.agents/skills/yss-design-system/references/design-qa-theme.md +3 -1
  16. package/template/.agents/skills/yss-design-system/references/design-system.md +7 -9
  17. package/template/.agents/skills/yss-formily/SKILL.md +21 -258
  18. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  19. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  20. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  21. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  22. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  23. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  24. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  25. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  26. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  27. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  28. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  29. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  30. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  31. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  32. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  33. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  34. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  35. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  36. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  37. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  38. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  39. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  40. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  41. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  42. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  43. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  44. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  45. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  46. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  47. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  48. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  49. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  50. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  51. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  52. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  53. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  54. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  55. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  56. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  57. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  58. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  59. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  60. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +13 -5
  61. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  62. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  63. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  64. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  65. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  66. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  67. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  68. package/template/.agents/skills/yss-openapi-governance/SKILL.md +2 -0
  69. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +43 -15
  70. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  71. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  72. package/template/.agents/skills/yss-prototype-stage/SKILL.md +12 -8
  73. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  74. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  75. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  76. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  77. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  78. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  79. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  80. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  81. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  82. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  83. package/template/.agents/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  84. package/template/.agents/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  85. package/template/.agents/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  86. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  87. package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  88. package/template/.agents/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  89. package/template/.agents/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  90. package/template/.agents/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  91. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  92. package/template/.agents/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  93. package/template/.agents/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  94. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  95. package/template/.agents/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  96. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  97. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  98. package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
  99. package/template/.agents/skills/yss-ui/SKILL.md +3 -2
  100. package/template/.agents/skills/yss-ui/references/component-routing.md +11 -10
  101. package/template/.agents/skills/yss-ui/references/specialized-components.md +52 -0
  102. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  103. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  104. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  105. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  106. package/template/.codex/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  107. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  108. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  109. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  110. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  111. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  112. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  113. package/template/.codex/skills/yss-design-system/SKILL.md +19 -19
  114. package/template/.codex/skills/yss-design-system/references/data-quality-theme.md +13 -0
  115. package/template/.codex/skills/yss-design-system/references/design-qa-theme.md +3 -1
  116. package/template/.codex/skills/yss-design-system/references/design-system.md +7 -9
  117. package/template/.codex/skills/yss-formily/SKILL.md +21 -258
  118. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  119. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  120. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  121. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  122. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  123. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  124. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  125. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  126. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  127. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  128. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  129. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  130. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  131. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  132. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  133. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  134. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  135. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  136. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  137. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  138. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  139. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  140. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  141. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  142. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  143. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  144. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  145. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  146. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  147. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  148. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  149. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  150. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  151. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  152. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  153. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  154. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  155. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  156. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  157. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  158. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  159. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  160. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +13 -5
  161. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  162. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  163. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  164. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  165. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  166. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  167. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  168. package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -0
  169. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +43 -15
  170. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  171. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  172. package/template/.codex/skills/yss-prototype-stage/SKILL.md +12 -8
  173. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  174. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  175. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  176. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  177. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  178. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  179. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  180. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  181. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  182. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  183. package/template/.codex/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  184. package/template/.codex/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  185. package/template/.codex/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  186. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  187. package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  188. package/template/.codex/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  189. package/template/.codex/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  190. package/template/.codex/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  191. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  192. package/template/.codex/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  193. package/template/.codex/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  194. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  195. package/template/.codex/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  196. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  197. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  198. package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
  199. package/template/.codex/skills/yss-ui/SKILL.md +3 -2
  200. package/template/.codex/skills/yss-ui/references/component-routing.md +11 -10
  201. package/template/.codex/skills/yss-ui/references/specialized-components.md +52 -0
  202. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  203. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  204. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  205. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  206. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  207. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  208. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  209. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  210. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  211. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  212. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  213. package/template/.cursor/skills/yss-design-system/SKILL.md +19 -19
  214. package/template/.cursor/skills/yss-design-system/references/data-quality-theme.md +13 -0
  215. package/template/.cursor/skills/yss-design-system/references/design-qa-theme.md +3 -1
  216. package/template/.cursor/skills/yss-design-system/references/design-system.md +7 -9
  217. package/template/.cursor/skills/yss-formily/SKILL.md +21 -258
  218. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  219. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  220. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  221. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  222. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  223. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  224. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  225. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  226. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  227. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  228. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  229. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  230. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  231. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  232. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  233. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  234. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  235. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  236. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  237. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  238. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  239. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  240. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  241. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  242. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  243. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  244. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  245. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  246. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  247. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  248. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  249. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  250. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  251. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  252. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  253. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  254. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  255. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  256. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  257. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  258. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  259. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  260. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +13 -5
  261. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  262. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  263. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  264. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  265. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  266. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  267. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  268. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +2 -0
  269. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +43 -15
  270. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  271. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  272. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +12 -8
  273. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  274. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  275. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  276. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  277. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  278. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  279. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  280. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  281. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  282. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  283. package/template/.cursor/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  284. package/template/.cursor/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  285. package/template/.cursor/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  286. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  287. package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  288. package/template/.cursor/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  289. package/template/.cursor/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  290. package/template/.cursor/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  291. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  292. package/template/.cursor/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  293. package/template/.cursor/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  294. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  295. package/template/.cursor/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  296. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  297. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  298. package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
  299. package/template/.cursor/skills/yss-ui/SKILL.md +3 -2
  300. package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -10
  301. package/template/.cursor/skills/yss-ui/references/specialized-components.md +52 -0
  302. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  303. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  304. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  305. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  306. package/template/.pi/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  307. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  308. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  309. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  310. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  311. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  312. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  313. package/template/.pi/skills/yss-design-system/SKILL.md +19 -19
  314. package/template/.pi/skills/yss-design-system/references/data-quality-theme.md +13 -0
  315. package/template/.pi/skills/yss-design-system/references/design-qa-theme.md +3 -1
  316. package/template/.pi/skills/yss-design-system/references/design-system.md +7 -9
  317. package/template/.pi/skills/yss-formily/SKILL.md +21 -258
  318. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  319. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  320. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  321. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  322. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  323. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  324. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  325. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  326. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  327. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  328. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  329. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  330. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  331. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  332. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  333. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  334. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  335. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  336. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  337. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  338. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  339. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  340. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  341. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  342. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  343. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  344. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  345. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  346. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  347. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  348. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  349. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  350. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  351. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  352. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  353. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  354. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  355. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  356. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  357. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  358. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  359. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  360. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +13 -5
  361. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  362. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  363. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  364. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  365. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  366. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  367. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  368. package/template/.pi/skills/yss-openapi-governance/SKILL.md +2 -0
  369. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +43 -15
  370. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  371. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  372. package/template/.pi/skills/yss-prototype-stage/SKILL.md +12 -8
  373. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  374. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  375. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  376. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  377. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  378. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  379. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  380. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  381. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  382. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  383. package/template/.pi/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  384. package/template/.pi/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  385. package/template/.pi/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  386. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  387. package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  388. package/template/.pi/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  389. package/template/.pi/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  390. package/template/.pi/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  391. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  392. package/template/.pi/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  393. package/template/.pi/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  394. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  395. package/template/.pi/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  396. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  397. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  398. package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
  399. package/template/.pi/skills/yss-ui/SKILL.md +3 -2
  400. package/template/.pi/skills/yss-ui/references/component-routing.md +11 -10
  401. package/template/.pi/skills/yss-ui/references/specialized-components.md +52 -0
  402. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  403. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  404. package/template/CONTEXT.md +1 -0
  405. package/template/DESIGN.md +31 -14
  406. package/template/__yss_dotfile__.gitignore +4 -0
  407. package/template/docs/agents/digital-human-roles.yaml +4 -4
  408. package/template/docs/agents/skill-migrations.md +15 -2
  409. package/template/docs/agents/yss-skill-registry.yaml +6 -40
  410. package/template/docs/design/README.md +4 -4
  411. package/template/docs/design/design-system-sync.yaml +2 -1
  412. package/template/docs/design/design.md +23 -31
  413. package/template/docs/design/preview-dark.html +3 -3
  414. package/template/docs/design/preview.css +1 -1
  415. package/template/docs/design/preview.html +2 -2
  416. package/template/docs/design/templates/interaction-spec-template.md +2 -2
  417. package/template/docs/design/templates/prototype-evidence-template.yaml +18 -22
  418. package/template/docs/design/templates/prototype-review-checklist.md +3 -1
  419. package/template/docs/design/templates/state-matrix-template.md +1 -1
  420. package/template/docs/design/templates/visual-baseline-template.yaml +3 -2
  421. package/template/docs/design/tokens/.design-md-projection.json +7 -7
  422. package/template/docs/design/tokens/theme.json +16 -10
  423. package/template/docs/design/tokens/tokens.compact.json +521 -237
  424. package/template/docs/design/tokens/tokens.dark.json +527 -240
  425. package/template/docs/design/tokens/tokens.default.json +513 -235
  426. package/template/docs/design/tokens/variables.css +67 -65
  427. package/template/docs/design/tokens/variables.dark.css +41 -41
  428. package/template/docs/process/delivery-preflight.md +1 -1
  429. package/template/docs/process/frontend-backend-delivery.md +2 -1
  430. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  431. package/template/docs/process/lifecycle-registry.yaml +5 -5
  432. package/template/docs/process/schemas/api-contract-decision.schema.json +74 -0
  433. package/template/docs/process/schemas/data-architecture-decision.schema.json +34 -0
  434. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +80 -24
  435. package/template/docs/process/schemas/project-scaffold-contract.schema.json +85 -11
  436. package/template/docs/process/schemas/strategic-design-handoff.schema.json +296 -107
  437. package/template/docs/process/schemas/strategic-handoff-delivery-verification.schema.json +19 -0
  438. package/template/docs/process/schemas/strategic-handoff-delivery.schema.json +84 -0
  439. package/template/docs/process/schemas/strategic-handoff-import-receipt-v3.schema.json +42 -0
  440. package/template/docs/process/strategic-handoff-package.md +26 -9
  441. package/template/docs/user-guide//350/256/276/345/244/207/345/200/237/347/224/250/350/264/257/347/251/277/346/241/210/344/276/213.md +1 -1
  442. package/template/scripts/audit-legacy-backend-scaffold +29 -0
  443. package/template/scripts/lib/api-contract-decision.mjs +49 -0
  444. package/template/scripts/lib/api-contract-decision.test.mjs +69 -0
  445. package/template/scripts/lib/backend-scaffold-prerequisites.mjs +123 -0
  446. package/template/scripts/lib/legacy-backend-scaffold-audit.mjs +87 -0
  447. package/template/scripts/lib/legacy-backend-scaffold-audit.test.mjs +64 -0
  448. package/template/scripts/lib/lifecycle-transition.mjs +153 -5
  449. package/template/scripts/lib/openapi-draft-validation.mjs +111 -0
  450. package/template/scripts/lib/skill-registry.mjs +17 -3
  451. package/template/scripts/lib/skill-supply-chain.mjs +12 -1
  452. package/template/scripts/lib/strategic-feedback.mjs +2 -2
  453. package/template/scripts/lib/strategic-handoff-consumption.mjs +2 -2
  454. package/template/scripts/lib/strategic-handoff.mjs +77 -3
  455. package/template/scripts/strategic-handoff +6 -4
  456. package/template/scripts/verify-openapi-draft-validation-record +10 -129
  457. package/template/scripts/verify-strategic-context-import +12 -14
  458. package/template/skills-lock.json +22 -77
  459. package/template/yss-public-skills.json +0 -6
  460. package/template.snapshot.json +8 -4
  461. package/template/.agents/skills/yss-antd-design/SKILL.md +0 -35
  462. package/template/.agents/skills/yss-antd-design/references/boundaries.md +0 -30
  463. package/template/.agents/skills/yss-antd-design/references/cli-matrix.md +0 -38
  464. package/template/.agents/skills/yss-antd-design/references/evidence.md +0 -35
  465. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  466. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  467. package/template/.agents/skills/yss-antdv-next-design/SKILL.md +0 -48
  468. package/template/.agents/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  469. package/template/.agents/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  470. package/template/.agents/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  471. package/template/.agents/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  472. package/template/.agents/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  473. package/template/.agents/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  474. package/template/.agents/skills/yss-components/SKILL.md +0 -386
  475. package/template/.agents/skills/yss-components/agents/openai.yaml +0 -5
  476. package/template/.agents/skills/yss-components/references/frontend-docs.md +0 -9
  477. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  478. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  479. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  480. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  481. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  482. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  483. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  484. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  485. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  486. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  487. package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  488. package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  489. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  490. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  491. package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  492. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  493. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  494. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  495. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  496. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  497. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  498. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  499. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  500. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  501. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  502. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  503. package/template/.codex/skills/yss-antd-design/SKILL.md +0 -35
  504. package/template/.codex/skills/yss-antd-design/references/boundaries.md +0 -30
  505. package/template/.codex/skills/yss-antd-design/references/cli-matrix.md +0 -38
  506. package/template/.codex/skills/yss-antd-design/references/evidence.md +0 -35
  507. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  508. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  509. package/template/.codex/skills/yss-antdv-next-design/SKILL.md +0 -48
  510. package/template/.codex/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  511. package/template/.codex/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  512. package/template/.codex/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  513. package/template/.codex/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  514. package/template/.codex/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  515. package/template/.codex/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  516. package/template/.codex/skills/yss-components/SKILL.md +0 -386
  517. package/template/.codex/skills/yss-components/agents/openai.yaml +0 -5
  518. package/template/.codex/skills/yss-components/references/frontend-docs.md +0 -9
  519. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  520. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  521. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  522. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  523. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  524. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  525. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  526. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  527. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  528. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  529. package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  530. package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  531. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  532. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  533. package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  534. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  535. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  536. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  537. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  538. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  539. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  540. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  541. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  542. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  543. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  544. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  545. package/template/.cursor/skills/yss-antd-design/SKILL.md +0 -35
  546. package/template/.cursor/skills/yss-antd-design/references/boundaries.md +0 -30
  547. package/template/.cursor/skills/yss-antd-design/references/cli-matrix.md +0 -38
  548. package/template/.cursor/skills/yss-antd-design/references/evidence.md +0 -35
  549. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  550. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  551. package/template/.cursor/skills/yss-antdv-next-design/SKILL.md +0 -48
  552. package/template/.cursor/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  553. package/template/.cursor/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  554. package/template/.cursor/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  555. package/template/.cursor/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  556. package/template/.cursor/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  557. package/template/.cursor/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  558. package/template/.cursor/skills/yss-components/SKILL.md +0 -386
  559. package/template/.cursor/skills/yss-components/agents/openai.yaml +0 -5
  560. package/template/.cursor/skills/yss-components/references/frontend-docs.md +0 -9
  561. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  562. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  563. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  564. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  565. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  566. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  567. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  568. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  569. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  570. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  571. package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  572. package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  573. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  574. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  575. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  576. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  577. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  578. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  579. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  580. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  581. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  582. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  583. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  584. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  585. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  586. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  587. package/template/.pi/skills/yss-antd-design/SKILL.md +0 -35
  588. package/template/.pi/skills/yss-antd-design/references/boundaries.md +0 -30
  589. package/template/.pi/skills/yss-antd-design/references/cli-matrix.md +0 -38
  590. package/template/.pi/skills/yss-antd-design/references/evidence.md +0 -35
  591. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  592. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  593. package/template/.pi/skills/yss-antdv-next-design/SKILL.md +0 -48
  594. package/template/.pi/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  595. package/template/.pi/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  596. package/template/.pi/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  597. package/template/.pi/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  598. package/template/.pi/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  599. package/template/.pi/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  600. package/template/.pi/skills/yss-components/SKILL.md +0 -386
  601. package/template/.pi/skills/yss-components/agents/openai.yaml +0 -5
  602. package/template/.pi/skills/yss-components/references/frontend-docs.md +0 -9
  603. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  604. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  605. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  606. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  607. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  608. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  609. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  610. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  611. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  612. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  613. package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  614. package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  615. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  616. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  617. package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  618. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  619. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  620. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  621. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  622. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  623. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  624. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  625. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  626. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  627. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  628. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
@@ -31,7 +31,6 @@ const BACKEND = {
31
31
 
32
32
  const FRONTEND = {
33
33
  "yss-ui": ["components", "hooks", "skills"],
34
- "yss-components": ["components"],
35
34
  "yss-hook": ["hooks"],
36
35
  "yss-ui-business-page-generation": ["components", "hooks", "skills"],
37
36
  "yss-use-table-height": ["hooks"],
@@ -10,7 +10,7 @@ description: 在 YSS 技术分析阶段将批准的战略领域输入细化为
10
10
  ## 适用边界
11
11
 
12
12
  - 由 `yss-technical-design` 在已确认 `domain-driven` 的技术设计分支中调用;传统 MVC 使用 `yss-mvc-design`,不得按状态或一致性影响单独推断为 DDD。
13
- - 输入必须是版本当前的 Spec、功能架构、战略 DDD、状态矩阵、OpenAPI Draft / Freeze、ADR 和工程约束。若输入来自 Strategic Design Handoff,必须先用 `scripts/verify-strategic-context-import` 验证 schema v3 `source_context_snapshot` / `context_delta` 已对账到目标仓根 `CONTEXT.md`,Visual Baseline Bundle 可读取且 digest 当前,并且目标侧 `context_reconciliation` 有效;未完成时不得开始战术建模。
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` 及原因,不生成空设计。
16
16
 
@@ -32,7 +32,7 @@ pnpm why vue @yss-ui/components @yss-ui/hooks ant-design-vue vxe-table
32
32
 
33
33
  记录实际版本、lockfile、验证命令和环境阻塞。完整策略见 `references/antdv-compatibility.md`。
34
34
 
35
- 产品设计使用的 Antdv Next 或 Ant Design v6 视觉/token 语义,不等于 Vue 生产实现 API。生产代码必须使用项目安装的 Ant Design Vue 4.x API,禁止把原型 props、events、slots、hook 或组件写法当作生产合同。`yss-antdv-next-design` 只用于默认 H2 Vue 原型,`yss-antd-design` 只用于显式 React 兼容原型;原型阶段不得调用本技能。只有进入前端实现计划、已批准切片的生产实现或实现还原验证后,才从目标 lockfile、类型、本地文档和既有用法取得真实组件事实。
35
+ 产品设计使用的 Antdv Next 或 Ant Design v6 视觉/token 语义,不等于 Vue 生产实现 API。生产代码必须使用项目安装的 Ant Design Vue 4.x API,禁止把原型 props、events、slots、hook 或组件写法当作生产合同。原型统一使用 HTML/CSS/JavaScript;原型阶段不得调用本技能。只有进入前端实现计划、已批准切片的生产实现或实现还原验证后,才从目标 lockfile、类型、本地文档和既有用法取得真实组件事实。
36
36
 
37
37
  ## 3. 组件选型门禁
38
38
 
@@ -56,7 +56,7 @@ pnpm why vue @yss-ui/components @yss-ui/hooks ant-design-vue vxe-table
56
56
  | 任务 | 必须路由 |
57
57
  |---|---|
58
58
  | 新建或改造完整业务页面 | `yss-ui-business-page-generation` |
59
- | 页面布局、组件和交互 | `yss-components` |
59
+ | 页面布局与无独立 Skill 的专项组件 | `page-skeleton`、`component-selection-imports`、`references/specialized-components.md` |
60
60
  | 请求、分页、参数、树数据映射 | `yss-hook` |
61
61
  | Formily schema、联动、校验、详情态 | `yss-formily` |
62
62
  | 表格高度 | `yss-use-table-height` |
@@ -153,6 +153,7 @@ verification: pnpm type-check
153
153
  ## 10. 按需读取
154
154
 
155
155
  - 组件路由:`references/component-routing.md`
156
+ - 无独立 Skill 的专项组件:`references/specialized-components.md`
156
157
  - 版本兼容:`references/antdv-compatibility.md`
157
158
  - 主题/locale/浮层:`references/theme-locale-overlay.md`
158
159
  - 可访问性与性能:`references/accessibility.md`
@@ -6,17 +6,18 @@
6
6
  |---|---|---|---|---|
7
7
  | 普通按钮、权限按钮 | `YButton` | AntDV Button | required | 权限、主题和统一动作语义;不得直接导入 Button |
8
8
  | 卡片 | `YCard` | AntDV Card | required | YSS 布局与间距扩展 |
9
- | 数据表格 | `YTable` | VXE Table + AntDV Pagination | specialized | 使用 `yss-components`、`field/type`、字段插槽 |
10
- | 编辑表格 | `YEditTable` | VXE Table | specialized | 对照 edit-table docs/demo |
11
- | 树 | `YTree` | AntDV Tree | specialized | 搜索、Tooltip、动作和高度路由 |
9
+ | 数据表格 | `YTable` | VXE Table + AntDV Pagination | specialized | 使用 `ytable-usage`;远程分页交给 `page-list-module`,高度交给 `yss-use-table-height` |
10
+ | 编辑表格 | `YEditTable` | VXE Table | specialized | 使用 `yedit-table-usage`,不要把编辑与普通展示表格混为一套 API |
11
+ | 树 | `YTree` | AntDV Tree | specialized | 使用 `ytree-usage`;高度交给 `yss-use-tree-height` |
12
12
  | Schema 表单 | `YFormily` | Formily + AntDV | specialized | `YFormily` 为 canonical;`YssFormily` 仅为历史兼容名;加载 `yss-formily` |
13
- | 分栏布局 | `YSplitPane` | YSS layout | required | 统一主从页面与容器高度 |
14
- | 文件导入 | `YFileImport` | Upload/业务适配 | required | 使用 YSS 上传结果和表单适配 |
15
- | 条件构建 | `YConditionBuilder` | YSS domain component | required | 使用对应 docs/demo |
16
- | Cron | `YCron` | YSS domain component | required | 底层 Popover 可 fallback |
17
- | 图表 | `YEcharts` | ECharts | required | 主题、resize、darkMode 使用 YSS API |
18
- | 编辑器 | `YMonaco` | Monaco | required | 按需加载和尺寸治理 |
19
- | Sheet | `YSheet` | Univer | required | locale 与资源包按 YSS 文档 |
13
+ | 分栏布局 | `YSplitPane` | YSS layout | required | 页面骨架使用 `page-skeleton`;组件边界见 `specialized-components.md` |
14
+ | 文件导入 | `YFileImport` | Upload/业务适配 | required | 两步导入边界见 `specialized-components.md` |
15
+ | 条件构建 | `YConditionBuilder` | YSS domain component | required | 标准模型与校验边界见 `specialized-components.md` |
16
+ | 月历 | `YMonthCalendar` | YSS domain component | required | 日期、月份、高度与事件边界见 `specialized-components.md` |
17
+ | Cron | `YCron` | YSS domain component | required | 七段表达式边界见 `specialized-components.md` |
18
+ | 图表 | `YssEcharts` | ECharts | required | 主题、更新和尺寸边界见 `specialized-components.md` |
19
+ | 编辑器 | `YMonaco` / `YMonacoDiff` | Monaco | required | 按需加载和尺寸治理见 `specialized-components.md` |
20
+ | Sheet | `YSheet` | Univer | required | Facade、释放和依赖边界见 `specialized-components.md` |
20
21
  | 输入、选择、日期 | 无独立通用 Wrapper | AntDV Input/Select/DatePicker 等 | fallback | 读取实际 AntDV 版本;服从 theme/locale/popup 规则 |
21
22
  | 浮层反馈 | 无统一 Wrapper | Modal/Drawer/Popover/Tooltip/Alert | fallback | 服从容器、焦点、销毁、z-index 规则 |
22
23
  | 服务式反馈 | 无统一 Wrapper | message/notification | fallback | 检查 App/ConfigProvider 上下文 |
@@ -0,0 +1,52 @@
1
+ # YSS 专项组件契约
2
+
3
+ 本文件只承载尚无独立 Skill 的组件边界。页面编排使用 `yss-ui-business-page-generation`,表格、树、Formily、请求和高度分别加载对应专项 Skill。
4
+
5
+ ## YSplitPane
6
+
7
+ - 轻内容可使用实时拖拽;树、宽表、编辑器、图表等重内容优先 `resize-mode="deferred"` 与 `collapse-animation="transform"`。
8
+ - 尺寸受控时使用 `v-model:left-width`,纵向使用 `v-model:top-height`;`storage-key` 只保存尺寸,不替代页面状态。
9
+ - 折叠默认保留内容状态。只有允许丢失展开、勾选、滚动等内部状态时才启用销毁。
10
+
11
+ ## YConditionBuilder
12
+
13
+ - 根值是 `ConditionGroup`;叶子保持字段、操作符和值的标准模型。接口 DSL 的序列化、恢复与错误兜底放入 Hook。
14
+ - 字段切换需要动态操作符或候选值时使用组件公开的加载入口;提交前执行公开校验。
15
+ - 默认严格校验,只有明确允许未完成草稿时才关闭;展示态使用 `disabled`,不使用已废弃的 `readonly`。
16
+ - 组件资料见 `../assets/component-docs/condition-builder-*`,实现前仍须核对目标项目安装版本。
17
+
18
+ ## YMonthCalendar
19
+
20
+ - `v-model` 管理选中日期,`v-model:month` 管理展示月份,不把二者当作日期范围。
21
+ - `valid-range` 限制范围,`disabled-date` 表达业务禁用日期;业务层仍需规范化起止输入。
22
+ - 自定义日期单元格应保留 today、selected、disabled 等状态语义。
23
+ - `fill-height` 仅用于父容器已有明确高度的场景;键盘、右键和双击动作使用公开事件,不覆盖默认焦点行为。
24
+
25
+ ## YFileImport
26
+
27
+ - 文件选择、预检、结果回显和最终确认组成两步流程;业务上传与校验由 `nextStep` / `finalImport` 接入。
28
+ - 默认 `beforeUpload=false`,不能期待 `action` 自动上传;直传只通过 `upload-props.customRequest`。
29
+ - `importResult` 展示结果,失败数据通过 `exportErrorData` 下载。弹窗配置与上传器配置保持分离。
30
+ - 组件资料见 `../assets/component-docs/file-import-*`。
31
+
32
+ ## YMonaco / YMonacoDiff
33
+
34
+ - 分栏折叠或 Drawer 打开等容器尺寸变化后确认已重新布局。
35
+ - 日志增量使用 `appendContent()`,避免频繁重设超大完整字符串。
36
+ - 编辑器必须按需加载并在页面卸载时释放相关资源。
37
+
38
+ ## YCron
39
+
40
+ - 业务值是七段表达式:秒、分、时、天、月、周、年。
41
+ - 页面只负责双向绑定和禁用态;时区、后端模型转换和生效校验属于 API/Hook 层。
42
+
43
+ ## YSheet
44
+
45
+ - 必须提供明确容器高度。
46
+ - 初始化后只通过公开 Facade API 修改工作簿,并通过公开保存入口取值;不得直接修改工作簿原始数据对象。
47
+ - 卸载时释放实例,接入前确认 Univer、React、RxJS 等可选依赖及包体影响。
48
+
49
+ ## YssEcharts
50
+
51
+ - option、更新策略和容器尺寸以目标版本手册与项目已验证实践为准。
52
+ - 不在页面层重复原生 ECharts 初始化、销毁或 ResizeObserver 管理。
@@ -158,12 +158,13 @@ async function validateContract(contract, args) {
158
158
  if (manifestPath !== path.resolve(contract.scaffold_manifest_ref)) throw new Error("--scaffold-manifest-file does not match the approved web generation contract");
159
159
  if (!await exists(manifestPath)) throw new Error(`scaffold manifest not found: ${manifestPath}`);
160
160
  const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
161
- if (![2, 3].includes(manifest.schema_version)) throw new Error("scaffold manifest must use historical schema_version=2 or current schema_version=3");
162
- if (mvc && manifest.schema_version !== 3) throw new Error("MVC requires schema v3 scaffold identity");
161
+ if (![2, 3, 4].includes(manifest.schema_version)) throw new Error("scaffold manifest must use supported schema_version=2/3/4");
162
+ if (manifest.schema_version === 3 && manifest.legacy_reconciliation?.status !== "approved") throw new Error("historical schema v3 scaffold requires approved legacy reconciliation before business generation");
163
+ if (mvc && ![3, 4].includes(manifest.schema_version)) throw new Error("MVC requires schema v3/v4 scaffold identity");
163
164
  if (manifest.architecture_identity || mvc) {
164
165
  assertArchitectureAgreement(contract.architecture_identity, { manifest });
165
166
  if (contract.architecture_identity.architecture_profile !== contract.architecture_profile) throw new Error("Web architecture profile differs from its identity");
166
- } else if (manifest.schema_version === 3 && (manifest.architecture_family !== "domain-driven" || manifest.generator_skill !== "yss-ddd-scaffold-generator")) throw new Error("schema v3 scaffold manifest must bind the domain-driven generator for Web adapter generation");
167
+ } else if (manifest.schema_version >= 3 && (manifest.architecture_family !== "domain-driven" || manifest.generator_skill !== "yss-ddd-scaffold-generator")) throw new Error("schema v3/v4 scaffold manifest must bind the domain-driven generator for Web adapter generation");
167
168
  if (!["empty-scaffold-verified", "first-slice-verified"].includes(manifest.completion_level)) throw new Error("scaffold manifest must be empty-scaffold-verified before Web generation");
168
169
  const scaffoldRoot = path.dirname(path.dirname(manifestPath));
169
170
  if (implementationRoot !== scaffoldRoot) throw new Error("implementation_project_root does not match the scaffold manifest project root");
@@ -20,7 +20,7 @@ for (const [profile, module, placement, modules, generator] of [
20
20
  const identity = { architecture_family: "layered-mvc", architecture_profile: profile, generator_skill: generator, requested_capabilities: [], resolved_modules: modules, contract_digest: "a".repeat(64), verification_database: "h2", production_database: "not-bound" };
21
21
  const project = path.join(data.root, "demo-service");
22
22
  const manifestFile = path.join(project, ".yss/scaffold-generation.json");
23
- const manifest = { schema_version: 3, project_name: "demo-service", base_package: "com.yss.demo", completion_level: "empty-scaffold-verified", architecture_identity: identity, profiles: { platform: "spring-boot-2.7-jdk8", validation_namespace: "javax" } };
23
+ const manifest = { schema_version: 4, project_name: "demo-service", base_package: "com.yss.demo", completion_level: "empty-scaffold-verified", architecture_identity: identity, profiles: { platform: "spring-boot-2.7-jdk8", validation_namespace: "javax" } };
24
24
  await mkdir(path.dirname(manifestFile), { recursive: true });
25
25
  await writeFile(manifestFile, JSON.stringify(manifest));
26
26
  const contract = webContract(project, { architecture_profile: profile, architecture_identity: identity, dto_placement: placement, integration_mode: "scaffold-v2", scaffold_manifest_ref: manifestFile, platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", application_service_package: `com.yss.demo.${module}.service` });
@@ -88,10 +88,10 @@ node scripts/run_first_slice_verification.mjs \
88
88
  - 生成后的后端工程必须使用项目根目录 `./mvnw ...` 执行构建、测试、运行和 CI 验证;不得在 README、实施记录、Ticket、Review 或 Release 中默认写裸 `mvn ...`。既有仓库确实无法使用 wrapper 时,必须记录受控例外。
89
89
  - 原型确认后,`scaffold_status=required` 才能进入本 skill;本 skill 的生成边界是工程结构、POM、配置、Wrapper 和机械模板,不是业务实现。
90
90
  - 脚手架合同必须携带 `contract_id`、`contract_version`、实现合同编译器 draft 引用、生命周期批准引用、持久化引用、当前版本、允许写路径、预期证据文件和验证命令;字段缺失或版本过期时阻断。
91
- - 新脚手架优先接受统一 Project Scaffold Contract schema v4;已批准且当前的后端 schema v3 可完成兼容生成。两者都必须携带 `architecture_family=domain-driven`、`generator_skill`、`decision_ref/id/digest`、固定模块闭包,以及 `project_name`、`base_package` 和 `maven_coordinates`。历史 schema v2 仅只读兼容,不用于新生成;schema v1/v2 均不自动升级。
91
+ - 新脚手架只接受统一 Project Scaffold Contract schema v4,并必须以原始字节摘要绑定批准且当前的 Technical Design、Data Architecture Decision v1、API Contract Decision v1 和真实工程合同批准记录。API `required` 必须闭包绑定同一 OpenAPI YAML 字节的 Validation、独立 Review、Freeze 与工程批准;`not-applicable` 必须绑定评估、明确原因和证据且禁止空占位资产。历史 schema v3/v2 仅用于 Manifest 只读验证和补齐 API 对账后的恢复审计,不用于新生成。
92
92
  - 合同 `profiles` 只支持 `target-domain-model`、`mybatis-plus`、`mysql`、`spring-boot-2.7-jdk8`、`javax`、`web`、`yss-internal`。普通 MyBatis、Boot 3、独立 client module、client-in-domain 和其他旧架构均为 `unsupported`,不提供回退分支。
93
93
  - 运行生成器必须传入 `--contract-file`;生成器会校验合同 `status=approved`、`current_version`、`primary_skill`、`controlled-generation`、实际输出路径和固定三条验证命令,不接受仅凭任意字符串引用的放行。
94
- - 生成项目必须写入 Manifest v3 `.yss/scaffold-generation.json`,记录架构选择及 digest、生成器、合同 digest、Target Profile、模块闭包、模板 digest、下游完整 skill tree digest、脚手架父合同与 实现合同编译器 合同 digest、generator-owned 文件 hash、严格 `generation_policy` 和完成等级;清单缺失或不一致时不得交给后续 实现合同编译器。
94
+ - 生成项目必须写入 Manifest v4 `.yss/scaffold-generation.json`,记录技术、数据与 API 设计门禁、架构选择及 digest、生成器、合同 digest、Target Profile、模块闭包、模板 digest、下游完整 skill tree digest、generator-owned 文件 hash、严格 `generation_policy` 和完成等级;清单缺失或不一致时不得交给后续 实现合同编译器。
95
95
  - `first-slice-verified` 只能由 `run_first_slice_verification.mjs` 写入。手工改 Manifest、只生成 Controller、只通过局部模块测试或仅有结构扫描都不能升级完成等级。
96
96
  - 严禁把领域规则、状态机、权限、事务、复杂查询、错误映射、业务字段或用户可见行为塞进脚手架生成步骤。`./mvnw validate`、输出目录存在或“生成成功”都不等于生命周期批准、架构放行或 `ready-for-agent`。
97
97
  - 生命周期脚手架生成必须关闭 `--with-example`,不得把 User CRUD 或业务字段当作样板。生成器严格 `initialize-only`:非空目标、`--force`、旧项目迁移和当前模板升级一律 `unsupported`。未来若支持同一 Target Profile 内的模板升级,必须另行设计和批准,当前不预留可执行承诺。
@@ -109,7 +109,7 @@ node scripts/run_first_slice_verification.mjs \
109
109
  - 受控验证器:`scripts/run_scaffold_verification.mjs`
110
110
  - 首切片验证器:`scripts/run_first_slice_verification.mjs`
111
111
  - 模板目录:`assets/templates/`
112
- - 分层细化参考:`references/yss-backend-scaffold-parent/` 及其子 skill
112
+ - Parent 工程约束使用已登记的 `references/yss-backend-scaffold-parent/`;生成后的分层实现路由见 `references/layer-skill-routing.md`
113
113
 
114
114
  ## 阶段 7 合同
115
115
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 1. 准备批准合同
4
4
 
5
- 新合同是服务级工程基线,使用 schema v3 与 `scaffold_request_id`,并把已批准的架构决策、Java 包名、Maven 坐标和 Profile 分开登记:
5
+ 新合同是服务级工程基线,使用 schema v4 与 `scaffold_request_id`,并把已批准的技术/数据设计、工程合同批准、架构决策、Java 包名、Maven 坐标和 Profile 分开登记:
6
6
 
7
7
  ```json
8
8
  {
@@ -0,0 +1,18 @@
1
+ # DDD 分层实现路由
2
+
3
+ 本文件只记录脚手架完成后的分层实现路由,不作为独立 Skill 被发现。实际实现必须回到已批准的 Slice Implementation Contract,并加载对应的顶层权威 Skill。
4
+
5
+ | 分层或适配器 | 权威 Skill | 边界 |
6
+ |---|---|---|
7
+ | Application | `yss-application` | 编排用例与事务,不复制领域规则。 |
8
+ | Domain | `yss-domain` | 持有聚合、实体、值对象、领域行为和端口。 |
9
+ | Infrastructure | `yss-repository`,按需追加 `yss-mybatis` | 实现持久化端口,不向 Domain 泄漏 PO、Mapper 或框架类型。 |
10
+ | Web | `yss-web-controller`,按需追加 `yss-dto`、`yss-exception`、`yss-validation` | Controller 只调用 Application Service;HTTP 与异常包装停留在 Web 边界。 |
11
+ | Scheduler / External Adapter | 按入口选择 `yss-application`、`yss-web-controller` 或 `yss-repository` | 只做协议、调度或外部系统适配,不承载领域规则。 |
12
+
13
+ Adapter 额外遵循以下约束:
14
+
15
+ - 输入先转换为 Application Command / Query,再调用 Application Service。
16
+ - 实现 Application 或 Domain 端口时,签名不得泄漏 HTTP DTO、PO、Mapper 或第三方 SDK 类型。
17
+ - 映射使用 Spring 管理的 MapStruct Bean,禁止静态 `Mappers.getMapper(...)` 或 `INSTANCE`。
18
+ - 旧式 Controller 或旧分层结构不是 `target-domain-model` 的实现依据;架构现代化必须单独立项。
@@ -40,7 +40,7 @@ infrastructure-+
40
40
 
41
41
  ## 生成与验证
42
42
 
43
- - 输入是批准且持久化的服务级 scaffold contract schema v3,身份为 `scaffold_request_id`,并绑定已确认的 `architecture_family=domain-driven` 架构决策;不使用 `slice_id`。历史 Manifest v2 仅供验证器只读兼容。
43
+ - 输入是批准、持久化且当前的服务级 scaffold contract schema v4,身份为 `scaffold_request_id`,并绑定已确认的 `architecture_family=domain-driven` 架构决策、Technical Design、Data Architecture Decision v1 与真实工程合同批准;不使用 `slice_id`。历史 Manifest v2/v3 仅供验证器只读兼容。
44
44
  - 生成器严格 initialize-only:目标工程目录必须不存在,`--force`、旧项目迁移和当前模板升级均为 `unsupported`。
45
45
  - Maven 内部仓库通过命名 profile `yss-internal` 与环境变量注入;共享模板不写内部 URL 或凭据。
46
46
  - Wrapper 必须带 checksum;DEBUG 和 MyBatis stdout SQL 只允许在 `application-local.yml`。
@@ -7,6 +7,7 @@ import os from "node:os";
7
7
  import path from "node:path";
8
8
  import test from "node:test";
9
9
  import { fileURLToPath } from "node:url";
10
+ import { attachDesignPrerequisites } from "../../../../scripts/fixtures/backend-scaffold/design-prerequisites.mjs";
10
11
 
11
12
  import { generate as generateWeb, parseArgs as parseWebArgs } from "../../yss-web-controller/scripts/generate_controller.mjs";
12
13
  import { runFirstSliceVerification } from "./run_first_slice_verification.mjs";
@@ -18,7 +19,12 @@ const execute = (file, args, options = {}) => new Promise((resolve) => execFile(
18
19
 
19
20
  function scaffoldContract(output, decisionDigest) {
20
21
  return {
21
- schema_version: 3,
22
+ schema_version: 4,
23
+ kind: "project-scaffold-contract",
24
+ delivery_role: "backend",
25
+ scaffold_kind: "backend-ddd",
26
+ repository_scope: "external-repository",
27
+ init_git: false,
22
28
  contract_id: "golden-scaffold-1",
23
29
  contract_version: 1,
24
30
  scaffold_request_id: "golden-request-1",
@@ -26,7 +32,7 @@ function scaffoldContract(output, decisionDigest) {
26
32
  compiler_draft_ref: "compiler-golden-1",
27
33
  lifecycle_approval_ref: "approval-golden-1",
28
34
  persisted_ref: "persisted-golden-1",
29
- current_version: 1,
35
+ current_version: true,
30
36
  implementation_repository: "external",
31
37
  backend_repository: "external",
32
38
  scaffold_status: "required",
@@ -69,8 +75,11 @@ async function prepareGoldenProject(t) {
69
75
  await writeFile(decisionFile, decisionText);
70
76
  const decisionDigest = `sha256:${createHash("sha256").update(decisionText).digest("hex")}`;
71
77
  const contractFile = path.join(root, "scaffold-contract.json");
72
- await writeFile(contractFile, `${JSON.stringify(scaffoldContract(output, decisionDigest), null, 2)}\n`);
73
- const args = ["--project-name", "golden-service", "--base-package", "com.yss.golden", "--output-dir", output, "--contract-id", "golden-scaffold-1", "--contract-version", "1", "--approval-ref", "approval-golden-1", "--compiler-draft-ref", "compiler-golden-1", "--persisted-ref", "persisted-golden-1", "--contract-file", contractFile, "--group-id", "com.yss.datamiddle", "--project-version", "1.0.0-SNAPSHOT", "--parent-group-id", "com.yss.datamiddle", "--parent-artifact-id", "yss-datamiddle-parent", "--parent-version", "2.0.0-SNAPSHOT", "--yss-components-version", "2.0.0-SNAPSHOT"];
78
+ const contract = scaffoldContract(output, decisionDigest);
79
+ contract.decision_ref = decisionFile;
80
+ attachDesignPrerequisites(root, contract);
81
+ await writeFile(contractFile, `${JSON.stringify(contract, null, 2)}\n`);
82
+ const args = ["--project-name", "golden-service", "--base-package", "com.yss.golden", "--output-dir", output, "--contract-id", "golden-scaffold-1", "--contract-version", "1", "--approval-ref", contract.lifecycle_approval_ref, "--compiler-draft-ref", "compiler-golden-1", "--persisted-ref", "persisted-golden-1", "--contract-file", contractFile, "--group-id", "com.yss.datamiddle", "--project-version", "1.0.0-SNAPSHOT", "--parent-group-id", "com.yss.datamiddle", "--parent-artifact-id", "yss-datamiddle-parent", "--parent-version", "2.0.0-SNAPSHOT", "--yss-components-version", "2.0.0-SNAPSHOT"];
74
83
  const generated = await execute(process.execPath, [generator, ...args]);
75
84
  assert.equal(generated.code, 0, generated.stderr);
76
85
  const project = path.join(output, "golden-service");
@@ -10,6 +10,7 @@ import { parseDocument } from "../../../../scripts/vendor/yaml.mjs";
10
10
  import { assertLocalDatabaseProfile, localDatabaseConfiguration, scaffoldArchitectureIdentity } from "../../../../scripts/lib/scaffold-local-database.mjs";
11
11
  import { validateArchitectureIdentity } from "../../../../scripts/lib/backend-architecture.mjs";
12
12
  import { validateJsonSchema } from "../../../../scripts/lib/json-schema.mjs";
13
+ import { validateBackendScaffoldPrerequisites } from "../../../../scripts/lib/backend-scaffold-prerequisites.mjs";
13
14
 
14
15
  import {
15
16
  findGitRoot,
@@ -205,9 +206,9 @@ class ScaffoldGenerator {
205
206
  const contractText = await readFile(this.contractFile, "utf8");
206
207
  let contract; try { contract = JSON.parse(contractText); } catch { fail(`脚手架合同文件无法读取或不是合法 JSON: ${this.contractFile}`); }
207
208
  if (!contract || Array.isArray(contract) || typeof contract !== "object") fail("脚手架合同必须是 JSON 对象");
208
- if (![3, 4].includes(contract.schema_version)) fail(`unsupported: scaffold contract schema_version=${contract.schema_version};只接受兼容 v3 或统一 v4`);
209
- if (contract.schema_version === 4 && (contract.kind !== "project-scaffold-contract" || contract.delivery_role !== "backend" || contract.scaffold_kind !== "backend-ddd")) fail("schema v4 合同必须绑定 backend/backend-ddd");
210
- if (contract.schema_version === 4) validateJsonSchema(contract, path.join(REPOSITORY_ROOT, "docs/process/schemas/project-scaffold-contract.schema.json"), { label: "Project Scaffold Contract v4" });
209
+ if (contract.schema_version !== 4) fail(`unsupported: 后端新生成只接受 Project Scaffold Contract v4,收到 v${contract.schema_version}`);
210
+ if (contract.kind !== "project-scaffold-contract" || contract.delivery_role !== "backend" || contract.scaffold_kind !== "backend-ddd") fail("schema v4 合同必须绑定 backend/backend-ddd");
211
+ validateJsonSchema(contract, path.join(REPOSITORY_ROOT, "docs/process/schemas/project-scaffold-contract.schema.json"), { label: "Project Scaffold Contract v4" });
211
212
  const requiredMetadata = [["--contract-id", this.options.contractId], ["--contract-version", this.options.contractVersion], ["--approval-ref", this.options.approvalRef], ["--compiler-draft-ref", this.options.compilerDraftRef], ["--persisted-ref", this.options.persistedRef]];
212
213
  const missing = requiredMetadata.filter(([, value]) => !isPresent(value)).map(([flag]) => flag);
213
214
  if (missing.length) fail(`生成项目必须提供当前已批准脚手架合同的完整元数据: ${missing.join(", ")}`);
@@ -217,7 +218,7 @@ class ScaffoldGenerator {
217
218
  if (contract.status !== "approved") fail("脚手架合同必须已由生命周期批准");
218
219
  if (contract.contract_id !== this.options.contractId) fail("--contract-id 与脚手架合同不一致");
219
220
  if (contract.contract_version !== this.options.contractVersion) fail("--contract-version 与脚手架合同不一致");
220
- if (contract.current_version !== contract.contract_version && !(contract.schema_version === 4 && contract.current_version === true)) fail("脚手架合同版本不是当前版本");
221
+ if (contract.current_version !== true) fail("脚手架合同版本不是当前版本");
221
222
  if (contract.compiler_draft_ref !== this.options.compilerDraftRef) fail("--compiler-draft-ref 与脚手架合同不一致");
222
223
  if (contract.persisted_ref !== this.options.persistedRef) fail("--persisted-ref 与脚手架合同不一致");
223
224
  if (contract.lifecycle_approval_ref !== this.options.approvalRef) fail("--approval-ref 与脚手架合同不一致");
@@ -255,7 +256,8 @@ class ScaffoldGenerator {
255
256
  if (!decision || decision.status !== "lifecycle-approved" || decision.confirmed_architecture !== "domain-driven" || decision.project_id !== contract.project_name) fail("架构决策未批准、项目不匹配或不是 domain-driven");
256
257
  if (decision.platform_profile !== contract.profiles.platform || decision.architecture_profile !== contract.architecture_profile || decision.verification_database !== "h2" || decision.production_database !== "not-bound" || Object.hasOwn(decision, "database_profile") || JSON.stringify(decision.requested_capabilities) !== JSON.stringify(contract.module_profile.requested_capabilities) || JSON.stringify(decision.resolved_modules) !== JSON.stringify(contract.module_profile.resolved_modules)) fail("架构决策的 Profile 或模块闭包与脚手架合同不一致");
257
258
  if (!decision.user_confirmation || Object.values(decision.user_confirmation).some((value) => !isPresent(value))) fail("架构决策缺少完整用户确认记录");
258
- assertScaffoldUserDecision(decision);
259
+ assertScaffoldUserDecision(decision);
260
+ this.designPrerequisites = await validateBackendScaffoldPrerequisites(contract, { contractFile: this.contractFile });
259
261
  const generationPolicy = contract.generation_policy;
260
262
  if (!generationPolicy || generationPolicy.mode !== "initialize-only" || generationPolicy.existing_target !== "unsupported" || generationPolicy.old_project_migration !== "unsupported" || generationPolicy.template_upgrade !== "unsupported") fail("脚手架合同 generation_policy 必须声明 initialize-only,且 existing_target、old_project_migration、template_upgrade 均为 unsupported");
261
263
  this.contractDigest = sha256(contractText);
@@ -366,8 +368,7 @@ class ScaffoldGenerator {
366
368
  }
367
369
  const scaffoldParent = path.join(SKILL_ROOT, "references", "yss-backend-scaffold-parent", "SKILL.md");
368
370
  const compilerContract = path.join(REPOSITORY_ROOT, ".agents", "skills", "yss-implementation-contract-compiler", "references", "compiler-contract.yaml");
369
- const manifest = { schema_version: 3, kind: "backend-scaffold", architecture_profile: contract.architecture_profile, architecture_identity: scaffoldArchitectureIdentity(contract, this.contractDigest), contract_id: this.options.contractId, contract_version: this.options.contractVersion, scaffold_request_id: contract.scaffold_request_id, architecture_family: contract.architecture_family, generator_skill: contract.generator_skill, decision_id: contract.decision_id, decision_digest: contract.decision_digest, module_profile: contract.module_profile, approval_ref: this.options.approvalRef, compiler_draft_ref: this.options.compilerDraftRef, persisted_ref: this.options.persistedRef, contract_file_ref: this.contractFile, contract_digest: this.contractDigest, lifecycle_approval_ref: contract.lifecycle_approval_ref, current_version: contract.current_version, approver: contract.approval.approver, allowed_write_paths: contract.allowed_write_paths, expected_evidence_files: contract.expected_evidence_files, project_name: this.projectName, base_package: this.basePackage, bootstrap_main_class: `${this.basePackage}.${this.applicationClassName}`, bootstrap_main_source: this.bootstrapMainSource, maven_coordinates: this.mavenCoordinates, maven_coordinates_source: this.mavenCoordinatesSource, profiles: this.profiles, generation_mode: "controlled-generation", completion_level: "generated", generator: { id: "yss-ddd-scaffold-generator", template_digest: await treeDigest(path.join(SKILL_ROOT, "assets")) }, ownership: { generated_files: generatedFiles, user_owned_globs: ["**/src/main/java/**", "**/src/test/java/**", "db/**"] }, readiness: { downstream_skills: downstream, contracts: { scaffold_parent: sha256(await readFile(scaffoldParent)), compiler_contract: sha256(await readFile(compilerContract)) }, architecture_ruleset: sha256(await readFile(path.join(this.javaTemplateDir, "architecture-rules-test.java.template"))) }, generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" }, verification_commands: COMMANDS, generated_at: isoNow() };
370
- manifest.schema_version = contract.schema_version;
371
+ const manifest = { schema_version: 4, kind: "backend-scaffold", architecture_profile: contract.architecture_profile, architecture_identity: scaffoldArchitectureIdentity(contract, this.contractDigest), contract_id: this.options.contractId, contract_version: this.options.contractVersion, scaffold_request_id: contract.scaffold_request_id, architecture_family: contract.architecture_family, generator_skill: contract.generator_skill, decision_id: contract.decision_id, decision_digest: contract.decision_digest, module_profile: contract.module_profile, design_prerequisites: this.designPrerequisites, approval_ref: this.options.approvalRef, compiler_draft_ref: this.options.compilerDraftRef, persisted_ref: this.options.persistedRef, contract_file_ref: this.contractFile, contract_digest: this.contractDigest, lifecycle_approval_ref: contract.lifecycle_approval_ref, current_version: contract.current_version, approver: contract.approval.approver, allowed_write_paths: contract.allowed_write_paths, expected_evidence_files: contract.expected_evidence_files, project_name: this.projectName, base_package: this.basePackage, bootstrap_main_class: `${this.basePackage}.${this.applicationClassName}`, bootstrap_main_source: this.bootstrapMainSource, maven_coordinates: this.mavenCoordinates, maven_coordinates_source: this.mavenCoordinatesSource, profiles: this.profiles, generation_mode: "controlled-generation", completion_level: "generated", generator: { id: "yss-ddd-scaffold-generator", template_digest: await treeDigest(path.join(SKILL_ROOT, "assets")) }, ownership: { generated_files: generatedFiles, user_owned_globs: ["**/src/main/java/**", "**/src/test/java/**", "db/**"] }, readiness: { downstream_skills: downstream, contracts: { scaffold_parent: sha256(await readFile(scaffoldParent)), compiler_contract: sha256(await readFile(compilerContract)) }, architecture_ruleset: sha256(await readFile(path.join(this.javaTemplateDir, "architecture-rules-test.java.template"))) }, generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" }, verification_commands: COMMANDS, generated_at: isoNow() };
371
372
  await writeText(path.join(this.projectRoot, ".yss", "scaffold-generation.json"), `${JSON.stringify(manifest, null, 2)}\n`); console.log(" ✓ .yss/scaffold-generation.json");
372
373
  }
373
374
  async copyWrapperFiles() {
@@ -379,7 +380,7 @@ class ScaffoldGenerator {
379
380
  const required = [path.join(this.projectRoot, "pom.xml"), path.join(this.projectRoot, `${this.projectName}-bootstrap`, "pom.xml"), path.join(this.projectRoot, this.bootstrapMainSource), path.join(this.projectRoot, "mvnw"), path.join(this.projectRoot, ".yss", "scaffold-generation.json")];
380
381
  const missing = []; for (const target of required) if (!await isFile(target)) missing.push(target); if (missing.length) fail(`生成产物缺失: ${missing.join(", ")}`);
381
382
  const manifest = await readJson(required[4], "脚手架生成元数据清单无法读取");
382
- if (![3, 4].includes(manifest.schema_version) || manifest.contract_id !== this.options.contractId || manifest.contract_version !== this.options.contractVersion || (manifest.current_version !== this.options.contractVersion && manifest.current_version !== true) || manifest.generation_mode !== "controlled-generation" || manifest.architecture_family !== "domain-driven" || manifest.generator_skill !== "yss-ddd-scaffold-generator" || manifest.decision_id !== this.scaffoldContract.decision_id || manifest.decision_digest !== this.scaffoldContract.decision_digest || JSON.stringify(manifest.module_profile) !== JSON.stringify(this.scaffoldContract.module_profile) || manifest.bootstrap_main_class !== `${this.basePackage}.${this.applicationClassName}` || manifest.bootstrap_main_source !== this.bootstrapMainSource || manifest.profiles.architecture !== SUPPORTED_PROFILES.architecture || manifest.generation_policy.mode !== "initialize-only" || manifest.generation_policy.existing_target !== "unsupported" || JSON.stringify(manifest.verification_commands) !== JSON.stringify(COMMANDS)) fail("脚手架生成元数据清单与当前批准架构决策、合同、Target Profile、initialize-only 边界、机械启动入口或固定验证命令不一致");
383
+ if (manifest.schema_version !== 4 || manifest.contract_id !== this.options.contractId || manifest.contract_version !== this.options.contractVersion || manifest.current_version !== true || manifest.generation_mode !== "controlled-generation" || manifest.architecture_family !== "domain-driven" || manifest.generator_skill !== "yss-ddd-scaffold-generator" || manifest.decision_id !== this.scaffoldContract.decision_id || manifest.decision_digest !== this.scaffoldContract.decision_digest || JSON.stringify(manifest.module_profile) !== JSON.stringify(this.scaffoldContract.module_profile) || JSON.stringify(manifest.design_prerequisites) !== JSON.stringify(this.designPrerequisites) || manifest.bootstrap_main_class !== `${this.basePackage}.${this.applicationClassName}` || manifest.bootstrap_main_source !== this.bootstrapMainSource || manifest.profiles.architecture !== SUPPORTED_PROFILES.architecture || manifest.generation_policy.mode !== "initialize-only" || manifest.generation_policy.existing_target !== "unsupported" || JSON.stringify(manifest.verification_commands) !== JSON.stringify(COMMANDS)) fail("脚手架生成元数据清单与当前批准设计、架构决策、合同、Target Profile、initialize-only 边界、机械启动入口或固定验证命令不一致");
383
384
  const stack = [this.projectRoot], binary = new Set([".class", ".db", ".jar", ".png", ".jpg", ".jpeg", ".gif"]);
384
385
  while (stack.length) { const dir = stack.pop(); for (const entry of await readdir(dir, { withFileTypes: true })) { const target = path.join(dir, entry.name); if (entry.isDirectory()) { stack.push(target); continue; } if (!entry.isFile() || binary.has(path.extname(entry.name))) continue; const content = await readFile(target, "utf8"); if (content.includes("{{") || content.includes("root/root")) fail(`生成文件包含未替换占位符或明文凭据: ${target}`); } }
385
386
  }
@@ -133,7 +133,8 @@ export async function runFirstSliceVerification(projectRoot, evidenceDir, sliceC
133
133
  assertArchitectureAgreement(identity, { manifest });
134
134
  for (const unit of contract.work_units ?? []) assertArchitectureAgreement(identity, { work_unit: unit.architecture_identity });
135
135
  } catch (error) { contractFailures.push(`architecture-identity:${error.message}`); }
136
- if (![2, 3].includes(manifest.schema_version) || manifest.completion_level !== "empty-scaffold-verified") contractFailures.push("scaffold-not-empty-scaffold-verified");
136
+ if (![2, 3, 4].includes(manifest.schema_version) || manifest.completion_level !== "empty-scaffold-verified") contractFailures.push("scaffold-not-empty-scaffold-verified");
137
+ if (manifest.schema_version === 3 && manifest.legacy_reconciliation?.status !== "approved") contractFailures.push("legacy-scaffold-reconciliation-required");
137
138
  const projectFiles = await files(projectRoot);
138
139
  const missingArtifacts = adapter.artifacts.filter(([, pattern]) => !projectFiles.some((file) => pattern.test(file))).map(([name]) => name);
139
140
  const skillDrift = await downstreamDrift(manifest, adapter.skills);
@@ -41,20 +41,22 @@ function parseArgs(argv) { const result = {}; for (let index = 0; index < argv.l
41
41
  function validateManifest(manifest) {
42
42
  if (![2, 3, 4].includes(manifest.schema_version)) throw new Error(`unsupported: scaffold Manifest schema_version=${manifest.schema_version};只读兼容 v2,并验证当前 v3/v4`);
43
43
  const required = ["schema_version", "contract_id", "contract_version", "scaffold_request_id", "contract_digest", "profiles", "ownership", "readiness", "generation_policy", "completion_level", "approval_ref", "approver", "lifecycle_approval_ref", "compiler_draft_ref", "persisted_ref", "contract_file_ref", "current_version", "allowed_write_paths", "expected_evidence_files", "verification_commands", "generation_mode"];
44
- if (manifest.schema_version === 3) required.push("architecture_family", "generator_skill", "decision_id", "decision_digest", "module_profile");
44
+ if (manifest.schema_version >= 3) required.push("architecture_family", "generator_skill", "decision_id", "decision_digest", "module_profile");
45
+ if (manifest.schema_version === 4) required.push("design_prerequisites");
45
46
  const missing = required.filter((field) => manifest[field] === undefined || manifest[field] === null || manifest[field] === "");
46
47
  if (manifest.generation_mode !== "controlled-generation" || missing.length) throw new Error(`脚手架生成元数据清单不完整或不是 controlled-generation: ${missing.join(", ")}`);
47
- if (manifest.schema_version === 3) {
48
+ if (manifest.schema_version >= 3) {
48
49
  if (manifest.kind || manifest.architecture_identity) {
49
50
  assertLocalDatabaseProfile(manifest.profiles);
50
51
  assertArchitectureAgreement(manifest.architecture_identity, { manifest_fields: scaffoldArchitectureIdentity(manifest, manifest.contract_digest) });
51
52
  }
52
53
  const supportedArchitecture = manifest.architecture_family === "domain-driven" && manifest.generator_skill === "yss-ddd-scaffold-generator" && manifest.profiles.architecture === "target-domain-model"
53
54
  || manifest.architecture_family === "layered-mvc" && ["yss-layered-mvc-scaffold-generator", "yss-mvc-data-analysis-project-initializer"].includes(manifest.generator_skill) && manifest.profiles.architecture === "layered-mvc";
54
- if (!supportedArchitecture || manifest.module_profile?.resolution_version !== 1 || !Array.isArray(manifest.module_profile?.resolved_modules)) throw new Error("Manifest v3 的架构族、生成器、Profile 或模块闭包不一致");
55
+ if (!supportedArchitecture || manifest.module_profile?.resolution_version !== 1 || !Array.isArray(manifest.module_profile?.resolved_modules)) throw new Error("Manifest v3/v4 的架构族、生成器、Profile 或模块闭包不一致");
56
+ if (manifest.schema_version === 4 && (!manifest.design_prerequisites?.technical_design || !manifest.design_prerequisites?.data_architecture_decision || !manifest.design_prerequisites?.engineering_contract_approval_ref)) throw new Error("Manifest v4 缺少设计门禁绑定");
55
57
  } else if (manifest.profiles.architecture !== "target-domain-model") throw new Error("历史 Manifest v2 只读兼容仅支持 target-domain-model");
56
58
  if (manifest.generation_policy.mode !== "initialize-only" || manifest.generation_policy.existing_target !== "unsupported" || manifest.generation_policy.old_project_migration !== "unsupported" || manifest.generation_policy.template_upgrade !== "unsupported") throw new Error("Manifest 必须声明严格 initialize-only;已有目标、旧项目迁移和模板升级均须为 unsupported");
57
- if (manifest.current_version !== manifest.contract_version) throw new Error("脚手架生成元数据清单不是当前合同版本");
59
+ if (manifest.schema_version === 4 ? manifest.current_version !== true : manifest.current_version !== manifest.contract_version) throw new Error("脚手架生成元数据清单不是当前合同版本");
58
60
  if (JSON.stringify(manifest.verification_commands) !== JSON.stringify(COMMANDS)) throw new Error("脚手架生成元数据清单验证命令不符合固定合同");
59
61
  }
60
62
  export async function run(projectRoot, evidenceDir, environment = process.env, { timeoutMs = 0, signal } = {}) {