create-yss-spec 2.2.0 → 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 (461) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/rules/yss-ai-skills.md +59 -0
  4. package/template/.agents/skills/.yss-skills-manifest.json +28 -0
  5. package/template/.agents/skills/component-selection-imports/SKILL.md +64 -0
  6. package/template/.agents/skills/file-export-download/SKILL.md +160 -0
  7. package/template/.agents/skills/file-export-download/agents/openai.yaml +4 -0
  8. package/template/.agents/skills/formily-foundation/SKILL.md +176 -0
  9. package/template/.agents/skills/formily-foundation/references/examples.md +486 -0
  10. package/template/.agents/skills/formily-linkage-effects/SKILL.md +167 -0
  11. package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +137 -0
  12. package/template/.agents/skills/formily-step-flow/SKILL.md +194 -0
  13. package/template/.agents/skills/frontend-commit/SKILL.md +118 -0
  14. package/template/.agents/skills/frontend-commit/agents/openai.yaml +7 -0
  15. package/template/.agents/skills/frontend-commit/references/scope-and-examples.md +111 -0
  16. package/template/.agents/skills/java-backend-commit/SKILL.md +121 -0
  17. package/template/.agents/skills/java-backend-commit/agents/openai.yaml +7 -0
  18. package/template/.agents/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  19. package/template/.agents/skills/page-form-module/SKILL.md +168 -0
  20. package/template/.agents/skills/page-list-module/SKILL.md +137 -0
  21. package/template/.agents/skills/page-skeleton/SKILL.md +76 -0
  22. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  23. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  24. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  25. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  26. package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  27. package/template/.agents/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  28. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  29. package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  30. package/template/.agents/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  31. package/template/.agents/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  32. package/template/.agents/skills/prototype-page-acceptance/SKILL.md +62 -0
  33. package/template/.agents/skills/theme-token-usage/SKILL.md +123 -0
  34. package/template/.agents/skills/theme-token-usage/agents/openai.yaml +4 -0
  35. package/template/.agents/skills/vue3-best-practices/SKILL.md +68 -0
  36. package/template/.agents/skills/yedit-table-usage/SKILL.md +227 -0
  37. package/template/.agents/skills/yss-api-integration/SKILL.md +12 -2
  38. package/template/.agents/skills/yss-components/SKILL.md +1 -1
  39. package/template/.agents/skills/yss-design-system/SKILL.md +1 -1
  40. package/template/.agents/skills/yss-formily/SKILL.md +233 -265
  41. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  42. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  43. package/template/.agents/skills/yss-openapi-governance/SKILL.md +2 -2
  44. package/template/.agents/skills/yss-page-module-development/SKILL.md +12 -2
  45. package/template/.agents/skills/yss-page-module-development/references/component-map.md +34 -0
  46. package/template/.agents/skills/yss-page-module-development/references/hooks-map.md +11 -0
  47. package/template/.agents/skills/yss-page-module-development/references/utils-map.md +14 -0
  48. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  49. package/template/.agents/skills/yss-router/references/boundaries.md +1 -1
  50. package/template/.agents/skills/yss-router/references/router-contract.yaml +6 -2
  51. package/template/.agents/skills/yss-ui/SKILL.md +1 -1
  52. package/template/.agents/skills/yss-use-table-height/SKILL.md +9 -0
  53. package/template/.agents/skills/yss-use-tree-height/SKILL.md +9 -0
  54. package/template/.agents/skills/ytable-usage/SKILL.md +251 -0
  55. package/template/.agents/skills/ytree-usage/SKILL.md +132 -0
  56. package/template/.claude/skills/.yss-skills-manifest.json +29 -0
  57. package/template/.claude/skills/component-selection-imports/SKILL.md +64 -0
  58. package/template/.claude/skills/file-export-download/SKILL.md +160 -0
  59. package/template/.claude/skills/file-export-download/agents/openai.yaml +4 -0
  60. package/template/.claude/skills/formily-foundation/SKILL.md +176 -0
  61. package/template/.claude/skills/formily-foundation/references/examples.md +486 -0
  62. package/template/.claude/skills/formily-linkage-effects/SKILL.md +167 -0
  63. package/template/.claude/skills/formily-mode-slot-detail/SKILL.md +137 -0
  64. package/template/.claude/skills/formily-step-flow/SKILL.md +194 -0
  65. package/template/.claude/skills/frontend-commit/SKILL.md +118 -0
  66. package/template/.claude/skills/frontend-commit/agents/openai.yaml +7 -0
  67. package/template/.claude/skills/frontend-commit/references/scope-and-examples.md +111 -0
  68. package/template/.claude/skills/java-backend-commit/SKILL.md +121 -0
  69. package/template/.claude/skills/java-backend-commit/agents/openai.yaml +7 -0
  70. package/template/.claude/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  71. package/template/.claude/skills/page-form-module/SKILL.md +168 -0
  72. package/template/.claude/skills/page-list-module/SKILL.md +137 -0
  73. package/template/.claude/skills/page-skeleton/SKILL.md +76 -0
  74. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  75. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  76. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  77. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  78. package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  79. package/template/.claude/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  80. package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  81. package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  82. package/template/.claude/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  83. package/template/.claude/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  84. package/template/.claude/skills/prototype-page-acceptance/SKILL.md +62 -0
  85. package/template/.claude/skills/theme-token-usage/SKILL.md +123 -0
  86. package/template/.claude/skills/theme-token-usage/agents/openai.yaml +4 -0
  87. package/template/.claude/skills/vue3-best-practices/SKILL.md +68 -0
  88. package/template/.claude/skills/yedit-table-usage/SKILL.md +227 -0
  89. package/template/.claude/skills/yss-api-integration/SKILL.md +12 -2
  90. package/template/.claude/skills/yss-components/SKILL.md +1 -1
  91. package/template/.claude/skills/yss-design-system/SKILL.md +1 -1
  92. package/template/.claude/skills/yss-formily/SKILL.md +233 -265
  93. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  94. package/template/.claude/skills/yss-hook/SKILL.md +1 -1
  95. package/template/.claude/skills/yss-openapi-governance/SKILL.md +2 -2
  96. package/template/.claude/skills/yss-page-module-development/SKILL.md +12 -2
  97. package/template/.claude/skills/yss-page-module-development/references/component-map.md +34 -0
  98. package/template/.claude/skills/yss-page-module-development/references/hooks-map.md +11 -0
  99. package/template/.claude/skills/yss-page-module-development/references/utils-map.md +14 -0
  100. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  101. package/template/.claude/skills/yss-router/references/boundaries.md +1 -1
  102. package/template/.claude/skills/yss-router/references/router-contract.yaml +6 -2
  103. package/template/.claude/skills/yss-ui/SKILL.md +1 -1
  104. package/template/.claude/skills/yss-use-table-height/SKILL.md +9 -0
  105. package/template/.claude/skills/yss-use-tree-height/SKILL.md +9 -0
  106. package/template/.claude/skills/ytable-usage/SKILL.md +251 -0
  107. package/template/.claude/skills/ytree-usage/SKILL.md +132 -0
  108. package/template/.codex/skills/component-selection-imports/SKILL.md +64 -0
  109. package/template/.codex/skills/file-export-download/SKILL.md +160 -0
  110. package/template/.codex/skills/file-export-download/agents/openai.yaml +4 -0
  111. package/template/.codex/skills/formily-foundation/SKILL.md +176 -0
  112. package/template/.codex/skills/formily-foundation/references/examples.md +486 -0
  113. package/template/.codex/skills/formily-linkage-effects/SKILL.md +167 -0
  114. package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +137 -0
  115. package/template/.codex/skills/formily-step-flow/SKILL.md +194 -0
  116. package/template/.codex/skills/frontend-commit/SKILL.md +118 -0
  117. package/template/.codex/skills/frontend-commit/agents/openai.yaml +7 -0
  118. package/template/.codex/skills/frontend-commit/references/scope-and-examples.md +111 -0
  119. package/template/.codex/skills/java-backend-commit/SKILL.md +121 -0
  120. package/template/.codex/skills/java-backend-commit/agents/openai.yaml +7 -0
  121. package/template/.codex/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  122. package/template/.codex/skills/page-form-module/SKILL.md +168 -0
  123. package/template/.codex/skills/page-list-module/SKILL.md +137 -0
  124. package/template/.codex/skills/page-skeleton/SKILL.md +76 -0
  125. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  126. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  127. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  128. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  129. package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  130. package/template/.codex/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  131. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  132. package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  133. package/template/.codex/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  134. package/template/.codex/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  135. package/template/.codex/skills/prototype-page-acceptance/SKILL.md +62 -0
  136. package/template/.codex/skills/theme-token-usage/SKILL.md +123 -0
  137. package/template/.codex/skills/theme-token-usage/agents/openai.yaml +4 -0
  138. package/template/.codex/skills/vue3-best-practices/SKILL.md +68 -0
  139. package/template/.codex/skills/yedit-table-usage/SKILL.md +227 -0
  140. package/template/.codex/skills/yss-api-integration/SKILL.md +12 -2
  141. package/template/.codex/skills/yss-components/SKILL.md +1 -1
  142. package/template/.codex/skills/yss-design-system/SKILL.md +1 -1
  143. package/template/.codex/skills/yss-formily/SKILL.md +233 -265
  144. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  145. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  146. package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -2
  147. package/template/.codex/skills/yss-page-module-development/SKILL.md +12 -2
  148. package/template/.codex/skills/yss-page-module-development/references/component-map.md +34 -0
  149. package/template/.codex/skills/yss-page-module-development/references/hooks-map.md +11 -0
  150. package/template/.codex/skills/yss-page-module-development/references/utils-map.md +14 -0
  151. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  152. package/template/.codex/skills/yss-router/references/boundaries.md +1 -1
  153. package/template/.codex/skills/yss-router/references/router-contract.yaml +6 -2
  154. package/template/.codex/skills/yss-ui/SKILL.md +1 -1
  155. package/template/.codex/skills/yss-use-table-height/SKILL.md +9 -0
  156. package/template/.codex/skills/yss-use-tree-height/SKILL.md +9 -0
  157. package/template/.codex/skills/ytable-usage/SKILL.md +251 -0
  158. package/template/.codex/skills/ytree-usage/SKILL.md +132 -0
  159. package/template/.cursor/skills/.yss-skills-manifest.json +29 -0
  160. package/template/.cursor/skills/component-selection-imports/SKILL.md +64 -0
  161. package/template/.cursor/skills/file-export-download/SKILL.md +160 -0
  162. package/template/.cursor/skills/file-export-download/agents/openai.yaml +4 -0
  163. package/template/.cursor/skills/formily-foundation/SKILL.md +176 -0
  164. package/template/.cursor/skills/formily-foundation/references/examples.md +486 -0
  165. package/template/.cursor/skills/formily-linkage-effects/SKILL.md +167 -0
  166. package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +137 -0
  167. package/template/.cursor/skills/formily-step-flow/SKILL.md +194 -0
  168. package/template/.cursor/skills/frontend-commit/SKILL.md +118 -0
  169. package/template/.cursor/skills/frontend-commit/agents/openai.yaml +7 -0
  170. package/template/.cursor/skills/frontend-commit/references/scope-and-examples.md +111 -0
  171. package/template/.cursor/skills/java-backend-commit/SKILL.md +121 -0
  172. package/template/.cursor/skills/java-backend-commit/agents/openai.yaml +7 -0
  173. package/template/.cursor/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  174. package/template/.cursor/skills/page-form-module/SKILL.md +168 -0
  175. package/template/.cursor/skills/page-list-module/SKILL.md +137 -0
  176. package/template/.cursor/skills/page-skeleton/SKILL.md +76 -0
  177. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  178. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  179. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  180. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  181. package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  182. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  183. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  184. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  185. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  186. package/template/.cursor/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  187. package/template/.cursor/skills/prototype-page-acceptance/SKILL.md +62 -0
  188. package/template/.cursor/skills/theme-token-usage/SKILL.md +123 -0
  189. package/template/.cursor/skills/theme-token-usage/agents/openai.yaml +4 -0
  190. package/template/.cursor/skills/vue3-best-practices/SKILL.md +68 -0
  191. package/template/.cursor/skills/yedit-table-usage/SKILL.md +227 -0
  192. package/template/.cursor/skills/yss-api-integration/SKILL.md +12 -2
  193. package/template/.cursor/skills/yss-components/SKILL.md +1 -1
  194. package/template/.cursor/skills/yss-design-system/SKILL.md +1 -1
  195. package/template/.cursor/skills/yss-formily/SKILL.md +233 -265
  196. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  197. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  198. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +2 -2
  199. package/template/.cursor/skills/yss-page-module-development/SKILL.md +12 -2
  200. package/template/.cursor/skills/yss-page-module-development/references/component-map.md +34 -0
  201. package/template/.cursor/skills/yss-page-module-development/references/hooks-map.md +11 -0
  202. package/template/.cursor/skills/yss-page-module-development/references/utils-map.md +14 -0
  203. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  204. package/template/.cursor/skills/yss-router/references/boundaries.md +1 -1
  205. package/template/.cursor/skills/yss-router/references/router-contract.yaml +6 -2
  206. package/template/.cursor/skills/yss-ui/SKILL.md +1 -1
  207. package/template/.cursor/skills/yss-use-table-height/SKILL.md +9 -0
  208. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +9 -0
  209. package/template/.cursor/skills/ytable-usage/SKILL.md +251 -0
  210. package/template/.cursor/skills/ytree-usage/SKILL.md +132 -0
  211. package/template/.cursorrules +32 -0
  212. package/template/.hermes/skills/component-selection-imports/SKILL.md +64 -0
  213. package/template/.hermes/skills/file-export-download/SKILL.md +160 -0
  214. package/template/.hermes/skills/file-export-download/agents/openai.yaml +4 -0
  215. package/template/.hermes/skills/formily-foundation/SKILL.md +176 -0
  216. package/template/.hermes/skills/formily-foundation/references/examples.md +486 -0
  217. package/template/.hermes/skills/formily-linkage-effects/SKILL.md +167 -0
  218. package/template/.hermes/skills/formily-mode-slot-detail/SKILL.md +137 -0
  219. package/template/.hermes/skills/formily-step-flow/SKILL.md +194 -0
  220. package/template/.hermes/skills/frontend-commit/SKILL.md +118 -0
  221. package/template/.hermes/skills/frontend-commit/agents/openai.yaml +7 -0
  222. package/template/.hermes/skills/frontend-commit/references/scope-and-examples.md +111 -0
  223. package/template/.hermes/skills/java-backend-commit/SKILL.md +121 -0
  224. package/template/.hermes/skills/java-backend-commit/agents/openai.yaml +7 -0
  225. package/template/.hermes/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  226. package/template/.hermes/skills/page-form-module/SKILL.md +168 -0
  227. package/template/.hermes/skills/page-list-module/SKILL.md +137 -0
  228. package/template/.hermes/skills/page-skeleton/SKILL.md +76 -0
  229. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  230. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  231. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  232. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  233. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  234. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  235. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  236. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  237. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  238. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  239. package/template/.hermes/skills/prototype-page-acceptance/SKILL.md +62 -0
  240. package/template/.hermes/skills/theme-token-usage/SKILL.md +123 -0
  241. package/template/.hermes/skills/theme-token-usage/agents/openai.yaml +4 -0
  242. package/template/.hermes/skills/vue3-best-practices/SKILL.md +68 -0
  243. package/template/.hermes/skills/yedit-table-usage/SKILL.md +227 -0
  244. package/template/.hermes/skills/yss-api-integration/SKILL.md +12 -2
  245. package/template/.hermes/skills/yss-components/SKILL.md +1 -1
  246. package/template/.hermes/skills/yss-design-system/SKILL.md +1 -1
  247. package/template/.hermes/skills/yss-formily/SKILL.md +233 -265
  248. package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  249. package/template/.hermes/skills/yss-hook/SKILL.md +1 -1
  250. package/template/.hermes/skills/yss-openapi-governance/SKILL.md +2 -2
  251. package/template/.hermes/skills/yss-page-module-development/SKILL.md +12 -2
  252. package/template/.hermes/skills/yss-page-module-development/references/component-map.md +34 -0
  253. package/template/.hermes/skills/yss-page-module-development/references/hooks-map.md +11 -0
  254. package/template/.hermes/skills/yss-page-module-development/references/utils-map.md +14 -0
  255. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  256. package/template/.hermes/skills/yss-router/references/boundaries.md +1 -1
  257. package/template/.hermes/skills/yss-router/references/router-contract.yaml +6 -2
  258. package/template/.hermes/skills/yss-ui/SKILL.md +1 -1
  259. package/template/.hermes/skills/yss-use-table-height/SKILL.md +9 -0
  260. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +9 -0
  261. package/template/.hermes/skills/ytable-usage/SKILL.md +251 -0
  262. package/template/.hermes/skills/ytree-usage/SKILL.md +132 -0
  263. package/template/.pi/skills/component-selection-imports/SKILL.md +64 -0
  264. package/template/.pi/skills/file-export-download/SKILL.md +160 -0
  265. package/template/.pi/skills/file-export-download/agents/openai.yaml +4 -0
  266. package/template/.pi/skills/formily-foundation/SKILL.md +176 -0
  267. package/template/.pi/skills/formily-foundation/references/examples.md +486 -0
  268. package/template/.pi/skills/formily-linkage-effects/SKILL.md +167 -0
  269. package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +137 -0
  270. package/template/.pi/skills/formily-step-flow/SKILL.md +194 -0
  271. package/template/.pi/skills/frontend-commit/SKILL.md +118 -0
  272. package/template/.pi/skills/frontend-commit/agents/openai.yaml +7 -0
  273. package/template/.pi/skills/frontend-commit/references/scope-and-examples.md +111 -0
  274. package/template/.pi/skills/java-backend-commit/SKILL.md +121 -0
  275. package/template/.pi/skills/java-backend-commit/agents/openai.yaml +7 -0
  276. package/template/.pi/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  277. package/template/.pi/skills/page-form-module/SKILL.md +168 -0
  278. package/template/.pi/skills/page-list-module/SKILL.md +137 -0
  279. package/template/.pi/skills/page-skeleton/SKILL.md +76 -0
  280. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  281. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  282. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  283. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  284. package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  285. package/template/.pi/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  286. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  287. package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  288. package/template/.pi/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  289. package/template/.pi/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  290. package/template/.pi/skills/prototype-page-acceptance/SKILL.md +62 -0
  291. package/template/.pi/skills/theme-token-usage/SKILL.md +123 -0
  292. package/template/.pi/skills/theme-token-usage/agents/openai.yaml +4 -0
  293. package/template/.pi/skills/vue3-best-practices/SKILL.md +68 -0
  294. package/template/.pi/skills/yedit-table-usage/SKILL.md +227 -0
  295. package/template/.pi/skills/yss-api-integration/SKILL.md +12 -2
  296. package/template/.pi/skills/yss-components/SKILL.md +1 -1
  297. package/template/.pi/skills/yss-design-system/SKILL.md +1 -1
  298. package/template/.pi/skills/yss-formily/SKILL.md +233 -265
  299. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  300. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  301. package/template/.pi/skills/yss-openapi-governance/SKILL.md +2 -2
  302. package/template/.pi/skills/yss-page-module-development/SKILL.md +12 -2
  303. package/template/.pi/skills/yss-page-module-development/references/component-map.md +34 -0
  304. package/template/.pi/skills/yss-page-module-development/references/hooks-map.md +11 -0
  305. package/template/.pi/skills/yss-page-module-development/references/utils-map.md +14 -0
  306. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  307. package/template/.pi/skills/yss-router/references/boundaries.md +1 -1
  308. package/template/.pi/skills/yss-router/references/router-contract.yaml +6 -2
  309. package/template/.pi/skills/yss-ui/SKILL.md +1 -1
  310. package/template/.pi/skills/yss-use-table-height/SKILL.md +9 -0
  311. package/template/.pi/skills/yss-use-tree-height/SKILL.md +9 -0
  312. package/template/.pi/skills/ytable-usage/SKILL.md +251 -0
  313. package/template/.pi/skills/ytree-usage/SKILL.md +132 -0
  314. package/template/.qoder/skills/component-selection-imports/SKILL.md +64 -0
  315. package/template/.qoder/skills/file-export-download/SKILL.md +160 -0
  316. package/template/.qoder/skills/file-export-download/agents/openai.yaml +4 -0
  317. package/template/.qoder/skills/formily-foundation/SKILL.md +176 -0
  318. package/template/.qoder/skills/formily-foundation/references/examples.md +486 -0
  319. package/template/.qoder/skills/formily-linkage-effects/SKILL.md +167 -0
  320. package/template/.qoder/skills/formily-mode-slot-detail/SKILL.md +137 -0
  321. package/template/.qoder/skills/formily-step-flow/SKILL.md +194 -0
  322. package/template/.qoder/skills/frontend-commit/SKILL.md +118 -0
  323. package/template/.qoder/skills/frontend-commit/agents/openai.yaml +7 -0
  324. package/template/.qoder/skills/frontend-commit/references/scope-and-examples.md +111 -0
  325. package/template/.qoder/skills/java-backend-commit/SKILL.md +121 -0
  326. package/template/.qoder/skills/java-backend-commit/agents/openai.yaml +7 -0
  327. package/template/.qoder/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  328. package/template/.qoder/skills/page-form-module/SKILL.md +168 -0
  329. package/template/.qoder/skills/page-list-module/SKILL.md +137 -0
  330. package/template/.qoder/skills/page-skeleton/SKILL.md +76 -0
  331. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  332. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  333. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  334. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  335. package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  336. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  337. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  338. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  339. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  340. package/template/.qoder/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  341. package/template/.qoder/skills/prototype-page-acceptance/SKILL.md +62 -0
  342. package/template/.qoder/skills/theme-token-usage/SKILL.md +123 -0
  343. package/template/.qoder/skills/theme-token-usage/agents/openai.yaml +4 -0
  344. package/template/.qoder/skills/vue3-best-practices/SKILL.md +68 -0
  345. package/template/.qoder/skills/yedit-table-usage/SKILL.md +227 -0
  346. package/template/.qoder/skills/yss-api-integration/SKILL.md +12 -2
  347. package/template/.qoder/skills/yss-components/SKILL.md +1 -1
  348. package/template/.qoder/skills/yss-design-system/SKILL.md +1 -1
  349. package/template/.qoder/skills/yss-formily/SKILL.md +233 -265
  350. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  351. package/template/.qoder/skills/yss-hook/SKILL.md +1 -1
  352. package/template/.qoder/skills/yss-openapi-governance/SKILL.md +2 -2
  353. package/template/.qoder/skills/yss-page-module-development/SKILL.md +12 -2
  354. package/template/.qoder/skills/yss-page-module-development/references/component-map.md +34 -0
  355. package/template/.qoder/skills/yss-page-module-development/references/hooks-map.md +11 -0
  356. package/template/.qoder/skills/yss-page-module-development/references/utils-map.md +14 -0
  357. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  358. package/template/.qoder/skills/yss-router/references/boundaries.md +1 -1
  359. package/template/.qoder/skills/yss-router/references/router-contract.yaml +6 -2
  360. package/template/.qoder/skills/yss-ui/SKILL.md +1 -1
  361. package/template/.qoder/skills/yss-use-table-height/SKILL.md +9 -0
  362. package/template/.qoder/skills/yss-use-tree-height/SKILL.md +9 -0
  363. package/template/.qoder/skills/ytable-usage/SKILL.md +251 -0
  364. package/template/.qoder/skills/ytree-usage/SKILL.md +132 -0
  365. package/template/.trae/skills/.yss-skills-manifest.json +29 -0
  366. package/template/.trae/skills/component-selection-imports/SKILL.md +64 -0
  367. package/template/.trae/skills/file-export-download/SKILL.md +160 -0
  368. package/template/.trae/skills/file-export-download/agents/openai.yaml +4 -0
  369. package/template/.trae/skills/formily-foundation/SKILL.md +176 -0
  370. package/template/.trae/skills/formily-foundation/references/examples.md +486 -0
  371. package/template/.trae/skills/formily-linkage-effects/SKILL.md +167 -0
  372. package/template/.trae/skills/formily-mode-slot-detail/SKILL.md +137 -0
  373. package/template/.trae/skills/formily-step-flow/SKILL.md +194 -0
  374. package/template/.trae/skills/frontend-commit/SKILL.md +118 -0
  375. package/template/.trae/skills/frontend-commit/agents/openai.yaml +7 -0
  376. package/template/.trae/skills/frontend-commit/references/scope-and-examples.md +111 -0
  377. package/template/.trae/skills/java-backend-commit/SKILL.md +121 -0
  378. package/template/.trae/skills/java-backend-commit/agents/openai.yaml +7 -0
  379. package/template/.trae/skills/java-backend-commit/references/scope-and-examples.md +118 -0
  380. package/template/.trae/skills/page-form-module/SKILL.md +168 -0
  381. package/template/.trae/skills/page-list-module/SKILL.md +137 -0
  382. package/template/.trae/skills/page-skeleton/SKILL.md +76 -0
  383. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
  384. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
  385. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
  386. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  387. package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
  388. package/template/.trae/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
  389. package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
  390. package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
  391. package/template/.trae/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
  392. package/template/.trae/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
  393. package/template/.trae/skills/prototype-page-acceptance/SKILL.md +62 -0
  394. package/template/.trae/skills/theme-token-usage/SKILL.md +123 -0
  395. package/template/.trae/skills/theme-token-usage/agents/openai.yaml +4 -0
  396. package/template/.trae/skills/vue3-best-practices/SKILL.md +68 -0
  397. package/template/.trae/skills/yedit-table-usage/SKILL.md +227 -0
  398. package/template/.trae/skills/yss-api-integration/SKILL.md +12 -2
  399. package/template/.trae/skills/yss-components/SKILL.md +1 -1
  400. package/template/.trae/skills/yss-design-system/SKILL.md +1 -1
  401. package/template/.trae/skills/yss-formily/SKILL.md +233 -265
  402. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
  403. package/template/.trae/skills/yss-hook/SKILL.md +1 -1
  404. package/template/.trae/skills/yss-openapi-governance/SKILL.md +2 -2
  405. package/template/.trae/skills/yss-page-module-development/SKILL.md +12 -2
  406. package/template/.trae/skills/yss-page-module-development/references/component-map.md +34 -0
  407. package/template/.trae/skills/yss-page-module-development/references/hooks-map.md +11 -0
  408. package/template/.trae/skills/yss-page-module-development/references/utils-map.md +14 -0
  409. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +62 -1
  410. package/template/.trae/skills/yss-router/references/boundaries.md +1 -1
  411. package/template/.trae/skills/yss-router/references/router-contract.yaml +6 -2
  412. package/template/.trae/skills/yss-ui/SKILL.md +1 -1
  413. package/template/.trae/skills/yss-use-table-height/SKILL.md +9 -0
  414. package/template/.trae/skills/yss-use-tree-height/SKILL.md +9 -0
  415. package/template/.trae/skills/ytable-usage/SKILL.md +251 -0
  416. package/template/.trae/skills/ytree-usage/SKILL.md +132 -0
  417. package/template/docs/agents/skill-migrations.md +16 -0
  418. package/template/docs/agents/skills-maintenance.md +1 -1
  419. package/template/docs/agents/yss-skill-registry.yaml +125 -25
  420. 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
  421. 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
  422. package/template/scripts/lib/scenario-checks.mjs +21 -0
  423. package/template/scripts/lib/skill-governance.mjs +50 -0
  424. package/template/scripts/lib/skill-registry.mjs +82 -5
  425. package/template/scripts/lib/skill-supply-chain.mjs +5 -1
  426. package/template/scripts/verify-skill-governance +10 -0
  427. package/template/scripts/verify-template +3 -2
  428. package/template/skills-lock.json +285 -29
  429. package/template.snapshot.json +4 -4
  430. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  431. package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  432. package/template/.agents/skills/yss-formily/agents/openai.yaml +0 -5
  433. package/template/.agents/skills/yss-formily/references/examples.md +0 -65
  434. package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  435. package/template/.claude/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  436. package/template/.claude/skills/yss-formily/agents/openai.yaml +0 -5
  437. package/template/.claude/skills/yss-formily/references/examples.md +0 -65
  438. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  439. package/template/.codex/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  440. package/template/.codex/skills/yss-formily/agents/openai.yaml +0 -5
  441. package/template/.codex/skills/yss-formily/references/examples.md +0 -65
  442. package/template/.cursor/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  443. package/template/.cursor/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  444. package/template/.cursor/skills/yss-formily/agents/openai.yaml +0 -5
  445. package/template/.cursor/skills/yss-formily/references/examples.md +0 -65
  446. package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  447. package/template/.hermes/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  448. package/template/.hermes/skills/yss-formily/agents/openai.yaml +0 -5
  449. package/template/.hermes/skills/yss-formily/references/examples.md +0 -65
  450. package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  451. package/template/.pi/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  452. package/template/.pi/skills/yss-formily/agents/openai.yaml +0 -5
  453. package/template/.pi/skills/yss-formily/references/examples.md +0 -65
  454. package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  455. package/template/.qoder/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  456. package/template/.qoder/skills/yss-formily/agents/openai.yaml +0 -5
  457. package/template/.qoder/skills/yss-formily/references/examples.md +0 -65
  458. package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +0 -89
  459. package/template/.trae/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
  460. package/template/.trae/skills/yss-formily/agents/openai.yaml +0 -5
  461. package/template/.trae/skills/yss-formily/references/examples.md +0 -65
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: file-export-download
3
+ description: 指导 Vue3 YSS UI 微应用实现文件导出、报表下载、模板下载和附件下载,覆盖 OpenAPI binary 响应、Orval 生成方法检查、responseType blob 兜底、Blob 响应类型、Content-Disposition 文件名、handleBlobResponse、loading 与错误处理;当需求出现导出、下载、Excel、CSV、PDF、ZIP、Blob 或文件流时使用。
4
+ ---
5
+
6
+ # YSS 文件导出下载 Skill
7
+
8
+ ## 触发条件
9
+
10
+ - 页面需要导出 Excel、CSV、PDF、ZIP、报表、密钥文件或其他二进制文件。
11
+ - 页面需要下载导入模板、附件或后端动态生成的文件。
12
+ - Orval 生成接口的返回值是 `Blob`,或业务调用需要配置 `responseType: 'blob'`。
13
+ - 代码正在手写 `URL.createObjectURL`、解析 `Content-Disposition`、拼接文件名或调用 `downloadFileStream`。
14
+
15
+ ## 不适用场景
16
+
17
+ - 仅上传文件,不包含模板下载或导出流程。
18
+ - 下载公开静态 URL 且无需鉴权、请求参数和响应头文件名时,使用 `downloadFileFromUrl(url, fileName?)`。
19
+ - 浏览器只需要预览远程 PDF/图片,不触发文件保存。
20
+
21
+ ## 必读依据
22
+
23
+ - 通用接口规则:`../yss-api-integration/SKILL.md`。
24
+ - 当前项目:`openapi/openapi.json`、Orval 配置、生成后的 API 方法和 `packages/src/api/mutator.ts`。
25
+ - YSS Utils 文件下载能力:按下方检索顺序核对 `handleBlobResponse` 和 `downloadBlob`。
26
+
27
+ ## 文档检索
28
+
29
+ 1. MCP 可用时,先用 `search_docs` 查询 `handleBlobResponse 文件下载 Content-Disposition`,并读取命中的 `downloadBlob(/utils/download)` 文档。该能力属于工具函数,不强制调用面向组件别名的 `get_component_docs`。
30
+ 2. 搜索无结果时,调整关键词再次调用 `search_docs`;仅在 MCP 不可用、调用失败或仍无结果时,回退读取最新 `llms-full.txt` 的文件下载章节。文档版本与当前依赖不一致时,再核对 `packages/utils` 源码、CodeGraph 和真实导出。
31
+
32
+ ## 决策流程
33
+
34
+ 1. 在 OpenAPI 中定位导出接口,优先把成功响应声明为二进制媒体类型和 `format: binary`。
35
+ 2. 重新生成 API 后检查生成方法,而不是凭接口名称判断:
36
+ - 已包含 `responseType: 'blob'`:业务调用不必重复传第二参数。
37
+ - 未包含 `responseType: 'blob'`:业务调用必须传第二参数 `{ responseType: 'blob' }`。
38
+ 3. 检查 mutator 和全局错误处理器:Blob 成功响应必须保留 `{ data, headers }`;HTTP 4xx/5xx 的 Blob JSON 错误应由全局错误处理器解析并 reject。
39
+ 4. 在业务 hook 中设置 loading、防重复点击,调用生成 API,再执行 `handleBlobResponse(res.data, res.headers)`。
40
+ 5. 验证文件名、文件内容、错误响应和连续点击,不只验证浏览器出现了下载任务。
41
+
42
+ > OpenAPI 标准通过响应 `content` 和 `format: binary` 表达二进制,不直接使用 Axios 的 `responseType` 字段。最终以 Orval 生成方法是否含 `responseType: 'blob'` 为判断依据。
43
+
44
+ ## 硬约束(禁止/必须)
45
+
46
+ - 必须优先导入 `import { handleBlobResponse } from '@yss-ui/utils';` 处理接口文件流。
47
+ - 必须调用 `handleBlobResponse(res.data, res.headers)`;它会自动兼容响应头大小写,并解析 RFC 5987 `filename*` 与普通 `filename`。
48
+ - 第三个 `hasUtf8Encoding` 参数已弃用,禁止继续传递。
49
+ - 生成方法缺少 Blob 配置时,必须在第二参数顶层传 `{ responseType: 'blob' }`;禁止放进 `headers`、请求 body 或查询参数。
50
+ - 生成方法已包含 Blob 配置时,禁止为“保险”重复传相同配置;先保持 OpenAPI 契约和生成产物正确。
51
+ - 禁止修改 Orval 生成文件补写 `responseType`,因为重新生成会覆盖;应修正 OpenAPI,或在业务调用第二参数临时兜底。
52
+ - 禁止依赖 URL 中包含 `download/export` 的请求拦截器猜测响应类型;接口可能不按该名称命名。
53
+ - 禁止在业务层重复实现 `getFileNameFromContentDisposition`、`downloadFileStream`、`URL.createObjectURL` 和 `<a download>` 流程。
54
+ - 必须保留响应头;只取 `res.data` 会丢失服务端文件名。
55
+ - Blob 接口失败时遵循全局 mutator 错误处理,禁止在 catch 中重复 `message.error`;成功下载后可提示 `message.success`。
56
+ - 当前模板 mutator 只能识别“已解析 JSON 对象”的 `success === false`,不会自动检测 HTTP 200 Blob 内的业务错误;发现该契约时必须先修正后端状态码或 mutator,禁止把解析逻辑复制到每个 Hook。
57
+ - 必须用独立 loading 状态防止重复导出,并在 `finally` 中恢复。
58
+ - 不得默认传 `skipBusinessError` 或 `skipErrorHandler`;只有明确需要业务自定义错误体验时才使用。
59
+
60
+ ## OpenAPI 标准代码骨架
61
+
62
+ ```json
63
+ {
64
+ "responses": {
65
+ "200": {
66
+ "description": "导出成功",
67
+ "headers": {
68
+ "Content-Disposition": {
69
+ "schema": { "type": "string" }
70
+ }
71
+ },
72
+ "content": {
73
+ "application/octet-stream": {
74
+ "schema": {
75
+ "type": "string",
76
+ "format": "binary"
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ ```
84
+
85
+ 根据文件类型可将媒体类型换成 `text/csv`、`application/pdf` 或 Excel 对应类型。跨域请求若读取不到文件名,后端还必须暴露 `Content-Disposition` 响应头。
86
+
87
+ ## 标准代码骨架
88
+
89
+ ### 生成方法已包含 responseType
90
+
91
+ ```typescript
92
+ import { ref } from 'vue';
93
+ import { handleBlobResponse } from '@yss-ui/utils';
94
+ import { downloadAccessSecret } from '@/api/generated/quality';
95
+
96
+ /** 微应用 mutator 返回的文件下载响应。 */
97
+ type BlobDownloadResponse = {
98
+ data: Blob;
99
+ headers: Record<string, string>;
100
+ };
101
+
102
+ /** 文件下载进行中状态。 */
103
+ const downloading = ref(false);
104
+
105
+ /** 下载密钥文件。 */
106
+ const downloadFile = async (key: string): Promise<void> => {
107
+ if (downloading.value) return;
108
+
109
+ downloading.value = true;
110
+ try {
111
+ const res = (await downloadAccessSecret(key)) as unknown as BlobDownloadResponse;
112
+ handleBlobResponse(res.data, res.headers);
113
+ } catch {
114
+ // mutator 已展示错误;此处只阻止 reject 继续向 UI 事件传播。
115
+ } finally {
116
+ downloading.value = false;
117
+ }
118
+ };
119
+ ```
120
+
121
+ ### 生成方法缺少 responseType
122
+
123
+ 只改调用行,其他流程保持一致:
124
+
125
+ ```typescript
126
+ const res = (await downloadAccessSecret(key, {
127
+ responseType: 'blob',
128
+ })) as unknown as BlobDownloadResponse;
129
+ ```
130
+
131
+ 若 mutator 与 Orval 返回类型已经准确声明为 `{ data: Blob; headers: ... }`,直接使用生成类型,删除不必要的类型断言。
132
+
133
+ ## 响应约定
134
+
135
+ - 后端成功响应应返回真实文件流,并设置 `Content-Disposition: attachment; filename*=UTF-8''...`。
136
+ - mutator 对 Blob 成功响应返回 `{ data, headers }`,以便 `handleBlobResponse` 获取文件名。
137
+ - HTTP 错误的 Blob JSON 由全局错误处理器解析并 reject,业务 Hook 不重复解析或提示。
138
+ - HTTP 200 且 body 是 Blob 包装的业务错误时,当前模板不会自动 reject;必须修复契约或统一拦截器后再交付。
139
+ - `handleBlobResponse` 找不到文件名时会使用 `download`;应优先补齐后端响应头,而不是在每个页面手写解析逻辑。
140
+
141
+ ## 交付检查清单
142
+
143
+ - [ ] 已检查 OpenAPI 二进制响应声明和 Orval 生成方法。
144
+ - [ ] 仅在生成方法缺少配置时,第二参数传入了 `{ responseType: 'blob' }`。
145
+ - [ ] 已从 `@yss-ui/utils` 导入并调用 `handleBlobResponse(res.data, res.headers)`。
146
+ - [ ] 未修改 Orval 生成文件,未重复实现文件名解析或浏览器下载逻辑。
147
+ - [ ] Blob 成功响应保留了 `data` 与 `headers`,类型断言只位于 API 边界。
148
+ - [ ] 已处理 loading、防重复点击和 `finally` 恢复。
149
+ - [ ] 未在 catch 中重复业务错误 Toast。
150
+ - [ ] 中文文件名、普通文件名和缺失文件名场景均已验证。
151
+ - [ ] HTTP 错误的 Blob JSON 会 reject;如存在 HTTP 200 Blob 业务错误契约,已修正后端状态码或 mutator。
152
+ - [ ] 下载文件可以正常打开,格式和内容与接口预期一致。
153
+
154
+ ## 失败兜底策略
155
+
156
+ - 生成方法不支持第二参数时,先确认 Orval `options: true`;修正配置并重新生成,禁止手改生成文件。
157
+ - `res.headers` 为空时,检查 mutator 是否错误地只返回 `data`,以及后端/CORS 是否暴露 `Content-Disposition`。
158
+ - 下载到 JSON 错误文件时,先确认 HTTP 状态码:非 2xx 检查全局错误处理器,HTTP 200 检查后端契约并在 mutator 统一补齐;禁止把解析逻辑复制到每个业务 Hook。
159
+ - 文件名始终为 `download` 时,优先修复后端 `Content-Disposition`;无法改后端时再评估统一扩展 YSS 下载工具。
160
+ - 超大文件导致内存压力时,改用后端临时 URL、分片或流式下载方案,不强行把全部内容载入 Blob。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "YSS 文件导出下载"
3
+ short_description: "规范 Orval Blob 导出、responseType 配置与文件下载处理"
4
+ default_prompt: "使用 $file-export-download 实现类型安全的文件导出下载,并正确处理 Blob、响应头和文件名。"
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: formily-foundation
3
+ description: 指导 YFormily 基础表单开发;当创建或修复普通单页表单、字段校验、提交链路、查询表单布局、scope 表达式或导入边界时使用。
4
+ ---
5
+
6
+ # Formily Foundation Skill
7
+
8
+ ## 触发条件
9
+
10
+ - 创建或改造 `YFormily` 基础表单(字段、校验、提交)。
11
+ - 修复表单导入路径、schema 层级、提交不触发等问题。
12
+ - 实现普通单页表单,不含复杂联动或详情插槽。
13
+
14
+ ## 不适用场景
15
+
16
+ - 复杂联动、副作用、跨字段逻辑:使用 `../formily-linkage-effects/SKILL.md`。
17
+ - 查看态 detail 插槽和 mode 切换:使用 `../formily-mode-slot-detail/SKILL.md`。
18
+ - 分步表单:使用 `../formily-step-flow/SKILL.md`。
19
+
20
+ ## 文档检索
21
+
22
+ 1. 当前会话可用 yss-ui MCP 时,先用 `get_component_docs` 查询 `YFormily` 的基础 Props、Methods 与 Schema 边界;实现字段布局、提交或校验失败时,再用 `get_demo` 获取 `formily/basic`、`formily/grid`、`formily/submit-failed` 等官方 Demo。
23
+ 2. MCP 查询未命中时先用 `search_docs/list_components` 校正名称;MCP 不可用、调用失败或校正后仍无结果时,才读取最新 `llms-full.txt`。若文档与当前项目依赖版本不一致,用当前源码和导出核验。
24
+
25
+ ## 硬约束(禁止/必须)
26
+
27
+ - 业务生成代码统一从 `@yss-ui/components` 导入 `YFormily` 与 `ISchema`;`YssFormily` 仅作为历史兼容别名说明。
28
+ - 禁止业务层导入 `@formily/antdv`、`@formily/antd*` UI 组件。
29
+ - 必须使用三层结构:`FormLayout -> FormGrid -> 字段`,禁止字段直接挂在根节点或单独以 `FormGrid` 作为顶层布局。
30
+ - `Submit` 必须传 `onSubmit`,否则不触发表单提交。
31
+ - 标准业务列表/CRUD 查询区默认让 `YFormily` 只渲染字段;查询/重置按钮用外部 `YButton` 放在 `.xxx__search-actions`,由 hook 的 `handleSearch/handleReset` 控制分页重置和请求。
32
+ - `AutoButtonGroup -> Submit/Reset` 仅用于纯 Formily 表单提交,不作为业务列表查询区默认方案。
33
+ - 查询区禁止横向放“表单 + 按钮”后用大 `gap`、`align-items: flex-start` 或 `padding-top` 硬调位置;字段换行时按钮必须在搜索卡片右下角。
34
+ - 横向表单必须显式设置 `FormLayout` 的 `labelWidth` 和 `labelAlign: 'right'`,抽屉/弹窗场景尤其不能让 label 宽度自适应。
35
+ - `FormGrid` 默认保持响应式:`minColumns: 1`,通过 `maxColumns` 和 `minWidth` 控制宽屏列数;不要写 `minColumns: maxColumns` 固定列数,除非用户明确要求不响应式。
36
+ - 查询表单常用 `labelWidth: 100~120`、`FormGrid { maxColumns: 3 或 4, minColumns: 1, minWidth: 260~360 }`,按钮行在表单外部右下角;抽屉/弹窗编辑表单常用 `labelWidth: 140`、`FormGrid { maxColumns: 2, minColumns: 1, minWidth: 320~360 }`。
37
+ - 备注、说明等长字段必须用 `x-decorator-props.gridSpan` 占满整行,例如两列布局用 `gridSpan: 2`。
38
+ - 下拉选择器(`Select`, `TreeSelect`, `Radio.Group` 等)异步数据源必须通过 `enum` 或 `x-reactions` / `field.dataSource` 注入,严禁写入 `x-component-props.options`(会导致 Formily 首次挂载空数组且后续不更新,产生首次打开弹窗显示“暂无数据”的 Bug)。
39
+ - 事件表达式必须字符串化(`'{{ ... }}'`),并按组件语义使用事件名。
40
+ - 只使用源码已公开的 Props 和实例方法;当前没有 `show-button-group`、`detail-as`、`validate`、`reset`、`clearValidate` 等 YFormily API。
41
+ - Orval API 的网络错误及 `success === false` 业务错误已由 `mutator.ts` 统一 `message.error` 并 reject;提交 hook 禁止在 `else` 或 `catch` 中重复提示。
42
+ - 客户端校验提示使用 `onFormSubmitValidateFailed`;禁止在 `onFormSubmitFailed` 或 `Submit.onSubmitFailed` 中调用 `message.error`,它们也会捕获 `onSubmit` 内的 API reject。
43
+ - **Formily 表单校验规则(x-validator)防坑规范**:
44
+ - 必填文本字段必须声明 `whitespace: true`,即 `{ required: true, whitespace: true, message: '请输入xxx' }`,防止输入纯空格绕过前端校验。
45
+ - 自定义长度、格式和跨字段校验不得重复承担必填职责;函数式校验必须在空值时返回通过(如 `validator: (val) => { const str = (val || '').trim(); if (!str) return true; return validateContentLength(val) || true; }`),空值统一交由 `required` 报错,非空时才校验具体规则。
46
+ - 当前 YFormily 的 FormItem 适配层会在运行时归一化反馈:空值优先显示必填提示,非空值移除残留必填提示,多条相关消息只拼接一次。该兜底不替代正确的 Schema 校验职责拆分。
47
+ - 分步需求默认走 `formily-step-flow`,不在本 skill 内给 `FormStep` 方案。
48
+
49
+ ## 标准代码骨架
50
+
51
+ ```vue
52
+ <script setup lang="ts">
53
+ import { YFormily, type ISchema } from '@yss-ui/components';
54
+
55
+ /** 表单保存回调 Props。 */
56
+ interface SaveFormProps {
57
+ onSave: (values: Record<string, any>) => Promise<void>;
58
+ }
59
+
60
+ /** 表单保存回调。 */
61
+ const props = defineProps<SaveFormProps>();
62
+
63
+ /** 校验通过后提交表单数据。 */
64
+ const onSubmit = (values: Record<string, any>) => {
65
+ return props.onSave(values);
66
+ };
67
+
68
+ /** 基础表单 Schema。 */
69
+ const schema: ISchema = {
70
+ type: 'object',
71
+ properties: {
72
+ layout: {
73
+ type: 'void',
74
+ 'x-component': 'FormLayout',
75
+ 'x-component-props': { layout: 'horizontal', labelWidth: 120, labelAlign: 'right' },
76
+ properties: {
77
+ grid: {
78
+ type: 'void',
79
+ 'x-component': 'FormGrid',
80
+ 'x-component-props': { maxColumns: 3, minColumns: 1, minWidth: 260 },
81
+ properties: {
82
+ name: { type: 'string', title: '名称', 'x-decorator': 'FormItem', 'x-component': 'Input', required: true },
83
+ submit: {
84
+ type: 'void',
85
+ 'x-component': 'Submit',
86
+ 'x-content': '提交',
87
+ 'x-component-props': { onSubmit: '{{ onSubmit }}' },
88
+ },
89
+ },
90
+ },
91
+ },
92
+ },
93
+ },
94
+ };
95
+ </script>
96
+
97
+ <template>
98
+ <YFormily :schema="schema" :scope="{ onSubmit }" />
99
+ </template>
100
+ ```
101
+
102
+ ## 业务查询区布局
103
+
104
+ ```vue
105
+ <template>
106
+ <YCard class="demo-page__search-card" :padding="16">
107
+ <div class="demo-page__search-content">
108
+ <div class="demo-page__search-form">
109
+ <YFormily v-model="queryModel" :schema="searchSchema" />
110
+ </div>
111
+ <div class="demo-page__search-actions">
112
+ <YButton type="primary" @click="handleSearch">查询</YButton>
113
+ <YButton @click="handleReset">重置</YButton>
114
+ </div>
115
+ </div>
116
+ </YCard>
117
+ </template>
118
+ ```
119
+
120
+ ```less
121
+ .demo-page {
122
+ &__search-content {
123
+ display: flex;
124
+ flex-direction: column;
125
+ align-items: stretch;
126
+ gap: 16px;
127
+ }
128
+
129
+ &__search-form {
130
+ width: 100%;
131
+ min-width: 0;
132
+
133
+ :deep(.ant-formily-form-item) {
134
+ margin-bottom: 0;
135
+ }
136
+
137
+ :deep(.ant-formily-form-grid) {
138
+ width: 100%;
139
+ }
140
+ }
141
+
142
+ &__search-actions {
143
+ display: flex;
144
+ width: 100%;
145
+ flex: 0 0 auto;
146
+ align-items: center;
147
+ justify-content: flex-end;
148
+ gap: 12px;
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## 交付检查清单
154
+
155
+ - [ ] 导入来源和组件边界正确。
156
+ - [ ] schema 三层结构完整。
157
+ - [ ] 横向表单有固定 `labelWidth` 且 label 右对齐。
158
+ - [ ] `FormGrid` 使用响应式列配置,未把 `minColumns` 固定成宽屏列数。
159
+ - [ ] `Submit` 提交链路可用,校验可触发。
160
+ - [ ] 只使用公开 Props/实例方法,未出现 `show-button-group`、`detail-as` 等旧式或虚构 API。
161
+ - [ ] 业务列表查询/重置按钮在外部 `.xxx__search-actions`,按钮行独占下一行并右对齐;缩窄后不会贴在第一行字段旁。
162
+ - [ ] label 宽度和右对齐已显式配置。
163
+ - [ ] 包含可运行 `initial-values` 或 `v-model` 示例。
164
+ - [ ] 未出现 `@formily/antdv` 业务层导入。
165
+ - [ ] API 失败仅由 `mutator.ts` 统一提示,业务 `else`/`catch` 未重复 `message.error`。
166
+
167
+ ## 失败兜底策略
168
+
169
+ - 若提交不触发:先检查 `Submit.x-component-props.onSubmit`。
170
+ - 若字段不显示:先核对 `FormLayout/FormGrid/properties` 层级。
171
+ - 若 API 调用 reject:只恢复 loading 或回滚局部状态,不重复弹出错误提示。
172
+ - 若需求升级为联动/模式/分步:立即切换对应 skill,不在本 skill 内硬扩展。
173
+
174
+ ## 参考
175
+
176
+ - 完整示例:`./references/examples.md`