create-yss-spec 3.3.8 → 3.4.3

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 (908) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +3 -13
  4. package/template/.agents/skills/archify/SKILL.md +1 -1
  5. package/template/.agents/skills/code-review/SKILL.md +12 -8
  6. package/template/.agents/skills/file-export-download/SKILL.md +1 -1
  7. package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
  8. package/template/.agents/skills/java-backend-commit/SKILL.md +1 -1
  9. package/template/.agents/skills/llm-wiki/SKILL.md +1 -6
  10. package/template/.agents/skills/lombok/SKILL.md +10 -336
  11. package/template/.agents/skills/lombok/references/annotation-examples.md +307 -0
  12. package/template/.agents/skills/maintaining-skills/SKILL.md +2 -1
  13. package/template/.agents/skills/maintaining-skills/references/authoring.md +27 -0
  14. package/template/.agents/skills/mapstruct/SKILL.md +11 -318
  15. package/template/.agents/skills/mapstruct/references/annotation-examples.md +300 -0
  16. package/template/.agents/skills/page-form-module/SKILL.md +1 -1
  17. package/template/.agents/skills/page-skeleton/SKILL.md +1 -1
  18. package/template/.agents/skills/theme-token-usage/SKILL.md +1 -1
  19. package/template/.agents/skills/to-tickets/SKILL.md +1 -1
  20. package/template/.agents/skills/using-git-worktrees/SKILL.md +1 -1
  21. package/template/.agents/skills/wayfinder/SKILL.md +1 -1
  22. package/template/.agents/skills/yedit-table-usage/SKILL.md +1 -1
  23. package/template/.agents/skills/yss-api-integration/SKILL.md +1 -1
  24. package/template/.agents/skills/yss-audit-log/SKILL.md +1 -1
  25. package/template/.agents/skills/yss-cache/SKILL.md +1 -1
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  31. package/template/.agents/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  32. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  33. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  34. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  35. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  36. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  37. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  38. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  39. package/template/.agents/skills/yss-design-system/SKILL.md +19 -19
  40. package/template/.agents/skills/yss-design-system/references/data-quality-theme.md +13 -0
  41. package/template/.agents/skills/yss-design-system/references/design-qa-theme.md +3 -1
  42. package/template/.agents/skills/yss-design-system/references/design-system.md +7 -9
  43. package/template/.agents/skills/yss-distributed-id/SKILL.md +1 -1
  44. package/template/.agents/skills/yss-dto/SKILL.md +5 -1
  45. package/template/.agents/skills/yss-excel-mvc/SKILL.md +1 -1
  46. package/template/.agents/skills/yss-exception/SKILL.md +5 -1
  47. package/template/.agents/skills/yss-formily/SKILL.md +21 -258
  48. package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +1 -1
  49. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  50. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  51. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  52. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  53. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  54. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  55. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  56. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  57. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  58. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  59. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  60. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  61. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  62. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  63. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  64. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  65. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  66. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  67. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  68. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  69. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  70. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  71. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  72. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  73. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  74. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  75. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  76. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  77. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  78. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  79. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  80. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  81. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  82. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  83. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  84. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  85. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  86. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  87. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  88. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  89. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  90. package/template/.agents/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  91. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  92. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  93. package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  94. package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  95. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  96. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  97. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  98. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  99. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  100. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  101. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  102. package/template/.agents/skills/yss-mybatis/SKILL.md +4 -0
  103. package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
  104. package/template/.agents/skills/yss-openapi-governance/SKILL.md +3 -1
  105. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +4 -4
  106. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  107. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  108. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +3 -1
  109. package/template/.agents/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  110. package/template/.agents/skills/yss-prototype-stage/SKILL.md +13 -9
  111. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  112. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  113. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  114. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  115. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  116. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  117. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  118. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  119. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  120. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  121. package/template/.agents/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  122. package/template/.agents/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  123. package/template/.agents/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  124. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  125. package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  126. package/template/.agents/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  127. package/template/.agents/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  128. package/template/.agents/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  129. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  130. package/template/.agents/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  131. package/template/.agents/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  132. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  133. package/template/.agents/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  134. package/template/.agents/skills/yss-repository/SKILL.md +4 -0
  135. package/template/.agents/skills/yss-research/SKILL.md +1 -1
  136. package/template/.agents/skills/yss-resilience4j/SKILL.md +1 -1
  137. package/template/.agents/skills/yss-security-algorithm/SKILL.md +1 -1
  138. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  139. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  140. package/template/.agents/skills/yss-tactical-design/SKILL.md +5 -1
  141. package/template/.agents/skills/yss-technical-design/SKILL.md +4 -0
  142. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  143. package/template/.agents/skills/yss-ui/SKILL.md +4 -3
  144. package/template/.agents/skills/yss-ui/references/component-routing.md +11 -10
  145. package/template/.agents/skills/yss-ui/references/specialized-components.md +52 -0
  146. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  147. package/template/.agents/skills/yss-up-springboot3/SKILL.md +1 -1
  148. package/template/.agents/skills/yss-use-table-height/SKILL.md +1 -1
  149. package/template/.agents/skills/yss-use-tree-height/SKILL.md +1 -1
  150. package/template/.agents/skills/yss-userinfo/SKILL.md +1 -1
  151. package/template/.agents/skills/yss-validation/SKILL.md +5 -1
  152. package/template/.agents/skills/yss-web-controller/SKILL.md +5 -1
  153. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  154. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  155. package/template/.agents/skills/ytable-usage/SKILL.md +1 -1
  156. package/template/.agents/skills/ytree-usage/SKILL.md +1 -1
  157. package/template/.codex/skills/archify/SKILL.md +1 -1
  158. package/template/.codex/skills/code-review/SKILL.md +12 -8
  159. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +1 -1
  160. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
  161. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +1 -1
  162. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
  163. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
  164. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +1 -1
  165. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
  166. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +1 -1
  167. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
  168. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
  169. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
  170. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +1 -1
  171. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +1 -1
  172. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +1 -1
  173. package/template/.codex/skills/file-export-download/SKILL.md +1 -1
  174. package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
  175. package/template/.codex/skills/java-backend-commit/SKILL.md +1 -1
  176. package/template/.codex/skills/llm-wiki/SKILL.md +1 -6
  177. package/template/.codex/skills/lombok/SKILL.md +10 -336
  178. package/template/.codex/skills/lombok/references/annotation-examples.md +307 -0
  179. package/template/.codex/skills/maintaining-skills/SKILL.md +2 -1
  180. package/template/.codex/skills/maintaining-skills/references/authoring.md +27 -0
  181. package/template/.codex/skills/mapstruct/SKILL.md +11 -318
  182. package/template/.codex/skills/mapstruct/references/annotation-examples.md +300 -0
  183. package/template/.codex/skills/page-form-module/SKILL.md +1 -1
  184. package/template/.codex/skills/page-skeleton/SKILL.md +1 -1
  185. package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
  186. package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
  187. package/template/.codex/skills/product-design/skills/get-context/SKILL.md +1 -1
  188. package/template/.codex/skills/product-design/skills/ideate/SKILL.md +1 -1
  189. package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +1 -1
  190. package/template/.codex/skills/product-design/skills/index/SKILL.md +1 -1
  191. package/template/.codex/skills/product-design/skills/prototype/SKILL.md +1 -1
  192. package/template/.codex/skills/product-design/skills/research/SKILL.md +1 -1
  193. package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
  194. package/template/.codex/skills/theme-token-usage/SKILL.md +1 -1
  195. package/template/.codex/skills/to-tickets/SKILL.md +1 -1
  196. package/template/.codex/skills/using-git-worktrees/SKILL.md +1 -1
  197. package/template/.codex/skills/wayfinder/SKILL.md +1 -1
  198. package/template/.codex/skills/yedit-table-usage/SKILL.md +1 -1
  199. package/template/.codex/skills/yss-api-integration/SKILL.md +1 -1
  200. package/template/.codex/skills/yss-audit-log/SKILL.md +1 -1
  201. package/template/.codex/skills/yss-cache/SKILL.md +1 -1
  202. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  203. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  204. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  205. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  206. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  207. package/template/.codex/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  208. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  209. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  210. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  211. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  212. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  213. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  214. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  215. package/template/.codex/skills/yss-design-system/SKILL.md +19 -19
  216. package/template/.codex/skills/yss-design-system/references/data-quality-theme.md +13 -0
  217. package/template/.codex/skills/yss-design-system/references/design-qa-theme.md +3 -1
  218. package/template/.codex/skills/yss-design-system/references/design-system.md +7 -9
  219. package/template/.codex/skills/yss-distributed-id/SKILL.md +1 -1
  220. package/template/.codex/skills/yss-dto/SKILL.md +5 -1
  221. package/template/.codex/skills/yss-excel-mvc/SKILL.md +1 -1
  222. package/template/.codex/skills/yss-exception/SKILL.md +5 -1
  223. package/template/.codex/skills/yss-formily/SKILL.md +21 -258
  224. package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +1 -1
  225. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  226. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  227. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  228. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  229. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  230. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  231. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  232. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  233. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  234. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  235. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  236. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  237. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  238. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  239. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  240. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  241. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  242. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  243. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  244. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  245. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  246. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  247. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  248. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  249. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  250. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  251. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  252. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  253. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  254. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  255. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  256. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  257. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  258. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  259. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  260. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  261. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  262. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  263. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  264. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  265. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  266. package/template/.codex/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  267. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  268. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  269. package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  270. package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  271. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  272. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  273. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  274. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  275. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  276. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  277. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  278. package/template/.codex/skills/yss-mybatis/SKILL.md +4 -0
  279. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
  280. package/template/.codex/skills/yss-openapi-governance/SKILL.md +3 -1
  281. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +4 -4
  282. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  283. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  284. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +3 -1
  285. package/template/.codex/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  286. package/template/.codex/skills/yss-prototype-stage/SKILL.md +13 -9
  287. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  288. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  289. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  290. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  291. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  292. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  293. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  294. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  295. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  296. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  297. package/template/.codex/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  298. package/template/.codex/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  299. package/template/.codex/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  300. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  301. package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  302. package/template/.codex/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  303. package/template/.codex/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  304. package/template/.codex/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  305. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  306. package/template/.codex/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  307. package/template/.codex/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  308. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  309. package/template/.codex/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  310. package/template/.codex/skills/yss-repository/SKILL.md +4 -0
  311. package/template/.codex/skills/yss-research/SKILL.md +1 -1
  312. package/template/.codex/skills/yss-resilience4j/SKILL.md +1 -1
  313. package/template/.codex/skills/yss-security-algorithm/SKILL.md +1 -1
  314. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  315. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  316. package/template/.codex/skills/yss-tactical-design/SKILL.md +5 -1
  317. package/template/.codex/skills/yss-technical-design/SKILL.md +4 -0
  318. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  319. package/template/.codex/skills/yss-ui/SKILL.md +4 -3
  320. package/template/.codex/skills/yss-ui/references/component-routing.md +11 -10
  321. package/template/.codex/skills/yss-ui/references/specialized-components.md +52 -0
  322. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  323. package/template/.codex/skills/yss-up-springboot3/SKILL.md +1 -1
  324. package/template/.codex/skills/yss-use-table-height/SKILL.md +1 -1
  325. package/template/.codex/skills/yss-use-tree-height/SKILL.md +1 -1
  326. package/template/.codex/skills/yss-userinfo/SKILL.md +1 -1
  327. package/template/.codex/skills/yss-validation/SKILL.md +5 -1
  328. package/template/.codex/skills/yss-web-controller/SKILL.md +5 -1
  329. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  330. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  331. package/template/.codex/skills/ytable-usage/SKILL.md +1 -1
  332. package/template/.codex/skills/ytree-usage/SKILL.md +1 -1
  333. package/template/.cursor/skills/archify/SKILL.md +1 -1
  334. package/template/.cursor/skills/code-review/SKILL.md +12 -8
  335. package/template/.cursor/skills/file-export-download/SKILL.md +1 -1
  336. package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
  337. package/template/.cursor/skills/java-backend-commit/SKILL.md +1 -1
  338. package/template/.cursor/skills/llm-wiki/SKILL.md +1 -6
  339. package/template/.cursor/skills/lombok/SKILL.md +10 -336
  340. package/template/.cursor/skills/lombok/references/annotation-examples.md +307 -0
  341. package/template/.cursor/skills/maintaining-skills/SKILL.md +2 -1
  342. package/template/.cursor/skills/maintaining-skills/references/authoring.md +27 -0
  343. package/template/.cursor/skills/mapstruct/SKILL.md +11 -318
  344. package/template/.cursor/skills/mapstruct/references/annotation-examples.md +300 -0
  345. package/template/.cursor/skills/page-form-module/SKILL.md +1 -1
  346. package/template/.cursor/skills/page-skeleton/SKILL.md +1 -1
  347. package/template/.cursor/skills/theme-token-usage/SKILL.md +1 -1
  348. package/template/.cursor/skills/to-tickets/SKILL.md +1 -1
  349. package/template/.cursor/skills/using-git-worktrees/SKILL.md +1 -1
  350. package/template/.cursor/skills/wayfinder/SKILL.md +1 -1
  351. package/template/.cursor/skills/yedit-table-usage/SKILL.md +1 -1
  352. package/template/.cursor/skills/yss-api-integration/SKILL.md +1 -1
  353. package/template/.cursor/skills/yss-audit-log/SKILL.md +1 -1
  354. package/template/.cursor/skills/yss-cache/SKILL.md +1 -1
  355. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  356. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  357. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  358. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  359. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  360. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  361. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  362. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  363. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  364. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  365. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  366. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  367. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  368. package/template/.cursor/skills/yss-design-system/SKILL.md +19 -19
  369. package/template/.cursor/skills/yss-design-system/references/data-quality-theme.md +13 -0
  370. package/template/.cursor/skills/yss-design-system/references/design-qa-theme.md +3 -1
  371. package/template/.cursor/skills/yss-design-system/references/design-system.md +7 -9
  372. package/template/.cursor/skills/yss-distributed-id/SKILL.md +1 -1
  373. package/template/.cursor/skills/yss-dto/SKILL.md +5 -1
  374. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +1 -1
  375. package/template/.cursor/skills/yss-exception/SKILL.md +5 -1
  376. package/template/.cursor/skills/yss-formily/SKILL.md +21 -258
  377. package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +1 -1
  378. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  379. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  380. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  381. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  382. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  383. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  384. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  385. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  386. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  387. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  388. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  389. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  390. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  391. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  392. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  393. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  394. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  395. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  396. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  397. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  398. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  399. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  400. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  401. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  402. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  403. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  404. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  405. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  406. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  407. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  408. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  409. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  410. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  411. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  412. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  413. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  414. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  415. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  416. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  417. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  418. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  419. package/template/.cursor/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  420. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  421. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  422. package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  423. package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  424. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  425. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  426. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  427. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  428. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  429. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  430. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  431. package/template/.cursor/skills/yss-mybatis/SKILL.md +4 -0
  432. package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
  433. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +3 -1
  434. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +4 -4
  435. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  436. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  437. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +3 -1
  438. package/template/.cursor/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  439. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +13 -9
  440. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  441. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  442. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  443. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  444. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  445. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  446. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  447. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  448. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  449. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  450. package/template/.cursor/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  451. package/template/.cursor/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  452. package/template/.cursor/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  453. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  454. package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  455. package/template/.cursor/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  456. package/template/.cursor/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  457. package/template/.cursor/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  458. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  459. package/template/.cursor/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  460. package/template/.cursor/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  461. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  462. package/template/.cursor/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  463. package/template/.cursor/skills/yss-repository/SKILL.md +4 -0
  464. package/template/.cursor/skills/yss-research/SKILL.md +1 -1
  465. package/template/.cursor/skills/yss-resilience4j/SKILL.md +1 -1
  466. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +1 -1
  467. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  468. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  469. package/template/.cursor/skills/yss-tactical-design/SKILL.md +5 -1
  470. package/template/.cursor/skills/yss-technical-design/SKILL.md +4 -0
  471. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  472. package/template/.cursor/skills/yss-ui/SKILL.md +4 -3
  473. package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -10
  474. package/template/.cursor/skills/yss-ui/references/specialized-components.md +52 -0
  475. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  476. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +1 -1
  477. package/template/.cursor/skills/yss-use-table-height/SKILL.md +1 -1
  478. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +1 -1
  479. package/template/.cursor/skills/yss-userinfo/SKILL.md +1 -1
  480. package/template/.cursor/skills/yss-validation/SKILL.md +5 -1
  481. package/template/.cursor/skills/yss-web-controller/SKILL.md +5 -1
  482. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  483. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  484. package/template/.cursor/skills/ytable-usage/SKILL.md +1 -1
  485. package/template/.cursor/skills/ytree-usage/SKILL.md +1 -1
  486. package/template/.pi/skills/archify/SKILL.md +1 -1
  487. package/template/.pi/skills/code-review/SKILL.md +12 -8
  488. package/template/.pi/skills/file-export-download/SKILL.md +1 -1
  489. package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
  490. package/template/.pi/skills/java-backend-commit/SKILL.md +1 -1
  491. package/template/.pi/skills/llm-wiki/SKILL.md +1 -6
  492. package/template/.pi/skills/lombok/SKILL.md +10 -336
  493. package/template/.pi/skills/lombok/references/annotation-examples.md +307 -0
  494. package/template/.pi/skills/maintaining-skills/SKILL.md +2 -1
  495. package/template/.pi/skills/maintaining-skills/references/authoring.md +27 -0
  496. package/template/.pi/skills/mapstruct/SKILL.md +11 -318
  497. package/template/.pi/skills/mapstruct/references/annotation-examples.md +300 -0
  498. package/template/.pi/skills/page-form-module/SKILL.md +1 -1
  499. package/template/.pi/skills/page-skeleton/SKILL.md +1 -1
  500. package/template/.pi/skills/theme-token-usage/SKILL.md +1 -1
  501. package/template/.pi/skills/to-tickets/SKILL.md +1 -1
  502. package/template/.pi/skills/using-git-worktrees/SKILL.md +1 -1
  503. package/template/.pi/skills/wayfinder/SKILL.md +1 -1
  504. package/template/.pi/skills/yedit-table-usage/SKILL.md +1 -1
  505. package/template/.pi/skills/yss-api-integration/SKILL.md +1 -1
  506. package/template/.pi/skills/yss-audit-log/SKILL.md +1 -1
  507. package/template/.pi/skills/yss-cache/SKILL.md +1 -1
  508. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  509. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  510. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  511. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  512. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  513. package/template/.pi/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  514. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  515. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  516. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  517. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  518. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  519. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  520. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  521. package/template/.pi/skills/yss-design-system/SKILL.md +19 -19
  522. package/template/.pi/skills/yss-design-system/references/data-quality-theme.md +13 -0
  523. package/template/.pi/skills/yss-design-system/references/design-qa-theme.md +3 -1
  524. package/template/.pi/skills/yss-design-system/references/design-system.md +7 -9
  525. package/template/.pi/skills/yss-distributed-id/SKILL.md +1 -1
  526. package/template/.pi/skills/yss-dto/SKILL.md +5 -1
  527. package/template/.pi/skills/yss-excel-mvc/SKILL.md +1 -1
  528. package/template/.pi/skills/yss-exception/SKILL.md +5 -1
  529. package/template/.pi/skills/yss-formily/SKILL.md +21 -258
  530. package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +1 -1
  531. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  532. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  533. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  534. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  535. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  536. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  537. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  538. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  539. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  540. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  541. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  542. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  543. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  544. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  545. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  546. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  547. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  548. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  549. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  550. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  551. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  552. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  553. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  554. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  555. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  556. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  557. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  558. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  559. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  560. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  561. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  562. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  563. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  564. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  565. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  566. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  567. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  568. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  569. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  570. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  571. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  572. package/template/.pi/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  573. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  574. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  575. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  576. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  577. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  578. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  579. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  580. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  581. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  582. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  583. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  584. package/template/.pi/skills/yss-mybatis/SKILL.md +4 -0
  585. package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
  586. package/template/.pi/skills/yss-openapi-governance/SKILL.md +3 -1
  587. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +4 -4
  588. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  589. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  590. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +3 -1
  591. package/template/.pi/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  592. package/template/.pi/skills/yss-prototype-stage/SKILL.md +13 -9
  593. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  594. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  595. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  596. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  597. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  598. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  599. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  600. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  601. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  602. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  603. package/template/.pi/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  604. package/template/.pi/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  605. package/template/.pi/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  606. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  607. package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  608. package/template/.pi/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  609. package/template/.pi/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  610. package/template/.pi/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  611. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  612. package/template/.pi/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  613. package/template/.pi/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  614. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  615. package/template/.pi/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  616. package/template/.pi/skills/yss-repository/SKILL.md +4 -0
  617. package/template/.pi/skills/yss-research/SKILL.md +1 -1
  618. package/template/.pi/skills/yss-resilience4j/SKILL.md +1 -1
  619. package/template/.pi/skills/yss-security-algorithm/SKILL.md +1 -1
  620. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  621. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  622. package/template/.pi/skills/yss-tactical-design/SKILL.md +5 -1
  623. package/template/.pi/skills/yss-technical-design/SKILL.md +4 -0
  624. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  625. package/template/.pi/skills/yss-ui/SKILL.md +4 -3
  626. package/template/.pi/skills/yss-ui/references/component-routing.md +11 -10
  627. package/template/.pi/skills/yss-ui/references/specialized-components.md +52 -0
  628. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  629. package/template/.pi/skills/yss-up-springboot3/SKILL.md +1 -1
  630. package/template/.pi/skills/yss-use-table-height/SKILL.md +1 -1
  631. package/template/.pi/skills/yss-use-tree-height/SKILL.md +1 -1
  632. package/template/.pi/skills/yss-userinfo/SKILL.md +1 -1
  633. package/template/.pi/skills/yss-validation/SKILL.md +5 -1
  634. package/template/.pi/skills/yss-web-controller/SKILL.md +5 -1
  635. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  636. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  637. package/template/.pi/skills/ytable-usage/SKILL.md +1 -1
  638. package/template/.pi/skills/ytree-usage/SKILL.md +1 -1
  639. package/template/AGENTS.md +1 -0
  640. package/template/CONTEXT.md +3 -1
  641. package/template/DESIGN.md +31 -14
  642. package/template/__yss_dotfile__.gitignore +4 -0
  643. package/template/docs/agents/backend-architecture-profiles.md +1 -1
  644. package/template/docs/agents/digital-human-roles.yaml +29 -5
  645. package/template/docs/agents/issue-tracker.md +2 -0
  646. package/template/docs/agents/skill-migrations.md +15 -2
  647. package/template/docs/agents/yss-skill-registry.yaml +6 -40
  648. package/template/docs/design/README.md +4 -4
  649. package/template/docs/design/design-system-sync.yaml +2 -1
  650. package/template/docs/design/design.md +23 -31
  651. package/template/docs/design/preview-dark.html +3 -3
  652. package/template/docs/design/preview.css +1 -1
  653. package/template/docs/design/preview.html +2 -2
  654. package/template/docs/design/templates/interaction-spec-template.md +2 -2
  655. package/template/docs/design/templates/prototype-evidence-template.yaml +18 -22
  656. package/template/docs/design/templates/prototype-review-checklist.md +3 -1
  657. package/template/docs/design/templates/state-matrix-template.md +1 -1
  658. package/template/docs/design/templates/visual-baseline-template.yaml +3 -2
  659. package/template/docs/design/tokens/.design-md-projection.json +7 -7
  660. package/template/docs/design/tokens/theme.json +16 -10
  661. package/template/docs/design/tokens/tokens.compact.json +521 -237
  662. package/template/docs/design/tokens/tokens.dark.json +527 -240
  663. package/template/docs/design/tokens/tokens.default.json +513 -235
  664. package/template/docs/design/tokens/variables.css +67 -65
  665. package/template/docs/design/tokens/variables.dark.css +41 -41
  666. package/template/docs/engineering/backend-platforms.json +174 -0
  667. package/template/docs/engineering/backend-platforms.md +77 -0
  668. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -0
  669. package/template/docs/process/delivery-preflight.md +1 -1
  670. package/template/docs/process/frontend-backend-delivery.md +2 -1
  671. package/template/docs/process/harness-process-tailoring.md +9 -1
  672. package/template/docs/process/lifecycle-artifact-map.md +4 -4
  673. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  674. package/template/docs/process/lifecycle-registry.yaml +9 -9
  675. package/template/docs/process/schemas/api-contract-decision.schema.json +74 -0
  676. package/template/docs/process/schemas/backend-architecture-identity.schema.json +91 -0
  677. package/template/docs/process/schemas/data-architecture-decision.schema.json +34 -0
  678. package/template/docs/process/schemas/digital-human-task-package.schema.json +2 -1
  679. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +80 -24
  680. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +4 -0
  681. package/template/docs/process/schemas/project-scaffold-contract.schema.json +666 -73
  682. package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +323 -39
  683. package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +925 -0
  684. package/template/docs/process/schemas/strategic-design-handoff.schema.json +296 -107
  685. package/template/docs/process/schemas/strategic-handoff-delivery-verification.schema.json +19 -0
  686. package/template/docs/process/schemas/strategic-handoff-delivery.schema.json +84 -0
  687. package/template/docs/process/schemas/strategic-handoff-import-receipt-v3.schema.json +42 -0
  688. package/template/docs/process/strategic-handoff-package.md +26 -9
  689. package/template/docs/templates/approval-record-template.yaml +2 -0
  690. package/template/docs/templates/vertical-slice-ticket-template.md +22 -31
  691. package/template/docs/user-guide//350/256/276/345/244/207/345/200/237/347/224/250/350/264/257/347/251/277/346/241/210/344/276/213.md +1 -1
  692. package/template/scripts/audit-legacy-backend-scaffold +29 -0
  693. package/template/scripts/backend-platforms +14 -0
  694. package/template/scripts/lib/api-contract-decision.mjs +49 -0
  695. package/template/scripts/lib/api-contract-decision.test.mjs +69 -0
  696. package/template/scripts/lib/approval-record.mjs +32 -6
  697. package/template/scripts/lib/approved-execution-context.mjs +31 -8
  698. package/template/scripts/lib/backend-architecture.mjs +6 -0
  699. package/template/scripts/lib/backend-platform-provenance.mjs +67 -0
  700. package/template/scripts/lib/backend-platform-verification.mjs +210 -0
  701. package/template/scripts/lib/backend-platform.mjs +175 -0
  702. package/template/scripts/lib/backend-scaffold-prerequisites.mjs +123 -0
  703. package/template/scripts/lib/decision-continuation.mjs +79 -0
  704. package/template/scripts/lib/delivery-preflight.mjs +6 -5
  705. package/template/scripts/lib/digital-human-roles.mjs +10 -0
  706. package/template/scripts/lib/frontend-delivery-boundary.mjs +3 -0
  707. package/template/scripts/lib/implementation-contract-compiler.mjs +42 -9
  708. package/template/scripts/lib/legacy-backend-scaffold-audit.mjs +87 -0
  709. package/template/scripts/lib/legacy-backend-scaffold-audit.test.mjs +64 -0
  710. package/template/scripts/lib/lifecycle-controls.mjs +2 -2
  711. package/template/scripts/lib/lifecycle-transition.mjs +155 -5
  712. package/template/scripts/lib/openapi-draft-validation.mjs +111 -0
  713. package/template/scripts/lib/plan-spec-entry.mjs +3 -3
  714. package/template/scripts/lib/scaffold-local-database.mjs +1 -0
  715. package/template/scripts/lib/skill-registry.mjs +17 -3
  716. package/template/scripts/lib/skill-supply-chain.mjs +12 -1
  717. package/template/scripts/lib/slice-applicability.mjs +10 -0
  718. package/template/scripts/lib/slice-contract-preparation.mjs +257 -0
  719. package/template/scripts/lib/slice-contract-views.mjs +52 -0
  720. package/template/scripts/lib/slice-contract.mjs +211 -0
  721. package/template/scripts/lib/slice-repositories.mjs +49 -0
  722. package/template/scripts/lib/slice-task-package.mjs +66 -0
  723. package/template/scripts/lib/strategic-feedback.mjs +2 -2
  724. package/template/scripts/lib/strategic-handoff-consumption.mjs +2 -2
  725. package/template/scripts/lib/strategic-handoff.mjs +89 -4
  726. package/template/scripts/lib/task-package.mjs +6 -2
  727. package/template/scripts/lib/technical-design-boundary.mjs +1 -0
  728. package/template/scripts/lib/user-decision-reuse.mjs +1 -0
  729. package/template/scripts/lib/user-decision.mjs +4 -1
  730. package/template/scripts/preflight-delivery +2 -2
  731. package/template/scripts/slice-contract +30 -0
  732. package/template/scripts/strategic-handoff +6 -4
  733. package/template/scripts/verify-backend-platform-matrix +69 -0
  734. package/template/scripts/verify-openapi-draft-validation-record +10 -129
  735. package/template/scripts/verify-scaffold-architecture-decisions +5 -0
  736. package/template/scripts/verify-strategic-context-import +12 -14
  737. package/template/scripts/verify-user-decision +7 -2
  738. package/template/skills-lock.json +67 -117
  739. package/template/yss-public-skills.json +0 -6
  740. package/template.snapshot.json +8 -4
  741. package/template/.agents/skills/yss-antd-design/SKILL.md +0 -35
  742. package/template/.agents/skills/yss-antd-design/references/boundaries.md +0 -30
  743. package/template/.agents/skills/yss-antd-design/references/cli-matrix.md +0 -38
  744. package/template/.agents/skills/yss-antd-design/references/evidence.md +0 -35
  745. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  746. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  747. package/template/.agents/skills/yss-antdv-next-design/SKILL.md +0 -48
  748. package/template/.agents/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  749. package/template/.agents/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  750. package/template/.agents/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  751. package/template/.agents/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  752. package/template/.agents/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  753. package/template/.agents/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  754. package/template/.agents/skills/yss-components/SKILL.md +0 -386
  755. package/template/.agents/skills/yss-components/agents/openai.yaml +0 -5
  756. package/template/.agents/skills/yss-components/references/frontend-docs.md +0 -9
  757. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  758. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  759. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  760. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  761. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  762. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  763. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  764. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  765. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  766. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  767. package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  768. package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  769. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  770. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  771. package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  772. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  773. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  774. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  775. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  776. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  777. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  778. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  779. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  780. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  781. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  782. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  783. package/template/.codex/skills/yss-antd-design/SKILL.md +0 -35
  784. package/template/.codex/skills/yss-antd-design/references/boundaries.md +0 -30
  785. package/template/.codex/skills/yss-antd-design/references/cli-matrix.md +0 -38
  786. package/template/.codex/skills/yss-antd-design/references/evidence.md +0 -35
  787. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  788. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  789. package/template/.codex/skills/yss-antdv-next-design/SKILL.md +0 -48
  790. package/template/.codex/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  791. package/template/.codex/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  792. package/template/.codex/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  793. package/template/.codex/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  794. package/template/.codex/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  795. package/template/.codex/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  796. package/template/.codex/skills/yss-components/SKILL.md +0 -386
  797. package/template/.codex/skills/yss-components/agents/openai.yaml +0 -5
  798. package/template/.codex/skills/yss-components/references/frontend-docs.md +0 -9
  799. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  800. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  801. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  802. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  803. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  804. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  805. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  806. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  807. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  808. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  809. package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  810. package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  811. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  812. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  813. package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  814. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  815. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  816. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  817. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  818. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  819. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  820. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  821. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  822. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  823. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  824. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  825. package/template/.cursor/skills/yss-antd-design/SKILL.md +0 -35
  826. package/template/.cursor/skills/yss-antd-design/references/boundaries.md +0 -30
  827. package/template/.cursor/skills/yss-antd-design/references/cli-matrix.md +0 -38
  828. package/template/.cursor/skills/yss-antd-design/references/evidence.md +0 -35
  829. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  830. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  831. package/template/.cursor/skills/yss-antdv-next-design/SKILL.md +0 -48
  832. package/template/.cursor/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  833. package/template/.cursor/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  834. package/template/.cursor/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  835. package/template/.cursor/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  836. package/template/.cursor/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  837. package/template/.cursor/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  838. package/template/.cursor/skills/yss-components/SKILL.md +0 -386
  839. package/template/.cursor/skills/yss-components/agents/openai.yaml +0 -5
  840. package/template/.cursor/skills/yss-components/references/frontend-docs.md +0 -9
  841. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  842. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  843. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  844. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  845. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  846. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  847. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  848. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  849. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  850. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  851. package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  852. package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  853. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  854. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  855. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  856. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  857. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  858. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  859. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  860. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  861. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  862. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  863. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  864. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  865. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  866. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  867. package/template/.pi/skills/yss-antd-design/SKILL.md +0 -35
  868. package/template/.pi/skills/yss-antd-design/references/boundaries.md +0 -30
  869. package/template/.pi/skills/yss-antd-design/references/cli-matrix.md +0 -38
  870. package/template/.pi/skills/yss-antd-design/references/evidence.md +0 -35
  871. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  872. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  873. package/template/.pi/skills/yss-antdv-next-design/SKILL.md +0 -48
  874. package/template/.pi/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  875. package/template/.pi/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  876. package/template/.pi/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  877. package/template/.pi/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  878. package/template/.pi/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  879. package/template/.pi/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  880. package/template/.pi/skills/yss-components/SKILL.md +0 -386
  881. package/template/.pi/skills/yss-components/agents/openai.yaml +0 -5
  882. package/template/.pi/skills/yss-components/references/frontend-docs.md +0 -9
  883. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  884. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  885. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  886. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  887. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  888. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  889. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  890. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  891. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  892. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  893. package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  894. package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  895. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  896. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  897. package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  898. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  899. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  900. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  901. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  902. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  903. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  904. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  905. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  906. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  907. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  908. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
