create-yss-spec 2.1.15 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/README.md +6 -2
  2. package/package.json +1 -1
  3. package/src/cli.js +276 -15
  4. package/template/.agents/rules/yss-ai-skills.md +59 -0
  5. package/template/.agents/skills/.yss-skills-manifest.json +28 -0
  6. package/template/.agents/skills/component-selection-imports/SKILL.md +64 -0
  7. package/template/.agents/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  8. package/template/.agents/skills/file-export-download/SKILL.md +160 -0
  9. package/template/.agents/skills/file-export-download/agents/openai.yaml +4 -0
  10. package/template/.agents/skills/formily-foundation/SKILL.md +176 -0
  11. package/template/.agents/skills/formily-foundation/references/examples.md +486 -0
  12. package/template/.agents/skills/formily-linkage-effects/SKILL.md +167 -0
  13. package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +137 -0
  14. package/template/.agents/skills/formily-step-flow/SKILL.md +194 -0
  15. package/template/.agents/skills/frontend-commit/SKILL.md +118 -0
  16. package/template/.agents/skills/frontend-commit/agents/openai.yaml +7 -0
  17. package/template/.agents/skills/frontend-commit/references/scope-and-examples.md +111 -0
  18. package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +5 -5
  19. package/template/.agents/skills/java-backend-commit/SKILL.md +121 -0
  20. package/template/.agents/skills/java-backend-commit/agents/openai.yaml +7 -0
  21. package/template/.agents/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  22. package/template/.agents/skills/llm-wiki/SKILL.md +1 -1
  23. package/template/.agents/skills/llm-wiki/references/discover.md +1 -0
  24. package/template/.agents/skills/page-form-module/SKILL.md +168 -0
  25. package/template/.agents/skills/page-list-module/SKILL.md +137 -0
  26. package/template/.agents/skills/page-skeleton/SKILL.md +76 -0
  27. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  28. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  29. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  30. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  31. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  32. package/template/.agents/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  33. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  34. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  35. package/template/.agents/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  36. package/template/.agents/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  37. package/template/.agents/skills/prototype-page-acceptance/SKILL.md +62 -0
  38. package/template/.agents/skills/theme-token-usage/SKILL.md +123 -0
  39. package/template/.agents/skills/theme-token-usage/agents/openai.yaml +4 -0
  40. package/template/.agents/skills/vue3-best-practices/SKILL.md +68 -0
  41. package/template/.agents/skills/yedit-table-usage/SKILL.md +227 -0
  42. package/template/.agents/skills/yss-api-integration/SKILL.md +12 -2
  43. package/template/.agents/skills/yss-components/SKILL.md +1 -1
  44. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  45. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  46. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  47. package/template/.agents/skills/yss-design-system/SKILL.md +1 -1
  48. package/template/.agents/skills/yss-formily/SKILL.md +233 -265
  49. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  50. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  51. package/template/.agents/skills/yss-openapi-governance/SKILL.md +2 -2
  52. package/template/.agents/skills/yss-page-module-development/SKILL.md +12 -2
  53. package/template/.agents/skills/yss-page-module-development/references/component-map.md +34 -0
  54. package/template/.agents/skills/yss-page-module-development/references/hooks-map.md +11 -0
  55. package/template/.agents/skills/yss-page-module-development/references/utils-map.md +14 -0
  56. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  57. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  58. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  59. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  60. package/template/.agents/skills/yss-router/SKILL.md +1 -1
  61. package/template/.agents/skills/yss-router/references/boundaries.md +1 -1
  62. package/template/.agents/skills/yss-router/references/router-contract.yaml +26 -2
  63. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +1 -1
  64. package/template/.agents/skills/yss-ui/SKILL.md +1 -1
  65. package/template/.agents/skills/yss-use-table-height/SKILL.md +9 -0
  66. package/template/.agents/skills/yss-use-tree-height/SKILL.md +9 -0
  67. package/template/.agents/skills/ytable-usage/SKILL.md +251 -0
  68. package/template/.agents/skills/ytree-usage/SKILL.md +132 -0
  69. package/template/.claude/skills/.yss-skills-manifest.json +29 -0
  70. package/template/.claude/skills/component-selection-imports/SKILL.md +64 -0
  71. package/template/.claude/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  72. package/template/.claude/skills/file-export-download/SKILL.md +160 -0
  73. package/template/.claude/skills/file-export-download/agents/openai.yaml +4 -0
  74. package/template/.claude/skills/formily-foundation/SKILL.md +176 -0
  75. package/template/.claude/skills/formily-foundation/references/examples.md +486 -0
  76. package/template/.claude/skills/formily-linkage-effects/SKILL.md +167 -0
  77. package/template/.claude/skills/formily-mode-slot-detail/SKILL.md +137 -0
  78. package/template/.claude/skills/formily-step-flow/SKILL.md +194 -0
  79. package/template/.claude/skills/frontend-commit/SKILL.md +118 -0
  80. package/template/.claude/skills/frontend-commit/agents/openai.yaml +7 -0
  81. package/template/.claude/skills/frontend-commit/references/scope-and-examples.md +111 -0
  82. package/template/.claude/skills/implementation-repo-onboarding/SKILL.md +5 -5
  83. package/template/.claude/skills/java-backend-commit/SKILL.md +121 -0
  84. package/template/.claude/skills/java-backend-commit/agents/openai.yaml +7 -0
  85. package/template/.claude/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  86. package/template/.claude/skills/llm-wiki/SKILL.md +1 -1
  87. package/template/.claude/skills/llm-wiki/references/discover.md +1 -0
  88. package/template/.claude/skills/page-form-module/SKILL.md +168 -0
  89. package/template/.claude/skills/page-list-module/SKILL.md +137 -0
  90. package/template/.claude/skills/page-skeleton/SKILL.md +76 -0
  91. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  92. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  93. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  94. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  95. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  96. package/template/.claude/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  97. package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  98. package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  99. package/template/.claude/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  100. package/template/.claude/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  101. package/template/.claude/skills/prototype-page-acceptance/SKILL.md +62 -0
  102. package/template/.claude/skills/theme-token-usage/SKILL.md +123 -0
  103. package/template/.claude/skills/theme-token-usage/agents/openai.yaml +4 -0
  104. package/template/.claude/skills/vue3-best-practices/SKILL.md +68 -0
  105. package/template/.claude/skills/yedit-table-usage/SKILL.md +227 -0
  106. package/template/.claude/skills/yss-api-integration/SKILL.md +12 -2
  107. package/template/.claude/skills/yss-components/SKILL.md +1 -1
  108. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  109. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  110. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  111. package/template/.claude/skills/yss-design-system/SKILL.md +1 -1
  112. package/template/.claude/skills/yss-formily/SKILL.md +233 -265
  113. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  114. package/template/.claude/skills/yss-hook/SKILL.md +1 -1
  115. package/template/.claude/skills/yss-openapi-governance/SKILL.md +2 -2
  116. package/template/.claude/skills/yss-page-module-development/SKILL.md +12 -2
  117. package/template/.claude/skills/yss-page-module-development/references/component-map.md +34 -0
  118. package/template/.claude/skills/yss-page-module-development/references/hooks-map.md +11 -0
  119. package/template/.claude/skills/yss-page-module-development/references/utils-map.md +14 -0
  120. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  121. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  122. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  123. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +1 -1
  124. package/template/.claude/skills/yss-router/SKILL.md +1 -1
  125. package/template/.claude/skills/yss-router/references/boundaries.md +1 -1
  126. package/template/.claude/skills/yss-router/references/router-contract.yaml +26 -2
  127. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +1 -1
  128. package/template/.claude/skills/yss-ui/SKILL.md +1 -1
  129. package/template/.claude/skills/yss-use-table-height/SKILL.md +9 -0
  130. package/template/.claude/skills/yss-use-tree-height/SKILL.md +9 -0
  131. package/template/.claude/skills/ytable-usage/SKILL.md +251 -0
  132. package/template/.claude/skills/ytree-usage/SKILL.md +132 -0
  133. package/template/.codex/skills/component-selection-imports/SKILL.md +64 -0
  134. package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  135. package/template/.codex/skills/file-export-download/SKILL.md +160 -0
  136. package/template/.codex/skills/file-export-download/agents/openai.yaml +4 -0
  137. package/template/.codex/skills/formily-foundation/SKILL.md +176 -0
  138. package/template/.codex/skills/formily-foundation/references/examples.md +486 -0
  139. package/template/.codex/skills/formily-linkage-effects/SKILL.md +167 -0
  140. package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +137 -0
  141. package/template/.codex/skills/formily-step-flow/SKILL.md +194 -0
  142. package/template/.codex/skills/frontend-commit/SKILL.md +118 -0
  143. package/template/.codex/skills/frontend-commit/agents/openai.yaml +7 -0
  144. package/template/.codex/skills/frontend-commit/references/scope-and-examples.md +111 -0
  145. package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +5 -5
  146. package/template/.codex/skills/java-backend-commit/SKILL.md +121 -0
  147. package/template/.codex/skills/java-backend-commit/agents/openai.yaml +7 -0
  148. package/template/.codex/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  149. package/template/.codex/skills/llm-wiki/SKILL.md +1 -1
  150. package/template/.codex/skills/llm-wiki/references/discover.md +1 -0
  151. package/template/.codex/skills/page-form-module/SKILL.md +168 -0
  152. package/template/.codex/skills/page-list-module/SKILL.md +137 -0
  153. package/template/.codex/skills/page-skeleton/SKILL.md +76 -0
  154. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  155. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  156. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  157. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  158. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  159. package/template/.codex/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  160. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  161. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  162. package/template/.codex/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  163. package/template/.codex/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  164. package/template/.codex/skills/prototype-page-acceptance/SKILL.md +62 -0
  165. package/template/.codex/skills/theme-token-usage/SKILL.md +123 -0
  166. package/template/.codex/skills/theme-token-usage/agents/openai.yaml +4 -0
  167. package/template/.codex/skills/vue3-best-practices/SKILL.md +68 -0
  168. package/template/.codex/skills/yedit-table-usage/SKILL.md +227 -0
  169. package/template/.codex/skills/yss-api-integration/SKILL.md +12 -2
  170. package/template/.codex/skills/yss-components/SKILL.md +1 -1
  171. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  172. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  173. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  174. package/template/.codex/skills/yss-design-system/SKILL.md +1 -1
  175. package/template/.codex/skills/yss-formily/SKILL.md +233 -265
  176. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  177. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  178. package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -2
  179. package/template/.codex/skills/yss-page-module-development/SKILL.md +12 -2
  180. package/template/.codex/skills/yss-page-module-development/references/component-map.md +34 -0
  181. package/template/.codex/skills/yss-page-module-development/references/hooks-map.md +11 -0
  182. package/template/.codex/skills/yss-page-module-development/references/utils-map.md +14 -0
  183. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  184. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  185. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  186. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  187. package/template/.codex/skills/yss-router/SKILL.md +1 -1
  188. package/template/.codex/skills/yss-router/references/boundaries.md +1 -1
  189. package/template/.codex/skills/yss-router/references/router-contract.yaml +26 -2
  190. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +1 -1
  191. package/template/.codex/skills/yss-ui/SKILL.md +1 -1
  192. package/template/.codex/skills/yss-use-table-height/SKILL.md +9 -0
  193. package/template/.codex/skills/yss-use-tree-height/SKILL.md +9 -0
  194. package/template/.codex/skills/ytable-usage/SKILL.md +251 -0
  195. package/template/.codex/skills/ytree-usage/SKILL.md +132 -0
  196. package/template/.cursor/skills/.yss-skills-manifest.json +29 -0
  197. package/template/.cursor/skills/component-selection-imports/SKILL.md +64 -0
  198. package/template/.cursor/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  199. package/template/.cursor/skills/file-export-download/SKILL.md +160 -0
  200. package/template/.cursor/skills/file-export-download/agents/openai.yaml +4 -0
  201. package/template/.cursor/skills/formily-foundation/SKILL.md +176 -0
  202. package/template/.cursor/skills/formily-foundation/references/examples.md +486 -0
  203. package/template/.cursor/skills/formily-linkage-effects/SKILL.md +167 -0
  204. package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +137 -0
  205. package/template/.cursor/skills/formily-step-flow/SKILL.md +194 -0
  206. package/template/.cursor/skills/frontend-commit/SKILL.md +118 -0
  207. package/template/.cursor/skills/frontend-commit/agents/openai.yaml +7 -0
  208. package/template/.cursor/skills/frontend-commit/references/scope-and-examples.md +111 -0
  209. package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +5 -5
  210. package/template/.cursor/skills/java-backend-commit/SKILL.md +121 -0
  211. package/template/.cursor/skills/java-backend-commit/agents/openai.yaml +7 -0
  212. package/template/.cursor/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  213. package/template/.cursor/skills/llm-wiki/SKILL.md +1 -1
  214. package/template/.cursor/skills/llm-wiki/references/discover.md +1 -0
  215. package/template/.cursor/skills/page-form-module/SKILL.md +168 -0
  216. package/template/.cursor/skills/page-list-module/SKILL.md +137 -0
  217. package/template/.cursor/skills/page-skeleton/SKILL.md +76 -0
  218. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  219. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  220. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  221. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  222. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  223. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  224. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  225. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  226. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  227. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  228. package/template/.cursor/skills/prototype-page-acceptance/SKILL.md +62 -0
  229. package/template/.cursor/skills/theme-token-usage/SKILL.md +123 -0
  230. package/template/.cursor/skills/theme-token-usage/agents/openai.yaml +4 -0
  231. package/template/.cursor/skills/vue3-best-practices/SKILL.md +68 -0
  232. package/template/.cursor/skills/yedit-table-usage/SKILL.md +227 -0
  233. package/template/.cursor/skills/yss-api-integration/SKILL.md +12 -2
  234. package/template/.cursor/skills/yss-components/SKILL.md +1 -1
  235. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  236. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  237. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  238. package/template/.cursor/skills/yss-design-system/SKILL.md +1 -1
  239. package/template/.cursor/skills/yss-formily/SKILL.md +233 -265
  240. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  241. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  242. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +2 -2
  243. package/template/.cursor/skills/yss-page-module-development/SKILL.md +12 -2
  244. package/template/.cursor/skills/yss-page-module-development/references/component-map.md +34 -0
  245. package/template/.cursor/skills/yss-page-module-development/references/hooks-map.md +11 -0
  246. package/template/.cursor/skills/yss-page-module-development/references/utils-map.md +14 -0
  247. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  248. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  249. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  250. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  251. package/template/.cursor/skills/yss-router/SKILL.md +1 -1
  252. package/template/.cursor/skills/yss-router/references/boundaries.md +1 -1
  253. package/template/.cursor/skills/yss-router/references/router-contract.yaml +26 -2
  254. package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +1 -1
  255. package/template/.cursor/skills/yss-ui/SKILL.md +1 -1
  256. package/template/.cursor/skills/yss-use-table-height/SKILL.md +9 -0
  257. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +9 -0
  258. package/template/.cursor/skills/ytable-usage/SKILL.md +251 -0
  259. package/template/.cursor/skills/ytree-usage/SKILL.md +132 -0
  260. package/template/.cursorrules +32 -0
  261. package/template/.hermes/skills/component-selection-imports/SKILL.md +64 -0
  262. package/template/.hermes/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  263. package/template/.hermes/skills/file-export-download/SKILL.md +160 -0
  264. package/template/.hermes/skills/file-export-download/agents/openai.yaml +4 -0
  265. package/template/.hermes/skills/formily-foundation/SKILL.md +176 -0
  266. package/template/.hermes/skills/formily-foundation/references/examples.md +486 -0
  267. package/template/.hermes/skills/formily-linkage-effects/SKILL.md +167 -0
  268. package/template/.hermes/skills/formily-mode-slot-detail/SKILL.md +137 -0
  269. package/template/.hermes/skills/formily-step-flow/SKILL.md +194 -0
  270. package/template/.hermes/skills/frontend-commit/SKILL.md +118 -0
  271. package/template/.hermes/skills/frontend-commit/agents/openai.yaml +7 -0
  272. package/template/.hermes/skills/frontend-commit/references/scope-and-examples.md +111 -0
  273. package/template/.hermes/skills/implementation-repo-onboarding/SKILL.md +5 -5
  274. package/template/.hermes/skills/java-backend-commit/SKILL.md +121 -0
  275. package/template/.hermes/skills/java-backend-commit/agents/openai.yaml +7 -0
  276. package/template/.hermes/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  277. package/template/.hermes/skills/llm-wiki/SKILL.md +1 -1
  278. package/template/.hermes/skills/llm-wiki/references/discover.md +1 -0
  279. package/template/.hermes/skills/page-form-module/SKILL.md +168 -0
  280. package/template/.hermes/skills/page-list-module/SKILL.md +137 -0
  281. package/template/.hermes/skills/page-skeleton/SKILL.md +76 -0
  282. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  283. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  284. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  285. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  286. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  287. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  288. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  289. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  290. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  291. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  292. package/template/.hermes/skills/prototype-page-acceptance/SKILL.md +62 -0
  293. package/template/.hermes/skills/theme-token-usage/SKILL.md +123 -0
  294. package/template/.hermes/skills/theme-token-usage/agents/openai.yaml +4 -0
  295. package/template/.hermes/skills/vue3-best-practices/SKILL.md +68 -0
  296. package/template/.hermes/skills/yedit-table-usage/SKILL.md +227 -0
  297. package/template/.hermes/skills/yss-api-integration/SKILL.md +12 -2
  298. package/template/.hermes/skills/yss-components/SKILL.md +1 -1
  299. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  300. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  301. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  302. package/template/.hermes/skills/yss-design-system/SKILL.md +1 -1
  303. package/template/.hermes/skills/yss-formily/SKILL.md +233 -265
  304. package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  305. package/template/.hermes/skills/yss-hook/SKILL.md +1 -1
  306. package/template/.hermes/skills/yss-openapi-governance/SKILL.md +2 -2
  307. package/template/.hermes/skills/yss-page-module-development/SKILL.md +12 -2
  308. package/template/.hermes/skills/yss-page-module-development/references/component-map.md +34 -0
  309. package/template/.hermes/skills/yss-page-module-development/references/hooks-map.md +11 -0
  310. package/template/.hermes/skills/yss-page-module-development/references/utils-map.md +14 -0
  311. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  312. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  313. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  314. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +1 -1
  315. package/template/.hermes/skills/yss-router/SKILL.md +1 -1
  316. package/template/.hermes/skills/yss-router/references/boundaries.md +1 -1
  317. package/template/.hermes/skills/yss-router/references/router-contract.yaml +26 -2
  318. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +1 -1
  319. package/template/.hermes/skills/yss-ui/SKILL.md +1 -1
  320. package/template/.hermes/skills/yss-use-table-height/SKILL.md +9 -0
  321. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +9 -0
  322. package/template/.hermes/skills/ytable-usage/SKILL.md +251 -0
  323. package/template/.hermes/skills/ytree-usage/SKILL.md +132 -0
  324. package/template/.pi/skills/component-selection-imports/SKILL.md +64 -0
  325. package/template/.pi/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  326. package/template/.pi/skills/file-export-download/SKILL.md +160 -0
  327. package/template/.pi/skills/file-export-download/agents/openai.yaml +4 -0
  328. package/template/.pi/skills/formily-foundation/SKILL.md +176 -0
  329. package/template/.pi/skills/formily-foundation/references/examples.md +486 -0
  330. package/template/.pi/skills/formily-linkage-effects/SKILL.md +167 -0
  331. package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +137 -0
  332. package/template/.pi/skills/formily-step-flow/SKILL.md +194 -0
  333. package/template/.pi/skills/frontend-commit/SKILL.md +118 -0
  334. package/template/.pi/skills/frontend-commit/agents/openai.yaml +7 -0
  335. package/template/.pi/skills/frontend-commit/references/scope-and-examples.md +111 -0
  336. package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +5 -5
  337. package/template/.pi/skills/java-backend-commit/SKILL.md +121 -0
  338. package/template/.pi/skills/java-backend-commit/agents/openai.yaml +7 -0
  339. package/template/.pi/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  340. package/template/.pi/skills/llm-wiki/SKILL.md +1 -1
  341. package/template/.pi/skills/llm-wiki/references/discover.md +1 -0
  342. package/template/.pi/skills/page-form-module/SKILL.md +168 -0
  343. package/template/.pi/skills/page-list-module/SKILL.md +137 -0
  344. package/template/.pi/skills/page-skeleton/SKILL.md +76 -0
  345. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  346. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  347. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  348. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  349. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  350. package/template/.pi/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  351. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  352. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  353. package/template/.pi/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  354. package/template/.pi/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  355. package/template/.pi/skills/prototype-page-acceptance/SKILL.md +62 -0
  356. package/template/.pi/skills/theme-token-usage/SKILL.md +123 -0
  357. package/template/.pi/skills/theme-token-usage/agents/openai.yaml +4 -0
  358. package/template/.pi/skills/vue3-best-practices/SKILL.md +68 -0
  359. package/template/.pi/skills/yedit-table-usage/SKILL.md +227 -0
  360. package/template/.pi/skills/yss-api-integration/SKILL.md +12 -2
  361. package/template/.pi/skills/yss-components/SKILL.md +1 -1
  362. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  363. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  364. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  365. package/template/.pi/skills/yss-design-system/SKILL.md +1 -1
  366. package/template/.pi/skills/yss-formily/SKILL.md +233 -265
  367. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  368. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  369. package/template/.pi/skills/yss-openapi-governance/SKILL.md +2 -2
  370. package/template/.pi/skills/yss-page-module-development/SKILL.md +12 -2
  371. package/template/.pi/skills/yss-page-module-development/references/component-map.md +34 -0
  372. package/template/.pi/skills/yss-page-module-development/references/hooks-map.md +11 -0
  373. package/template/.pi/skills/yss-page-module-development/references/utils-map.md +14 -0
  374. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  375. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  376. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  377. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  378. package/template/.pi/skills/yss-router/SKILL.md +1 -1
  379. package/template/.pi/skills/yss-router/references/boundaries.md +1 -1
  380. package/template/.pi/skills/yss-router/references/router-contract.yaml +26 -2
  381. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +1 -1
  382. package/template/.pi/skills/yss-ui/SKILL.md +1 -1
  383. package/template/.pi/skills/yss-use-table-height/SKILL.md +9 -0
  384. package/template/.pi/skills/yss-use-tree-height/SKILL.md +9 -0
  385. package/template/.pi/skills/ytable-usage/SKILL.md +251 -0
  386. package/template/.pi/skills/ytree-usage/SKILL.md +132 -0
  387. package/template/.qoder/skills/component-selection-imports/SKILL.md +64 -0
  388. package/template/.qoder/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  389. package/template/.qoder/skills/file-export-download/SKILL.md +160 -0
  390. package/template/.qoder/skills/file-export-download/agents/openai.yaml +4 -0
  391. package/template/.qoder/skills/formily-foundation/SKILL.md +176 -0
  392. package/template/.qoder/skills/formily-foundation/references/examples.md +486 -0
  393. package/template/.qoder/skills/formily-linkage-effects/SKILL.md +167 -0
  394. package/template/.qoder/skills/formily-mode-slot-detail/SKILL.md +137 -0
  395. package/template/.qoder/skills/formily-step-flow/SKILL.md +194 -0
  396. package/template/.qoder/skills/frontend-commit/SKILL.md +118 -0
  397. package/template/.qoder/skills/frontend-commit/agents/openai.yaml +7 -0
  398. package/template/.qoder/skills/frontend-commit/references/scope-and-examples.md +111 -0
  399. package/template/.qoder/skills/implementation-repo-onboarding/SKILL.md +5 -5
  400. package/template/.qoder/skills/java-backend-commit/SKILL.md +121 -0
  401. package/template/.qoder/skills/java-backend-commit/agents/openai.yaml +7 -0
  402. package/template/.qoder/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  403. package/template/.qoder/skills/llm-wiki/SKILL.md +1 -1
  404. package/template/.qoder/skills/llm-wiki/references/discover.md +1 -0
  405. package/template/.qoder/skills/page-form-module/SKILL.md +168 -0
  406. package/template/.qoder/skills/page-list-module/SKILL.md +137 -0
  407. package/template/.qoder/skills/page-skeleton/SKILL.md +76 -0
  408. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  409. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  410. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  411. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  412. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  413. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  414. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  415. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  416. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  417. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  418. package/template/.qoder/skills/prototype-page-acceptance/SKILL.md +62 -0
  419. package/template/.qoder/skills/theme-token-usage/SKILL.md +123 -0
  420. package/template/.qoder/skills/theme-token-usage/agents/openai.yaml +4 -0
  421. package/template/.qoder/skills/vue3-best-practices/SKILL.md +68 -0
  422. package/template/.qoder/skills/yedit-table-usage/SKILL.md +227 -0
  423. package/template/.qoder/skills/yss-api-integration/SKILL.md +12 -2
  424. package/template/.qoder/skills/yss-components/SKILL.md +1 -1
  425. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  426. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  427. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  428. package/template/.qoder/skills/yss-design-system/SKILL.md +1 -1
  429. package/template/.qoder/skills/yss-formily/SKILL.md +233 -265
  430. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  431. package/template/.qoder/skills/yss-hook/SKILL.md +1 -1
  432. package/template/.qoder/skills/yss-openapi-governance/SKILL.md +2 -2
  433. package/template/.qoder/skills/yss-page-module-development/SKILL.md +12 -2
  434. package/template/.qoder/skills/yss-page-module-development/references/component-map.md +34 -0
  435. package/template/.qoder/skills/yss-page-module-development/references/hooks-map.md +11 -0
  436. package/template/.qoder/skills/yss-page-module-development/references/utils-map.md +14 -0
  437. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  438. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  439. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  440. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +1 -1
  441. package/template/.qoder/skills/yss-router/SKILL.md +1 -1
  442. package/template/.qoder/skills/yss-router/references/boundaries.md +1 -1
  443. package/template/.qoder/skills/yss-router/references/router-contract.yaml +26 -2
  444. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +1 -1
  445. package/template/.qoder/skills/yss-ui/SKILL.md +1 -1
  446. package/template/.qoder/skills/yss-use-table-height/SKILL.md +9 -0
  447. package/template/.qoder/skills/yss-use-tree-height/SKILL.md +9 -0
  448. package/template/.qoder/skills/ytable-usage/SKILL.md +251 -0
  449. package/template/.qoder/skills/ytree-usage/SKILL.md +132 -0
  450. package/template/.trae/skills/.yss-skills-manifest.json +29 -0
  451. package/template/.trae/skills/component-selection-imports/SKILL.md +64 -0
  452. package/template/.trae/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  453. package/template/.trae/skills/file-export-download/SKILL.md +160 -0
  454. package/template/.trae/skills/file-export-download/agents/openai.yaml +4 -0
  455. package/template/.trae/skills/formily-foundation/SKILL.md +176 -0
  456. package/template/.trae/skills/formily-foundation/references/examples.md +486 -0
  457. package/template/.trae/skills/formily-linkage-effects/SKILL.md +167 -0
  458. package/template/.trae/skills/formily-mode-slot-detail/SKILL.md +137 -0
  459. package/template/.trae/skills/formily-step-flow/SKILL.md +194 -0
  460. package/template/.trae/skills/frontend-commit/SKILL.md +118 -0
  461. package/template/.trae/skills/frontend-commit/agents/openai.yaml +7 -0
  462. package/template/.trae/skills/frontend-commit/references/scope-and-examples.md +111 -0
  463. package/template/.trae/skills/implementation-repo-onboarding/SKILL.md +5 -5
  464. package/template/.trae/skills/java-backend-commit/SKILL.md +121 -0
  465. package/template/.trae/skills/java-backend-commit/agents/openai.yaml +7 -0
  466. package/template/.trae/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  467. package/template/.trae/skills/llm-wiki/SKILL.md +1 -1
  468. package/template/.trae/skills/llm-wiki/references/discover.md +1 -0
  469. package/template/.trae/skills/page-form-module/SKILL.md +168 -0
  470. package/template/.trae/skills/page-list-module/SKILL.md +137 -0
  471. package/template/.trae/skills/page-skeleton/SKILL.md +76 -0
  472. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  473. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  474. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  475. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  476. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  477. package/template/.trae/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  478. package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  479. package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  480. package/template/.trae/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  481. package/template/.trae/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  482. package/template/.trae/skills/prototype-page-acceptance/SKILL.md +62 -0
  483. package/template/.trae/skills/theme-token-usage/SKILL.md +123 -0
  484. package/template/.trae/skills/theme-token-usage/agents/openai.yaml +4 -0
  485. package/template/.trae/skills/vue3-best-practices/SKILL.md +68 -0
  486. package/template/.trae/skills/yedit-table-usage/SKILL.md +227 -0
  487. package/template/.trae/skills/yss-api-integration/SKILL.md +12 -2
  488. package/template/.trae/skills/yss-components/SKILL.md +1 -1
  489. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  490. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
  491. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
  492. package/template/.trae/skills/yss-design-system/SKILL.md +1 -1
  493. package/template/.trae/skills/yss-formily/SKILL.md +233 -265
  494. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
  495. package/template/.trae/skills/yss-hook/SKILL.md +1 -1
  496. package/template/.trae/skills/yss-openapi-governance/SKILL.md +2 -2
  497. package/template/.trae/skills/yss-page-module-development/SKILL.md +12 -2
  498. package/template/.trae/skills/yss-page-module-development/references/component-map.md +34 -0
  499. package/template/.trae/skills/yss-page-module-development/references/hooks-map.md +11 -0
  500. package/template/.trae/skills/yss-page-module-development/references/utils-map.md +14 -0
  501. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
  502. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
  503. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +2 -0
  504. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +1 -1
  505. package/template/.trae/skills/yss-router/SKILL.md +1 -1
  506. package/template/.trae/skills/yss-router/references/boundaries.md +1 -1
  507. package/template/.trae/skills/yss-router/references/router-contract.yaml +26 -2
  508. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +1 -1
  509. package/template/.trae/skills/yss-ui/SKILL.md +1 -1
  510. package/template/.trae/skills/yss-use-table-height/SKILL.md +9 -0
  511. package/template/.trae/skills/yss-use-tree-height/SKILL.md +9 -0
  512. package/template/.trae/skills/ytable-usage/SKILL.md +251 -0
  513. package/template/.trae/skills/ytree-usage/SKILL.md +132 -0
  514. package/template/AGENTS.md +5 -5
  515. package/template/CONTEXT.md +3 -2
  516. package/template/docs/agents/skill-migrations.md +16 -0
  517. package/template/docs/agents/skills-maintenance.md +1 -1
  518. package/template/docs/agents/yss-skill-registry.yaml +125 -25
  519. package/template/docs/process/implementation-repo-integration.md +24 -2
  520. package/template/docs/templates/cross-repo-slice-template.md +15 -0
  521. package/template/docs/templates/implementation-repo-registry-template.md +8 -3
  522. package/template/docs/templates/implementation-routing-template.md +3 -3
  523. package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +2 -2
  524. package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +4 -4
  525. package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +1 -1
  526. package/template/scripts/lib/git-submodule-fixtures.mjs +58 -0
  527. package/template/scripts/lib/repository-scope-policy.mjs +456 -0
  528. package/template/scripts/lib/scenario-checks.mjs +32 -1
  529. package/template/scripts/lib/skill-governance.mjs +50 -0
  530. package/template/scripts/lib/skill-registry.mjs +82 -5
  531. package/template/scripts/lib/skill-supply-chain.mjs +5 -1
  532. package/template/scripts/repository-scope-policy +16 -0
  533. package/template/scripts/verify-repository-scope-scenarios +239 -0
  534. package/template/scripts/verify-scaffold-generator-scenarios +54 -0
  535. package/template/scripts/verify-skill-governance +10 -0
  536. package/template/scripts/verify-template +4 -2
  537. package/template/skills-lock.json +289 -33
  538. package/template.manifest.json +6 -5
  539. package/template.snapshot.json +4 -4
  540. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  541. package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  542. package/template/.agents/skills/yss-formily/agents/openai.yaml +0 -5
  543. package/template/.agents/skills/yss-formily/references/examples.md +0 -65
  544. package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  545. package/template/.claude/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  546. package/template/.claude/skills/yss-formily/agents/openai.yaml +0 -5
  547. package/template/.claude/skills/yss-formily/references/examples.md +0 -65
  548. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  549. package/template/.codex/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  550. package/template/.codex/skills/yss-formily/agents/openai.yaml +0 -5
  551. package/template/.codex/skills/yss-formily/references/examples.md +0 -65
  552. package/template/.cursor/environment.json +0 -5
  553. package/template/.cursor/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  554. package/template/.cursor/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  555. package/template/.cursor/skills/yss-formily/agents/openai.yaml +0 -5
  556. package/template/.cursor/skills/yss-formily/references/examples.md +0 -65
  557. package/template/.github/workflows/template-node-tooling.yml +0 -61
  558. package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  559. package/template/.hermes/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  560. package/template/.hermes/skills/yss-formily/agents/openai.yaml +0 -5
  561. package/template/.hermes/skills/yss-formily/references/examples.md +0 -65
  562. package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  563. package/template/.pi/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  564. package/template/.pi/skills/yss-formily/agents/openai.yaml +0 -5
  565. package/template/.pi/skills/yss-formily/references/examples.md +0 -65
  566. package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  567. package/template/.qoder/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  568. package/template/.qoder/skills/yss-formily/agents/openai.yaml +0 -5
  569. package/template/.qoder/skills/yss-formily/references/examples.md +0 -65
  570. package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  571. package/template/.trae/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  572. package/template/.trae/skills/yss-formily/agents/openai.yaml +0 -5
  573. package/template/.trae/skills/yss-formily/references/examples.md +0 -65
  574. package/template/wiki/.wiki-manifest.json +0 -390
  575. package/template/wiki/raw/AGENTS.md +0 -122
  576. package/template/wiki/raw/CONTEXT.md +0 -80
  577. package/template/wiki/raw/README.md +0 -130
  578. package/template/wiki/raw/adr-0002-repository-mode.md +0 -3
  579. package/template/wiki/raw/create-yss-spec-repository-mode-contract.md +0 -95
  580. package/template/wiki/raw/harness-process-tailoring.md +0 -64
  581. package/template/wiki/raw/implementation-repo-integration.md +0 -62
  582. package/template/wiki/raw/issue-tracker.md +0 -135
  583. package/template/wiki/raw/lifecycle-registry.yaml +0 -369
  584. package/template/wiki/raw/maintenance-intensity.yaml +0 -25
  585. package/template/wiki/raw/skills-lock-names.md +0 -93
  586. package/template/wiki/raw/skills-maintenance.md +0 -90
  587. package/template/wiki/raw/spec-template.md +0 -102
  588. package/template/wiki/raw/triage-labels.md +0 -15
  589. package/template/wiki/raw/vertical-slice-ticket-template.md +0 -132
  590. package/template/wiki/raw/yss-project.yaml +0 -2
  591. package/template/wiki/raw/yss-skill-registry.yaml +0 -510
  592. package/template/wiki/wiki/Agent/345/205/245/345/217/243/350/247/204/345/210/231.md +0 -21
  593. package/template/wiki/wiki/CLAUDE.md +0 -28
  594. package/template/wiki/wiki/Fresh/351/252/214/350/257/201/344/270/216/347/213/254/347/253/213/345/256/241/346/237/245.md +0 -19
  595. package/template/wiki/wiki/LLM Wiki.md +0 -30
  596. package/template/wiki/wiki/Matt/346/212/200/350/203/275/344/275/223/347/263/273.md +0 -21
  597. package/template/wiki/wiki/OpenAPI/345/245/221/347/272/246.md +0 -20
  598. package/template/wiki/wiki/SpecDelta.md +0 -19
  599. package/template/wiki/wiki/Spec/345/237/272/347/272/277.md +0 -22
  600. package/template/wiki/wiki/Ticket/344/270/216/346/265/201/347/250/213/347/212/266/346/200/201.md +0 -21
  601. package/template/wiki/wiki/YSS/345/267/245/347/250/213/346/212/200/350/203/275/344/275/223/347/263/273.md +0 -23
  602. package/template/wiki/wiki/YSS/350/267/257/347/224/261/344/270/216/345/220/210/345/220/214/347/274/226/350/257/221.md +0 -20
  603. package/template/wiki/wiki/concept-table.md +0 -9
  604. package/template/wiki/wiki/index.md +0 -41
  605. package/template/wiki/wiki/log.md +0 -51
  606. package/template/wiki/wiki//344/272/247/345/223/201/347/240/224/345/217/221/347/224/237/345/221/275/345/221/250/346/234/237.md +0 -20
  607. package/template/wiki/wiki//344/272/247/345/223/201/350/256/276/350/256/241/345/275/261/345/223/215/344/270/216/345/216/237/345/236/213.md +0 -19
  608. package/template/wiki/wiki//344/273/223/345/272/223/350/272/253/344/273/275/344/270/216/350/267/257/347/224/261.md +0 -20
  609. package/template/wiki/wiki//345/210/207/347/211/207/345/256/236/347/216/260/345/220/210/345/220/214.md +0 -21
  610. package/template/wiki/wiki//345/236/202/347/233/264/345/210/207/347/211/207Ticket.md +0 -23
  611. package/template/wiki/wiki//345/244/215/347/233/230/344/270/216/346/235/203/345/250/201/350/265/204/344/272/247/344/277/256/350/256/242.md +0 -20
  612. package/template/wiki/wiki//345/256/236/347/216/260/344/273/223/345/272/223/344/270/216/350/267/250/344/273/223/345/272/223/345/245/221/347/272/246.md +0 -22
  613. package/template/wiki/wiki//345/275/261/345/223/215/351/235/242/345/210/206/350/257/212/344/270/216/346/265/201/347/250/213/350/243/201/345/211/252.md +0 -20
  614. package/template/wiki/wiki//346/212/200/350/203/275/346/212/225/345/275/261/344/270/216/351/224/201/345/256/232.md +0 -23
  615. package/template/wiki/wiki//346/235/241/344/273/266/345/274/272/345/210/266/351/227/250/347/246/201.md +0 -18
  616. package/template/wiki/wiki//346/250/241/346/235/277/345/217/221/345/270/203/351/227/250/347/246/201/344/270/216/351/252/214/350/257/201.md +0 -22
  617. package/template/wiki/wiki//346/250/241/346/235/277/346/200/273/350/247/210.md +0 -20
  618. package/template/wiki/wiki//346/250/241/346/235/277/347/273/264/346/212/244/346/265/201/347/250/213.md +0 -19
