create-yss-spec 3.3.7 → 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 (729) hide show
  1. package/README.md +12 -13
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +3 -13
  4. package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +2 -2
  5. package/template/.agents/skills/yss-application/SKILL.md +1 -1
  6. package/template/.agents/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  7. package/template/.agents/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  8. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  11. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  12. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  13. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  17. package/template/.agents/skills/yss-design-system/SKILL.md +19 -19
  18. package/template/.agents/skills/yss-design-system/references/data-quality-theme.md +13 -0
  19. package/template/.agents/skills/yss-design-system/references/design-qa-theme.md +3 -1
  20. package/template/.agents/skills/yss-design-system/references/design-system.md +7 -9
  21. package/template/.agents/skills/yss-formily/SKILL.md +21 -258
  22. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  23. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  24. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  25. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  26. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  27. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  28. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  29. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  30. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  31. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  32. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  33. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  34. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  35. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  36. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  37. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  38. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  39. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  40. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  41. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  42. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  43. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  44. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  45. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  46. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  47. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  48. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  49. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  50. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  51. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  52. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  53. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  54. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  55. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  56. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  57. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  58. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  59. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  60. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  61. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  62. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  63. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  64. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +17 -5
  65. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  66. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  67. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  68. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  69. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  70. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  71. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  72. package/template/.agents/skills/yss-openapi-governance/SKILL.md +2 -0
  73. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +49 -16
  74. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  75. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  76. package/template/.agents/skills/yss-prototype-stage/SKILL.md +22 -9
  77. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  78. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  79. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  80. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  81. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  82. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  83. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  84. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  85. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  86. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  87. package/template/.agents/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  88. package/template/.agents/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  89. package/template/.agents/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  90. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  91. package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  92. package/template/.agents/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  93. package/template/.agents/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  94. package/template/.agents/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  95. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  96. package/template/.agents/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  97. package/template/.agents/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  98. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  99. package/template/.agents/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  100. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  101. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  102. package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
  103. package/template/.agents/skills/yss-technical-design/SKILL.md +2 -0
  104. package/template/.agents/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  105. package/template/.agents/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  106. package/template/.agents/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  107. package/template/.agents/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  108. package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  109. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  110. package/template/.agents/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  111. package/template/.agents/skills/yss-ui/SKILL.md +3 -2
  112. package/template/.agents/skills/yss-ui/references/component-routing.md +11 -10
  113. package/template/.agents/skills/yss-ui/references/specialized-components.md +52 -0
  114. package/template/.agents/skills/yss-web-controller/SKILL.md +1 -1
  115. package/template/.agents/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  116. package/template/.agents/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  117. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  118. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  119. package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +2 -2
  120. package/template/.codex/skills/yss-application/SKILL.md +1 -1
  121. package/template/.codex/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  122. package/template/.codex/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  123. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  124. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  125. package/template/.codex/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  126. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  127. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  128. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  129. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  130. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  131. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  132. package/template/.codex/skills/yss-design-system/SKILL.md +19 -19
  133. package/template/.codex/skills/yss-design-system/references/data-quality-theme.md +13 -0
  134. package/template/.codex/skills/yss-design-system/references/design-qa-theme.md +3 -1
  135. package/template/.codex/skills/yss-design-system/references/design-system.md +7 -9
  136. package/template/.codex/skills/yss-formily/SKILL.md +21 -258
  137. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  138. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  139. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  140. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  141. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  142. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  143. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  144. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  145. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  146. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  147. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  148. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  149. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  150. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  151. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  152. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  153. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  154. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  155. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  156. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  157. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  158. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  159. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  160. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  161. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  162. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  163. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  164. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  165. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  166. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  167. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  168. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  169. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  170. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  171. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  172. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  173. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  174. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  175. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  176. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  177. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  178. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  179. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +17 -5
  180. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  181. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  182. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  183. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  184. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  185. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  186. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  187. package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -0
  188. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +49 -16
  189. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  190. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  191. package/template/.codex/skills/yss-prototype-stage/SKILL.md +22 -9
  192. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  193. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  194. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  195. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  196. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  197. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  198. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  199. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  200. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  201. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  202. package/template/.codex/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  203. package/template/.codex/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  204. package/template/.codex/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  205. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  206. package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  207. package/template/.codex/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  208. package/template/.codex/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  209. package/template/.codex/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  210. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  211. package/template/.codex/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  212. package/template/.codex/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  213. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  214. package/template/.codex/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  215. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  216. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  217. package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
  218. package/template/.codex/skills/yss-technical-design/SKILL.md +2 -0
  219. package/template/.codex/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  220. package/template/.codex/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  221. package/template/.codex/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  222. package/template/.codex/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  223. package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  224. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  225. package/template/.codex/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  226. package/template/.codex/skills/yss-ui/SKILL.md +3 -2
  227. package/template/.codex/skills/yss-ui/references/component-routing.md +11 -10
  228. package/template/.codex/skills/yss-ui/references/specialized-components.md +52 -0
  229. package/template/.codex/skills/yss-web-controller/SKILL.md +1 -1
  230. package/template/.codex/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  231. package/template/.codex/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  232. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  233. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  234. package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +2 -2
  235. package/template/.cursor/skills/yss-application/SKILL.md +1 -1
  236. package/template/.cursor/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  237. package/template/.cursor/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  238. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  239. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  240. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  241. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  242. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  243. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  244. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  245. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  246. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  247. package/template/.cursor/skills/yss-design-system/SKILL.md +19 -19
  248. package/template/.cursor/skills/yss-design-system/references/data-quality-theme.md +13 -0
  249. package/template/.cursor/skills/yss-design-system/references/design-qa-theme.md +3 -1
  250. package/template/.cursor/skills/yss-design-system/references/design-system.md +7 -9
  251. package/template/.cursor/skills/yss-formily/SKILL.md +21 -258
  252. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  253. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  254. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  255. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  256. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  257. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  258. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  259. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  260. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  261. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  262. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  263. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  264. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  265. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  266. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  267. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  268. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  269. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  270. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  271. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  272. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  273. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  274. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  275. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  276. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  277. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  278. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  279. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  280. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  281. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  282. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  283. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  284. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  285. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  286. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  287. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  288. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  289. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  290. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  291. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  292. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  293. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  294. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +17 -5
  295. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  296. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  297. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  298. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  299. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  300. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  301. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  302. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +2 -0
  303. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +49 -16
  304. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  305. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  306. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +22 -9
  307. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  308. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  309. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  310. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  311. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  312. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  313. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  314. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  315. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  316. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  317. package/template/.cursor/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  318. package/template/.cursor/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  319. package/template/.cursor/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  320. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  321. package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  322. package/template/.cursor/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  323. package/template/.cursor/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  324. package/template/.cursor/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  325. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  326. package/template/.cursor/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  327. package/template/.cursor/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  328. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  329. package/template/.cursor/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  330. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  331. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  332. package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
  333. package/template/.cursor/skills/yss-technical-design/SKILL.md +2 -0
  334. package/template/.cursor/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  335. package/template/.cursor/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  336. package/template/.cursor/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  337. package/template/.cursor/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  338. package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  339. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  340. package/template/.cursor/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  341. package/template/.cursor/skills/yss-ui/SKILL.md +3 -2
  342. package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -10
  343. package/template/.cursor/skills/yss-ui/references/specialized-components.md +52 -0
  344. package/template/.cursor/skills/yss-web-controller/SKILL.md +1 -1
  345. package/template/.cursor/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  346. package/template/.cursor/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  347. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  348. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  349. package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +2 -2
  350. package/template/.pi/skills/yss-application/SKILL.md +1 -1
  351. package/template/.pi/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  352. package/template/.pi/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  353. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +3 -3
  354. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  355. package/template/.pi/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  356. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  357. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +13 -4
  358. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +9 -8
  359. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -1
  360. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +6 -4
  361. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +108 -12
  362. package/template/.pi/skills/yss-design-system/SKILL.md +19 -19
  363. package/template/.pi/skills/yss-design-system/references/data-quality-theme.md +13 -0
  364. package/template/.pi/skills/yss-design-system/references/design-qa-theme.md +3 -1
  365. package/template/.pi/skills/yss-design-system/references/design-system.md +7 -9
  366. package/template/.pi/skills/yss-formily/SKILL.md +21 -258
  367. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  368. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  369. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  370. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  371. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  372. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  373. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  374. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  375. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  376. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  377. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  378. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  379. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  380. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  381. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  382. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  383. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  384. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  385. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  386. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  387. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  388. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  389. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  390. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  391. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  392. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  393. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  394. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  395. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  396. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  397. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  398. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  399. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  400. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  401. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  402. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  403. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  404. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  405. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  406. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  407. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  408. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  409. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +17 -5
  410. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  411. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  412. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +12 -8
  413. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  414. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +97 -9
  415. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  416. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  417. package/template/.pi/skills/yss-openapi-governance/SKILL.md +2 -0
  418. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +49 -16
  419. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  420. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  421. package/template/.pi/skills/yss-prototype-stage/SKILL.md +22 -9
  422. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  423. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  424. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  425. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  426. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  427. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  428. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  429. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  430. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  431. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  432. package/template/.pi/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  433. package/template/.pi/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  434. package/template/.pi/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  435. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  436. package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  437. package/template/.pi/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  438. package/template/.pi/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  439. package/template/.pi/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  440. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  441. package/template/.pi/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  442. package/template/.pi/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  443. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  444. package/template/.pi/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  445. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  446. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  447. package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
  448. package/template/.pi/skills/yss-technical-design/SKILL.md +2 -0
  449. package/template/.pi/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  450. package/template/.pi/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  451. package/template/.pi/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  452. package/template/.pi/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  453. package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  454. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  455. package/template/.pi/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  456. package/template/.pi/skills/yss-ui/SKILL.md +3 -2
  457. package/template/.pi/skills/yss-ui/references/component-routing.md +11 -10
  458. package/template/.pi/skills/yss-ui/references/specialized-components.md +52 -0
  459. package/template/.pi/skills/yss-web-controller/SKILL.md +1 -1
  460. package/template/.pi/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  461. package/template/.pi/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  462. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +4 -3
  463. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  464. package/template/CONTEXT.md +1 -0
  465. package/template/DESIGN.md +31 -14
  466. package/template/README.md +4 -6
  467. package/template/__yss_dotfile__.gitignore +4 -0
  468. package/template/docs/agents/backend-architecture-profiles.md +4 -0
  469. package/template/docs/agents/digital-human-roles.yaml +4 -4
  470. package/template/docs/agents/skill-migrations.md +15 -2
  471. package/template/docs/agents/yss-skill-registry.yaml +19 -40
  472. package/template/docs/design/README.md +4 -4
  473. package/template/docs/design/design-system-sync.yaml +2 -1
  474. package/template/docs/design/design.md +23 -31
  475. package/template/docs/design/preview-dark.html +3 -3
  476. package/template/docs/design/preview.css +1 -1
  477. package/template/docs/design/preview.html +2 -2
  478. package/template/docs/design/templates/interaction-spec-template.md +2 -2
  479. package/template/docs/design/templates/prototype-confirmation-template.md +2 -2
  480. package/template/docs/design/templates/prototype-evidence-template.yaml +18 -22
  481. package/template/docs/design/templates/prototype-review-checklist.md +5 -3
  482. package/template/docs/design/templates/state-matrix-template.md +1 -1
  483. package/template/docs/design/templates/visual-baseline-template.yaml +3 -2
  484. package/template/docs/design/tokens/.design-md-projection.json +7 -7
  485. package/template/docs/design/tokens/theme.json +16 -10
  486. package/template/docs/design/tokens/tokens.compact.json +521 -237
  487. package/template/docs/design/tokens/tokens.dark.json +527 -240
  488. package/template/docs/design/tokens/tokens.default.json +513 -235
  489. package/template/docs/design/tokens/variables.css +67 -65
  490. package/template/docs/design/tokens/variables.dark.css +41 -41
  491. package/template/docs/plan/templates/market-analysis-template.md +3 -3
  492. package/template/docs/plan/templates/user-pain-points-template.md +3 -3
  493. package/template/docs/process/delivery-preflight.md +72 -0
  494. package/template/docs/process/document-writing.md +5 -1
  495. package/template/docs/process/existing-backend-architecture.md +31 -0
  496. package/template/docs/process/existing-ui-baseline.md +40 -0
  497. package/template/docs/process/frontend-backend-delivery.md +20 -6
  498. package/template/docs/process/implementation-repo-integration.md +6 -0
  499. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  500. package/template/docs/process/lifecycle-registry.yaml +5 -5
  501. package/template/docs/process/schemas/api-contract-decision.schema.json +74 -0
  502. package/template/docs/process/schemas/backend-architecture-identity.schema.json +111 -14
  503. package/template/docs/process/schemas/data-architecture-decision.schema.json +34 -0
  504. package/template/docs/process/schemas/delivery-preflight-input.schema.json +158 -0
  505. package/template/docs/process/schemas/delivery-preflight-result.schema.json +159 -0
  506. package/template/docs/process/schemas/digital-human-task-package.schema.json +1 -1
  507. package/template/docs/process/schemas/existing-ui-baseline.schema.json +365 -0
  508. package/template/docs/process/schemas/frontend-delivery-acceptance-v3.schema.json +308 -0
  509. package/template/docs/process/schemas/frontend-strategic-preflight-v2.schema.json +114 -0
  510. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +80 -24
  511. package/template/docs/process/schemas/project-scaffold-contract.schema.json +85 -11
  512. package/template/docs/process/schemas/strategic-design-handoff-v5.schema.json +932 -0
  513. package/template/docs/process/schemas/strategic-design-handoff.schema.json +296 -107
  514. package/template/docs/process/schemas/strategic-handoff-delivery-verification.schema.json +19 -0
  515. package/template/docs/process/schemas/strategic-handoff-delivery.schema.json +84 -0
  516. package/template/docs/process/schemas/strategic-handoff-export-v2.schema.json +378 -0
  517. package/template/docs/process/schemas/strategic-handoff-import-receipt-v3.schema.json +42 -0
  518. package/template/docs/process/strategic-handoff-package.md +42 -17
  519. package/template/docs/user-guide//346/212/200/346/234/257/350/256/276/350/256/241/347/224/250/346/210/267/346/214/207/345/215/227.md +43 -0
  520. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +83 -67
  521. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +9 -10
  522. 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 +13 -10
  523. package/template/scripts/audit-legacy-backend-scaffold +29 -0
  524. package/template/scripts/backend-delivery +20 -4
  525. package/template/scripts/lib/api-contract-decision.mjs +49 -0
  526. package/template/scripts/lib/api-contract-decision.test.mjs +69 -0
  527. package/template/scripts/lib/approved-execution-context.mjs +106 -0
  528. package/template/scripts/lib/backend-architecture.mjs +12 -0
  529. package/template/scripts/lib/backend-delivery.mjs +10 -6
  530. package/template/scripts/lib/backend-scaffold-prerequisites.mjs +123 -0
  531. package/template/scripts/lib/delivery-preflight.mjs +238 -0
  532. package/template/scripts/lib/existing-backend-architecture.mjs +139 -0
  533. package/template/scripts/lib/existing-ui-baseline.mjs +84 -0
  534. package/template/scripts/lib/frontend-delivery.mjs +23 -15
  535. package/template/scripts/lib/implementation-contract-compiler.mjs +19 -5
  536. package/template/scripts/lib/json-schema.mjs +19 -4
  537. package/template/scripts/lib/legacy-backend-scaffold-audit.mjs +87 -0
  538. package/template/scripts/lib/legacy-backend-scaffold-audit.test.mjs +64 -0
  539. package/template/scripts/lib/lifecycle-transition.mjs +153 -5
  540. package/template/scripts/lib/openapi-draft-validation.mjs +111 -0
  541. package/template/scripts/lib/profile-skill-sync.mjs +26 -0
  542. package/template/scripts/lib/skill-registry.mjs +17 -3
  543. package/template/scripts/lib/skill-supply-chain.mjs +12 -1
  544. package/template/scripts/lib/strategic-feedback.mjs +2 -2
  545. package/template/scripts/lib/strategic-handoff-consumption.mjs +8 -7
  546. package/template/scripts/lib/strategic-handoff-design-targets.mjs +2 -3
  547. package/template/scripts/lib/strategic-handoff-io.mjs +10 -0
  548. package/template/scripts/lib/strategic-handoff.mjs +124 -32
  549. package/template/scripts/lib/task-package.mjs +11 -3
  550. package/template/scripts/lib/technical-design-boundary.mjs +9 -1
  551. package/template/scripts/lib/ui-baseline.mjs +26 -0
  552. package/template/scripts/lib/user-decision.mjs +4 -1
  553. package/template/scripts/preflight-delivery +14 -0
  554. package/template/scripts/strategic-handoff +23 -6
  555. package/template/scripts/sync-profile-skills +4 -5
  556. package/template/scripts/verify-openapi-draft-validation-record +10 -129
  557. package/template/scripts/verify-strategic-context-import +12 -14
  558. package/template/skills-lock.json +25 -80
  559. package/template/yss-public-skills.json +0 -6
  560. package/template.snapshot.json +8 -4
  561. package/template/.agents/skills/yss-antd-design/SKILL.md +0 -35
  562. package/template/.agents/skills/yss-antd-design/references/boundaries.md +0 -30
  563. package/template/.agents/skills/yss-antd-design/references/cli-matrix.md +0 -38
  564. package/template/.agents/skills/yss-antd-design/references/evidence.md +0 -35
  565. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  566. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  567. package/template/.agents/skills/yss-antdv-next-design/SKILL.md +0 -48
  568. package/template/.agents/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  569. package/template/.agents/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  570. package/template/.agents/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  571. package/template/.agents/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  572. package/template/.agents/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  573. package/template/.agents/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  574. package/template/.agents/skills/yss-components/SKILL.md +0 -386
  575. package/template/.agents/skills/yss-components/agents/openai.yaml +0 -5
  576. package/template/.agents/skills/yss-components/references/frontend-docs.md +0 -9
  577. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  578. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  579. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  580. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  581. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  582. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  583. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  584. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  585. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  586. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  587. package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  588. package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  589. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  590. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  591. package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  592. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  593. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  594. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  595. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  596. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  597. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  598. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  599. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  600. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  601. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  602. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  603. package/template/.codex/skills/yss-antd-design/SKILL.md +0 -35
  604. package/template/.codex/skills/yss-antd-design/references/boundaries.md +0 -30
  605. package/template/.codex/skills/yss-antd-design/references/cli-matrix.md +0 -38
  606. package/template/.codex/skills/yss-antd-design/references/evidence.md +0 -35
  607. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  608. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  609. package/template/.codex/skills/yss-antdv-next-design/SKILL.md +0 -48
  610. package/template/.codex/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  611. package/template/.codex/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  612. package/template/.codex/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  613. package/template/.codex/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  614. package/template/.codex/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  615. package/template/.codex/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  616. package/template/.codex/skills/yss-components/SKILL.md +0 -386
  617. package/template/.codex/skills/yss-components/agents/openai.yaml +0 -5
  618. package/template/.codex/skills/yss-components/references/frontend-docs.md +0 -9
  619. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  620. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  621. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  622. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  623. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  624. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  625. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  626. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  627. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  628. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  629. package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  630. package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  631. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  632. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  633. package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  634. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  635. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  636. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  637. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  638. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  639. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  640. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  641. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  642. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  643. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  644. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  645. package/template/.cursor/skills/yss-antd-design/SKILL.md +0 -35
  646. package/template/.cursor/skills/yss-antd-design/references/boundaries.md +0 -30
  647. package/template/.cursor/skills/yss-antd-design/references/cli-matrix.md +0 -38
  648. package/template/.cursor/skills/yss-antd-design/references/evidence.md +0 -35
  649. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  650. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  651. package/template/.cursor/skills/yss-antdv-next-design/SKILL.md +0 -48
  652. package/template/.cursor/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  653. package/template/.cursor/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  654. package/template/.cursor/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  655. package/template/.cursor/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  656. package/template/.cursor/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  657. package/template/.cursor/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  658. package/template/.cursor/skills/yss-components/SKILL.md +0 -386
  659. package/template/.cursor/skills/yss-components/agents/openai.yaml +0 -5
  660. package/template/.cursor/skills/yss-components/references/frontend-docs.md +0 -9
  661. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  662. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  663. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  664. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  665. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  666. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  667. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  668. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  669. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  670. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  671. package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  672. package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  673. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  674. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  675. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  676. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  677. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  678. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  679. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  680. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  681. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  682. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  683. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  684. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  685. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  686. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  687. package/template/.pi/skills/yss-antd-design/SKILL.md +0 -35
  688. package/template/.pi/skills/yss-antd-design/references/boundaries.md +0 -30
  689. package/template/.pi/skills/yss-antd-design/references/cli-matrix.md +0 -38
  690. package/template/.pi/skills/yss-antd-design/references/evidence.md +0 -35
  691. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  692. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  693. package/template/.pi/skills/yss-antdv-next-design/SKILL.md +0 -48
  694. package/template/.pi/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  695. package/template/.pi/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  696. package/template/.pi/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  697. package/template/.pi/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  698. package/template/.pi/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  699. package/template/.pi/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  700. package/template/.pi/skills/yss-components/SKILL.md +0 -386
  701. package/template/.pi/skills/yss-components/agents/openai.yaml +0 -5
  702. package/template/.pi/skills/yss-components/references/frontend-docs.md +0 -9
  703. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  704. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  705. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  706. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  707. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  708. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  709. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  710. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  711. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  712. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  713. package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  714. package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  715. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  716. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  717. package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  718. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  719. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  720. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  721. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  722. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  723. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  724. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  725. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  726. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  727. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  728. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  729. package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +0 -35