@@ -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
- name: yss-antd-design
3
- description: Use when an H2 React/AntD prototype needs versioned Ant Design v6 facts or an incremental fact-pack refresh. Not for H1, frontend implementation, lifecycle approval, or replacing yss-prototype-stage.
4
- ---
5
-
6
- # YSS Ant Design 事实
7
-
8
- 只服务 H2 `flow-review` 中实际采用 React AntD 的原型,把官方 `@ant-design/cli` 与 `design.md` 收成可追溯的条件事实源。阶段合同仍是 `yss-prototype-stage`。H1 不适用;前端代码落地一律改用 `yss-ui`。
9
-
10
- ## 何时使用
11
-
12
- - 已进入 `yss-prototype-stage` 且档位为 H2、实际采用 React AntD,需要组件 / token / demo / semantic 事实。
13
- - 现有 fact pack 不满足精确版本、组件覆盖、项目 Token digest 与无新 API 疑问四项 freshness 条件,需要增量补齐。
14
-
15
- 不要用本技能:H1、H2 非 AntD 原型、前端实现、Vue / Ant Design Vue 生产代码、批准门禁、生成页面流、安装官方 `antd` skill,或运行 `antd setup`。
16
-
17
- ## 步骤
18
-
19
- 1. 先检查 `docs/design/facts/antd/<exact-version>/manifest.json`。fresh 时直接引用;不 fresh 才检测 CLI,优先已安装的 `antd`,否则用 `npx -y @ant-design/cli`。记录实际 CLI 版本,不执行全局安装。
20
- 2. 读项目 `docs/design/design.md` 与 `docs/design/tokens/*`。
21
- 3. 选定 `<target_antd_version>`(项目已选的 v6;未选则先查再记录,不得依赖空仓库自动检测)。此后每次知识查询都传同一版本。
22
- 4. 设置 `ANTD_NO_AUTO_REPORT=1`。一律 `--format json`,对外说明用 `--lang zh`。
23
- 5. 查询官方 `design.md`,再按选用组件跑 `info` / `demo` / `token` / `semantic`。命令矩阵见 `references/cli-matrix.md`。
24
- 6. 把 fact-pack manifest 或增量 JSON 路径写入证据清单。字段与 lint 适用范围见 `references/evidence.md`。
25
- 7. 上游默认与项目 token 冲突时,以项目覆盖为准,并标记 `project_override_reviewed`。
26
-
27
- ## 硬规则
28
-
29
- - 禁止凭记忆写 Ant Design v6 API。
30
- - 禁止 `antd setup`、`npx skills add ant-design/ant-design-cli`,以及把官方 `skills/antd` 拷进 `.agents/skills`。
31
- - 禁止把官方 `design.md` 的默认色、圆角、间距写回项目实现或覆盖项目 token。
32
- - 禁止在前端代码落地、垂直切片实现或 `yss-ui` 任务中调用本技能。
33
- - 禁止把 React props / demo / hook 当作 `yss-ui` 或 Ant Design Vue API。
34
- - 禁止为 H1 伪造 AntD 字段,或用 React CLI 证据宣称生产 YSS/AntDV 组件已经验证。
35
- - MCP 与 `llms-full.txt` 不是门禁证据。边界见 `references/boundaries.md`。
@@ -1,30 +0,0 @@
1
- # 边界与官方资料
2
-
3
- 官方文档只提供 React `antd` 事实,不提供 YSS 阶段合同。入口对照:
4
-
5
- | 官方资料 | 本技能用法 |
6
- |---|---|
7
- | https://ant.design/docs/react/for-agents-cn | 了解 CLI / skill / MCP / LLMs 分层。不要把其中的 “安装 skill” prompt 写进 `AGENTS.md` |
8
- | https://ant.design/docs/react/cli-cn | 命令与参数的权威说明 |
9
- | https://ant.design/docs/react/design-md-cn | 上游 `design.md` 定位。项目覆盖是 `docs/design/design.md` |
10
- | https://ant.design/docs/react/mcp-cn | MCP 是 IDE 加速,8 个知识工具不含 `lint` |
11
- | https://ant.design/docs/react/llms-cn | CLI 不可用时的降级目录。不要默认注入 `llms-full.txt` |
12
- | https://ant.design/design.md | 与 `antd design.md` 同一份 v6 上游默认 |
13
-
14
- ## 与其他技能
15
-
16
- - `yss-prototype-stage`:阶段顺序、评审、浏览器验证、用户确认。本技能只回写 AntD 事实段。
17
- - `yss-design-system`:项目风格与 token 规范。本技能查询上游事实,不得改项目 token。
18
- - `product-design:index`:Codex 视觉产出。本技能不替代它,也不使用 `antd-page-generator`。
19
- - `yss-ui`:前端代码落地的唯一 UI 入口。进入实现后不得再查本技能或 `@ant-design/cli` 的 React API。
20
- - 官方 `antd` skill:不安装、不锁定、不投影。
21
-
22
- ## MCP 与 LLMs.txt
23
-
24
- 开发者本机可以运行 `npx -y @ant-design/cli mcp --version <target_antd_version> --lang zh`,但:
25
-
26
- - 不把 `.cursor/mcp.json` 提交为模板默认。
27
- - 不把 MCP 调用记录当成 `evidence.antd-cli-validation`。
28
- - `antd-page-generator` 不是原型阶段入口。
29
-
30
- CLI 不可用时,可用 `https://ant.design/llms.txt` 定位单组件 `.md`,并在证据里写明降级原因。恢复 CLI 后补 JSON 落盘。