@@ -1,4 +1,4 @@
1
- import { readFileSync } from "node:fs";
1
+ import { existsSync, readFileSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { parseDocument } from "../vendor/yaml.mjs";
4
4
  import { PROJECTION_ROOTS, ROOT } from "./skill-supply-chain.mjs";
@@ -6,9 +6,11 @@ import { PROJECTION_ROOTS, ROOT } from "./skill-supply-chain.mjs";
6
6
  export const DEFAULT_REGISTRY = path.join(ROOT, "docs/agents/yss-skill-registry.yaml");
7
7
  const LOCK_PATH = path.join(ROOT, "skills-lock.json");
8
8
  const ROUTER_CONTRACT = path.join(ROOT, ".agents/skills/yss-router/references/router-contract.yaml");
9
+ const LIFECYCLE_CONTRACT = path.join(ROOT, ".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml");
9
10
  const LAYERS = new Set(["core", "specialist", "compatibility", "maintainer-only"]);
10
11
  const MATURITIES = new Set(["draft", "verified", "supported", "deprecated"]);
11
12
  const ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
13
+ const PLATFORM_ALIAS_PATTERN = /^[a-z0-9][a-z0-9-]*(?::[a-z0-9][a-z0-9-]*)?$/;
12
14
 
13
15
  function fail(message) {
14
16
  throw new TypeError(message);
@@ -45,7 +47,7 @@ function requireString(value, field) {
45
47
  if (typeof value !== "string" || !value.trim()) fail(`${field} 不能为空`);
46
48
  }
47
49
 
48
- export function validateSkillRegistry(registry, { lock, routerContract, skillSource } = {}) {
50
+ export function validateSkillRegistry(registry, { lock, routerContract, lifecycleContract, skillSource } = {}) {
49
51
  if (!registry || typeof registry !== "object" || Array.isArray(registry)) fail("技能路由注册表必须是对象");
50
52
  if (registry.schema_version !== 1) fail("schema_version 必须为 1");
51
53
  if (registry.registry_id !== "yss.skill-routing") fail("registry_id 必须为 yss.skill-routing");
@@ -99,10 +101,14 @@ export function validateSkillRegistry(registry, { lock, routerContract, skillSou
99
101
  if (!MATURITIES.has(skill.maturity)) fail(`${skill.id} 未知 maturity: ${skill.maturity}`);
100
102
  if (typeof skill.instance_default_discoverable !== "boolean") fail(`${skill.id} 缺少 instance_default_discoverable`);
101
103
  if (skill.layer === "core" && skill.instance_default_discoverable !== true) fail(`${skill.id} 作为 core 必须默认可发现`);
102
- if ((skill.layer === "specialist" || skill.layer === "maintainer-only") && skill.instance_default_discoverable !== false) {
104
+ if (["specialist", "maintainer-only", "compatibility"].includes(skill.layer) && skill.instance_default_discoverable !== false) {
103
105
  fail(`${skill.id} 作为 ${skill.layer} 不得默认可发现`);
104
106
  }
105
- if (skill.maturity === "deprecated") requireString(skill.replaced_by, `${skill.id}.replaced_by`);
107
+ if (skill.maturity === "deprecated") {
108
+ requireString(skill.replaced_by, `${skill.id}.replaced_by`);
109
+ requireString(skill.migration_deadline, `${skill.id}.migration_deadline`);
110
+ requireString(skill.cleanup_status, `${skill.id}.cleanup_status`);
111
+ }
106
112
  if (skill.replaced_by && !ids.has(skill.replaced_by) && !skills.some((item) => item.id === skill.replaced_by)) {
107
113
  // resolved in second pass
108
114
  }
@@ -125,6 +131,7 @@ export function validateSkillRegistry(registry, { lock, routerContract, skillSou
125
131
  const platform = registry.platform_skills ?? [];
126
132
  if (!Array.isArray(platform)) fail("platform_skills 必须是数组");
127
133
  const platformIds = new Set();
134
+ const platformAliases = new Map();
128
135
  for (const skill of platform) {
129
136
  requireString(skill.id, "platform_skills.id");
130
137
  requireString(skill.root, `${skill.id}.root`);
@@ -132,9 +139,27 @@ export function validateSkillRegistry(registry, { lock, routerContract, skillSou
132
139
  if (typeof skill.instance_default_discoverable !== "boolean" || skill.instance_default_discoverable !== false) {
133
140
  fail(`${skill.id} 平台技能不得作为实例默认可发现`);
134
141
  }
142
+ if (!Array.isArray(skill.aliases) || skill.aliases.some((alias) => typeof alias !== "string" || !PLATFORM_ALIAS_PATTERN.test(alias))) {
143
+ fail(`${skill.id} aliases 必须是合法 id 数组`);
144
+ }
135
145
  if (platformIds.has(`${skill.root}:${skill.id}`)) fail(`重复平台技能: ${skill.root}/${skill.id}`);
136
146
  platformIds.add(`${skill.root}:${skill.id}`);
137
147
  }
148
+ const external = registry.external_skills ?? [];
149
+ if (!Array.isArray(external)) fail("external_skills 必须是数组");
150
+ const externalIds = new Set();
151
+ for (const skill of external) {
152
+ requireString(skill.id, "external_skills.id");
153
+ requireString(skill.source, `${skill.id}.source`);
154
+ if (externalIds.has(skill.id) || ids.has(skill.id) || aliases.has(skill.id) || platformAliases.has(skill.id)) fail(`external skill 冲突: ${skill.id}`);
155
+ externalIds.add(skill.id);
156
+ }
157
+ for (const skill of platform) {
158
+ for (const alias of skill.aliases) {
159
+ if (ids.has(alias) || aliases.has(alias) || platformAliases.has(alias)) fail(`alias 冲突: ${alias}`);
160
+ platformAliases.set(alias, `${skill.root}:${skill.id}`);
161
+ }
162
+ }
138
163
 
139
164
  if (lock) {
140
165
  const shared = Object.keys(lock.skills?.shared ?? {}).sort();
@@ -179,7 +204,58 @@ export function validateSkillRegistry(registry, { lock, routerContract, skillSou
179
204
  }
180
205
  const closures = Object.keys(routerContract.dependency_closure ?? {});
181
206
  for (const name of closures) {
182
- if (!ids.has(name) && !aliases.has(name)) fail(`Router 闭包引用了未登记技能: ${name}`);
207
+ if (!ids.has(name) && !aliases.has(name) && !externalIds.has(name)) fail(`Router 闭包引用了未登记技能: ${name}`);
208
+ }
209
+ for (const dependencies of Object.values(routerContract.dependency_closure ?? {})) {
210
+ for (const names of Object.values(dependencies ?? {})) {
211
+ for (const name of names ?? []) if (!ids.has(name) && !aliases.has(name) && !externalIds.has(name)) fail(`Router 依赖引用了未登记技能: ${name}`);
212
+ }
213
+ }
214
+ }
215
+
216
+ if (lifecycleContract || existsSync(LIFECYCLE_CONTRACT)) {
217
+ const lifecycle = lifecycleContract ?? yamlFromFile(LIFECYCLE_CONTRACT, "生命周期编排合同");
218
+ const routes = lifecycle.work_unit_routes;
219
+ if (!routes || typeof routes !== "object" || Array.isArray(routes)) fail("生命周期编排合同缺少 work_unit_routes");
220
+ const resolve = (name) => {
221
+ if (ids.has(name)) return name;
222
+ if (aliases.has(name)) return aliases.get(name);
223
+ if (platformAliases.has(name)) return platformAliases.get(name);
224
+ if (externalIds.has(name)) return name;
225
+ if ([...platformIds].some((key) => key.endsWith(`:${name}`))) return name;
226
+ return null;
227
+ };
228
+ for (const [routeId, route] of Object.entries(routes)) {
229
+ if (!route || typeof route !== "object") fail(`${routeId} 生命周期路由必须是对象`);
230
+ requireString(route.primary_skill, `${routeId}.primary_skill`);
231
+ if (!Array.isArray(route.supporting_skills)) fail(`${routeId}.supporting_skills 必须是数组`);
232
+ if (!Array.isArray(route.skills) || route.skills.length === 0) fail(`${routeId}.skills 不能为空`);
233
+ if (!route.applies_when || !route.not_applicable_reason) fail(`${routeId} 缺少 applies_when 或 not_applicable_reason`);
234
+ for (const name of [route.primary_skill, ...route.supporting_skills, ...route.skills]) {
235
+ if (!resolve(name)) fail(`生命周期路由引用了未登记技能: ${routeId} -> ${name}`);
236
+ }
237
+ if (route.frontend_route) {
238
+ requireString(route.frontend_route.primary_skill, `${routeId}.frontend_route.primary_skill`);
239
+ requireString(route.frontend_route.page_orchestration_skill, `${routeId}.frontend_route.page_orchestration_skill`);
240
+ const conditional = route.frontend_route.conditional_skills;
241
+ if (!conditional || typeof conditional !== "object" || Array.isArray(conditional)) fail(`${routeId}.frontend_route.conditional_skills 必须是对象`);
242
+ for (const [impact, names] of Object.entries(conditional)) {
243
+ if (!Array.isArray(names) || names.length === 0) fail(`${routeId}.frontend_route.conditional_skills.${impact} 必须是非空数组`);
244
+ for (const name of names) if (!resolve(name)) fail(`前端条件路由引用了未登记技能: ${routeId}.${impact} -> ${name}`);
245
+ if (route.frontend_route.not_applicable_reasons && typeof route.frontend_route.not_applicable_reasons[impact] !== "string") {
246
+ fail(`${routeId}.frontend_route.not_applicable_reasons.${impact} 必须是字符串`);
247
+ }
248
+ }
249
+ if (!resolve(route.frontend_route.primary_skill) || !resolve(route.frontend_route.page_orchestration_skill)) {
250
+ fail(`${routeId}.frontend_route 主入口引用了未登记技能`);
251
+ }
252
+ }
253
+ if (routeId === "work-unit.prototype-design") {
254
+ if (!route.skills.includes("prototype-review") || !route.supporting_skills.includes("prototype-review")) {
255
+ fail("原型工作单元必须包含独立 prototype-review supporting skill");
256
+ }
257
+ if (route.primary_skill === "prototype-review") fail("prototype-review 必须作为独立 supporting skill,不得成为生命周期主技能");
258
+ }
183
259
  }
184
260
  }
185
261
 
@@ -193,6 +269,7 @@ export function validateDefaultSkillRegistry() {
193
269
  return validateSkillRegistry(registry, {
194
270
  lock,
195
271
  routerContract,
272
+ lifecycleContract: yamlFromFile(LIFECYCLE_CONTRACT, "生命周期编排合同"),
196
273
  skillSource: (id) => readFileSync(path.join(ROOT, ".agents/skills", id, "SKILL.md"), "utf8")
197
274
  });
198
275
  }
@@ -49,6 +49,10 @@ export function unlockedProjectionEntries(candidates, allowedNames, isTracked) {
49
49
  const allowed = new Set(allowedNames);
50
50
  return candidates.filter((candidate) => candidate.isDirectory() || candidate.isSymbolicLink()).filter((candidate) => !allowed.has(candidate.name) && isTracked(candidate.name));
51
51
  }
52
+ export function unlockedCanonicalEntries(names, allowedNames, hasSkillMd = () => true) {
53
+ const allowed = new Set(allowedNames);
54
+ return names.filter((name) => !allowed.has(name) && !OBSOLETE.has(name) && hasSkillMd(name)).sort();
55
+ }
52
56
  export function syncSkills({ check = false } = {}) {
53
57
  const lock = parseLock();
54
58
  const shared = sharedFromLock(lock);
@@ -141,7 +145,7 @@ export function updateSkillLock(arguments_ = process.argv.slice(2)) {
141
145
  const sharedNames = [...new Set([...existing, ...additions])].filter((name) => !removals.has(name) && !OBSOLETE.has(name)).sort();
142
146
  const absent = sharedNames.filter((name) => !lstatSafe(path.join(SOURCE_ROOT, name))?.isDirectory());
143
147
  if (absent.length) throw new TypeError(`锁文件声明的共享 skills 缺少权威内容: ${absent.join(", ")}`);
144
- const unlocked = skillNames(SOURCE_ROOT).filter((name) => tracked(`.agents/skills/${name}`) && !sharedNames.includes(name) && !OBSOLETE.has(name));
148
+ const unlocked = unlockedCanonicalEntries(skillNames(SOURCE_ROOT), sharedNames, (name) => lstatSafe(path.join(SOURCE_ROOT, name, "SKILL.md"))?.isFile());
145
149
  if (unlocked.length) throw new TypeError(`发现未登记到 skills-lock.json 的已跟踪共享 skills: ${unlocked.join(", ")}\n确认新增后运行 scripts/update-skill-lock --add=<skill-name>`);
146
150
  const targets = [".agents/skills", ...PROJECTION_ROOTS];
147
151
  const shared = Object.fromEntries(sharedNames.map((name) => {
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ export {
3
+ REPOSITORY_SCOPES as scopes,
4
+ LAYOUT_POLICIES as layoutPolicies,
5
+ GITLINK_MODE as gitlinkMode,
6
+ NAMED_STRESS_SCENARIOS as namedStressScenarios,
7
+ violationRepositoryScope as violation,
8
+ validRepositoryScope as valid,
9
+ gitSubmoduleScaffoldViolation as scaffoldViolation,
10
+ isGitSubmoduleMount as isMount,
11
+ inspectWorkingTree as inspectWorkingTree,
12
+ inspectCheckoutState as inspectCheckout,
13
+ isWorkingTreeWritable as isWorkingTreeWritable,
14
+ regularDirectoryMisreadViolation as regularDirectoryMisread,
15
+ implementationWriteViolation as writeViolation
16
+ } from "./lib/repository-scope-policy.mjs";
@@ -0,0 +1,239 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import {
6
+ LAYOUT_POLICIES,
7
+ NAMED_STRESS_SCENARIOS,
8
+ REPOSITORY_SCOPES,
9
+ gitSubmoduleCommitViolation,
10
+ gitSubmodulePushOrderViolation,
11
+ gitSubmoduleScaffoldViolation,
12
+ implementationWriteViolation,
13
+ inspectCheckoutState,
14
+ inspectWorkingTreeScope,
15
+ isWorkingTreeWritable,
16
+ regularDirectoryMisreadViolation,
17
+ validRepositoryScope,
18
+ violationRepositoryScope
19
+ } from "./lib/repository-scope-policy.mjs";
20
+ import { makeGitlinkFixture } from "./lib/git-submodule-fixtures.mjs";
21
+
22
+ const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
23
+ const read = (relative) => readFileSync(path.join(root, relative), "utf8");
24
+ const failures = [];
25
+ const namedPassed = [];
26
+
27
+ function ensure(condition, message) {
28
+ if (!condition) failures.push(message);
29
+ }
30
+
31
+ function namedStress(id, condition, message) {
32
+ if (!NAMED_STRESS_SCENARIOS.includes(id)) {
33
+ failures.push(`named stress ${id}: unknown id`);
34
+ return;
35
+ }
36
+ if (!condition) {
37
+ failures.push(`named stress ${id}: FAIL ${message}`);
38
+ return;
39
+ }
40
+ namedPassed.push(id);
41
+ }
42
+
43
+ const validGitSubmodule = {
44
+ repository_scope: "git-submodule",
45
+ layout_policy: LAYOUT_POLICIES["git-submodule"],
46
+ project_root: "apps/backend/billing-service/",
47
+ gitlink_path: "apps/backend/billing-service",
48
+ git_entry_mode: "160000",
49
+ git_url: "https://example.invalid/billing-service.git",
50
+ gitmodules_name: "backend-billing-service",
51
+ superproject_git_url: "https://example.invalid/harness.git",
52
+ checkout_state: "attached-branch",
53
+ scaffold_status: "existing"
54
+ };
55
+
56
+ ensure(validRepositoryScope({ repository_scope: "external-repository", layout_policy: "external-repository-native", project_root: "src/" }), "应允许 external-repository");
57
+ ensure(validRepositoryScope({ repository_scope: "harness-apps", layout_policy: "harness-apps-multi-project", project_root: "apps/frontend/console/" }), "应允许 harness-apps");
58
+ ensure(validRepositoryScope(validGitSubmodule), `应允许正式 git-submodule: ${violationRepositoryScope(validGitSubmodule) ?? ""}`);
59
+
60
+ namedStress(
61
+ "unknown_scope",
62
+ violationRepositoryScope({ repository_scope: "monorepo" })?.includes("repository_scope must be one of"),
63
+ "未知 repository_scope 应阻断"
64
+ );
65
+ namedStress(
66
+ "layout_mismatch",
67
+ violationRepositoryScope({ ...validGitSubmodule, layout_policy: "harness-apps-multi-project" })?.includes("layout_policy"),
68
+ "git-submodule 不得套用 harness-apps layout_policy"
69
+ );
70
+ namedStress(
71
+ "same_origin_url",
72
+ violationRepositoryScope({ ...validGitSubmodule, git_url: validGitSubmodule.superproject_git_url })?.includes("differ"),
73
+ "子仓 url 不得等于 superproject"
74
+ );
75
+ namedStress(
76
+ "copy_source_into_harness",
77
+ violationRepositoryScope({ ...validGitSubmodule, copy_source_into_harness: true })?.includes("gitlink mount"),
78
+ "复制源码进 Harness 应阻断"
79
+ );
80
+ namedStress(
81
+ "missing_git_entry_mode",
82
+ violationRepositoryScope({ ...validGitSubmodule, git_entry_mode: "" })?.includes("git_entry_mode must be 160000"),
83
+ "git-submodule 缺少 git_entry_mode 应阻断"
84
+ );
85
+
86
+ ensure(violationRepositoryScope({
87
+ repository_scope: "harness-apps",
88
+ layout_policy: "harness-apps-multi-project",
89
+ project_root: "apps/backend/billing-service/",
90
+ git_entry_mode: "160000"
91
+ })?.includes("git-submodule"), "harness-apps 记录 gitlink 应改登记为 git-submodule");
92
+ ensure(violationRepositoryScope({
93
+ repository_scope: "harness-apps",
94
+ layout_policy: "harness-apps-multi-project",
95
+ project_root: "apps/backend/billing-service/",
96
+ gitlink_path: "apps/backend/billing-service",
97
+ gitmodules_name: "backend-billing-service"
98
+ })?.includes("git-submodule identity"), "harness-apps 填写 gitlink 身份字段应阻断");
99
+ ensure(violationRepositoryScope({ repository_scope: "external-repository", gitlink_path: "apps/backend/billing-service", git_entry_mode: "160000" })?.includes("git-submodule"), "external-repository 挂 apps/ gitlink 应阻断");
100
+ ensure(violationRepositoryScope({ ...validGitSubmodule, checkout_state: "detached-head", commit_allowed: true })?.includes("detached HEAD"), "detached HEAD 提交应阻断");
101
+ ensure(violationRepositoryScope({ ...validGitSubmodule, checkout_state: "detached-head", scaffold_status: "required" })?.includes("regular directory"), "detached HEAD 脚手架应阻断");
102
+ ensure(violationRepositoryScope({ ...validGitSubmodule, checkout_state: "empty-gitlink", scaffold_status: "required" })?.includes("empty or uninitialized"), "空 gitlink 脚手架应阻断");
103
+ ensure(gitSubmoduleCommitViolation({ checkout_state: "detached-head", commit_authorized: true })?.includes("attached branch"), "commit 辅助校验应拒绝 detached HEAD");
104
+ ensure(gitSubmodulePushOrderViolation(["superproject-gitlink", "submodule-repositories"])?.includes("submodule-repositories then superproject-gitlink"), "先父后子 push 应阻断");
105
+ ensure(gitSubmodulePushOrderViolation(["submodule-repositories", "superproject-gitlink"]) === null, "先子后父顺序应允许");
106
+
107
+ const emptyGitlink = makeGitlinkFixture({ checkout: "empty-gitlink" });
108
+ const detached = makeGitlinkFixture({ checkout: "detached-head" });
109
+ const attached = makeGitlinkFixture({ checkout: "attached-branch" });
110
+ try {
111
+ const emptyTarget = path.join(emptyGitlink.superproject, emptyGitlink.mount);
112
+ const emptyRecord = {
113
+ repository_scope: "git-submodule",
114
+ project_root: "apps/backend/billing-service/",
115
+ checkout_state: "empty-gitlink"
116
+ };
117
+ const emptyInspection = inspectWorkingTreeScope(emptyGitlink.superproject, emptyRecord);
118
+ namedStress(
119
+ "empty_gitlink_as_regular_dir",
120
+ typeof emptyInspection === "object"
121
+ && emptyInspection !== null
122
+ && Array.isArray(emptyInspection) === false
123
+ && emptyInspection.writable === false
124
+ && emptyInspection.writable === true === false
125
+ && isWorkingTreeWritable(emptyInspection) === false
126
+ && emptyInspection.violation?.includes("regular directory")
127
+ && inspectCheckoutState(emptyGitlink.superproject, emptyTarget) === "empty-gitlink"
128
+ && implementationWriteViolation(emptyGitlink.superproject, path.join(emptyTarget, "src/Foo.java"))?.includes("普通目录写入")
129
+ && gitSubmoduleScaffoldViolation(emptyGitlink.superproject, path.join(emptyGitlink.superproject, "apps/backend"), "billing-service")?.includes("gitlink 不得由脚手架覆盖"),
130
+ "空 gitlink 仍被当成普通目录"
131
+ );
132
+ namedStress(
133
+ "declared_harness_apps_actual_gitlink",
134
+ inspectWorkingTreeScope(emptyGitlink.superproject, {
135
+ repository_scope: "harness-apps",
136
+ project_root: "apps/backend/billing-service/"
137
+ }).writable === false
138
+ && inspectWorkingTreeScope(emptyGitlink.superproject, {
139
+ repository_scope: "harness-apps",
140
+ project_root: "apps/backend/billing-service/"
141
+ }).violation?.includes("不得登记为 harness-apps"),
142
+ "声明 harness-apps 但工作树是 gitlink 应阻断"
143
+ );
144
+ const detachedTarget = path.join(detached.superproject, detached.mount);
145
+ const detachedInspection = inspectWorkingTreeScope(detached.superproject, {
146
+ repository_scope: "git-submodule",
147
+ project_root: "apps/backend/billing-service/",
148
+ checkout_state: "detached-head"
149
+ });
150
+ namedStress(
151
+ "detached_head_as_regular_dir",
152
+ detachedInspection.writable === false
153
+ && inspectCheckoutState(detached.superproject, detachedTarget) === "detached-head"
154
+ && detachedInspection.violation?.includes("regular directory")
155
+ && implementationWriteViolation(detached.superproject, path.join(detachedTarget, "nested-service"))?.includes("普通目录写入")
156
+ && gitSubmoduleScaffoldViolation(detached.superproject, detachedTarget, "nested-service")?.includes("gitlink 不得由脚手架覆盖"),
157
+ "detached HEAD 仍被当成普通目录"
158
+ );
159
+ namedStress(
160
+ "force_overlay_mount",
161
+ gitSubmoduleScaffoldViolation(
162
+ emptyGitlink.superproject,
163
+ path.join(emptyGitlink.superproject, "apps/backend"),
164
+ "billing-service",
165
+ { force: true }
166
+ )?.includes("--force")
167
+ && regularDirectoryMisreadViolation(validGitSubmodule, { force: true })?.includes("--force"),
168
+ "--force 仍可覆盖 gitlink 挂载点"
169
+ );
170
+ const attachedNested = path.join(attached.superproject, attached.mount);
171
+ const attachedInspection = inspectWorkingTreeScope(attached.superproject, {
172
+ ...validGitSubmodule,
173
+ checkout_state: "attached-branch"
174
+ });
175
+ ensure(
176
+ inspectCheckoutState(attached.superproject, attachedNested) === "attached-branch",
177
+ "附加分支 fixture 应处于 attached-branch"
178
+ );
179
+ ensure(attachedInspection.writable === true, "附加分支 git-submodule 工作树应可写");
180
+ ensure(attachedInspection.violation === null, "附加分支工作树对照不应返回 violation");
181
+ ensure(typeof emptyInspection === "object" && emptyInspection !== null && Array.isArray(emptyInspection) === false, "inspectWorkingTreeScope 必须返回对象,不得返回字符串");
182
+ ensure(
183
+ inspectWorkingTreeScope(emptyGitlink.superproject, {
184
+ ...validGitSubmodule,
185
+ checkout_state: "empty-gitlink"
186
+ }).writable === false,
187
+ "已登记为空 gitlink 的 git-submodule 不得返回可写"
188
+ );
189
+ const failedProbe = inspectWorkingTreeScope(process.cwd(), {
190
+ ...validGitSubmodule,
191
+ checkout_state: "empty-gitlink"
192
+ });
193
+ ensure(typeof failedProbe === "object" && failedProbe !== null, "探测失败时仍须返回对象,不得返回字符串");
194
+ ensure(failedProbe.writable === false && isWorkingTreeWritable(failedProbe) === false, "登记为空 gitlink 时即使工作树探测失败也不得返回可写");
195
+ ensure(
196
+ implementationWriteViolation(attached.superproject, path.join(attachedNested, "src")) === null,
197
+ "附加分支工作树内写入不应被当成空 gitlink / detached HEAD"
198
+ );
199
+ ensure(
200
+ gitSubmoduleScaffoldViolation(attached.superproject, attachedNested, "nested-service") === null,
201
+ "附加分支子仓工作树内生成应允许"
202
+ );
203
+ } finally {
204
+ emptyGitlink.cleanup();
205
+ detached.cleanup();
206
+ attached.cleanup();
207
+ }
208
+
209
+ for (const id of NAMED_STRESS_SCENARIOS) {
210
+ if (!namedPassed.includes(id)) failures.push(`named stress ${id}: missing`);
211
+ }
212
+
213
+ const markerFiles = [
214
+ ["docs/process/implementation-repo-integration.md", "repository_scope: git-submodule"],
215
+ ["docs/templates/implementation-repo-registry-template.md", "git-submodule"],
216
+ ["docs/templates/implementation-repo-registry-template.md", "git-submodule-harness-apps"],
217
+ ["docs/templates/cross-repo-slice-template.md", "superproject-gitlink-update"],
218
+ ["docs/templates/implementation-routing-template.md", "git-submodule-harness-apps"],
219
+ [".agents/skills/implementation-repo-onboarding/SKILL.md", "git-submodule"],
220
+ [".agents/skills/yss-router/references/slice-implementation-contract.md", "git-submodule-harness-apps"],
221
+ [".agents/skills/yss-router/references/router-contract.yaml", "git-submodule-harness-apps"],
222
+ [".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml", "repository_scope=git-submodule"],
223
+ [".agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs", "gitSubmoduleScaffoldViolation"],
224
+ [".agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs", "refuseGitlinkAsRegularDirectory"]
225
+ ];
226
+ for (const [file, marker] of markerFiles) {
227
+ ensure(existsSync(path.join(root, file)), `缺少场景资产: ${file}`);
228
+ ensure(read(file).includes(marker), `场景资产缺少标记 ${marker}: ${file}`);
229
+ }
230
+
231
+ ensure(REPOSITORY_SCOPES.includes("git-submodule"), "REPOSITORY_SCOPES 必须包含 git-submodule");
232
+
233
+ if (failures.length > 0) {
234
+ process.stderr.write(`${failures.join("\n")}\n`);
235
+ process.exitCode = 1;
236
+ } else {
237
+ process.stdout.write(`${namedPassed.map((id) => `named stress ${id}: PASS`).join("\n")}\n`);
238
+ process.stdout.write("实现仓库 repository_scope 压力场景验证通过\n");
239
+ }
@@ -430,6 +430,60 @@ def main() -> int:
430
430
  "批准覆盖的备份必须保留原目录内容",
431
431
  )
432
432
 
433
+ gitlink_root = temp_root / "gitlink-superproject"
434
+ gitlink_backend = gitlink_root / "apps" / "backend"
435
+ gitlink_project = gitlink_backend / "gitlink-service"
436
+ gitlink_project.mkdir(parents=True)
437
+ (gitlink_root / ".gitmodules").write_text(
438
+ '[submodule "backend-gitlink-service"]\n'
439
+ "\tpath = apps/backend/gitlink-service\n"
440
+ "\turl = https://example.invalid/gitlink-service.git\n",
441
+ encoding="utf-8",
442
+ )
443
+ gitlink_contract = temp_root / "gitlink-contract.json"
444
+ write_contract(
445
+ gitlink_contract,
446
+ gitlink_backend,
447
+ "gitlink-service",
448
+ "backend-scaffold-gitlink",
449
+ "lifecycle/approval-gitlink",
450
+ "router/draft-gitlink",
451
+ "lifecycle/contracts/backend-scaffold-gitlink.yaml",
452
+ force_allowed=True,
453
+ )
454
+ gitlink_result = run_generator(
455
+ "--project-name",
456
+ "gitlink-service",
457
+ "--base-package",
458
+ "com.yss.gitlink",
459
+ "--output-dir",
460
+ str(gitlink_backend),
461
+ "--force",
462
+ "--contract-id",
463
+ "backend-scaffold-gitlink",
464
+ "--contract-version",
465
+ "1",
466
+ "--approval-ref",
467
+ "lifecycle/approval-gitlink",
468
+ "--router-draft-ref",
469
+ "router/draft-gitlink",
470
+ "--persisted-ref",
471
+ "lifecycle/contracts/backend-scaffold-gitlink.yaml",
472
+ "--contract-file",
473
+ str(gitlink_contract),
474
+ "--overwrite-scope",
475
+ "gitlink-service/**",
476
+ "--rollback-ref",
477
+ "git:checkpoint-gitlink",
478
+ )
479
+ require(
480
+ gitlink_result.returncode != 0
481
+ and "gitlink 不得由脚手架覆盖" in (gitlink_result.stdout + gitlink_result.stderr)
482
+ and "请显式传入 --force" not in (gitlink_result.stdout + gitlink_result.stderr),
483
+ "空 gitlink 挂载点不得被脚手架覆盖",
484
+ )
485
+ require(not (gitlink_project / "pom.xml").exists(), "拒绝 gitlink 覆盖时不得留下骨架")
486
+
433
487
  print("YSS 脚手架生成器受控生成场景验证通过")
434
488
  return 0
435
489
 
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ import { validateSkillGovernance } from "./lib/skill-governance.mjs";
3
+
4
+ try {
5
+ const result = validateSkillGovernance();
6
+ process.stdout.write(`技能规范冲突扫描通过(${result.legacy_aliases} 个兼容 alias)\n`);
7
+ } catch (error) {
8
+ process.stderr.write(`技能规范冲突扫描失败: ${error.message}\n`);
9
+ process.exitCode = 1;
10
+ }
@@ -5,7 +5,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
5
  cd "$ROOT_DIR"
6
6
  node -e 'const [major]=process.versions.node.split(".").map(Number); if (major < 22 || major >= 27) { console.error("模板工具需要 Node >=22 <27"); process.exit(1); }'
7
7
 
8
- required_files=(yss-project.yaml AGENTS.md CONTEXT.md skills-lock.json docs/agents/yss-skill-registry.yaml docs/process/lifecycle-registry.yaml docs/process/lifecycle-registry-baseline.json docs/process/maintenance-intensity.yaml docs/process/schemas/lifecycle-checkpoint.schema.json docs/process/schemas/frontend-implementation-evidence.schema.json docs/process/templates/lifecycle-checkpoint-template.yaml docs/process/templates/frontend-implementation-plan-template.yaml docs/process/templates/frontend-implementation-verification-template.yaml scripts/repository-mode scripts/implementation-path-policy scripts/sync-skills scripts/update-skill-lock scripts/generate-lifecycle-artifacts scripts/verify-lifecycle-registry scripts/verify-lifecycle-checkpoint scripts/verify-frontend-implementation-evidence scripts/verify-maintenance-checkpoint scripts/verify-maintenance-intensity-scenarios scripts/verify-skill-registry scripts/verify-yss-dto-openapi-profile scripts/verify-yss-dto-openapi-scenarios scripts/export-yss-skills)
8
+ required_files=(yss-project.yaml AGENTS.md CONTEXT.md skills-lock.json docs/agents/yss-skill-registry.yaml docs/process/lifecycle-registry.yaml docs/process/lifecycle-registry-baseline.json docs/process/maintenance-intensity.yaml docs/process/schemas/lifecycle-checkpoint.schema.json docs/process/schemas/frontend-implementation-evidence.schema.json docs/process/templates/lifecycle-checkpoint-template.yaml docs/process/templates/frontend-implementation-plan-template.yaml docs/process/templates/frontend-implementation-verification-template.yaml scripts/repository-mode scripts/implementation-path-policy scripts/repository-scope-policy scripts/sync-skills scripts/update-skill-lock scripts/generate-lifecycle-artifacts scripts/verify-lifecycle-registry scripts/verify-lifecycle-checkpoint scripts/verify-frontend-implementation-evidence scripts/verify-maintenance-checkpoint scripts/verify-maintenance-intensity-scenarios scripts/verify-skill-registry scripts/verify-skill-governance scripts/verify-yss-dto-openapi-profile scripts/verify-yss-dto-openapi-scenarios scripts/export-yss-skills)
9
9
  for required in "${required_files[@]}"; do test -f "$required" || { echo "缺少模板必需文件: $required" >&2; exit 1; }; done
10
10
 
11
11
  repository_mode="$(scripts/repository-mode)"
@@ -19,6 +19,7 @@ fi
19
19
  scripts/sync-skills --check
20
20
  scripts/update-skill-lock --check
21
21
  scripts/verify-skill-registry
22
+ scripts/verify-skill-governance
22
23
  scripts/verify-yss-dto-openapi-profile
23
24
  scripts/verify-yss-dto-openapi-scenarios
24
25
  scripts/verify-lifecycle-registry
@@ -29,6 +30,7 @@ scripts/verify-lifecycle-scenarios
29
30
  scripts/verify-maintenance-intensity-scenarios
30
31
  scripts/verify-governance-release
31
32
  scripts/verify-implementation-path-scenarios
33
+ scripts/verify-repository-scope-scenarios
32
34
  scripts/verify-scaffold-generator-scenarios
33
35
  scripts/verify-prototype-backend-scaffold-scenarios
34
36
  scripts/verify-matt-yss-integration-scenarios
@@ -37,7 +39,7 @@ scripts/verify-yss-ui-scenarios
37
39
  scripts/verify-openapi-yaml-first-scenarios
38
40
  scripts/verify-openapi-json-handoff-scenarios
39
41
 
40
- for entry in scripts/sync-skills scripts/update-skill-lock scripts/generate-lifecycle-artifacts scripts/verify-lifecycle-registry scripts/verify-lifecycle-checkpoint scripts/verify-frontend-implementation-evidence scripts/verify-maintenance-checkpoint scripts/verify-maintenance-intensity-scenarios scripts/verify-skill-registry scripts/verify-yss-dto-openapi-profile scripts/verify-yss-dto-openapi-scenarios scripts/verify-lifecycle-scenarios scripts/verify-matt-yss-integration-scenarios scripts/verify-prototype-backend-scaffold-scenarios scripts/verify-yss-router-scenarios scripts/verify-openapi-yaml-first-scenarios scripts/verify-openapi-json-handoff-scenarios scripts/export-yss-skills; do node --check "$entry"; done
42
+ for entry in scripts/sync-skills scripts/update-skill-lock scripts/generate-lifecycle-artifacts scripts/verify-lifecycle-registry scripts/verify-lifecycle-checkpoint scripts/verify-frontend-implementation-evidence scripts/verify-maintenance-checkpoint scripts/verify-maintenance-intensity-scenarios scripts/verify-skill-registry scripts/verify-skill-governance scripts/verify-yss-dto-openapi-profile scripts/verify-yss-dto-openapi-scenarios scripts/verify-lifecycle-scenarios scripts/verify-matt-yss-integration-scenarios scripts/verify-prototype-backend-scaffold-scenarios scripts/verify-yss-router-scenarios scripts/verify-openapi-yaml-first-scenarios scripts/verify-openapi-json-handoff-scenarios scripts/verify-repository-scope-scenarios scripts/export-yss-skills; do node --check "$entry"; done
41
43
 
42
44
  legacy_runtime="ru""by"
43
45
  script_roots=(scripts)