@bovinphang/frontend-craft 2.6.0 → 2.8.0

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 (414) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +72 -1
  4. package/CHANGELOG.zh-CN.md +71 -1
  5. package/README.md +10 -6
  6. package/README.openclaw.md +100 -42
  7. package/README.openclaw.zh-CN.md +100 -42
  8. package/README.zh-CN.md +10 -6
  9. package/agents/fec-architect.md +70 -70
  10. package/agents/fec-code-reviewer.md +82 -82
  11. package/agents/fec-debugger.md +20 -20
  12. package/agents/fec-design-token-mapper.md +36 -36
  13. package/agents/fec-doc-updater.md +13 -13
  14. package/agents/fec-e2e-runner.md +45 -45
  15. package/agents/fec-figma-implementer.md +59 -59
  16. package/agents/fec-performance-optimizer.md +128 -128
  17. package/agents/fec-refactor-cleaner.md +14 -14
  18. package/agents/fec-security-reviewer.md +66 -67
  19. package/agents/fec-test-planner.md +27 -27
  20. package/agents/fec-typescript-reviewer.md +88 -88
  21. package/agents/fec-ui-checker.md +74 -74
  22. package/commands/fec-debug.md +19 -19
  23. package/commands/fec-doc-sync.md +11 -11
  24. package/commands/fec-init.md +37 -38
  25. package/commands/fec-plan.md +58 -58
  26. package/commands/fec-refactor-clean.md +11 -11
  27. package/commands/fec-review.md +41 -41
  28. package/commands/fec-scaffold.md +41 -41
  29. package/commands/fec-tdd.md +13 -13
  30. package/dist/bin/frontend-craft.js +29 -27
  31. package/docs/example-prompts.md +84 -69
  32. package/docs/ja-JP/README.md +56 -52
  33. package/docs/ko-KR/README.md +45 -41
  34. package/docs/project-structure.md +19 -7
  35. package/docs/superpowers/plans/2026-05-29-fec-debug.md +491 -0
  36. package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +340 -0
  37. package/docs/zh-CN/example-prompts.md +84 -69
  38. package/docs/zh-CN/project-structure.md +14 -5
  39. package/docs/zh-TW/README.md +33 -29
  40. package/localized/zh-CN/agents/fec-architect.md +125 -0
  41. package/localized/zh-CN/agents/fec-code-reviewer.md +152 -0
  42. package/localized/zh-CN/agents/fec-debugger.md +44 -0
  43. package/localized/zh-CN/agents/fec-design-token-mapper.md +75 -0
  44. package/localized/zh-CN/agents/fec-doc-updater.md +30 -0
  45. package/localized/zh-CN/agents/fec-e2e-runner.md +107 -0
  46. package/localized/zh-CN/agents/fec-figma-implementer.md +104 -0
  47. package/localized/zh-CN/agents/fec-performance-optimizer.md +293 -0
  48. package/localized/zh-CN/agents/fec-refactor-cleaner.md +32 -0
  49. package/localized/zh-CN/agents/fec-security-reviewer.md +116 -0
  50. package/localized/zh-CN/agents/fec-test-planner.md +50 -0
  51. package/localized/zh-CN/agents/fec-typescript-reviewer.md +142 -0
  52. package/localized/zh-CN/agents/fec-ui-checker.md +120 -0
  53. package/localized/zh-CN/commands/fec-debug.md +30 -0
  54. package/localized/zh-CN/commands/fec-doc-sync.md +19 -0
  55. package/localized/zh-CN/commands/fec-init.md +70 -0
  56. package/localized/zh-CN/commands/fec-plan.md +94 -0
  57. package/localized/zh-CN/commands/fec-refactor-clean.md +19 -0
  58. package/localized/zh-CN/commands/fec-review.md +66 -0
  59. package/localized/zh-CN/commands/fec-scaffold.md +205 -0
  60. package/localized/zh-CN/commands/fec-tdd.md +21 -0
  61. package/localized/zh-CN/skills/TEMPLATE.md +155 -0
  62. package/localized/zh-CN/skills/eval_queries.json +1013 -0
  63. package/localized/zh-CN/skills/fec-accessibility-check/SKILL.md +39 -0
  64. package/localized/zh-CN/skills/fec-accessibility-check/references/report-template.md +23 -0
  65. package/localized/zh-CN/skills/fec-accessibility-check/references/screen-reader-testing.md +33 -0
  66. package/localized/zh-CN/skills/fec-alchemy/SKILL.md +74 -0
  67. package/localized/zh-CN/skills/fec-alchemy/assets/absorption-plan-template.md +47 -0
  68. package/localized/zh-CN/skills/fec-alchemy/assets/intake-template.md +55 -0
  69. package/localized/zh-CN/skills/fec-alchemy/assets/review-checklist.md +31 -0
  70. package/localized/zh-CN/skills/fec-alchemy/references/methodology.md +94 -0
  71. package/localized/zh-CN/skills/fec-alchemy/references/originality-and-licensing.md +57 -0
  72. package/localized/zh-CN/skills/fec-api-integration/SKILL.md +78 -0
  73. package/localized/zh-CN/skills/fec-api-integration/references/integration-patterns.md +80 -0
  74. package/localized/zh-CN/skills/fec-backend-requirements-handoff/SKILL.md +45 -0
  75. package/localized/zh-CN/skills/fec-browser-storage/SKILL.md +34 -0
  76. package/localized/zh-CN/skills/fec-browser-storage/references/storage-patterns.md +65 -0
  77. package/localized/zh-CN/skills/fec-canvas-threejs/SKILL.md +66 -0
  78. package/localized/zh-CN/skills/fec-canvas-threejs/references/rendering-patterns.md +67 -0
  79. package/localized/zh-CN/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +67 -0
  80. package/localized/zh-CN/skills/fec-code-review/SKILL.md +143 -0
  81. package/localized/zh-CN/skills/fec-code-review/references/report-template.md +29 -0
  82. package/localized/zh-CN/skills/fec-component-testing/SKILL.md +119 -0
  83. package/localized/zh-CN/skills/fec-data-fetching/SKILL.md +62 -0
  84. package/localized/zh-CN/skills/fec-data-fetching/references/query-patterns.md +103 -0
  85. package/localized/zh-CN/skills/fec-debug-framework/SKILL.md +157 -0
  86. package/localized/zh-CN/skills/fec-debug-framework/references/report-template.md +58 -0
  87. package/localized/zh-CN/skills/fec-dependency-upgrade/SKILL.md +34 -0
  88. package/localized/zh-CN/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +56 -0
  89. package/localized/zh-CN/skills/fec-doc-sync/SKILL.md +39 -0
  90. package/localized/zh-CN/skills/fec-drawio-studio/SKILL.md +73 -0
  91. package/localized/zh-CN/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
  92. package/localized/zh-CN/skills/fec-drawio-studio/data/brand-icons.json +878 -0
  93. package/localized/zh-CN/skills/fec-drawio-studio/data/shape-index.json +83570 -0
  94. package/localized/zh-CN/skills/fec-drawio-studio/references/data-residency.md +27 -0
  95. package/localized/zh-CN/skills/fec-drawio-studio/references/diagram-patterns.md +60 -0
  96. package/localized/zh-CN/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
  97. package/localized/zh-CN/skills/fec-drawio-studio/references/layout-and-export.md +72 -0
  98. package/localized/zh-CN/skills/fec-drawio-studio/references/troubleshooting.md +29 -0
  99. package/localized/zh-CN/skills/fec-drawio-studio/references/xml-and-mermaid.md +58 -0
  100. package/localized/zh-CN/skills/fec-drawio-studio/scripts/brand-symbols.mjs +99 -0
  101. package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-lint.mjs +205 -0
  102. package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-url.mjs +102 -0
  103. package/localized/zh-CN/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
  104. package/localized/zh-CN/skills/fec-drawio-studio/scripts/layout-graph.mjs +107 -0
  105. package/localized/zh-CN/skills/fec-drawio-studio/scripts/png-embed-fix.mjs +26 -0
  106. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-go-packages.mjs +36 -0
  107. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-js-modules.mjs +52 -0
  108. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-classes.mjs +30 -0
  109. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-modules.mjs +55 -0
  110. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
  111. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
  112. package/localized/zh-CN/skills/fec-drawio-studio/scripts/shape-query.mjs +121 -0
  113. package/localized/zh-CN/skills/fec-drawio-studio/scripts/studio-core.mjs +139 -0
  114. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/corporate.json +49 -0
  115. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/default.json +49 -0
  116. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/handdrawn.json +49 -0
  117. package/localized/zh-CN/skills/fec-drawio-studio/styles/schema.json +112 -0
  118. package/localized/zh-CN/skills/fec-e2e-testing/SKILL.md +42 -0
  119. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-ci-reporting.md +62 -0
  120. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-special-scenarios.md +52 -0
  121. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-visual-regression.md +60 -0
  122. package/localized/zh-CN/skills/fec-e2e-testing/references/playwright-patterns.md +95 -0
  123. package/localized/zh-CN/skills/fec-form-handling/SKILL.md +76 -0
  124. package/localized/zh-CN/skills/fec-form-handling/references/advanced-form-patterns.md +101 -0
  125. package/localized/zh-CN/skills/fec-image-generation/SKILL.md +80 -0
  126. package/localized/zh-CN/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
  127. package/localized/zh-CN/skills/fec-image-generation/references/artifact-routing.md +80 -0
  128. package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +74 -0
  129. package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +236 -0
  130. package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +30 -0
  131. package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +364 -0
  132. package/localized/zh-CN/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
  133. package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +431 -0
  134. package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1397 -0
  135. package/localized/zh-CN/skills/fec-implement-from-design/SKILL.md +129 -0
  136. package/localized/zh-CN/skills/fec-implement-from-design/references/design-plan-template.md +36 -0
  137. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/SKILL.md +46 -0
  138. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +110 -0
  139. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +41 -0
  140. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +48 -0
  141. package/localized/zh-CN/skills/fec-legacy-web-standard/SKILL.md +35 -0
  142. package/localized/zh-CN/skills/fec-legacy-web-standard/references/legacy-patterns.md +85 -0
  143. package/localized/zh-CN/skills/fec-list-virtualization/SKILL.md +34 -0
  144. package/localized/zh-CN/skills/fec-list-virtualization/references/virtualization-patterns.md +80 -0
  145. package/localized/zh-CN/skills/fec-monorepo-project-standard/SKILL.md +142 -0
  146. package/localized/zh-CN/skills/fec-motion-interaction/SKILL.md +73 -0
  147. package/localized/zh-CN/skills/fec-motion-interaction/references/motion-patterns.md +112 -0
  148. package/localized/zh-CN/skills/fec-nextjs-project-standard/SKILL.md +123 -0
  149. package/localized/zh-CN/skills/fec-nuxt-project-standard/SKILL.md +122 -0
  150. package/localized/zh-CN/skills/fec-performance-optimization/SKILL.md +80 -0
  151. package/localized/zh-CN/skills/fec-performance-optimization/references/framework-performance-patterns.md +38 -0
  152. package/localized/zh-CN/skills/fec-performance-optimization/references/report-template.md +59 -0
  153. package/localized/zh-CN/skills/fec-pwa-implementation/SKILL.md +35 -0
  154. package/localized/zh-CN/skills/fec-pwa-implementation/references/manifest-and-icons.md +53 -0
  155. package/localized/zh-CN/skills/fec-pwa-implementation/references/service-worker-workbox.md +68 -0
  156. package/localized/zh-CN/skills/fec-react-project-standard/SKILL.md +91 -0
  157. package/localized/zh-CN/skills/fec-react-project-standard/references/react-performance-patterns.md +35 -0
  158. package/localized/zh-CN/skills/fec-react-project-standard/references/react-project-structure.md +197 -0
  159. package/localized/zh-CN/skills/fec-react-project-standard/references/react-quality-patterns.md +131 -0
  160. package/localized/zh-CN/skills/fec-react-project-standard/references/react-runtime-patterns.md +293 -0
  161. package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +51 -0
  162. package/localized/zh-CN/skills/fec-refactor-clean/references/report-template.md +42 -0
  163. package/localized/zh-CN/skills/fec-responsive-layout/SKILL.md +34 -0
  164. package/localized/zh-CN/skills/fec-responsive-layout/references/responsive-layout-patterns.md +70 -0
  165. package/localized/zh-CN/skills/fec-route-protection/SKILL.md +135 -0
  166. package/localized/zh-CN/skills/fec-security-review/SKILL.md +38 -0
  167. package/localized/zh-CN/skills/fec-security-review/references/report-template.md +27 -0
  168. package/localized/zh-CN/skills/fec-security-review/references/security-checklist.md +64 -0
  169. package/localized/zh-CN/skills/fec-source-driven-development/SKILL.md +87 -0
  170. package/localized/zh-CN/skills/fec-state-management/SKILL.md +140 -0
  171. package/localized/zh-CN/skills/fec-state-management/references/state-patterns.md +109 -0
  172. package/localized/zh-CN/skills/fec-storybook-component-doc/SKILL.md +37 -0
  173. package/localized/zh-CN/skills/fec-storybook-component-doc/references/story-patterns.md +118 -0
  174. package/localized/zh-CN/skills/fec-svg-animation/SKILL.md +148 -0
  175. package/localized/zh-CN/skills/fec-tailwind-design-system/SKILL.md +34 -0
  176. package/localized/zh-CN/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +59 -0
  177. package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +52 -0
  178. package/localized/zh-CN/skills/fec-testing-strategy/SKILL.md +45 -0
  179. package/localized/zh-CN/skills/fec-typescript-project-standard/SKILL.md +54 -0
  180. package/{skills/fec-typescript-type-safety → localized/zh-CN/skills/fec-typescript-project-standard}/references/type-safety-patterns.md +1 -1
  181. package/{skills/fec-typescript-type-safety/SKILL.md → localized/zh-CN/skills/fec-typescript-project-standard/references/type-safety.md} +5 -14
  182. package/localized/zh-CN/skills/fec-ui-design/SKILL.md +108 -0
  183. package/localized/zh-CN/skills/fec-ui-design/data/product-rules.json +231 -0
  184. package/localized/zh-CN/skills/fec-ui-design/data/stack-ui-rules.json +146 -0
  185. package/localized/zh-CN/skills/fec-ui-design/data/style-archetypes.json +373 -0
  186. package/localized/zh-CN/skills/fec-ui-design/data/ux-quality-rules.json +203 -0
  187. package/localized/zh-CN/skills/fec-ui-design/references/design-intelligence.md +97 -0
  188. package/localized/zh-CN/skills/fec-ui-design/references/master-page-overrides.md +30 -0
  189. package/localized/zh-CN/skills/fec-ui-design/references/pre-delivery-checklist.md +39 -0
  190. package/localized/zh-CN/skills/fec-ui-design/scripts/design-system.mjs +648 -0
  191. package/localized/zh-CN/skills/fec-validation-fix/SKILL.md +51 -0
  192. package/localized/zh-CN/skills/fec-validation-fix/references/report-template.md +43 -0
  193. package/localized/zh-CN/skills/fec-vite-project-standard/SKILL.md +83 -0
  194. package/localized/zh-CN/skills/fec-vue3-project-standard/SKILL.md +58 -0
  195. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +162 -0
  196. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +13 -0
  197. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-project-structure.md +176 -0
  198. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +216 -0
  199. package/localized/zh-CN/skills/fec-web-video-presentation/SKILL.md +61 -0
  200. package/localized/zh-CN/skills/fec-web-video-presentation/data/starter-themes.json +59 -0
  201. package/localized/zh-CN/skills/fec-web-video-presentation/references/chapter-craft.md +37 -0
  202. package/localized/zh-CN/skills/fec-web-video-presentation/references/content-plan.md +38 -0
  203. package/localized/zh-CN/skills/fec-web-video-presentation/references/recording-and-audio.md +33 -0
  204. package/localized/zh-CN/skills/fec-web-video-presentation/references/theme-system.md +36 -0
  205. package/localized/zh-CN/skills/fec-web-video-presentation/scripts/create-video-presentation.mjs +430 -0
  206. package/localized/zh-CN/skills/fec-web-workers/SKILL.md +35 -0
  207. package/localized/zh-CN/skills/fec-web-workers/references/advanced-workers.md +54 -0
  208. package/localized/zh-CN/skills/fec-web-workers/references/basic-worker.md +67 -0
  209. package/localized/zh-CN/skills/metadata.json +1646 -0
  210. package/localized/zh-CN/skills/relations.json +755 -0
  211. package/localized/zh-CN/templates/claude/CLAUDE.md +106 -0
  212. package/localized/zh-CN/templates/claude/settings.json +62 -0
  213. package/localized/zh-CN/templates/codex/AGENTS.md +105 -0
  214. package/localized/zh-CN/templates/codex/config.toml +32 -0
  215. package/localized/zh-CN/templates/openclaw/AGENTS.md +101 -0
  216. package/localized/zh-CN/templates/openclaw/OPENCLAW-CONFIG.md +12 -0
  217. package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +54 -0
  218. package/localized/zh-CN/templates/shared/rules/fec-api-layer.md +99 -0
  219. package/localized/zh-CN/templates/shared/rules/fec-ci-cd.md +40 -0
  220. package/localized/zh-CN/templates/shared/rules/fec-code-comments.md +33 -0
  221. package/localized/zh-CN/templates/shared/rules/fec-design-system.md +72 -0
  222. package/localized/zh-CN/templates/shared/rules/fec-error-handling.md +56 -0
  223. package/localized/zh-CN/templates/shared/rules/fec-git-conventions.md +73 -0
  224. package/localized/zh-CN/templates/shared/rules/fec-i18n.md +64 -0
  225. package/localized/zh-CN/templates/shared/rules/fec-naming-conventions.md +120 -0
  226. package/localized/zh-CN/templates/shared/rules/fec-performance.md +101 -0
  227. package/localized/zh-CN/templates/shared/rules/fec-react.md +82 -0
  228. package/localized/zh-CN/templates/shared/rules/fec-refactoring.md +47 -0
  229. package/localized/zh-CN/templates/shared/rules/fec-rendering-patterns.md +40 -0
  230. package/localized/zh-CN/templates/shared/rules/fec-responsive-design.md +50 -0
  231. package/localized/zh-CN/templates/shared/rules/fec-source-driven-development.md +31 -0
  232. package/localized/zh-CN/templates/shared/rules/fec-state-management.md +60 -0
  233. package/localized/zh-CN/templates/shared/rules/fec-testing.md +98 -0
  234. package/localized/zh-CN/templates/shared/rules/fec-typescript.md +112 -0
  235. package/localized/zh-CN/templates/shared/rules/fec-vue.md +64 -0
  236. package/localized/zh-CN/templates/shared/rules/fec-working-modes.md +50 -0
  237. package/openclaw.plugin.json +1 -1
  238. package/package.json +4 -3
  239. package/skills/TEMPLATE.md +74 -74
  240. package/skills/eval_queries.json +717 -619
  241. package/skills/fec-accessibility-check/SKILL.md +21 -21
  242. package/skills/fec-accessibility-check/references/report-template.md +12 -12
  243. package/skills/fec-accessibility-check/references/screen-reader-testing.md +24 -24
  244. package/skills/fec-alchemy/SKILL.md +50 -50
  245. package/skills/fec-alchemy/assets/absorption-plan-template.md +32 -32
  246. package/skills/fec-alchemy/assets/intake-template.md +55 -55
  247. package/skills/fec-alchemy/assets/review-checklist.md +23 -23
  248. package/skills/fec-alchemy/references/methodology.md +66 -66
  249. package/skills/fec-alchemy/references/originality-and-licensing.md +42 -42
  250. package/skills/fec-api-integration/SKILL.md +61 -61
  251. package/skills/fec-api-integration/references/integration-patterns.md +30 -30
  252. package/skills/fec-backend-requirements-handoff/SKILL.md +45 -0
  253. package/skills/fec-browser-storage/SKILL.md +16 -16
  254. package/skills/fec-browser-storage/references/storage-patterns.md +16 -16
  255. package/skills/fec-canvas-threejs/SKILL.md +21 -21
  256. package/skills/fec-canvas-threejs/references/rendering-patterns.md +10 -10
  257. package/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +37 -37
  258. package/skills/fec-code-review/SKILL.md +94 -94
  259. package/skills/fec-code-review/references/report-template.md +13 -13
  260. package/skills/fec-component-testing/SKILL.md +39 -39
  261. package/skills/fec-data-fetching/SKILL.md +16 -16
  262. package/skills/fec-data-fetching/references/query-patterns.md +27 -27
  263. package/skills/fec-debug-framework/SKILL.md +95 -95
  264. package/skills/fec-debug-framework/references/report-template.md +34 -34
  265. package/skills/fec-dependency-upgrade/SKILL.md +17 -17
  266. package/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +31 -31
  267. package/skills/fec-doc-sync/SKILL.md +23 -23
  268. package/skills/fec-drawio-studio/SKILL.md +73 -0
  269. package/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
  270. package/skills/fec-drawio-studio/data/brand-icons.json +878 -0
  271. package/skills/fec-drawio-studio/data/shape-index.json +83570 -0
  272. package/skills/fec-drawio-studio/references/data-residency.md +27 -0
  273. package/skills/fec-drawio-studio/references/diagram-patterns.md +60 -0
  274. package/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
  275. package/skills/fec-drawio-studio/references/layout-and-export.md +72 -0
  276. package/skills/fec-drawio-studio/references/troubleshooting.md +29 -0
  277. package/skills/fec-drawio-studio/references/xml-and-mermaid.md +58 -0
  278. package/skills/fec-drawio-studio/scripts/brand-symbols.mjs +99 -0
  279. package/skills/fec-drawio-studio/scripts/diagram-lint.mjs +205 -0
  280. package/skills/fec-drawio-studio/scripts/diagram-url.mjs +102 -0
  281. package/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
  282. package/skills/fec-drawio-studio/scripts/layout-graph.mjs +107 -0
  283. package/skills/fec-drawio-studio/scripts/png-embed-fix.mjs +26 -0
  284. package/skills/fec-drawio-studio/scripts/scan-go-packages.mjs +36 -0
  285. package/skills/fec-drawio-studio/scripts/scan-js-modules.mjs +52 -0
  286. package/skills/fec-drawio-studio/scripts/scan-python-classes.mjs +30 -0
  287. package/skills/fec-drawio-studio/scripts/scan-python-modules.mjs +55 -0
  288. package/skills/fec-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
  289. package/skills/fec-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
  290. package/skills/fec-drawio-studio/scripts/shape-query.mjs +121 -0
  291. package/skills/fec-drawio-studio/scripts/studio-core.mjs +139 -0
  292. package/skills/fec-drawio-studio/styles/built-in/corporate.json +49 -0
  293. package/skills/fec-drawio-studio/styles/built-in/default.json +49 -0
  294. package/skills/fec-drawio-studio/styles/built-in/handdrawn.json +49 -0
  295. package/skills/fec-drawio-studio/styles/schema.json +112 -0
  296. package/skills/fec-e2e-testing/SKILL.md +24 -22
  297. package/skills/fec-e2e-testing/references/e2e-ci-reporting.md +62 -0
  298. package/skills/fec-e2e-testing/references/e2e-special-scenarios.md +52 -0
  299. package/skills/fec-e2e-testing/references/e2e-visual-regression.md +60 -0
  300. package/skills/fec-e2e-testing/references/playwright-patterns.md +6 -6
  301. package/skills/fec-form-handling/SKILL.md +21 -21
  302. package/skills/fec-form-handling/references/advanced-form-patterns.md +41 -41
  303. package/skills/fec-image-generation/SKILL.md +81 -0
  304. package/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
  305. package/skills/fec-image-generation/references/artifact-routing.md +80 -0
  306. package/skills/fec-image-generation/references/diagram-workflows.md +74 -0
  307. package/skills/fec-image-generation/references/html-technical-diagrams.md +236 -0
  308. package/skills/fec-image-generation/references/png-qa-autofix.md +30 -0
  309. package/skills/fec-image-generation/scripts/export-diagram.mjs +364 -0
  310. package/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
  311. package/skills/fec-image-generation/scripts/png-qa.mjs +431 -0
  312. package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1397 -0
  313. package/skills/fec-implement-from-design/SKILL.md +81 -74
  314. package/skills/fec-implement-from-design/references/design-plan-template.md +16 -16
  315. package/skills/fec-legacy-to-modern-migration/SKILL.md +29 -173
  316. package/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +110 -0
  317. package/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +37 -37
  318. package/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +48 -0
  319. package/skills/fec-legacy-web-standard/SKILL.md +17 -17
  320. package/skills/fec-legacy-web-standard/references/legacy-patterns.md +16 -16
  321. package/skills/fec-list-virtualization/SKILL.md +16 -16
  322. package/skills/fec-list-virtualization/references/virtualization-patterns.md +31 -31
  323. package/skills/fec-monorepo-project-standard/SKILL.md +52 -52
  324. package/skills/fec-motion-interaction/SKILL.md +51 -44
  325. package/skills/fec-motion-interaction/references/motion-patterns.md +11 -11
  326. package/skills/fec-nextjs-project-standard/SKILL.md +64 -58
  327. package/skills/fec-nuxt-project-standard/SKILL.md +57 -57
  328. package/skills/fec-performance-optimization/SKILL.md +54 -50
  329. package/skills/fec-performance-optimization/references/framework-performance-patterns.md +38 -0
  330. package/skills/fec-performance-optimization/references/report-template.md +34 -28
  331. package/skills/fec-pwa-implementation/SKILL.md +17 -17
  332. package/skills/fec-pwa-implementation/references/manifest-and-icons.md +12 -12
  333. package/skills/fec-pwa-implementation/references/service-worker-workbox.md +13 -13
  334. package/skills/fec-react-project-standard/SKILL.md +72 -64
  335. package/skills/fec-react-project-standard/references/react-performance-patterns.md +35 -0
  336. package/skills/fec-react-project-standard/references/react-project-structure.md +197 -0
  337. package/skills/fec-react-project-standard/references/react-quality-patterns.md +131 -0
  338. package/skills/fec-react-project-standard/references/react-runtime-patterns.md +293 -0
  339. package/skills/fec-refactor-clean/SKILL.md +30 -30
  340. package/skills/fec-refactor-clean/references/report-template.md +23 -23
  341. package/skills/fec-responsive-layout/SKILL.md +17 -17
  342. package/skills/fec-responsive-layout/references/responsive-layout-patterns.md +39 -28
  343. package/skills/fec-route-protection/SKILL.md +26 -26
  344. package/skills/fec-security-review/SKILL.md +20 -20
  345. package/skills/fec-security-review/references/report-template.md +12 -12
  346. package/skills/fec-security-review/references/security-checklist.md +27 -27
  347. package/skills/fec-source-driven-development/SKILL.md +66 -40
  348. package/skills/fec-state-management/SKILL.md +34 -34
  349. package/skills/fec-state-management/references/state-patterns.md +19 -19
  350. package/skills/fec-storybook-component-doc/SKILL.md +19 -19
  351. package/skills/fec-storybook-component-doc/references/story-patterns.md +12 -12
  352. package/skills/fec-svg-animation/SKILL.md +32 -32
  353. package/skills/fec-tailwind-design-system/SKILL.md +17 -17
  354. package/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +36 -32
  355. package/skills/fec-tdd-workflow/SKILL.md +28 -28
  356. package/skills/fec-testing-strategy/SKILL.md +29 -29
  357. package/skills/fec-typescript-project-standard/SKILL.md +54 -0
  358. package/skills/fec-typescript-project-standard/references/type-safety-patterns.md +102 -0
  359. package/skills/fec-typescript-project-standard/references/type-safety.md +148 -0
  360. package/skills/fec-ui-design/SKILL.md +90 -72
  361. package/skills/fec-ui-design/data/style-archetypes.json +40 -0
  362. package/skills/fec-ui-design/data/ux-quality-rules.json +35 -0
  363. package/skills/fec-ui-design/references/design-intelligence.md +81 -21
  364. package/skills/fec-ui-design/references/master-page-overrides.md +15 -15
  365. package/skills/fec-ui-design/references/pre-delivery-checklist.md +38 -32
  366. package/skills/fec-ui-design/scripts/design-system.mjs +119 -1
  367. package/skills/fec-validation-fix/SKILL.md +26 -26
  368. package/skills/fec-validation-fix/references/report-template.md +25 -25
  369. package/skills/fec-vite-project-standard/SKILL.md +39 -39
  370. package/skills/fec-vue3-project-standard/SKILL.md +39 -30
  371. package/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +163 -0
  372. package/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +13 -0
  373. package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +177 -0
  374. package/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +216 -0
  375. package/skills/fec-web-video-presentation/SKILL.md +61 -0
  376. package/skills/fec-web-video-presentation/data/starter-themes.json +59 -0
  377. package/skills/fec-web-video-presentation/references/chapter-craft.md +37 -0
  378. package/skills/fec-web-video-presentation/references/content-plan.md +38 -0
  379. package/skills/fec-web-video-presentation/references/recording-and-audio.md +33 -0
  380. package/skills/fec-web-video-presentation/references/theme-system.md +36 -0
  381. package/skills/fec-web-video-presentation/scripts/create-video-presentation.mjs +430 -0
  382. package/skills/fec-web-workers/SKILL.md +16 -16
  383. package/skills/fec-web-workers/references/advanced-workers.md +13 -13
  384. package/skills/fec-web-workers/references/basic-worker.md +8 -8
  385. package/skills/metadata.json +402 -220
  386. package/skills/relations.json +120 -25
  387. package/templates/claude/CLAUDE.md +60 -60
  388. package/templates/codex/AGENTS.md +76 -76
  389. package/templates/codex/config.toml +4 -4
  390. package/templates/openclaw/AGENTS.md +68 -68
  391. package/templates/openclaw/OPENCLAW-CONFIG.md +8 -8
  392. package/templates/shared/rules/fec-agent-workflow.md +40 -40
  393. package/templates/shared/rules/fec-api-layer.md +52 -52
  394. package/templates/shared/rules/fec-ci-cd.md +29 -117
  395. package/templates/shared/rules/fec-code-comments.md +22 -22
  396. package/templates/shared/rules/fec-design-system.md +65 -241
  397. package/templates/shared/rules/fec-error-handling.md +41 -185
  398. package/templates/shared/rules/fec-git-conventions.md +42 -42
  399. package/templates/shared/rules/fec-i18n.md +48 -96
  400. package/templates/shared/rules/fec-naming-conventions.md +91 -91
  401. package/templates/shared/rules/fec-performance.md +78 -78
  402. package/templates/shared/rules/fec-react.md +58 -58
  403. package/templates/shared/rules/fec-refactoring.md +34 -30
  404. package/templates/shared/rules/fec-rendering-patterns.md +40 -183
  405. package/templates/shared/rules/fec-responsive-design.md +37 -214
  406. package/templates/shared/rules/fec-source-driven-development.md +22 -22
  407. package/templates/shared/rules/fec-state-management.md +45 -148
  408. package/templates/shared/rules/fec-testing.md +64 -64
  409. package/templates/shared/rules/fec-typescript.md +98 -341
  410. package/templates/shared/rules/fec-vue.md +42 -42
  411. package/templates/shared/rules/fec-working-modes.md +34 -34
  412. package/skills/fec-e2e-testing/references/e2e-advanced.md +0 -176
  413. package/skills/fec-react-project-standard/references/react-project-details.md +0 -642
  414. package/skills/fec-vue3-project-standard/references/vue3-project-details.md +0 -547