@@ -1,74 +0,0 @@
1
- import { cp, readFile, writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
-
4
- import { HARNESS_ROOT, MODULES, PROJECT_SCRIPT_FILES, exists, fail } from "./runtime.mjs";
5
- import { put } from "./storage.mjs";
6
-
7
- const TEMPLATE_SOURCE_COMMAND = /scripts\/(?:verify-template(?:-fast|-candidate)?|sync-skills|update-skill-lock|export-yss-skills|verify-upstream-skill-source|verify-maintenance-checkpoint|verify-implementation-path-scenarios|gitworks)/g;
8
- const TEMPLATE_SOURCE_SECTION = /(^## 4\. `template-source` 模板维护路由[^\S\r\n]*$)[\s\S]*?(?=^## 5\. `project-instance` 产品研发路由[^\S\r\n]*$)/m;
9
-
10
- function removeTemplateSourceCommands(content) {
11
- return content.replace(TEMPLATE_SOURCE_COMMAND, "上游 Harness 专用命令");
12
- }
13
-
14
- export function renderProjectInstanceAgents(content) {
15
- if (!TEMPLATE_SOURCE_SECTION.test(content)) fail("无法定位 AGENTS.md 的模板维护章节边界");
16
- return content.replace(
17
- TEMPLATE_SOURCE_SECTION,
18
- "$1\n\n当前仓库是 `project-instance`,模板维护只在上游 Harness 执行。\n\n"
19
- );
20
- }
21
-
22
- export async function writeProjectEnvelope(o) {
23
- await put(o.targetDir, "yss-project.yaml", "schema_version: 1\nrepository_mode: project-instance");
24
- await put(o.targetDir, ".artifact-workspace.yaml", `schema_version: 1\nkind: service\nservice_id: ${o.projectName}\nowner: ${JSON.stringify(o.gitAuthor)}`);
25
- await cp(path.join(HARNESS_ROOT, "AGENTS.md"), path.join(o.targetDir, "AGENTS.md"));
26
- const generatedAgents = await readFile(path.join(o.targetDir, "AGENTS.md"), "utf8");
27
- await writeFile(path.join(o.targetDir, "AGENTS.md"), renderProjectInstanceAgents(generatedAgents)
28
- .replaceAll(".agents/skills", "../skillUtils/.agents/skills")
29
- .replaceAll(".codex/skills", "../skillUtils/.codex/skills"), "utf8");
30
- await put(o.targetDir, "CONTEXT.md", "# 领域上下文\n\n## 业务术语\n\n| 术语 | 定义 | 英文标识 | 避免 / 备注 |\n|---|---|---|---|\n| 分析数据集 | 支撑一个数据分析功能的表结构、字段语义和查询边界。 | AnalysisDataset | 具体业务术语在需求分析后补充 |\n| 分析结果 | 数据分析接口返回的分页明细或聚合结果。 | AnalysisResult | 不表示未经约束的原始结果集 |");
31
- for (const relative of ["docs/agents", "docs/process", "docs/templates", "docs/architecture/templates"]) {
32
- const source = path.join(HARNESS_ROOT, relative);
33
- if (!await exists(source)) fail(`项目实例治理资产不存在: ${source}`);
34
- await cp(source, path.join(o.targetDir, relative), { recursive: true });
35
- }
36
- const integrationPath = path.join(o.targetDir, "docs/process/implementation-repo-integration.md");
37
- const integration = (await readFile(integrationPath, "utf8"))
38
- .replace("模板仓库至少执行:", "以下命令仅由上游 Harness 模板源执行,项目实例不分发这些模板维护工具:")
39
- .replace(/scripts\/sync-skills --check\r?\nscripts\/update-skill-lock --check\r?\nscripts\/verify-template/, "在 Harness 模板源执行 Skill 投影同步、锁文件检查和模板发布校验。");
40
- await writeFile(integrationPath, integration, "utf8");
41
- const checklistPath = path.join(o.targetDir, "docs/templates/build-architecture-checklist-template.md");
42
- await writeFile(checklistPath, (await readFile(checklistPath, "utf8")).replace("scripts/verify-implementation-path-scenarios", "node scripts/implementation-path-policy"), "utf8");
43
- for (const relative of ["AGENTS.md", "docs/process/implementation-repo-integration.md", "docs/process/harness-process-tailoring.md", "docs/templates/build-architecture-checklist-template.md"]) {
44
- const target = path.join(o.targetDir, relative);
45
- await writeFile(target, removeTemplateSourceCommands(await readFile(target, "utf8")), "utf8");
46
- }
47
- const agentReadmePath = path.join(o.targetDir, "docs/agents/README.md");
48
- const agentReadme = (await readFile(agentReadmePath, "utf8"))
49
- .replace("Engineering Skills 的安装、升级和验证说明", "项目实例使用共享 `skillUtils` 的版本检查说明")
50
- .replace("GitLab、MR、CI 和自动 gitworks 的技能配置与使用规则", "GitLab、MR 和 CI 的 `glab` 使用规则");
51
- await writeFile(agentReadmePath, agentReadme, "utf8");
52
- const issueTrackerPath = path.join(o.targetDir, "docs/agents/issue-tracker.md");
53
- await writeFile(issueTrackerPath, (await readFile(issueTrackerPath, "utf8")).replace("当平台为 GitLab 时,优先使用 `glab` 或项目快捷入口 `scripts/gitworks`。", "当平台为 GitLab 时,使用已认证的 `glab`。"), "utf8");
54
- const tailoringPath = path.join(o.targetDir, "docs/process/harness-process-tailoring.md");
55
- await writeFile(tailoringPath, (await readFile(tailoringPath, "utf8")).replace("使用 `scripts/verify-maintenance-checkpoint <file>` 或通过 stdin 传入 YAML / JSON 做只读校验。触发项 ID 与最低等级只由 `docs/process/maintenance-intensity.yaml` 维护;校验器消费该策略。未知触发项必须先更新该权威策略和场景,不能静默接受。", "维护 checkpoint 校验只在上游 Harness 模板源执行。触发项 ID 与最低等级只由 `docs/process/maintenance-intensity.yaml` 维护;未知触发项必须先更新该权威策略和场景,不能静默接受。"), "utf8");
56
- await put(o.targetDir, "docs/agents/skills-maintenance.md", "# 项目实例 Skill 环境\n\n本项目不维护或发布共享 Skill。共享 Skill 位于相邻的 `../skillUtils`,版本由项目根 `skills-lock.json` 锁定。\n\n开发前执行:\n\n```bash\nnpm run check-agent-environment\n```\n\n输出 `READY` 表示工具版本、兼容协议、Agent 投影和 canonical Skill hash 一致。输出 `NOT_READY` 时停止功能实现,使用上游 Harness 的项目初始化或刷新流程更新 `skillUtils`;不要在项目内手工同步、导出或覆盖共享 Skill。\n\n项目实例只消费已提交的 `scripts/lib/*.mjs` 和 `scripts/vendor/*.mjs`。模板发布、Skill 投影生成、上游来源验证和公开导出均属于 Harness 模板源维护,不在本项目执行。");
57
- await put(o.targetDir, "docs/agents/gitlab-workflow-skills.md", "# GitLab 工作流\n\n本项目不分发 GitLab 包装脚本。需要查看 MR、Pipeline 或 CI 时,使用已认证的 `glab`,并先确认当前仓库的 `origin` 指向目标 GitLab 项目。\n\n常用只读命令:\n\n```bash\ngit status --short --branch\nglab mr list\nglab ci list\nglab ci status\n```\n\n创建分支、commit、push、MR 或触发 Pipeline 都必须遵守 `AGENTS.md` 的显式授权和 checkpoint 规则。Token 只通过 `glab auth login` 或环境变量管理,不写入仓库文件。");
58
- for (const relative of PROJECT_SCRIPT_FILES) await cp(path.join(HARNESS_ROOT, "scripts", relative), path.join(o.targetDir, "scripts", relative));
59
- for (const relative of ["lib", "vendor"]) await cp(path.join(HARNESS_ROOT, "scripts", relative), path.join(o.targetDir, "scripts", relative), { recursive: true });
60
- for (const relative of ["package.json", "skills-lock.json", ".nvmrc"]) {
61
- const source = path.join(HARNESS_ROOT, relative);
62
- if (await exists(source)) await cp(source, path.join(o.targetDir, relative));
63
- }
64
- await put(o.targetDir, "skills-lock.json", JSON.stringify({ version: 1, distribution: { mode: "sibling-directory", skillUtilsDir: "../skillUtils", required: true, compatibility: "skill-utils-v1", requiredToolVersion: "1.0.0" }, skills: { source: "../skillUtils/skills-lock.json", validation: "scripts/check-agent-environment.mjs" } }, null, 2));
65
- await put(o.targetDir, "package.json", JSON.stringify({ name: o.projectName, private: true, scripts: { "check-agent-environment": "node scripts/check-agent-environment.mjs", "verify-project": "node scripts/verify-lifecycle-registry", "verify-dto": "node scripts/verify-yss-dto-openapi-profile" } }, null, 2));
66
- await put(o.targetDir, "docs/process/analysis-project.yaml", `project_name: ${o.projectName}\nproject_type: data-analysis\nrepository_scope: external-repository\nimplementation_root: .\nruntime_java: 8\npersistence_profile: yss-mybatis-plus\nid_strategy: ASSIGN_ID\ndatabase:\n type: ${o.database}\n runtime_connection: true\n metadata_contract: docs/data-model\nquery:\n sql_mode: readonly\n allowed_statement_types: [select, with]\n parameter_binding_required: true\nmodules:\n${MODULES.map((module) => ` - ${module}`).join("\n")}\nworkflow:\n - requirement-and-data-contract\n - specification-freeze\n - vertical-slice-implementation\n - automated-gates\n - single-release-confirmation\n - runtime-monitoring`);
67
- await put(o.targetDir, "docs/process/implementation-repo-registry.yaml", `schema_version: 1\nprojects:\n - project_type: backend\n project_name: ${o.projectName}\n project_root: .\n git_root: .\n repository_scope: external-repository\n scaffold_status: initialized\n default_branch: main\n allowed_write_paths:\n - .\n verification_commands:\n - mvnw com.coveo:fmt-maven-plugin:2.9.1:check\n - mvnw validate\n - mvnw test\n - mvnw package\n expected_evidence_files:\n - docs/.scratch/<feature>/verification/yss-skill-execution-result.yaml\n - docs/.scratch/<feature>/verification/fresh-verification.md\n ci: not-configured\n rollback_point: initial-empty-repository`);
68
- await put(o.targetDir, "docs/.scratch/.gitkeep", "# Local lifecycle artifacts are created in feature subdirectories.");
69
- await put(o.targetDir, "docs/service/service-overview.md", `# ${o.projectName} 服务说明\n\nOwner: ${o.gitAuthor}\n\n## 职责\n\n提供数据分析服务能力;具体业务职责在产品服务登记和功能 Spec 中维护。\n\n## 非职责\n\n## 依赖服务\n`);
70
- await put(o.targetDir, "docs/service/module-map.md", `# ${o.projectName} Module 地图\n\n| Module | 职责 | 主要 Interface |\n|---|---|---|\n| server | Web 入口与运行配置 | HTTP Controller |\n| core | 领域与应用行为 | Domain/Application Interface |\n| client | 对外 DTO 与客户端契约 | Request/Response |\n| repository | 数据持久化 | Gateway/Repository |\n| adapter | 外部系统适配 | Adapter |\n| feign-client | 服务间调用客户端 | Feign Interface |\n`);
71
- await put(o.targetDir, "docs/service/current-capabilities.md", "# 当前能力\n\n本文件是发布时生成的派生阅读视图,普通功能开发不手工修改。功能详情位于 `docs/features/`,开发中功能位于 `docs/.scratch/`。\n");
72
- await put(o.targetDir, "docs/engineering/data-analysis-java-conventions.md", `# 数据分析 Java 工程规范\n\n变量、参数和字段必须使用业务含义名称。public 类、接口和方法必须有简体中文 Javadoc;Controller 类和公开接口方法使用初始化时读取的 Git user.name(本项目为 @author ${o.gitAuthor})和生成时的 @date,方法参数、返回值分别使用 @param、@return 完整说明。Javadoc 正文、@author、@date、@param、@return 必须分行;Mapping 注解、方法签名、方法体不得压缩在同一行。\n`);
73
- await put(o.targetDir, ".gitignore", "target/\n**/target/\n.idea/\n*.iml\n.env\n.env.*\n!.env.example\n.local/\n");
74
- }
@@ -1,36 +0,0 @@
1
- import test from "node:test";
2
- import assert from "node:assert/strict";
3
-
4
- import { renderProjectInstanceAgents } from "./envelope.mjs";
5
-
6
- test("按章节边界把模板维护路由转换为项目实例说明", () => {
7
- const source = `# AGENTS.md
8
-
9
- ## 3. 上文
10
-
11
- 保留。
12
-
13
- ## 4. \`template-source\` 模板维护路由
14
-
15
- 这里的自然语言允许持续精简,不应参与匹配。
16
-
17
- - 模板源命令也不应进入项目实例。
18
-
19
- ## 5. \`project-instance\` 产品研发路由
20
-
21
- 继续保留。
22
- `;
23
-
24
- const result = renderProjectInstanceAgents(source);
25
-
26
- assert.match(result, /## 4\. `template-source` 模板维护路由\n\n当前仓库是 `project-instance`,模板维护只在上游 Harness 执行。/);
27
- assert.doesNotMatch(result, /这里的自然语言允许持续精简/);
28
- assert.match(result, /## 5\. `project-instance` 产品研发路由\n\n继续保留/);
29
- });
30
-
31
- test("模板维护章节边界缺失时明确失败", () => {
32
- assert.throws(
33
- () => renderProjectInstanceAgents("# AGENTS.md\n\n## 5. `project-instance` 产品研发路由\n"),
34
- /无法定位 AGENTS\.md 的模板维护章节边界/
35
- );
36
- });
@@ -1,114 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { stat } from "node:fs/promises";
3
- import { spawnSync } from "node:child_process";
4
- import os from "node:os";
5
- import path from "node:path";
6
- import { fileURLToPath } from "node:url";
7
-
8
- export const MODULES = ["server", "core", "client", "repository", "adapter", "feign-client"];
9
- export const SKILL_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
10
- export const HARNESS_ROOT = findHarnessRoot();
11
- export const SHARED_SKILLS_ROOT = path.join(HARNESS_ROOT, ".agents", "skills");
12
- export const SKILL_UTILS_NAME = "skillUtils";
13
- export const SKILL_UTILS_DIRECTORIES = [
14
- ".agents/skills", ".codex/skills", ".cursor/skills", ".pi/skills"
15
- ];
16
- export const PROJECT_SCRIPT_FILES = [
17
- "check-agent-environment.mjs", "implementation-path-policy", "repository-mode", "repository-scope-policy",
18
- "generate-lifecycle-artifacts", "node-generate-lifecycle-artifacts.mjs", "node-verify-lifecycle-registry.mjs",
19
- "verify-lifecycle-registry", "verify-lifecycle-checkpoint", "verify-frontend-implementation-evidence",
20
- "verify-yss-dto-openapi-profile"
21
- ];
22
-
23
- export function findHarnessRoot() {
24
- let candidate = SKILL_ROOT;
25
- while (true) {
26
- if (existsSync(path.join(candidate, ".agents", "skills")) && existsSync(path.join(candidate, "AGENTS.md"))) return candidate;
27
- const parent = path.dirname(candidate);
28
- if (parent === candidate) break;
29
- candidate = parent;
30
- }
31
- throw new Error(`未找到插件 Harness 根目录: ${SKILL_ROOT}`);
32
- }
33
-
34
- export function fail(message) { throw new Error(message); }
35
-
36
- export function parseArgs(argv) {
37
- const options = { database: "oracle", withMock: false, dryRun: false };
38
- const fields = {
39
- "--project-name": "projectName", "--base-package": "basePackage", "--target-dir": "targetDir",
40
- "--database": "database", "--maven-settings": "mavenSettings"
41
- };
42
- for (let index = 0; index < argv.length; index += 1) {
43
- let token = argv[index];
44
- if (token === "--with-mock") { options.withMock = true; continue; }
45
- if (token === "--dry-run") { options.dryRun = true; continue; }
46
- if (token === "--help" || token === "-h") { options.help = true; continue; }
47
- const equals = token.indexOf("=");
48
- let value = equals >= 0 ? token.slice(equals + 1) : undefined;
49
- if (equals >= 0) token = token.slice(0, equals);
50
- if (!fields[token]) fail(`不支持的参数: ${token}`);
51
- if (value === undefined) value = argv[++index];
52
- if (!value || value.startsWith("--")) fail(`参数 ${token} 缺少值`);
53
- options[fields[token]] = value;
54
- }
55
- if (options.help) return options;
56
- if (!options.projectName || !/^[a-z][a-z0-9-]*$/.test(options.projectName)) fail("--project-name 必须是小写连字符名称");
57
- if (!options.basePackage || !/^[a-zA-Z_$][\w$]*(\.[a-zA-Z_$][\w$]*)+$/.test(options.basePackage)) fail("--base-package 不是合法 Java 包名");
58
- if (!options.targetDir) fail("必须提供 --target-dir");
59
- if (!["oracle", "oceanbase-oracle"].includes(options.database)) fail("--database 只支持 oracle 或 oceanbase-oracle");
60
- options.targetDir = path.resolve(options.targetDir);
61
- if (options.mavenSettings) options.mavenSettings = path.resolve(options.mavenSettings);
62
- return options;
63
- }
64
-
65
- export async function exists(target) {
66
- try { await stat(target); return true; } catch (error) {
67
- if (error.code === "ENOENT") return false;
68
- throw error;
69
- }
70
- }
71
-
72
- export function xml(value) { return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"); }
73
- export function packagePath(name) { return name.replaceAll(".", "/"); }
74
- export function generatedAtLocal() {
75
- const now = new Date();
76
- const pad = (value) => String(value).padStart(2, "0");
77
- return `${now.getFullYear()}/${pad(now.getMonth() + 1)}/${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}`;
78
- }
79
-
80
- export function runGit(args, cwd) { return spawnSync("git", args, { cwd, encoding: "utf8" }); }
81
- export function assertGitAvailable() {
82
- const result = runGit(["--version"], process.cwd());
83
- if (result.status !== 0) fail("未检测到可用的 Git,无法初始化独立项目仓库");
84
- }
85
- export function resolveGitAuthor() {
86
- const result = runGit(["config", "--get", "user.name"], process.cwd());
87
- const author = result.status === 0 ? result.stdout.trim() : "";
88
- if (!author) fail("未配置 Git user.name;请先执行 git config --global user.name \"你的姓名\"");
89
- if (/[\r\n]|\*\//.test(author)) fail("Git user.name 包含不能安全写入 Javadoc 的字符");
90
- return author;
91
- }
92
- export function initializeGit(root) {
93
- let result = runGit(["init", "--initial-branch=main"], root);
94
- if (result.status !== 0) {
95
- result = runGit(["init"], root);
96
- if (result.status === 0) result = runGit(["branch", "-M", "main"], root);
97
- }
98
- if (result.status !== 0) fail(`Git 仓库初始化失败: ${(result.stderr || result.stdout).trim()}`);
99
- }
100
-
101
- export async function resolveMavenSettings(options) {
102
- if (options.mavenSettings) {
103
- if (!await exists(options.mavenSettings)) fail(`Maven settings 不存在: ${options.mavenSettings}`);
104
- return { path: options.mavenSettings, source: "explicit", available: true };
105
- }
106
- if (process.env.YSS_MAVEN_SETTINGS) {
107
- const environmentPath = path.resolve(process.env.YSS_MAVEN_SETTINGS);
108
- if (!await exists(environmentPath)) fail(`Maven settings 不存在: ${environmentPath}`);
109
- return { path: environmentPath, source: "environment", available: true };
110
- }
111
- const userSettings = path.join(os.homedir(), ".m2", "settings.xml");
112
- if (await exists(userSettings)) return { path: userSettings, source: "user-home", available: true };
113
- return { path: null, source: "maven-default", available: false };
114
- }
@@ -1,90 +0,0 @@
1
- import { cp, mkdir, mkdtemp, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
-
4
- import {
5
- HARNESS_ROOT,
6
- SKILL_ROOT,
7
- SKILL_UTILS_DIRECTORIES,
8
- SKILL_UTILS_NAME,
9
- fail,
10
- exists
11
- } from "./runtime.mjs";
12
-
13
- const BOOTSTRAP_ONLY_SKILLS = ["yss-mvc-scaffold-generator"];
14
-
15
- async function distributedSkillLock() {
16
- const source = path.join(HARNESS_ROOT, "skills-lock.json");
17
- if (!await exists(source)) fail(`技能工具包源锁文件不存在: ${source}`);
18
- const lock = JSON.parse(await readFile(source, "utf8"));
19
- for (const name of BOOTSTRAP_ONLY_SKILLS) {
20
- delete lock.skills?.shared?.[name];
21
- for (const platform of Object.values(lock.skills?.platform ?? {})) delete platform?.[name];
22
- }
23
- return `${JSON.stringify(lock, null, 2)}\n`;
24
- }
25
-
26
- export async function assertEmpty(target) {
27
- if (!await exists(target)) return;
28
- if ((await readdir(target)).length) fail(`目标目录非空,拒绝生成: ${target}`);
29
- }
30
-
31
- export async function put(root, relative, content, author) {
32
- const target = path.join(root, relative);
33
- const rendered = author ? content.replaceAll("@author system", `@author ${author}`) : content;
34
- await mkdir(path.dirname(target), { recursive: true });
35
- await writeFile(target, `${rendered.trim()}\n`, "utf8");
36
- }
37
-
38
- export async function renderAsset(name, replacements) {
39
- let content = await readFile(path.join(SKILL_ROOT, "assets", name), "utf8");
40
- for (const [token, value] of Object.entries(replacements)) content = content.replaceAll(`{{${token}}}`, value);
41
- return content;
42
- }
43
-
44
- async function populateSkillUtils(destination) {
45
- await mkdir(destination, { recursive: true });
46
- for (const relative of SKILL_UTILS_DIRECTORIES) {
47
- const source = path.join(HARNESS_ROOT, relative);
48
- if (!await exists(source)) fail(`技能工具包源目录不存在: ${source}`);
49
- await cp(source, path.join(destination, relative), { recursive: true });
50
- }
51
- for (const root of SKILL_UTILS_DIRECTORIES) {
52
- for (const name of BOOTSTRAP_ONLY_SKILLS) {
53
- await rm(path.join(destination, root, name), { recursive: true, force: true });
54
- }
55
- }
56
- await writeFile(path.join(destination, "skills-lock.json"), await distributedSkillLock(), "utf8");
57
- const publicSkills = path.join(HARNESS_ROOT, "yss-public-skills.json");
58
- if (!await exists(publicSkills)) fail(`技能工具包源文件不存在: ${publicSkills}`);
59
- await cp(publicSkills, path.join(destination, "yss-public-skills.json"));
60
- await writeFile(path.join(destination, "skill-utils.yaml"), `schema_version: 1\nkind: yss-skill-utils\ntool_version: 1.0.0\ncompatibility: skill-utils-v1\nsource: ${path.basename(HARNESS_ROOT)}\ncanonical_root: .agents/skills\nprojection_roots:\n - .codex/skills\n - .cursor/skills\n - .pi/skills\nexcluded_skills:\n - yss-mvc-scaffold-generator\n`, "utf8");
61
- }
62
-
63
- export async function ensureSkillUtils(targetDir, { apply = true } = {}) {
64
- const parent = path.dirname(targetDir);
65
- const skillUtils = path.join(parent, SKILL_UTILS_NAME);
66
- const marker = path.join(skillUtils, "skill-utils.yaml");
67
- const expectedLock = await distributedSkillLock();
68
- if (await exists(skillUtils)) {
69
- if (!await exists(marker)) fail(`技能工具包目录已存在但不是受支持的 skillUtils: ${skillUtils}`);
70
- const installedLock = path.join(skillUtils, "skills-lock.json");
71
- const current = await exists(installedLock) ? await readFile(installedLock, "utf8") : "";
72
- if (current === expectedLock) return { path: skillUtils, created: false, refreshed: false, backup: null };
73
- if (!apply) return { path: skillUtils, created: false, refreshed: true, backup: null };
74
- const staging = await mkdtemp(path.join(parent, ".skillUtils.refresh-"));
75
- const backup = path.join(parent, `.skillUtils.backup-${Date.now()}`);
76
- try {
77
- await populateSkillUtils(staging);
78
- await rename(skillUtils, backup);
79
- try { await rename(staging, skillUtils); }
80
- catch (error) { await rename(backup, skillUtils); throw error; }
81
- } catch (error) {
82
- if (await exists(staging)) await rm(staging, { recursive: true, force: true });
83
- throw error;
84
- }
85
- return { path: skillUtils, created: false, refreshed: true, backup };
86
- }
87
- if (!apply) return { path: skillUtils, created: true, refreshed: false, backup: null };
88
- await populateSkillUtils(skillUtils);
89
- return { path: skillUtils, created: true, refreshed: false, backup: null };
90
- }
@@ -1,54 +0,0 @@
1
- import { generatedAtLocal, packagePath, xml } from "./runtime.mjs";
2
-
3
- export function parentPom(o) {
4
- const modules = o.modules.map((module) => ` <module>${module}</module>`).join("\n");
5
- return `<?xml version="1.0" encoding="UTF-8"?>
6
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
7
- <modelVersion>4.0.0</modelVersion><parent><groupId>com.yss.cloud</groupId><artifactId>yss-cloud-microservice</artifactId><version>2.0.0-SNAPSHOT</version><relativePath/></parent>
8
- <groupId>${xml(o.basePackage)}</groupId><artifactId>${o.projectName}</artifactId><version>2.0.0-SNAPSHOT</version><packaging>pom</packaging>
9
- <properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><yss-components.version>2.0.0-SNAPSHOT</yss-components.version></properties>
10
- <modules>\n${modules}\n </modules>
11
- <dependencyManagement><dependencies><dependency><groupId>com.yss.cloud</groupId><artifactId>yss-components-bom</artifactId><version>\${yss-components.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
12
- <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId></plugin><plugin><groupId>com.coveo</groupId><artifactId>fmt-maven-plugin</artifactId><version>2.9.1</version></plugin></plugins></build>
13
- </project>`;
14
- }
15
-
16
- export function modulePom(o, module) {
17
- const artifact = (name) => `<dependency><groupId>${xml(o.basePackage)}</groupId><artifactId>${o.projectName}-${name}</artifactId><version>\${project.version}</version></dependency>`;
18
- const yss = (name) => `<dependency><groupId>com.yss.cloud</groupId><artifactId>${name}</artifactId></dependency>`;
19
- const databaseDriver = o.database === "oceanbase-oracle" ? `<dependency><groupId>com.oceanbase</groupId><artifactId>oceanbase-client</artifactId><version>2.4.3</version></dependency>` : `<dependency><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc8</artifactId><version>19.8.0.0</version></dependency>`;
20
- const dependencies = {
21
- client: `${yss("yss-component-dto")}\n${yss("yss-component-validation-jsr303")}\n<dependency><groupId>com.yss.cloud</groupId><artifactId>yss-component-excel-mvc</artifactId><version>\${yss-components.version}</version></dependency>\n<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>`,
22
- core: `${artifact("client")}\n${yss("yss-component-exception")}\n<dependency><groupId>com.yss.datamiddle</groupId><artifactId>yss-component-userinfo-starter</artifactId></dependency>\n<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId></dependency>`,
23
- repository: `${artifact("core")}\n${artifact("client")}\n${yss("yss-component-mybatis-starter")}\n${yss("yss-component-distributed-id")}\n${databaseDriver}`,
24
- adapter: `${artifact("core")}\n${artifact("client")}\n<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency>\n<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId></dependency>`,
25
- "feign-client": `${artifact("client")}\n<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId></dependency>`,
26
- server: `<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>\n<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>\n${artifact("repository")}\n${artifact("adapter")}\n${artifact("client")}\n${yss("yss-component-audit-log")}\n${yss("yss-component-cache-starter")}\n<dependency><groupId>com.yss.cloud</groupId><artifactId>yss-component-excel-mvc</artifactId><version>\${yss-components.version}</version></dependency>\n${yss("yss-component-distributed-id")}\n<dependency><groupId>com.yss.datamiddle</groupId><artifactId>yss-component-userinfo-starter</artifactId></dependency>\n<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>\n<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>\n<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>`
27
- }[module];
28
- const profiles = module === "server" ? `<profiles><profile><id>nacos</id><activation><activeByDefault>true</activeByDefault></activation><properties><app.env>dev</app.env><app.profiles>nacos</app.profiles></properties><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies></profile></profiles>` : "";
29
- const plugin = module === "server" ? `<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.ly.smart-doc</groupId><artifactId>smart-doc-maven-plugin</artifactId><version>3.0.5</version><configuration><configFile>src/main/resources/smart-doc.json</configFile><includes><include>com.yss.cloud:yss-component-dto</include><include>com.yss.cloud:yss-component-exception</include><include>com.yss.cloud:yss-component-cache-starter</include><include>${xml(o.basePackage)}:${o.projectName}-client</include><include>${xml(o.basePackage)}:${o.projectName}-core</include><include>${xml(o.basePackage)}:${o.projectName}-repository</include></includes><projectName>\${project.artifactId}</projectName></configuration></plugin></plugins></build>` : "";
30
- return `<?xml version="1.0" encoding="UTF-8"?>
31
- <project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><parent><groupId>${xml(o.basePackage)}</groupId><artifactId>${o.projectName}</artifactId><version>2.0.0-SNAPSHOT</version></parent><artifactId>${o.projectName}-${module}</artifactId><dependencies>${dependencies}</dependencies>${profiles}${plugin}</project>`;
32
- }
33
-
34
- export async function writeJavaSources(o, put) {
35
- const root = o.targetDir;
36
- const pkg = o.basePackage;
37
- const pp = packagePath(pkg);
38
- const generatedAt = generatedAtLocal();
39
- await put(root, `client/src/main/java/${pp}/client/query/AnalysisQuery.java`, `package ${pkg}.client.query;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/** 数据分析分页查询。 */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class AnalysisQuery {\n private int pageNo;\n private int pageSize;\n private String sql;\n}`, o.gitAuthor);
40
- await put(root, `client/src/main/java/${pp}/client/response/AnalysisResult.java`, `package ${pkg}.client.response;\n\nimport java.util.List;\nimport java.util.Map;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/** 数据分析分页结果。 */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class AnalysisResult {\n private int pageNo;\n private int pageSize;\n private long total;\n private List<Map<String, Object>> rows;\n private String source;\n}`, o.gitAuthor);
41
- await put(root, `core/src/main/java/${pp}/core/gateway/AnalysisQueryExecutor.java`, `package ${pkg}.core.gateway;\n\nimport ${pkg}.client.query.AnalysisQuery;\nimport ${pkg}.client.response.AnalysisResult;\n\n/** 数据分析执行接口。 */\npublic interface AnalysisQueryExecutor {\n AnalysisResult execute(AnalysisQuery query);\n}`, o.gitAuthor);
42
- await put(root, `core/src/main/java/${pp}/core/service/AnalysisQueryService.java`, `package ${pkg}.core.service;\n\nimport ${pkg}.client.query.AnalysisQuery;\nimport ${pkg}.client.response.AnalysisResult;\nimport ${pkg}.core.gateway.AnalysisQueryExecutor;\n\n/** 数据分析查询服务。 */\npublic final class AnalysisQueryService {\n private final AnalysisQueryExecutor analysisQueryExecutor;\n\n public AnalysisQueryService(AnalysisQueryExecutor analysisQueryExecutor) {\n this.analysisQueryExecutor = analysisQueryExecutor;\n }\n\n public AnalysisResult execute(AnalysisQuery query) {\n return analysisQueryExecutor.execute(query);\n }\n}`, o.gitAuthor);
43
- await put(root, `adapter/src/main/java/${pp}/adapter/oracle/OracleAnalysisQueryExecutor.java`, `package ${pkg}.adapter.oracle;\n\nimport ${pkg}.client.query.AnalysisQuery;\nimport ${pkg}.client.response.AnalysisResult;\nimport ${pkg}.core.gateway.AnalysisQueryExecutor;\n\n/** Oracle 数据分析执行器占位实现。 */\npublic final class OracleAnalysisQueryExecutor implements AnalysisQueryExecutor {\n @Override\n public AnalysisResult execute(AnalysisQuery query) {\n throw new UnsupportedOperationException("Oracle execution requires an approved vertical slice");\n }\n}`, o.gitAuthor);
44
- if (o.withMock) await put(root, `adapter/src/main/java/${pp}/adapter/mock/MockAnalysisQueryExecutor.java`, `package ${pkg}.adapter.mock;\n\nimport ${pkg}.client.query.AnalysisQuery;\nimport ${pkg}.client.response.AnalysisResult;\nimport ${pkg}.core.gateway.AnalysisQueryExecutor;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/** 本地联调数据分析执行器。 */\npublic final class MockAnalysisQueryExecutor implements AnalysisQueryExecutor {\n @Override\n public AnalysisResult execute(AnalysisQuery query) {\n Map<String, Object> row = new HashMap<String, Object>();\n row.put("metric", "mock-value");\n row.put("value", 100);\n List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();\n rows.add(row);\n return new AnalysisResult(query.getPageNo(), query.getPageSize(), 1, rows, "mock");\n }\n}`, o.gitAuthor);
45
- await put(root, `server/src/main/java/${pp}/Application.java`, `package ${pkg};\n\nimport com.yss.cloud.audit.EnableAuditLog;\nimport com.yss.cloud.cache.EnableYssCloudRedisCache;\nimport com.yss.cloud.excel.annotation.EnableExcelControl;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.openfeign.EnableFeignClients;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.FilterType;\n\n/** 数据分析服务启动入口。 */\n@EnableYssCloudRedisCache\n@EnableExcelControl\n@EnableAuditLog\n@EnableFeignClients\n@ComponentScan(\n value = {"${pkg}", "com.yss.cloud"},\n excludeFilters = @ComponentScan.Filter(\n type = FilterType.REGEX,\n pattern = {"com\\\\.yss\\\\.cloud\\\\.mybatis\\\\..*", "com\\\\.yss\\\\.cloud\\\\.sankuai\\\\..*"}))\n@SpringBootApplication\npublic class Application {\n public static void main(String[] args) {\n SpringApplication.run(Application.class, args);\n }\n}`, o.gitAuthor);
46
- await put(root, `server/src/main/java/${pp}/server/configuration/DatabaseInfrastructureConfiguration.java`, `package ${pkg}.server.configuration;\n\nimport com.yss.cloud.EnableDistributedId;\nimport com.yss.cloud.mybatis.config.MapperConfiguration;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\nimport org.springframework.context.annotation.Profile;\n\n/** 数据库及分布式 ID 基础设施配置。 */\n@Configuration\n@Profile("!mock")\n@EnableDistributedId\n@Import(MapperConfiguration.class)\npublic class DatabaseInfrastructureConfiguration {\n}`, o.gitAuthor);
47
- const mockImport = o.withMock ? `import ${pkg}.adapter.mock.MockAnalysisQueryExecutor;\n` : "";
48
- const mockBean = o.withMock ? `\n @Bean\n @Profile("mock")\n AnalysisQueryExecutor mockAnalysisQueryExecutor() {\n return new MockAnalysisQueryExecutor();\n }\n` : "";
49
- const databaseRuntimeProfile = o.database === "oceanbase-oracle" ? "oceanbase-oracle" : "oracle";
50
- const oracleProfile = o.withMock ? `${databaseRuntimeProfile} & !mock` : databaseRuntimeProfile;
51
- await put(root, `server/src/main/java/${pp}/server/configuration/AnalysisConfiguration.java`, `package ${pkg}.server.configuration;\n\n${mockImport}import ${pkg}.adapter.oracle.OracleAnalysisQueryExecutor;\nimport ${pkg}.core.gateway.AnalysisQueryExecutor;\nimport ${pkg}.core.service.AnalysisQueryService;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Profile;\n\n/** 数据分析服务 Bean 配置。 */\n@Configuration\npublic class AnalysisConfiguration {${mockBean}\n @Bean\n @Profile("${oracleProfile}")\n AnalysisQueryExecutor oracleAnalysisQueryExecutor() {\n return new OracleAnalysisQueryExecutor();\n }\n\n @Bean\n AnalysisQueryService analysisQueryService(AnalysisQueryExecutor analysisQueryExecutor) {\n return new AnalysisQueryService(analysisQueryExecutor);\n }\n}`, o.gitAuthor);
52
- await put(root, `server/src/main/java/${pp}/server/controller/AnalysisController.java`, `package ${pkg}.server.controller;\n\nimport ${pkg}.client.query.AnalysisQuery;\nimport ${pkg}.client.response.AnalysisResult;\nimport ${pkg}.core.service.AnalysisQueryService;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * 数据分析查询接口。\n *\n * @author system\n * @date ${generatedAt}\n */\n@RestController\n@RequestMapping("/api/analysis")\npublic class AnalysisController {\n private final AnalysisQueryService analysisQueryService;\n\n public AnalysisController(AnalysisQueryService analysisQueryService) {\n this.analysisQueryService = analysisQueryService;\n }\n\n /**\n * 分页查询数据分析结果。\n *\n * @author system\n * @date ${generatedAt}\n * @param query 数据分析分页查询条件\n * @return 数据分析分页结果\n */\n @PostMapping("/query")\n public AnalysisResult query(@RequestBody AnalysisQuery query) {\n return analysisQueryService.execute(query);\n }\n}`, o.gitAuthor);
53
- if (o.withMock) await put(root, `server/src/test/java/${pp}/server/controller/AnalysisControllerTest.java`, `package ${pkg}.server.controller;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.ActiveProfiles;\nimport org.springframework.test.web.servlet.MockMvc;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@SpringBootTest\n@AutoConfigureMockMvc\n@ActiveProfiles("mock")\nclass AnalysisControllerTest {\n @Autowired private MockMvc mockMvc;\n\n @Test\n void returnsMockAnalysis() throws Exception {\n mockMvc.perform(post("/api/analysis/query").contentType("application/json").content("{\\\"pageNo\\\":1,\\\"pageSize\\\":10}"))\n .andExpect(status().isOk())\n .andExpect(jsonPath("$.source").value("mock"));\n }\n}`, o.gitAuthor);
54
- }
@@ -1,103 +0,0 @@
1
- #!/usr/bin/env node
2
- import { readFile, stat } from "node:fs/promises";
3
- import { spawnSync } from "node:child_process";
4
- import path from "node:path";
5
-
6
- const modules = ["server", "core", "client", "repository", "adapter", "feign-client"];
7
- const args = process.argv.slice(2); const index = args.indexOf("--project-root");
8
- if (index < 0 || !args[index + 1]) { console.error("必须提供 --project-root"); process.exit(1); }
9
- const root = path.resolve(args[index + 1]);
10
- async function required(relative) { try { await stat(path.join(root, relative)); } catch { throw new Error(`缺少必需路径: ${relative}`); } }
11
- try {
12
- await Promise.all([".git", ".gitignore", ".artifact-workspace.yaml", "yss-project.yaml", "AGENTS.md", "CONTEXT.md", "skills-lock.json", "scripts/check-agent-environment.mjs", "docs/service/service-overview.md", "docs/service/module-map.md", "docs/service/current-capabilities.md", "docs/agents/issue-tracker.md", "docs/process/lifecycle-registry.yaml", "docs/process/harness-process-tailoring.md", "docs/process/implementation-repo-registry.yaml", "docs/templates/approval-record-template.yaml", "docs/templates/implementation-routing-template.md", "docs/templates/verification-record-template.md", "docs/templates/vertical-slice-ticket-template.md", ".yss/scaffold-generation.json"].map(required));
13
- const manifest = JSON.parse(await readFile(path.join(root, ".yss/scaffold-generation.json"), "utf8"));
14
- if (manifest.skill !== "yss-mvc-scaffold-generator" || !["oracle", "oceanbase-oracle"].includes(manifest.database)) throw new Error("生成清单与 YSS MVC 脚手架合同不一致");
15
- if (manifest.runtime_java !== "8" || manifest.project_version !== "2.0.0-SNAPSHOT" || manifest.persistence_profile !== "yss-mybatis-plus") throw new Error("Java 8/YSS MyBatis-Plus 技术基线不正确");
16
- const skillUtils = path.resolve(root, manifest.skill_utils_dir);
17
- await Promise.all(["skill-utils.yaml", "skills-lock.json", ".agents/skills/yss-product-lifecycle/SKILL.md", ".agents/skills/yss-implementation-contract-compiler/SKILL.md"].map((relative) => required(path.join(manifest.skill_utils_dir, relative))));
18
- for (const projection of [".agents", ".codex", ".cursor", ".pi"]) {
19
- const nestedGenerator = path.join(skillUtils, projection, "skills", "yss-mvc-scaffold-generator");
20
- if (await stat(nestedGenerator).then(() => true).catch(() => false)) throw new Error(`skillUtils 不应分发创建期生成器: ${projection}/skills/yss-mvc-scaffold-generator`);
21
- }
22
- for (const forbidden of [".agents", ".codex", ".cursor", ".pi"]) if (await stat(path.join(root, forbidden)).then(() => true).catch(() => false)) throw new Error(`项目不应携带技能投影目录: ${forbidden}`);
23
- if (JSON.stringify(manifest.modules) !== JSON.stringify(modules)) throw new Error("模块集合或顺序不正确");
24
- const backendRoot = path.join(root, manifest.backend_root || "");
25
- await Promise.all(["pom.xml", "mvnw", "mvnw.cmd", ...modules.map((item) => `${item}/pom.xml`)].map((relative) => required(path.join(manifest.backend_root || "", relative))));
26
- const packagePath = manifest.base_package.replaceAll(".", "/");
27
- await Promise.all([
28
- `server/src/main/java/${packagePath}/Application.java`,
29
- `server/src/main/java/${packagePath}/server/controller/AnalysisController.java`,
30
- `server/src/main/java/${packagePath}/server/configuration/AnalysisConfiguration.java`,
31
- `server/src/main/java/${packagePath}/server/configuration/DatabaseInfrastructureConfiguration.java`,
32
- `core/src/main/java/${packagePath}/core/gateway/AnalysisQueryExecutor.java`,
33
- `core/src/main/java/${packagePath}/core/service/AnalysisQueryService.java`,
34
- `client/src/main/java/${packagePath}/client/query/AnalysisQuery.java`,
35
- `client/src/main/java/${packagePath}/client/response/AnalysisResult.java`,
36
- `adapter/src/main/java/${packagePath}/adapter/oracle/OracleAnalysisQueryExecutor.java`,
37
- ].map(required));
38
- const all = await readFile(path.join(backendRoot, "pom.xml"), "utf8");
39
- for (const module of modules) if (!all.includes(`<module>${module}</module>`)) throw new Error(`父 POM 未声明模块: ${module}`);
40
- for (const expected of ["yss-cloud-microservice", "yss-components-bom", "<java.version>1.8</java.version>", "<version>2.0.0-SNAPSHOT</version>"]) if (!all.includes(expected)) throw new Error(`父 POM 缺少技术基线: ${expected}`);
41
- await Promise.all(["server/src/main/resources/bootstrap.yml", "server/src/main/resources/bootstrap-nacos.yml", "server/src/main/resources/application-mock.yml", `server/src/main/resources/application-${manifest.database}.yml`, "server/src/main/resources/logback-spring.xml", "server/src/main/resources/smart-doc.json"].map(required));
42
- if (manifest.mock_enabled) await required("server/src/main/resources/bootstrap-mock.yml");
43
- const bootstrap = await readFile(path.join(backendRoot, "server/src/main/resources/bootstrap.yml"), "utf8");
44
- const databaseProfile = manifest.database === "oceanbase-oracle" ? "oceanbase-oracle" : "oracle";
45
- const expectedProfiles = `active: \${app.env:dev},datasource,nacos,${databaseProfile}${manifest.mock_enabled ? ",mock" : ""}`;
46
- if (!bootstrap.includes(expectedProfiles) || /mock,\s*$/m.test(bootstrap)) throw new Error("Bootstrap profile 顺序或格式不正确");
47
- const bootstrapNacos = await readFile(path.join(backendRoot, "server/src/main/resources/bootstrap-nacos.yml"), "utf8");
48
- for (const expected of ["${nacosserver:192.168.165.58:8848}", "${nacos_group:yss-dm}", "enabled: true"]) if (!bootstrapNacos.includes(expected)) throw new Error(`Nacos Bootstrap 配置不完整: ${expected}`);
49
- if (manifest.mock_enabled) {
50
- const bootstrapMock = await readFile(path.join(backendRoot, "server/src/main/resources/bootstrap-mock.yml"), "utf8");
51
- if (!/discovery:\s*\n\s*enabled: false/.test(bootstrapMock) || !/config:\s*\n\s*enabled: false/.test(bootstrapMock)) throw new Error("Mock Bootstrap 未禁用 Nacos Discovery/Config");
52
- const applicationMock = await readFile(path.join(backendRoot, "server/src/main/resources/application-mock.yml"), "utf8");
53
- if (!/leaf:\s*\n\s*leafSegmentEnable: false\s*\n\s*leafSnowflakeEnable: false/.test(applicationMock)) throw new Error("Mock Profile 未禁用 Leaf Segment/Snowflake");
54
- }
55
- const serverPom = await readFile(path.join(backendRoot, "server/pom.xml"), "utf8");
56
- for (const expected of ["spring-boot-maven-plugin", "smart-doc-maven-plugin", "<id>nacos</id>", "<activeByDefault>true</activeByDefault>", "<app.env>dev</app.env>", "<app.profiles>nacos</app.profiles>", `${manifest.project_name}-client`, `${manifest.project_name}-core`, `${manifest.project_name}-repository`]) {
57
- if (!serverPom.includes(expected)) throw new Error(`server POM 缺少标准配置: ${expected}`);
58
- }
59
- const smartDocPlugin = serverPom.match(/<plugin>(?:(?!<\/plugin>)[\s\S])*?<artifactId>smart-doc-maven-plugin<\/artifactId>(?:(?!<\/plugin>)[\s\S])*?<\/plugin>/)?.[0];
60
- if (!smartDocPlugin) throw new Error("server POM 缺少 Smart-doc 人工文档能力");
61
- if (smartDocPlugin.includes("<executions>")) throw new Error("Smart-doc 不得绑定 Maven execution");
62
- const smartDoc = await readFile(path.join(backendRoot, "server/src/main/resources/smart-doc.json"), "utf8");
63
- for (const expected of [`"projectName": "${manifest.project_name}"`, `"packageFilters": "${manifest.base_package}.server.controller.*"`, '"showAuthor": true', '"appToken": ""']) {
64
- if (!smartDoc.includes(expected)) throw new Error(`Smart-doc 配置不完整: ${expected}`);
65
- }
66
- if (/43fd1d4bc1c743c1b83bf4843e8167bf|192\.168\./.test(smartDoc)) throw new Error("Smart-doc 不得携带示例项目的内网地址或 Token");
67
- const logback = await readFile(path.join(backendRoot, "server/src/main/resources/logback-spring.xml"), "utf8");
68
- for (const expected of ['springProfile name="dev,mock"', 'springProfile name="uat,pro,oracle,oceanbase-oracle"', manifest.base_package, "RollingFileAppender", "<maxFileSize>100MB</maxFileSize>", "<maxHistory>7</maxHistory>"]) {
69
- if (!logback.includes(expected)) throw new Error(`Logback 配置不完整: ${expected}`);
70
- }
71
- const controller = await readFile(path.join(backendRoot, `server/src/main/java/${packagePath}/server/controller/AnalysisController.java`), "utf8");
72
- for (const expected of [`@author ${manifest.javadoc_author}`, "@date ", "@param query", "@return "]) if (!controller.includes(expected)) throw new Error(`Controller Javadoc 不完整: ${expected}`);
73
- const application = await readFile(path.join(backendRoot, `server/src/main/java/${packagePath}/Application.java`), "utf8");
74
- if (application.includes("@EnableDistributedId")) throw new Error("启动类不得在 Mock profile 无条件启用分布式 ID");
75
- const databaseInfrastructure = await readFile(path.join(backendRoot, `server/src/main/java/${packagePath}/server/configuration/DatabaseInfrastructureConfiguration.java`), "utf8");
76
- for (const expected of ['@Profile("!mock")', "@EnableDistributedId", "@Import(MapperConfiguration.class)"]) if (!databaseInfrastructure.includes(expected)) throw new Error(`数据库基础设施 Profile 隔离不完整: ${expected}`);
77
- const configuration = await readFile(path.join(backendRoot, `server/src/main/java/${packagePath}/server/configuration/AnalysisConfiguration.java`), "utf8");
78
- const expectedOracleProfile = manifest.mock_enabled ? `@Profile("${databaseProfile} & !mock")` : `@Profile("${databaseProfile}")`;
79
- if (!configuration.includes(expectedOracleProfile)) throw new Error("Oracle/Mock 执行器 Profile 隔离不正确");
80
- const identity = await readFile(path.join(root, "yss-project.yaml"), "utf8");
81
- if (!identity.includes("repository_mode: project-instance")) throw new Error("项目身份不是 project-instance");
82
- const registry = await readFile(path.join(root, "docs/process/implementation-repo-registry.yaml"), "utf8");
83
- if (/smart-doc(?:-maven-plugin[^\n]*:openapi|-verification\.md|:html|:torna-rest)/i.test(registry)) throw new Error("AI Coding 默认验证不得执行 Smart-doc 或要求其证据");
84
- const expectedRegistryLines = [
85
- ` project_name: ${manifest.project_name}`,
86
- ` project_root: ${manifest.backend_root}`,
87
- " git_root: .",
88
- " repository_scope: external-repository",
89
- " - .",
90
- ];
91
- for (const line of expectedRegistryLines) {
92
- if (!registry.split(/\r?\n/).includes(line)) throw new Error(`实现仓登记与生成清单不一致: ${line.trim()}`);
93
- }
94
- const gitRoot = spawnSync("git", ["-C", root, "rev-parse", "--show-toplevel"], { encoding: "utf8" });
95
- if (gitRoot.status !== 0 || path.resolve(gitRoot.stdout.trim()).toLowerCase() !== root.toLowerCase()) throw new Error("目标目录不是独立 Git 仓库根");
96
- const branch = spawnSync("git", ["-C", root, "branch", "--show-current"], { encoding: "utf8" });
97
- if (branch.status !== 0 || branch.stdout.trim() !== "main") throw new Error("独立 Git 仓库默认分支不是 main");
98
- const commits = spawnSync("git", ["-C", root, "rev-list", "--all", "--count"], { encoding: "utf8" });
99
- if (commits.status !== 0 || commits.stdout.trim() !== "0") throw new Error("生成器不得创建 Git commit");
100
- const remotes = spawnSync("git", ["-C", root, "remote"], { encoding: "utf8" });
101
- if (remotes.status !== 0 || remotes.stdout.trim()) throw new Error("生成器不得配置 Git remote");
102
- console.log(`项目结构验证通过:${manifest.project_name},${modules.length} 个模块,mock=${manifest.mock_enabled}`);
103
- } catch (error) { console.error(error.message); process.exitCode = 1; }
@@ -1,35 +0,0 @@
1
- # 战术设计子项目用户手册
2
-
3
- 本入口保留给既有读者。“战术设计子项目”通过 `yss-technical-design` 统一承接技术设计,整体主控仍为 `yss-product-lifecycle`。先确认后端项目采用 `domain-driven` 或 `layered-mvc`,再分别调用 `yss-tactical-design` 或 `yss-mvc-design`;DDD 是选项,不是默认要求。技术设计不代替 API Freeze 或 Slice Contract 批准。
4
-
5
- ## 输入与开始
6
-
7
- 先核对本仓身份、profile、根 CONTEXT.md、适用的战略交接、需求及批准证据。已有战略包时,导入快照后完成目标词汇对账,再逐项登记源规则/关键场景的承接;缺失、冲突或过期先回交,不能猜测业务规则。
8
-
9
- ```text
10
- 请按本仓生命周期检查“设备领用”当前战略输入及目标词汇对账。
11
- 使用 yss-technical-design 核对已确认的项目架构并起草技术设计,
12
- DDD 调用 yss-tactical-design,传统 MVC 调用 yss-mvc-design;
13
- 解释设备占用的竞争、状态转换和一致性边界,并映射公开测试 seam。
14
- 逐项列出已承接、冲突、延期及依赖切片,等待适用审查后再编译实现合同。
15
- ```
16
-
17
- ## 评审要回答的问题
18
-
19
- | 设计问题 | 设备借用中的例子 |
20
- |---|---|
21
- | 谁保护不变量 | 哪个对象/边界保证设备不能同时被领用 |
22
- | 状态是否合法 | 未批准申请是否允许领用;重复归还如何处理 |
23
- | 一致性在哪里保证 | 申请与设备占用是否同事务;失败如何恢复 |
24
- | 外部依赖如何隔离 | API/Repository/适配边界怎样映射而不篡改业务含义 |
25
- | 如何证伪设计 | 并发领用、无权限、重复请求的公开 seam 与预期结果 |
26
-
27
- 案例只是提问方向,答案由项目实际业务与工程条件决定。MVC 不要求先完成战略 DDD,也不要求聚合、值对象或 DDD Gateway;用例、规则、事务、幂等、并发和测试承接仍须清晰。没有相关技术设计影响时记录带原因的 not-applicable。
28
-
29
- ## 从设计到实现
30
-
31
- 综合项目由本仓生命周期继续路由,通用研发/后端由 Harness 流程承接。前端专职只消费上游规则、冻结接口并准备前端工程设计,不在本仓派发后端战术实现。
32
-
33
- 技术设计经现有门禁批准后,编译器消费当前设计并起草实现合同,批准与可实现状态由本仓编排和门禁控制。实现前确认工程登记、冻结接口、测试 seam、允许路径与回滚点。战术评审通过不等于 ready-for-agent。
34
-
35
- 过程示例见 [设备借用贯穿案例](设备借用贯穿案例.md);项目选型见 [用户手册](用户手册.md)。