@@ -0,0 +1,163 @@
1
+ # Vue 3 composables and routing patterns
2
+
3
+ ## Composables specification
4
+
5
+ ### Design principles
6
+
7
+ - Named with `use` prefix
8
+ - Use objects as return values and clearly mark the type
9
+ - Internal processing loading / error / data tri-state
10
+ -Support parameter responsiveness (accepts `Ref` or getter)
11
+ - Library level composable to clarify whether the parameter supports normal values, `Ref`, `computed` or getter, and parse the latest value inside the side effect
12
+
13
+ ```typescript
14
+ export function useUserList(params: MaybeRef<QueryParams>) {
15
+ const data = ref<User[]>([]);
16
+ const loading = ref(false);
17
+ const error = ref<Error | null>(null);
18
+
19
+ async function fetch() {
20
+ loading.value = true;
21
+ error.value = null;
22
+ try {
23
+ const res = await getUserList(toValue(params));
24
+ data.value = res.list;
25
+ } catch (e) {
26
+ error.value = e as Error;
27
+ } finally {
28
+ loading.value = false;
29
+ }
30
+ }
31
+
32
+ watchEffect(() => {
33
+ fetch();
34
+ });
35
+
36
+ return {
37
+ data: readonly(data),
38
+ loading: readonly(loading),
39
+ error: readonly(error),
40
+ refetch: fetch,
41
+ };
42
+ }
43
+ ```
44
+
45
+ ### Composable usage principles
46
+
47
+ - Return a `readonly` reference to prevent accidental modification by outsiders
48
+ - In data request scenarios, libraries such as VueQuery / VueUse are preferred (if the project has been introduced)
49
+ - Clean up timers, event listeners and other side effects in `onUnmounted`
50
+ - Avoid directly manipulating DOM in composable
51
+ - Read-only inputs accept normal values, refs, computed or getters; inputs that require bidirectional writing only accept writable refs or explicit setters.
52
+ - If the parameter itself is a callback, comparator or predicate, do not design it as a getter type input, otherwise the business function may be mistakenly called during parsing.
53
+
54
+ ### Vue Router / Pinia / Test common boundaries
55
+
56
+ - Changes in routing parameters will not recreate the same routing component; data that relies on `route.params` must watch clear fields and handle cancellation and race conditions.
57
+ - Avoid old-style `next()` multi-branch repeated calls in navigation guards; give priority to returning `false`, redirecting objects or throwing handleable errors.
58
+ - Use `storeToRefs` when destructuring the Pinia store will lose responsiveness; the setup store must return state, getters and actions that need to be tracked externally.
59
+ - UI temporary status, form input, and pop-up window switches do not enter the global store; URL query, server-side cache, and local component status are returned to their respective places first.
60
+ - Vue Test Utils tests prioritize user-visible behavior and do not use snapshots as the only proof; asynchronous updates use `await`, `flushPromises` or the waiting method recommended by the framework.
61
+ - When testing using Pinia, Router, Teleport, Suspense, async setup or `defineAsyncComponent`, explicitly install the plugin in the test fixture, mount the target container and wait for async to stabilize.
62
+
63
+ ## Slots and Provide/Inject
64
+
65
+ ### Slots
66
+
67
+ - Use `<slot>` to achieve component composition instead of too many props
68
+ - Named slots are used for explicit layout areas
69
+ - Scope slot passes data to parent component for custom rendering
70
+
71
+ ```vue
72
+ <template>
73
+ <div class="card">
74
+ <div class="card-header">
75
+ <slot name="header">{{ title }}</slot>
76
+ </div>
77
+ <div class="card-body">
78
+ <slot :data="processedData" :loading="loading" />
79
+ </div>
80
+ </div>
81
+ </template>
82
+ ```
83
+
84
+ ### Provide/Inject
85
+
86
+ - For context sharing across multiple levels (topics, configurations, permissions)
87
+ - Provide InjectionKey to ensure type safety
88
+ - Do not use provide/inject instead of props to pass direct parent-child data
89
+
90
+ ```typescript
91
+ // keys.ts
92
+ export const ThemeKey: InjectionKey<Ref<Theme>> = Symbol("theme");
93
+
94
+ // Provider.vue
95
+ provide(ThemeKey, theme);
96
+
97
+ // Consumer.vue
98
+ const theme = inject(ThemeKey);
99
+ ```
100
+
101
+ ## Routing specifications
102
+
103
+ ### Routing organization
104
+
105
+ ```typescript
106
+ // app/router.ts
107
+ const routes: RouteRecordRaw[] = [
108
+ {
109
+ path: "/",
110
+ component: MainLayout,
111
+ children: [
112
+ {
113
+ path: "",
114
+ name: "Dashboard",
115
+ component: () => import("@/pages/Dashboard/DashboardPage.vue"),
116
+ },
117
+ {
118
+ path: "users",
119
+ name: "UserList",
120
+ component: () => import("@/pages/UserList/UserListPage.vue"),
121
+ },
122
+ {
123
+ path: "users/:id",
124
+ name: "UserDetail",
125
+ component: () => import("@/pages/UserDetail/UserDetailPage.vue"),
126
+ },
127
+ {
128
+ path: "settings",
129
+ name: "Settings",
130
+ component: () => import("@/pages/Settings/SettingsPage.vue"),
131
+ },
132
+ ],
133
+ },
134
+ {
135
+ path: "/login",
136
+ name: "Login",
137
+ component: () => import("@/pages/Login/LoginPage.vue"),
138
+ },
139
+ {
140
+ path: "/:pathMatch(.*)*",
141
+ name: "NotFound",
142
+ component: () => import("@/pages/NotFound.vue"),
143
+ },
144
+ ];
145
+ ```
146
+
147
+ ### Routing principles
148
+
149
+ - Centralized management of routing configuration, each route must have a `name`
150
+ - Page components are loaded on demand using dynamic `import()`
151
+ - Permission control uses route guard (`beforeEach`) instead of judging within each page
152
+ - URL parameters (pagination, filtering, sorting) and routing status are synchronized
153
+
154
+ ```typescript
155
+ // Navigation guard
156
+ router.beforeEach((to) => {
157
+ const authStore = useAuthStore();
158
+ if (to.meta.requiresAuth && !authStore.isLoggedIn) {
159
+ return { name: "Login", query: { redirect: to.fullPath } };
160
+ }
161
+ });
162
+ ```
163
+
@@ -0,0 +1,13 @@
1
+ # Vue 3 performance patterns
2
+
3
+ This file keeps lightweight Vue project-standard performance guidance. Use the frontend performance workflow when the task needs metrics, traces, profiles, bundle analysis, network evidence, or a formal performance report.
4
+
5
+ ## Performance
6
+
7
+ - Use `shallowRef` / `shallowReactive` to optimize large objects
8
+ - Use virtual scrolling for large lists
9
+ - Avoid using `v-if` in `v-for` (extract to computed filtering)
10
+ - Use `defineAsyncComponent` to lazily load heavy components
11
+ - `v-for` must have a stable `:key`
12
+ - Routing components are loaded on demand using dynamic `import()`
13
+
@@ -0,0 +1,177 @@
1
+ # Vue 3 project structure and component standards
2
+
3
+ ## Project structure
4
+
5
+ The following is the industry's best practice structure for medium and large Vue 3 projects, tailored according to the actual situation of the project:
6
+
7
+ ```
8
+ src/
9
+ ├── app/ # Application entry and global configuration
10
+ │ ├── App.vue # Root component
11
+ │ ├── main.ts # Application startup entrance
12
+ │ └── router.ts # Routing instance and configuration
13
+ │
14
+ ├── pages/ # Page components (one-to-one correspondence with routing)
15
+ │ ├── Dashboard/
16
+ │ │ ├── DashboardPage.vue
17
+ │ │ ├── components/ # Page private components
18
+ │ │ └── composables/ # Page private composables
19
+ │ ├── UserList/
20
+ │ └── Settings/
21
+ │
22
+ ├── layouts/ # Layout component
23
+ │ ├── MainLayout.vue # Main layout (sidebar + top bar + content area)
24
+ │ ├── AuthLayout.vue # Login/registration page layout
25
+ │ └── BlankLayout.vue # Blank layout (error page, etc.)
26
+ │
27
+ ├── features/ # Function modules (divided by business areas)
28
+ │ ├── auth/
29
+ │ │ ├── components/ # Module components
30
+ │ │ ├── composables/ # module composables
31
+ │ │ ├── api.ts # Module API call
32
+ │ │ ├── types.ts # Module type definition
33
+ │ │ ├── constants.ts # Module constants
34
+ │ │ └── index.ts # Module publicly exported
35
+ │ └── order/
36
+ │
37
+ ├── components/ # Globally shared UI components
38
+ │ ├── AppButton/
39
+ │ │ ├── AppButton.vue
40
+ │ │ └── __tests__/
41
+ │ ├── AppModal/
42
+ │ ├── AppForm/
43
+ │ └── AppErrorBoundary/
44
+ │
45
+ ├── composables/ # Global shared composables
46
+ │ ├── useAuth.ts
47
+ │ ├── useDebounce.ts
48
+ │ └── useMediaQuery.ts
49
+ │
50
+ ├── services/ # API base layer
51
+ │ ├── request.ts # Axios/fetch instance and interceptor
52
+ │ └── endpoints/ # API endpoint definition (such as split by field)
53
+ │
54
+ ├── stores/ # Pinia status management
55
+ │ ├── authStore.ts
56
+ │ └── uiStore.ts
57
+ │
58
+ ├── locales/ # International language pack
59
+ │ ├── zh-CN.json # Simplified Chinese
60
+ │ ├── en-US.json # English
61
+ │ └── index.ts # i18n instance initialization (vue-i18n)
62
+ │
63
+ ├── assets/ # Static resources
64
+ │ ├── images/ # Pictures (PNG, JPG, WebP)
65
+ │ ├── icons/ # SVG icon
66
+ │ └── fonts/ # Custom fonts
67
+ │
68
+ ├── config/ # Application configuration
69
+ │ ├── env.ts # Typed encapsulation of environment variables
70
+ │ └── features.ts # Feature Flags Management
71
+ │
72
+ ├── types/ # Global shared types
73
+ │ ├── api.ts # API response/request common type
74
+ │ ├── models.ts #Business entity type
75
+ │ └── global.d.ts # Global type extension (component type, module declaration, etc.)
76
+ │
77
+ ├── utils/ # Pure utility function
78
+ │ ├── format.ts # Date, number, currency formatting
79
+ │ ├── validators.ts # Form validation rules
80
+ │ └── storage.ts # LocalStorage / SessionStorage package
81
+ │
82
+ ├── directives/ # Custom directives
83
+ │ ├── vPermission.ts # Permission command
84
+ │ └── vClickOutside.ts # Click outside to close
85
+ │
86
+ ├── plugins/ # Vue plug-in registration
87
+ │ ├── i18n.ts # vue-i18n plug-in configuration
88
+ │ └── index.ts # Plug-in unified registration entrance
89
+ │
90
+ ├── styles/ # Global styles and themes
91
+ │ ├── global.css # Global basic style (reset/normalize)
92
+ │ ├── variables.css # CSS variables (color, spacing, font size)
93
+ │ ├── breakpoints.ts # Responsive breakpoint constants
94
+ │ └── themes/ # theme definition
95
+ │ ├── light.css # Light theme variable
96
+ │ ├── dark.css # Dark theme variable
97
+ │ └── index.ts # theme switching logic
98
+ │
99
+ └── constants/ # Global constants
100
+ ├── routes.ts #Routing path constants
101
+ └── config.ts #Business constants (paging size, timeout, etc.)
102
+ ```
103
+
104
+ ### Key Principles
105
+
106
+ - `pages/` does route mapping and layout combination without putting business logic
107
+ - `layouts/` defines the page skeleton (sidebar, top bar, breadcrumbs), referenced by the `component` of the routing configuration
108
+ - `features/` is divided by business areas, self-contained within the module (components + composables + api + types)
109
+ - `components/` only contains common components without business coupling and can be reused across projects
110
+ - `composables/` only places common logic (anti-shake, media query, etc.), and business composables are placed in the corresponding feature
111
+ - `locales/` stores language pack JSON files, use `$t('key')` in the template instead of hard-coded copy
112
+ - `assets/` stores static resources, SVG is preferred for icons, and WebP/AVIF is preferred for images.
113
+ - `config/` encapsulates environment variables and Feature Flags, prohibiting direct reading of `import.meta.env` in components
114
+ - `styles/themes/` implements theme switching through CSS variables. Variables are referenced in components instead of hard-coded colors.
115
+ - Each module controls the public API through `index.ts` to avoid deep path imports
116
+
117
+ ## Component design specifications
118
+
119
+ - Use `<script setup lang="ts">`
120
+ - Explicitly use `defineProps` / `defineEmits` with accompanying types
121
+ - Reusable logic is first extracted to composables
122
+ - Keep the template readable and avoid too deep nesting of conditions
123
+ - Prefer using computed properties instead of repeatedly maintaining state
124
+ - Avoid building large single components; **single file size** see `templates/shared/rules/fec-vue.md` "**component file size**" (approximately 300 lines or less, more than 500 lines or too complex to separate sub-components and Composables)
125
+ - Prioritize the use of strongly typed props, emits and exposed methods
126
+ - Follow the file and directory naming conventions of the warehouse
127
+ - Prioritize reuse of existing UI components and tokens
128
+
129
+ ### Component layering
130
+
131
+ ```
132
+ Pages → Route mapping, layout combination
133
+ └── Container components (Containers) → Data acquisition, status orchestration
134
+ └── Business components (Features) → Domain logic display
135
+ └── Universal Component (UI) → Pure display, no business coupling
136
+ ```
137
+
138
+ ## Comment specifications
139
+
140
+ - **Prefer using Chinese**: When explaining "why this is done", business constraints, boundary conditions, and non-obvious trade-offs, give priority to writing comments in Chinese to make it easier for the team and business parties to read.
141
+ - **Exception when consistent with the code language**: When connecting third-party protocol field names, HTTP headers, and English terms in specifications, English proper nouns can be retained in the comments, and Chinese and English descriptions can be given when necessary.
142
+ - **Less but more precise**: Can express clear logic through clear naming and types without writing nonsense comments; complex branches, temporary compatibility, and performance trade-offs must be clearly stated.
143
+ - **Public API**: Composable or module external contracts can use JSDoc (`@param` / `@returns` / `@example`). The instructions can be in Chinese, unless the warehouse requires English.
144
+
145
+ ## TypeScript Specification
146
+
147
+ Common TypeScript project rules are taken care of by `fec-typescript-project-standard`, including `tsconfig`, strictness, DTO / view model boundaries, `unknown` narrowing, public API types, declared artifacts, and type tests.
148
+
149
+ The Vue specification only supplements SFC, Props / Emits, exposed methods, Provide / Inject and composable reactive types; complex type modeling or cross-framework type contracts are first offloaded to `fec-typescript-project-standard`.
150
+
151
+ ### Vue 3 project supplementary conventions
152
+
153
+ ```vue
154
+ <script setup lang="ts">
155
+ interface Props {
156
+ title: string;
157
+ items: Item[];
158
+ loading?: boolean;
159
+ }
160
+
161
+ interface Emits {
162
+ (e: "select", item: Item): void;
163
+ (e: "delete", id: string): void;
164
+ }
165
+
166
+ const props = withDefaults(defineProps<Props>(), {
167
+ loading: false,
168
+ });
169
+
170
+ const emit = defineEmits<Emits>();
171
+ </script>
172
+ ```
173
+
174
+ - Props and Emits are defined using the TypeScript interface
175
+ - Use `withDefaults` to set default values
176
+ - `defineExpose` exposed methods must have type constraints
177
+
@@ -0,0 +1,216 @@
1
+ # Vue 3 state, API, and quality patterns
2
+
3
+ ## Status Management (Pinia)
4
+
5
+ | Status type | Recommended solution |
6
+ | ------------------ | ----------------------------- |
7
+ | Temporary UI state within the component | `ref` / `reactive` |
8
+ | Sharing business status across components | Pinia store |
9
+ | Server-side data cache | VueQuery / Custom composable |
10
+ | URL driver status | Route parameters / `useRoute().query` |
11
+ | Form Status | VeeValidate / FormKit |
12
+
13
+ ### Pinia Store Specifications
14
+
15
+ Using Composition API style (`setup store`):
16
+
17
+ ```typescript
18
+ // stores/authStore.ts
19
+ export const useAuthStore = defineStore("auth", () => {
20
+ const user = ref<User | null>(null);
21
+ const token = ref<string | null>(localStorage.getItem("token"));
22
+
23
+ const isLoggedIn = computed(() => !!token.value);
24
+
25
+ async function login(credentials: LoginParams) {
26
+ const res = await authApi.login(credentials);
27
+ user.value = res.user;
28
+ token.value = res.token;
29
+ localStorage.setItem("token", res.token);
30
+ }
31
+
32
+ function logout() {
33
+ user.value = null;
34
+ token.value = null;
35
+ localStorage.removeItem("token");
36
+ }
37
+
38
+ return { user: readonly(user), isLoggedIn, login, logout };
39
+ });
40
+ ```
41
+
42
+ ### Store Principles
43
+
44
+ - Each store has a single responsibility and is split by area.
45
+ - Expose the status of `readonly` to the outside world and modify it through action
46
+ - Do not store UI temporary states (modal switches, form inputs, etc.) in the store
47
+ - Server-side data is first managed by the request library rather than manually stored in the store
48
+
49
+ ## API layer specification
50
+
51
+ ### Request instance
52
+
53
+ ```typescript
54
+ // services/request.ts
55
+ const request = axios.create({
56
+ baseURL: import.meta.env.VITE_API_BASE_URL,
57
+ timeout: 10000,
58
+ });
59
+
60
+ request.interceptors.request.use((config) => {
61
+ const authStore = useAuthStore();
62
+ if (authStore.token) {
63
+ config.headers.Authorization = `Bearer ${authStore.token}`;
64
+ }
65
+ return config;
66
+ });
67
+
68
+ request.interceptors.response.use(
69
+ (res) => res.data,
70
+ (error) => {
71
+ if (error.response?.status === 401) {
72
+ const authStore = useAuthStore();
73
+ authStore.logout();
74
+ router.push({ name: "Login" });
75
+ }
76
+ return Promise.reject(normalizeError(error));
77
+ },
78
+ );
79
+ ```
80
+
81
+ ### API functions
82
+
83
+ ```typescript
84
+ // features/user/api.ts
85
+ export function getUserList(
86
+ params: UserQueryParams,
87
+ ): Promise<PageResult<User>> {
88
+ return request.get("/users", { params });
89
+ }
90
+
91
+ export function updateUser(id: string, data: UpdateUserDTO): Promise<User> {
92
+ return request.put(`/users/${id}`, data);
93
+ }
94
+ ```
95
+
96
+ - API functions are organized by feature instead of all being piled in one file
97
+ - Request parameters and responses have type constraints
98
+ - The interceptor handles authentication and error formatting uniformly
99
+
100
+ ## Error handling
101
+
102
+ ### Global error capture
103
+
104
+ ```typescript
105
+ // main.ts
106
+ app.config.errorHandler = (err, instance, info) => {
107
+ reportError(err, { component: instance?.$options.name, info });
108
+ };
109
+ ```
110
+
111
+ ### Component level errors
112
+
113
+ - Use `onErrorCaptured` to capture child component errors in the parent component
114
+ - Failed data requests must have user-visible prompts and retry mechanisms
115
+ - Don't swallow errors (empty catch block)
116
+
117
+ ## Custom directive
118
+
119
+ ```typescript
120
+ // directives/vPermission.ts
121
+ export const vPermission: Directive<HTMLElement, string> = {
122
+ mounted(el, binding) {
123
+ const authStore = useAuthStore();
124
+ if (!authStore.hasPermission(binding.value)) {
125
+ el.parentNode?.removeChild(el);
126
+ }
127
+ },
128
+ };
129
+ ```
130
+
131
+ - The directive only handles operations at the DOM level
132
+ - Do not put business logic in instructions
133
+ - Implement the `updated` hook when responsive updates are required
134
+
135
+ ## Style specification
136
+
137
+ - Use `<style scoped>` to isolate styles
138
+ - Depth selector uses `:deep()` instead of the deprecated `::v-deep`
139
+ - Be consistent with the existing style system of the project
140
+ - Dynamic styles preferentially use `:class` / `:style` binding
141
+ - Complex theme switching using CSS variables
142
+ - Theme/global variables are managed through CSS variables or Token
143
+
144
+ ## Test specifications
145
+
146
+ ### Must be tested
147
+
148
+ - Core interaction behaviors (click, input, submit)
149
+ - Conditional rendering (loading/error/empty/data)
150
+ - Emits trigger and payload
151
+ - Return value of key composables
152
+ - Pinia store actions and getters
153
+
154
+ ### Test style
155
+
156
+ ```typescript
157
+ describe("UserForm", () => {
158
+ it("should emit submit with valid data", async () => {
159
+ const wrapper = mount(UserForm);
160
+
161
+ await wrapper.find('[data-testid="username"]').setValue("test");
162
+ await wrapper.find("form").trigger("submit");
163
+
164
+ expect(wrapper.emitted("submit")?.[0]).toEqual([{ username: "test" }]);
165
+ });
166
+
167
+ it("should show validation error on empty submit", async () => {
168
+ const wrapper = mount(UserForm);
169
+ await wrapper.find("form").trigger("submit");
170
+ expect(wrapper.text()).toContain("Username cannot be empty");
171
+ });
172
+ });
173
+ ```
174
+
175
+ ### Store Test
176
+
177
+ ```typescript
178
+ describe("authStore", () => {
179
+ beforeEach(() => setActivePinia(createPinia()));
180
+
181
+ it("should login and set user", async () => {
182
+ const store = useAuthStore();
183
+ await store.login({ username: "admin", password: "pass" });
184
+ expect(store.isLoggedIn).toBe(true);
185
+ });
186
+ });
187
+ ```
188
+
189
+
190
+ ## Anti-pattern
191
+
192
+ - Inline large sections of business logic in template-driven components
193
+ - Used wide range watcher instead of computed
194
+ - The event payload is unclear
195
+ - Mix raw API calls directly into pure presentation components
196
+ - ref and props have no type constraints
197
+ - Use `watch` + manual assignment to simulate computed
198
+ - Mixing unrelated responsibilities into a component
199
+ - Use large-scale global style coverage to solve local UI problems
200
+ - Push all status to Pinia store instead of managing it nearby
201
+ - Put business coupling components in `components/`
202
+ - Import directly from the deep path inside the feature, bypassing `index.ts`
203
+
204
+ ## Output checklist
205
+
206
+ - [ ] The file structure is consistent with the project convention (pages/features/components are separated)
207
+ - [ ] Use `<script setup lang="ts">`
208
+ - [ ] Props / Emits type complete
209
+ - [ ] Whether explanatory comments should be given priority in Chinese and to the point
210
+ - [ ] Reusable logic has been extracted to composable
211
+ - [ ] Loading / Error / Empty status have been processed
212
+ - [ ] Routing components are loaded using dynamic import
213
+ - [ ] Reasonable status management plan (proximity principle)
214
+ - [ ] API calls have type constraints and unified error handling
215
+ - [ ] styles use scoped isolation
216
+ - [ ] Key behaviors are covered by tests
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: fec-web-video-presentation
3
+ description: Use when turning an article, talk script, lesson, product demo, or narrated explanation into a recordable 16:9 web presentation with step-driven scenes, optional narration alignment, theme tokens, and screen-recording guidance; Chinese triggers include web video, dynamic demonstration, spoken script to video, screen-recordable demonstration, 16:9 demonstration.
4
+ ---
5
+
6
+ # Web video demonstration
7
+
8
+ ## Purpose
9
+
10
+ Convert articles, oral presentations, courses, product explanations or technology sharing into screen-recordable 16:9 web presentations. The product should be like a clickable video stage: each step carries a spoken rhythm, the visual design serves the content rhythm, and can be stably recorded using the browser.
11
+
12
+ ## Procedure
13
+
14
+ 1. Determine the input form
15
+ - When the user submits an article or long text, it is first split into a spoken draft and an outline.
16
+ - When the user broadcasts the manuscript to the ready-made script, the original order is retained and only the outline, chapters and steps are added.
17
+ - When the user only provides a topic but no content, first ask for materials, outlines or key points; do not make up the entire content for the user.
18
+
19
+ 2. Generate a content plan
20
+ - Press [content-plan.md](references/content-plan.md) to output script and outline.
21
+ - The script determines the order of telling and each beat; the outline determines the chapters, steps, time estimates, screen information and material list.
22
+ - The outline only describes the content density and screen tasks, and does not write down the specific animation implementation in advance.
23
+
24
+ 3. Align the demo system
25
+ - Choose a starter theme from [theme-system.md](references/theme-system.md) or [starter-themes.json](data/starter-themes.json), or redefine the token by project brand.
26
+ - Create a minimal Vite + React + TypeScript presentation skeleton using [create-video-presentation.mjs](scripts/create-video-presentation.mjs):
27
+ ```bash
28
+ node skills/fec-web-video-presentation/scripts/create-video-presentation.mjs ./presentation --theme editorial-slate
29
+ ```
30
+ - If you just want to preview optional themes or plan to write content:
31
+ ```bash
32
+ node skills/fec-web-video-presentation/scripts/create-video-presentation.mjs --list-themes
33
+ node skills/fec-web-video-presentation/scripts/create-video-presentation.mjs --dry-run ./presentation --theme editorial-slate
34
+ ```
35
+
36
+ 4. Implementation Chapter
37
+ - Each chapter is implemented as [chapter-craft.md](references/chapter-craft.md).
38
+ - Each step occupies the stage exclusively, and the screen only carries the core content that the user needs to understand for the current spoken beat.
39
+ - Chapters must have visible visual presentation, graphics, layout changes, status progression, or data/media presentation; do not deliver text-only slides.
40
+ - The first chapter should be completed and accepted first as the style anchor before continuing with other chapters.
41
+
42
+ 5. Screen recording and audio
43
+ - Use [recording-and-audio.md](references/recording-and-audio.md) to check stage scale, navigation, recording mode and optional audio synchronization.
44
+ - Audio can come from the user's existing files, host tools, or the project's own TTS process; this skill is not bound to a specific TTS provider.
45
+
46
+ 6. Pre-delivery verification
47
+ - Open the demo in a browser to check 16:9 zoom, keyboard/click advancement, step count, text overflow, hidden controls, console errors, and screen recording path.
48
+ - If the number, order or step number of chapters changes, reset the local persistence key or clear the old progress to avoid reverting to a non-existent step.
49
+
50
+ ## Constraints
51
+
52
+ - Do not turn web videos into ordinary marketing landing pages, static PPT or long scrolling articles.
53
+ - Do not copy the reference project's themes, template chapters, long prompts, or scaffolding implementations; generate an original skeleton based on the current project.
54
+ - Do not lock each animation name in the outline stage; animations should be driven by chapter content relationships.
55
+ - Do not use fake data, fake quotes, fake product screenshots or uncheckable media to fill the screen.
56
+ - Do not let controls, page numbers, explanatory text or debugging panels pollute the screen recording; necessary controls are hidden or weakened by default.
57
+ - No outside-project vendor conventions are introduced for audio synthesis; TTS is an optional adaptation layer.
58
+
59
+ ## Expected Output
60
+
61
+ Output script, outline, runnable 16:9 web page demonstration skeleton or chapter implementation, and describe the theme, number of chapters/steps, screen recording method, optional audio path and verification results. The final presentation should be able to be progressed steadily through clicks or keyboards, the visual rhythm should fit the spoken content, and it should be suitable for browser screen recording.