@bovinphang/frontend-craft 2.7.0 → 2.9.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 (502) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +378 -305
  4. package/CHANGELOG.zh-CN.md +377 -304
  5. package/CONTRIBUTING.md +371 -361
  6. package/CONTRIBUTING.zh-CN.md +371 -361
  7. package/README.md +545 -493
  8. package/README.openclaw.md +359 -264
  9. package/README.openclaw.zh-CN.md +359 -264
  10. package/README.zh-CN.md +545 -493
  11. package/agents/fec-architect.md +70 -70
  12. package/agents/fec-code-reviewer.md +103 -82
  13. package/agents/fec-debugger.md +20 -20
  14. package/agents/fec-design-token-mapper.md +36 -36
  15. package/agents/fec-doc-updater.md +13 -13
  16. package/agents/fec-e2e-runner.md +45 -45
  17. package/agents/fec-figma-implementer.md +59 -59
  18. package/agents/fec-performance-optimizer.md +128 -128
  19. package/agents/fec-refactor-cleaner.md +17 -14
  20. package/agents/fec-refactoring-expert.md +81 -0
  21. package/agents/fec-security-reviewer.md +82 -67
  22. package/agents/fec-test-planner.md +27 -27
  23. package/agents/fec-typescript-reviewer.md +103 -87
  24. package/agents/fec-ui-checker.md +64 -64
  25. package/commands/fec-debug.md +19 -19
  26. package/commands/fec-doc-sync.md +11 -11
  27. package/commands/fec-init.md +37 -38
  28. package/commands/fec-plan.md +58 -58
  29. package/commands/fec-refactor-clean.md +11 -11
  30. package/commands/fec-refactor-plan.md +17 -0
  31. package/commands/fec-refactor.md +18 -0
  32. package/commands/fec-review.md +71 -41
  33. package/commands/fec-scaffold.md +41 -41
  34. package/commands/fec-smell.md +17 -0
  35. package/commands/fec-tdd.md +17 -13
  36. package/dist/bin/frontend-craft.js +190 -36
  37. package/dist/hooks/fec-run-tests.js +5 -1
  38. package/dist/hooks/fec-session-start.js +1 -1
  39. package/docs/example-prompts.md +157 -137
  40. package/docs/ja-JP/README.md +534 -493
  41. package/docs/ko-KR/README.md +534 -493
  42. package/docs/project-structure.md +151 -123
  43. package/docs/refactoring/README.md +50 -0
  44. package/docs/refactoring/catalog.md +105 -0
  45. package/docs/refactoring/smell-refactoring-matrix.md +41 -0
  46. package/docs/review-and-diagram-workflows.md +39 -0
  47. package/docs/runtimes/antigravity.md +18 -10
  48. package/docs/runtimes/augment.md +18 -10
  49. package/docs/runtimes/claude.md +191 -177
  50. package/docs/runtimes/claude.zh-CN.md +189 -175
  51. package/docs/runtimes/cline.md +18 -10
  52. package/docs/runtimes/codebuddy.md +18 -10
  53. package/docs/runtimes/codex.md +18 -10
  54. package/docs/runtimes/compatibility.md +27 -0
  55. package/docs/runtimes/copilot.md +18 -10
  56. package/docs/runtimes/cursor.md +18 -10
  57. package/docs/runtimes/gemini.md +18 -10
  58. package/docs/runtimes/kilo.md +18 -10
  59. package/docs/runtimes/openclaw.md +18 -10
  60. package/docs/runtimes/opencode.md +18 -10
  61. package/docs/runtimes/qoder.md +18 -19
  62. package/docs/runtimes/trae.md +18 -10
  63. package/docs/runtimes/windsurf.md +18 -10
  64. package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
  65. package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
  66. package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
  67. package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
  68. package/docs/zh-CN/example-prompts.md +157 -137
  69. package/docs/zh-CN/project-structure.md +148 -123
  70. package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
  71. package/docs/zh-TW/README.md +534 -493
  72. package/localized/zh-CN/agents/fec-architect.md +125 -0
  73. package/localized/zh-CN/agents/fec-code-reviewer.md +171 -0
  74. package/localized/zh-CN/agents/fec-debugger.md +44 -0
  75. package/localized/zh-CN/agents/fec-design-token-mapper.md +75 -0
  76. package/localized/zh-CN/agents/fec-doc-updater.md +30 -0
  77. package/localized/zh-CN/agents/fec-e2e-runner.md +107 -0
  78. package/localized/zh-CN/agents/fec-figma-implementer.md +104 -0
  79. package/localized/zh-CN/agents/fec-performance-optimizer.md +293 -0
  80. package/localized/zh-CN/agents/fec-refactor-cleaner.md +35 -0
  81. package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
  82. package/localized/zh-CN/agents/fec-security-reviewer.md +132 -0
  83. package/localized/zh-CN/agents/fec-test-planner.md +50 -0
  84. package/localized/zh-CN/agents/fec-typescript-reviewer.md +158 -0
  85. package/localized/zh-CN/agents/fec-ui-checker.md +120 -0
  86. package/localized/zh-CN/commands/fec-debug.md +30 -0
  87. package/localized/zh-CN/commands/fec-doc-sync.md +19 -0
  88. package/localized/zh-CN/commands/fec-init.md +70 -0
  89. package/localized/zh-CN/commands/fec-plan.md +94 -0
  90. package/localized/zh-CN/commands/fec-refactor-clean.md +19 -0
  91. package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
  92. package/localized/zh-CN/commands/fec-refactor.md +14 -0
  93. package/localized/zh-CN/commands/fec-review.md +97 -0
  94. package/localized/zh-CN/commands/fec-scaffold.md +205 -0
  95. package/localized/zh-CN/commands/fec-smell.md +13 -0
  96. package/localized/zh-CN/commands/fec-tdd.md +25 -0
  97. package/localized/zh-CN/skills/TEMPLATE.md +155 -0
  98. package/localized/zh-CN/skills/eval_queries.json +1257 -0
  99. package/localized/zh-CN/skills/fec-accessibility-check/SKILL.md +39 -0
  100. package/localized/zh-CN/skills/fec-accessibility-check/references/report-template.md +23 -0
  101. package/localized/zh-CN/skills/fec-accessibility-check/references/screen-reader-testing.md +33 -0
  102. package/localized/zh-CN/skills/fec-alchemy/SKILL.md +74 -0
  103. package/localized/zh-CN/skills/fec-alchemy/assets/absorption-plan-template.md +47 -0
  104. package/localized/zh-CN/skills/fec-alchemy/assets/intake-template.md +55 -0
  105. package/localized/zh-CN/skills/fec-alchemy/assets/review-checklist.md +31 -0
  106. package/localized/zh-CN/skills/fec-alchemy/references/methodology.md +94 -0
  107. package/localized/zh-CN/skills/fec-alchemy/references/originality-and-licensing.md +57 -0
  108. package/localized/zh-CN/skills/fec-api-integration/SKILL.md +78 -0
  109. package/localized/zh-CN/skills/fec-api-integration/references/integration-patterns.md +80 -0
  110. package/localized/zh-CN/skills/fec-backend-requirements-handoff/SKILL.md +45 -0
  111. package/localized/zh-CN/skills/fec-browser-storage/SKILL.md +34 -0
  112. package/localized/zh-CN/skills/fec-browser-storage/references/storage-patterns.md +65 -0
  113. package/localized/zh-CN/skills/fec-canvas-threejs/SKILL.md +66 -0
  114. package/localized/zh-CN/skills/fec-canvas-threejs/references/rendering-patterns.md +67 -0
  115. package/localized/zh-CN/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +67 -0
  116. package/localized/zh-CN/skills/fec-code-review/SKILL.md +162 -0
  117. package/localized/zh-CN/skills/fec-code-review/references/report-template.md +39 -0
  118. package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
  119. package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
  120. package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
  121. package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  122. package/localized/zh-CN/skills/fec-component-testing/SKILL.md +119 -0
  123. package/localized/zh-CN/skills/fec-data-fetching/SKILL.md +62 -0
  124. package/localized/zh-CN/skills/fec-data-fetching/references/query-patterns.md +103 -0
  125. package/localized/zh-CN/skills/fec-debug-framework/SKILL.md +157 -0
  126. package/localized/zh-CN/skills/fec-debug-framework/references/report-template.md +58 -0
  127. package/localized/zh-CN/skills/fec-dependency-upgrade/SKILL.md +34 -0
  128. package/localized/zh-CN/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +56 -0
  129. package/localized/zh-CN/skills/fec-doc-sync/SKILL.md +39 -0
  130. package/localized/zh-CN/skills/fec-drawio-studio/SKILL.md +73 -0
  131. package/localized/zh-CN/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
  132. package/localized/zh-CN/skills/fec-drawio-studio/data/brand-icons.json +878 -0
  133. package/localized/zh-CN/skills/fec-drawio-studio/data/shape-index.json +83570 -0
  134. package/localized/zh-CN/skills/fec-drawio-studio/references/data-residency.md +27 -0
  135. package/localized/zh-CN/skills/fec-drawio-studio/references/diagram-patterns.md +60 -0
  136. package/localized/zh-CN/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
  137. package/localized/zh-CN/skills/fec-drawio-studio/references/layout-and-export.md +72 -0
  138. package/localized/zh-CN/skills/fec-drawio-studio/references/troubleshooting.md +29 -0
  139. package/localized/zh-CN/skills/fec-drawio-studio/references/xml-and-mermaid.md +58 -0
  140. package/localized/zh-CN/skills/fec-drawio-studio/scripts/brand-symbols.mjs +99 -0
  141. package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-lint.mjs +205 -0
  142. package/localized/zh-CN/skills/fec-drawio-studio/scripts/diagram-url.mjs +102 -0
  143. package/localized/zh-CN/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
  144. package/localized/zh-CN/skills/fec-drawio-studio/scripts/layout-graph.mjs +107 -0
  145. package/localized/zh-CN/skills/fec-drawio-studio/scripts/png-embed-fix.mjs +26 -0
  146. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-go-packages.mjs +36 -0
  147. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-js-modules.mjs +52 -0
  148. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-classes.mjs +30 -0
  149. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-python-modules.mjs +55 -0
  150. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
  151. package/localized/zh-CN/skills/fec-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
  152. package/localized/zh-CN/skills/fec-drawio-studio/scripts/shape-query.mjs +121 -0
  153. package/localized/zh-CN/skills/fec-drawio-studio/scripts/studio-core.mjs +139 -0
  154. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/corporate.json +49 -0
  155. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/default.json +49 -0
  156. package/localized/zh-CN/skills/fec-drawio-studio/styles/built-in/handdrawn.json +49 -0
  157. package/localized/zh-CN/skills/fec-drawio-studio/styles/schema.json +112 -0
  158. package/localized/zh-CN/skills/fec-e2e-testing/SKILL.md +42 -0
  159. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-ci-reporting.md +62 -0
  160. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-special-scenarios.md +52 -0
  161. package/localized/zh-CN/skills/fec-e2e-testing/references/e2e-visual-regression.md +60 -0
  162. package/localized/zh-CN/skills/fec-e2e-testing/references/playwright-patterns.md +95 -0
  163. package/localized/zh-CN/skills/fec-form-handling/SKILL.md +76 -0
  164. package/localized/zh-CN/skills/fec-form-handling/references/advanced-form-patterns.md +101 -0
  165. package/localized/zh-CN/skills/fec-image-generation/SKILL.md +110 -0
  166. package/localized/zh-CN/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
  167. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  168. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  169. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  170. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  171. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  172. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  173. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  174. package/localized/zh-CN/skills/fec-image-generation/references/artifact-routing.md +80 -0
  175. package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +81 -0
  176. package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +243 -0
  177. package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +37 -0
  178. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  179. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  180. package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +332 -0
  181. package/localized/zh-CN/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
  182. package/localized/zh-CN/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  183. package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +462 -0
  184. package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1537 -0
  185. package/localized/zh-CN/skills/fec-implement-from-design/SKILL.md +129 -0
  186. package/localized/zh-CN/skills/fec-implement-from-design/references/design-plan-template.md +36 -0
  187. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/SKILL.md +46 -0
  188. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +110 -0
  189. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +41 -0
  190. package/localized/zh-CN/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +48 -0
  191. package/localized/zh-CN/skills/fec-legacy-web-standard/SKILL.md +35 -0
  192. package/localized/zh-CN/skills/fec-legacy-web-standard/references/legacy-patterns.md +85 -0
  193. package/localized/zh-CN/skills/fec-list-virtualization/SKILL.md +34 -0
  194. package/localized/zh-CN/skills/fec-list-virtualization/references/virtualization-patterns.md +80 -0
  195. package/localized/zh-CN/skills/fec-monorepo-project-standard/SKILL.md +142 -0
  196. package/localized/zh-CN/skills/fec-motion-interaction/SKILL.md +73 -0
  197. package/localized/zh-CN/skills/fec-motion-interaction/references/motion-patterns.md +112 -0
  198. package/localized/zh-CN/skills/fec-nextjs-project-standard/SKILL.md +123 -0
  199. package/localized/zh-CN/skills/fec-nuxt-project-standard/SKILL.md +122 -0
  200. package/localized/zh-CN/skills/fec-performance-optimization/SKILL.md +80 -0
  201. package/localized/zh-CN/skills/fec-performance-optimization/references/framework-performance-patterns.md +38 -0
  202. package/localized/zh-CN/skills/fec-performance-optimization/references/report-template.md +59 -0
  203. package/localized/zh-CN/skills/fec-pwa-implementation/SKILL.md +35 -0
  204. package/localized/zh-CN/skills/fec-pwa-implementation/references/manifest-and-icons.md +53 -0
  205. package/localized/zh-CN/skills/fec-pwa-implementation/references/service-worker-workbox.md +68 -0
  206. package/localized/zh-CN/skills/fec-react-project-standard/SKILL.md +91 -0
  207. package/localized/zh-CN/skills/fec-react-project-standard/references/react-performance-patterns.md +35 -0
  208. package/localized/zh-CN/skills/fec-react-project-standard/references/react-project-structure.md +197 -0
  209. package/localized/zh-CN/skills/fec-react-project-standard/references/react-quality-patterns.md +131 -0
  210. package/localized/zh-CN/skills/fec-react-project-standard/references/react-runtime-patterns.md +293 -0
  211. package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +54 -0
  212. package/localized/zh-CN/skills/fec-refactor-clean/references/report-template.md +42 -0
  213. package/localized/zh-CN/skills/fec-refactoring/SKILL.md +83 -0
  214. package/localized/zh-CN/skills/fec-refactoring/references/principles.md +43 -0
  215. package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
  216. package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
  217. package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +59 -0
  218. package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
  219. package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  220. package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
  221. package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  222. package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  223. package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
  224. package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
  225. package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  226. package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
  227. package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  228. package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  229. package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  230. package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
  231. package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  232. package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  233. package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  234. package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
  235. package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  236. package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
  237. package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
  238. package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
  239. package/localized/zh-CN/skills/fec-responsive-layout/SKILL.md +34 -0
  240. package/localized/zh-CN/skills/fec-responsive-layout/references/responsive-layout-patterns.md +70 -0
  241. package/localized/zh-CN/skills/fec-route-protection/SKILL.md +135 -0
  242. package/localized/zh-CN/skills/fec-security-review/SKILL.md +54 -0
  243. package/localized/zh-CN/skills/fec-security-review/references/report-template.md +37 -0
  244. package/localized/zh-CN/skills/fec-security-review/references/security-checklist.md +64 -0
  245. package/localized/zh-CN/skills/fec-source-driven-development/SKILL.md +87 -0
  246. package/localized/zh-CN/skills/fec-state-management/SKILL.md +140 -0
  247. package/localized/zh-CN/skills/fec-state-management/references/state-patterns.md +109 -0
  248. package/localized/zh-CN/skills/fec-storybook-component-doc/SKILL.md +37 -0
  249. package/localized/zh-CN/skills/fec-storybook-component-doc/references/story-patterns.md +118 -0
  250. package/localized/zh-CN/skills/fec-svg-animation/SKILL.md +148 -0
  251. package/localized/zh-CN/skills/fec-tailwind-design-system/SKILL.md +34 -0
  252. package/localized/zh-CN/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +59 -0
  253. package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +55 -0
  254. package/localized/zh-CN/skills/fec-testing-strategy/SKILL.md +45 -0
  255. package/localized/zh-CN/skills/fec-typescript-project-standard/SKILL.md +54 -0
  256. package/localized/zh-CN/skills/fec-typescript-project-standard/references/type-safety-patterns.md +102 -0
  257. package/localized/zh-CN/skills/fec-typescript-project-standard/references/type-safety.md +148 -0
  258. package/localized/zh-CN/skills/fec-ui-design/SKILL.md +108 -0
  259. package/localized/zh-CN/skills/fec-ui-design/data/product-rules.json +231 -0
  260. package/localized/zh-CN/skills/fec-ui-design/data/stack-ui-rules.json +146 -0
  261. package/localized/zh-CN/skills/fec-ui-design/data/style-archetypes.json +373 -0
  262. package/localized/zh-CN/skills/fec-ui-design/data/ux-quality-rules.json +203 -0
  263. package/localized/zh-CN/skills/fec-ui-design/references/design-intelligence.md +97 -0
  264. package/localized/zh-CN/skills/fec-ui-design/references/master-page-overrides.md +30 -0
  265. package/localized/zh-CN/skills/fec-ui-design/references/pre-delivery-checklist.md +39 -0
  266. package/localized/zh-CN/skills/fec-ui-design/scripts/design-system.mjs +648 -0
  267. package/localized/zh-CN/skills/fec-validation-fix/SKILL.md +51 -0
  268. package/localized/zh-CN/skills/fec-validation-fix/references/report-template.md +43 -0
  269. package/localized/zh-CN/skills/fec-vite-project-standard/SKILL.md +83 -0
  270. package/localized/zh-CN/skills/fec-vue3-project-standard/SKILL.md +58 -0
  271. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +162 -0
  272. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +13 -0
  273. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-project-structure.md +176 -0
  274. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +216 -0
  275. package/localized/zh-CN/skills/fec-web-video-presentation/SKILL.md +61 -0
  276. package/localized/zh-CN/skills/fec-web-video-presentation/data/starter-themes.json +59 -0
  277. package/localized/zh-CN/skills/fec-web-video-presentation/references/chapter-craft.md +37 -0
  278. package/localized/zh-CN/skills/fec-web-video-presentation/references/content-plan.md +38 -0
  279. package/localized/zh-CN/skills/fec-web-video-presentation/references/recording-and-audio.md +33 -0
  280. package/localized/zh-CN/skills/fec-web-video-presentation/references/theme-system.md +36 -0
  281. package/localized/zh-CN/skills/fec-web-video-presentation/scripts/create-video-presentation.mjs +430 -0
  282. package/localized/zh-CN/skills/fec-web-workers/SKILL.md +35 -0
  283. package/localized/zh-CN/skills/fec-web-workers/references/advanced-workers.md +54 -0
  284. package/localized/zh-CN/skills/fec-web-workers/references/basic-worker.md +67 -0
  285. package/localized/zh-CN/skills/metadata.json +2004 -0
  286. package/localized/zh-CN/skills/relations.json +1023 -0
  287. package/localized/zh-CN/templates/claude/CLAUDE.md +106 -0
  288. package/localized/zh-CN/templates/claude/settings.json +62 -0
  289. package/localized/zh-CN/templates/codex/AGENTS.md +105 -0
  290. package/localized/zh-CN/templates/codex/config.toml +32 -0
  291. package/localized/zh-CN/templates/openclaw/AGENTS.md +101 -0
  292. package/localized/zh-CN/templates/openclaw/OPENCLAW-CONFIG.md +12 -0
  293. package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +55 -0
  294. package/localized/zh-CN/templates/shared/rules/fec-api-layer.md +99 -0
  295. package/localized/zh-CN/templates/shared/rules/fec-ci-cd.md +40 -0
  296. package/localized/zh-CN/templates/shared/rules/fec-code-comments.md +33 -0
  297. package/localized/zh-CN/templates/shared/rules/fec-design-system.md +72 -0
  298. package/localized/zh-CN/templates/shared/rules/fec-error-handling.md +56 -0
  299. package/localized/zh-CN/templates/shared/rules/fec-git-conventions.md +73 -0
  300. package/localized/zh-CN/templates/shared/rules/fec-i18n.md +64 -0
  301. package/localized/zh-CN/templates/shared/rules/fec-naming-conventions.md +120 -0
  302. package/localized/zh-CN/templates/shared/rules/fec-performance.md +101 -0
  303. package/localized/zh-CN/templates/shared/rules/fec-react.md +82 -0
  304. package/localized/zh-CN/templates/shared/rules/fec-refactoring.md +47 -0
  305. package/localized/zh-CN/templates/shared/rules/fec-rendering-patterns.md +40 -0
  306. package/localized/zh-CN/templates/shared/rules/fec-responsive-design.md +50 -0
  307. package/localized/zh-CN/templates/shared/rules/fec-source-driven-development.md +31 -0
  308. package/localized/zh-CN/templates/shared/rules/fec-state-management.md +60 -0
  309. package/localized/zh-CN/templates/shared/rules/fec-testing.md +98 -0
  310. package/localized/zh-CN/templates/shared/rules/fec-typescript.md +112 -0
  311. package/localized/zh-CN/templates/shared/rules/fec-vue.md +64 -0
  312. package/localized/zh-CN/templates/shared/rules/fec-working-modes.md +50 -0
  313. package/openclaw.plugin.json +2 -3
  314. package/package.json +28 -17
  315. package/skills/TEMPLATE.md +74 -74
  316. package/skills/eval_queries.json +922 -678
  317. package/skills/fec-accessibility-check/SKILL.md +21 -21
  318. package/skills/fec-accessibility-check/references/report-template.md +12 -12
  319. package/skills/fec-accessibility-check/references/screen-reader-testing.md +24 -24
  320. package/skills/fec-alchemy/SKILL.md +50 -50
  321. package/skills/fec-alchemy/assets/absorption-plan-template.md +32 -32
  322. package/skills/fec-alchemy/assets/intake-template.md +55 -55
  323. package/skills/fec-alchemy/assets/review-checklist.md +23 -23
  324. package/skills/fec-alchemy/references/methodology.md +66 -66
  325. package/skills/fec-alchemy/references/originality-and-licensing.md +42 -42
  326. package/skills/fec-api-integration/SKILL.md +61 -61
  327. package/skills/fec-api-integration/references/integration-patterns.md +30 -30
  328. package/skills/fec-backend-requirements-handoff/SKILL.md +25 -25
  329. package/skills/fec-browser-storage/SKILL.md +16 -16
  330. package/skills/fec-browser-storage/references/storage-patterns.md +16 -16
  331. package/skills/fec-canvas-threejs/SKILL.md +21 -21
  332. package/skills/fec-canvas-threejs/references/rendering-patterns.md +10 -10
  333. package/skills/fec-canvas-threejs/references/shader-webgl-patterns.md +37 -37
  334. package/skills/fec-code-review/SKILL.md +113 -94
  335. package/skills/fec-code-review/references/report-template.md +23 -13
  336. package/skills/fec-code-smells/SKILL.md +33 -0
  337. package/skills/fec-code-smells/references/detection-guide.md +25 -0
  338. package/skills/fec-code-smells/references/smell-catalog.md +861 -0
  339. package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  340. package/skills/fec-component-testing/SKILL.md +39 -39
  341. package/skills/fec-data-fetching/SKILL.md +16 -16
  342. package/skills/fec-data-fetching/references/query-patterns.md +27 -27
  343. package/skills/fec-debug-framework/SKILL.md +95 -95
  344. package/skills/fec-debug-framework/references/report-template.md +34 -34
  345. package/skills/fec-dependency-upgrade/SKILL.md +17 -17
  346. package/skills/fec-dependency-upgrade/references/dependency-upgrade-workflow.md +31 -31
  347. package/skills/fec-doc-sync/SKILL.md +23 -23
  348. package/skills/fec-drawio-studio/SKILL.md +42 -38
  349. package/skills/fec-drawio-studio/data/THIRD_PARTY_NOTICES.md +1 -1
  350. package/skills/fec-drawio-studio/data/shape-index.json +83570 -0
  351. package/skills/fec-drawio-studio/references/diagram-patterns.md +19 -0
  352. package/skills/fec-drawio-studio/references/flowchart-quality.md +49 -0
  353. package/skills/fec-drawio-studio/references/layout-and-export.md +18 -3
  354. package/skills/fec-drawio-studio/references/xml-and-mermaid.md +5 -1
  355. package/skills/fec-drawio-studio/scripts/diagram-lint.mjs +62 -0
  356. package/skills/fec-drawio-studio/scripts/drawio-export.mjs +134 -0
  357. package/skills/fec-drawio-studio/scripts/shape-query.mjs +55 -15
  358. package/skills/fec-e2e-testing/SKILL.md +24 -24
  359. package/skills/fec-e2e-testing/references/e2e-ci-reporting.md +20 -20
  360. package/skills/fec-e2e-testing/references/e2e-special-scenarios.md +10 -10
  361. package/skills/fec-e2e-testing/references/e2e-visual-regression.md +17 -17
  362. package/skills/fec-e2e-testing/references/playwright-patterns.md +6 -6
  363. package/skills/fec-form-handling/SKILL.md +21 -21
  364. package/skills/fec-form-handling/references/advanced-form-patterns.md +41 -41
  365. package/skills/fec-image-generation/SKILL.md +84 -29
  366. package/skills/fec-image-generation/assets/interactive-diagram.html +371 -0
  367. package/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  368. package/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  369. package/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  370. package/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  371. package/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  372. package/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  373. package/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  374. package/skills/fec-image-generation/references/diagram-workflows.md +41 -3
  375. package/skills/fec-image-generation/references/html-technical-diagrams.md +243 -0
  376. package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
  377. package/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  378. package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  379. package/skills/fec-image-generation/scripts/export-diagram.mjs +332 -0
  380. package/skills/fec-image-generation/scripts/interactive-diagram-server.mjs +654 -0
  381. package/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  382. package/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
  383. package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +1537 -0
  384. package/skills/fec-implement-from-design/SKILL.md +81 -81
  385. package/skills/fec-implement-from-design/references/design-plan-template.md +16 -16
  386. package/skills/fec-legacy-to-modern-migration/SKILL.md +29 -29
  387. package/skills/fec-legacy-to-modern-migration/references/migration-execution-checklist.md +81 -81
  388. package/skills/fec-legacy-to-modern-migration/references/migration-report-template.md +37 -37
  389. package/skills/fec-legacy-to-modern-migration/references/migration-strategy-and-mapping.md +31 -31
  390. package/skills/fec-legacy-web-standard/SKILL.md +17 -17
  391. package/skills/fec-legacy-web-standard/references/legacy-patterns.md +16 -16
  392. package/skills/fec-list-virtualization/SKILL.md +16 -16
  393. package/skills/fec-list-virtualization/references/virtualization-patterns.md +31 -31
  394. package/skills/fec-monorepo-project-standard/SKILL.md +52 -52
  395. package/skills/fec-motion-interaction/SKILL.md +51 -51
  396. package/skills/fec-motion-interaction/references/motion-patterns.md +11 -11
  397. package/skills/fec-nextjs-project-standard/SKILL.md +64 -64
  398. package/skills/fec-nuxt-project-standard/SKILL.md +57 -57
  399. package/skills/fec-performance-optimization/SKILL.md +54 -54
  400. package/skills/fec-performance-optimization/references/framework-performance-patterns.md +23 -23
  401. package/skills/fec-performance-optimization/references/report-template.md +31 -31
  402. package/skills/fec-pwa-implementation/SKILL.md +17 -17
  403. package/skills/fec-pwa-implementation/references/manifest-and-icons.md +12 -12
  404. package/skills/fec-pwa-implementation/references/service-worker-workbox.md +13 -13
  405. package/skills/fec-react-project-standard/SKILL.md +72 -72
  406. package/skills/fec-react-project-standard/references/react-performance-patterns.md +28 -28
  407. package/skills/fec-react-project-standard/references/react-project-structure.md +112 -112
  408. package/skills/fec-react-project-standard/references/react-quality-patterns.md +72 -72
  409. package/skills/fec-react-project-standard/references/react-runtime-patterns.md +94 -94
  410. package/skills/fec-refactor-clean/SKILL.md +33 -30
  411. package/skills/fec-refactor-clean/references/report-template.md +23 -23
  412. package/skills/fec-refactoring/SKILL.md +83 -0
  413. package/skills/fec-refactoring/references/principles.md +60 -0
  414. package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
  415. package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
  416. package/skills/fec-refactoring/references/workflow.md +90 -0
  417. package/skills/fec-refactoring-api/SKILL.md +25 -0
  418. package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  419. package/skills/fec-refactoring-catalog/SKILL.md +28 -0
  420. package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  421. package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  422. package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
  423. package/skills/fec-refactoring-control/SKILL.md +25 -0
  424. package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  425. package/skills/fec-refactoring-data/SKILL.md +25 -0
  426. package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  427. package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  428. package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  429. package/skills/fec-refactoring-functions/SKILL.md +25 -0
  430. package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  431. package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  432. package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  433. package/skills/fec-refactoring-move-features/SKILL.md +25 -0
  434. package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  435. package/skills/fec-refactoring-validation/SKILL.md +59 -0
  436. package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
  437. package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
  438. package/skills/fec-responsive-layout/SKILL.md +17 -17
  439. package/skills/fec-responsive-layout/references/responsive-layout-patterns.md +37 -37
  440. package/skills/fec-route-protection/SKILL.md +26 -26
  441. package/skills/fec-security-review/SKILL.md +36 -20
  442. package/skills/fec-security-review/references/report-template.md +22 -12
  443. package/skills/fec-security-review/references/security-checklist.md +27 -27
  444. package/skills/fec-source-driven-development/SKILL.md +59 -59
  445. package/skills/fec-state-management/SKILL.md +34 -34
  446. package/skills/fec-state-management/references/state-patterns.md +19 -19
  447. package/skills/fec-storybook-component-doc/SKILL.md +19 -19
  448. package/skills/fec-storybook-component-doc/references/story-patterns.md +12 -12
  449. package/skills/fec-svg-animation/SKILL.md +32 -32
  450. package/skills/fec-tailwind-design-system/SKILL.md +17 -17
  451. package/skills/fec-tailwind-design-system/references/tailwind-system-patterns.md +36 -36
  452. package/skills/fec-tdd-workflow/SKILL.md +32 -28
  453. package/skills/fec-testing-strategy/SKILL.md +29 -29
  454. package/skills/fec-typescript-project-standard/SKILL.md +38 -38
  455. package/skills/fec-typescript-project-standard/references/type-safety-patterns.md +20 -20
  456. package/skills/fec-typescript-project-standard/references/type-safety.md +18 -18
  457. package/skills/fec-ui-design/SKILL.md +90 -90
  458. package/skills/fec-ui-design/references/design-intelligence.md +61 -61
  459. package/skills/fec-ui-design/references/master-page-overrides.md +15 -15
  460. package/skills/fec-ui-design/references/pre-delivery-checklist.md +38 -38
  461. package/skills/fec-validation-fix/SKILL.md +26 -26
  462. package/skills/fec-validation-fix/references/report-template.md +25 -25
  463. package/skills/fec-vite-project-standard/SKILL.md +39 -39
  464. package/skills/fec-vue3-project-standard/SKILL.md +38 -38
  465. package/skills/fec-vue3-project-standard/references/vue3-composables-routing.md +36 -36
  466. package/skills/fec-vue3-project-standard/references/vue3-performance-patterns.md +8 -8
  467. package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +112 -112
  468. package/skills/fec-vue3-project-standard/references/vue3-state-api-quality.md +74 -74
  469. package/skills/fec-web-video-presentation/SKILL.md +33 -33
  470. package/skills/fec-web-workers/SKILL.md +16 -16
  471. package/skills/fec-web-workers/references/advanced-workers.md +13 -13
  472. package/skills/fec-web-workers/references/basic-worker.md +8 -8
  473. package/skills/metadata.json +485 -116
  474. package/skills/relations.json +268 -0
  475. package/templates/claude/CLAUDE.md +60 -60
  476. package/templates/codex/AGENTS.md +76 -76
  477. package/templates/codex/config.toml +4 -4
  478. package/templates/openclaw/AGENTS.md +68 -68
  479. package/templates/openclaw/OPENCLAW-CONFIG.md +8 -8
  480. package/templates/shared/rules/fec-agent-workflow.md +41 -40
  481. package/templates/shared/rules/fec-api-layer.md +52 -52
  482. package/templates/shared/rules/fec-ci-cd.md +29 -29
  483. package/templates/shared/rules/fec-code-comments.md +22 -22
  484. package/templates/shared/rules/fec-design-system.md +53 -53
  485. package/templates/shared/rules/fec-error-handling.md +40 -40
  486. package/templates/shared/rules/fec-git-conventions.md +42 -42
  487. package/templates/shared/rules/fec-i18n.md +48 -48
  488. package/templates/shared/rules/fec-naming-conventions.md +91 -91
  489. package/templates/shared/rules/fec-performance.md +78 -78
  490. package/templates/shared/rules/fec-react.md +58 -58
  491. package/templates/shared/rules/fec-refactoring.md +34 -34
  492. package/templates/shared/rules/fec-rendering-patterns.md +36 -36
  493. package/templates/shared/rules/fec-responsive-design.md +37 -37
  494. package/templates/shared/rules/fec-source-driven-development.md +22 -22
  495. package/templates/shared/rules/fec-state-management.md +56 -56
  496. package/templates/shared/rules/fec-testing.md +64 -64
  497. package/templates/shared/rules/fec-typescript.md +75 -75
  498. package/templates/shared/rules/fec-vue.md +42 -42
  499. package/templates/shared/rules/fec-working-modes.md +34 -34
  500. package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
  501. package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
  502. package/skills/fec-drawio-studio/data/shape-index.json.gz +0 -0
@@ -0,0 +1,567 @@
1
+ # Function Refactorings
2
+
3
+ These cards transform the supplied standard catalog into concise operational guidance for frontend agents. Standard IDs/names are preserved; examples and framework adaptations are original.
4
+
5
+ ## RF-EXTRACT-FUNCTION — Extract Function
6
+
7
+ ### Intent
8
+ Move a coherent fragment into a well-named function so the caller reads in terms of intent.
9
+
10
+ ### Typical Signals
11
+ - A block has a distinct purpose that can be named; comments divide a function into concepts.
12
+
13
+ ### Avoid When
14
+ - Do not extract when the new function would merely hide a trivial expression without adding a useful name.
15
+
16
+ ### Preconditions
17
+ - Current observable behavior and affected callers are understood.
18
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
19
+
20
+ ### Mechanics
21
+ 1. Identify the coherent statements and their inputs/outputs.
22
+ 2. Create a function named for purpose rather than implementation.
23
+ 3. Move the statements and replace them with the call.
24
+ 4. Run narrow verification before any further extraction.
25
+
26
+ ### Behavior-Preservation Checkpoints
27
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
28
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
29
+
30
+ ### Related Code Smells
31
+ - `SMELL-DUPLICATED-CODE`
32
+ - `SMELL-LONG-FUNCTION`
33
+ - `SMELL-MUTABLE-DATA`
34
+ - `SMELL-DIVERGENT-CHANGE`
35
+ - `SMELL-FEATURE-ENVY`
36
+ - `SMELL-MESSAGE-CHAINS`
37
+ - `SMELL-DATA-CLASS`
38
+ - `SMELL-COMMENTS`
39
+
40
+ ### Composes Well With
41
+ - Move Function when its preconditions independently hold.
42
+ - Replace Temp with Query when its preconditions independently hold.
43
+
44
+ ### JavaScript Notes
45
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
46
+
47
+ ### TypeScript Notes
48
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
49
+
50
+ ### React Notes
51
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
52
+
53
+ ### Vue Notes
54
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
55
+
56
+ ### Frontend-Craft Adaptation
57
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
58
+
59
+ ### Example Transformation
60
+ Before: a submit handler validates recipients, normalizes payload, then sends. After: extract `validateRecipients()` while preserving the same errors and order.
61
+
62
+ ## RF-INLINE-FUNCTION — Inline Function
63
+
64
+ ### Intent
65
+ Remove a function boundary whose body is clearer than its name or whose indirection blocks better restructuring.
66
+
67
+ ### Typical Signals
68
+ - A function only delegates or its name adds no semantic value.
69
+
70
+ ### Avoid When
71
+ - Keep a small function when its name is the useful abstraction, a test seam, or a stable public contract.
72
+
73
+ ### Preconditions
74
+ - Current observable behavior and affected callers are understood.
75
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
76
+
77
+ ### Mechanics
78
+ 1. Check all callers and whether the function is overridden/exported.
79
+ 2. Replace one caller with the body and verify.
80
+ 3. Repeat for remaining safe callers.
81
+ 4. Remove the declaration only after all references are resolved.
82
+
83
+ ### Behavior-Preservation Checkpoints
84
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
85
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
86
+
87
+ ### Related Code Smells
88
+ - `SMELL-SHOTGUN-SURGERY`
89
+ - `SMELL-LAZY-ELEMENT`
90
+ - `SMELL-SPECULATIVE-GENERALITY`
91
+ - `SMELL-MIDDLE-MAN`
92
+
93
+ ### Composes Well With
94
+ - `RF-EXTRACT-FUNCTION` when its preconditions independently hold.
95
+
96
+ ### JavaScript Notes
97
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
98
+
99
+ ### TypeScript Notes
100
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
101
+
102
+ ### React Notes
103
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
104
+
105
+ ### Vue Notes
106
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
107
+
108
+ ### Frontend-Craft Adaptation
109
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
110
+
111
+ ### Example Transformation
112
+ Before: `isEmptyName(v)` only returns `!v.trim()`. After: inline the expression where that makes the surrounding guard clearer.
113
+
114
+ ## RF-EXTRACT-VARIABLE — Extract Variable
115
+
116
+ ### Intent
117
+ Name an important subexpression so a complex calculation or condition exposes its concepts.
118
+
119
+ ### Typical Signals
120
+ - A long expression contains meaningful parts that readers must mentally decode.
121
+
122
+ ### Avoid When
123
+ - Avoid names that merely restate syntax or force readers to bounce between lines.
124
+
125
+ ### Preconditions
126
+ - Current observable behavior and affected callers are understood.
127
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
128
+
129
+ ### Mechanics
130
+ 1. Select a stable subexpression.
131
+ 2. Introduce a `const` with an intent-revealing name.
132
+ 3. Replace matching occurrences where evaluation semantics stay the same.
133
+ 4. Verify evaluation count and short-circuit behavior.
134
+
135
+ ### Behavior-Preservation Checkpoints
136
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
137
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
138
+
139
+ ### Related Code Smells
140
+ - No single code smell required; select from concrete structural evidence.
141
+
142
+ ### Composes Well With
143
+ - `RF-INLINE-VARIABLE` when its preconditions independently hold.
144
+
145
+ ### JavaScript Notes
146
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
147
+
148
+ ### TypeScript Notes
149
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
150
+
151
+ ### React Notes
152
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
153
+
154
+ ### Vue Notes
155
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
156
+
157
+ ### Frontend-Craft Adaptation
158
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
159
+
160
+ ### Example Transformation
161
+ Before: a JSX condition repeats `user.permissions.includes("mail.send")`. After: introduce `canSendMail` and render from that name.
162
+
163
+ ## RF-INLINE-VARIABLE — Inline Variable
164
+
165
+ ### Intent
166
+ Remove a temporary variable that obscures a simple expression or blocks another refactoring.
167
+
168
+ ### Typical Signals
169
+ - A variable is assigned once and its name adds less clarity than the expression.
170
+
171
+ ### Avoid When
172
+ - Do not inline when it duplicates expensive/effectful evaluation or removes a useful domain name.
173
+
174
+ ### Preconditions
175
+ - Current observable behavior and affected callers are understood.
176
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
177
+
178
+ ### Mechanics
179
+ 1. Confirm the initializer is stable and side-effect semantics are unchanged.
180
+ 2. Replace reads with the initializer.
181
+ 3. Remove the declaration.
182
+ 4. Verify evaluation count and type inference.
183
+
184
+ ### Behavior-Preservation Checkpoints
185
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
186
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
187
+
188
+ ### Related Code Smells
189
+ - No single code smell required; select from concrete structural evidence.
190
+
191
+ ### Composes Well With
192
+ - `RF-EXTRACT-VARIABLE` when its preconditions independently hold.
193
+
194
+ ### JavaScript Notes
195
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
196
+
197
+ ### TypeScript Notes
198
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
199
+
200
+ ### React Notes
201
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
202
+
203
+ ### Vue Notes
204
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
205
+
206
+ ### Frontend-Craft Adaptation
207
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
208
+
209
+ ### Example Transformation
210
+ Before: `const result = draft.subject.trim(); return result;`. After: return `draft.subject.trim()` directly.
211
+
212
+ ## RF-CHANGE-FUNCTION-DECLARATION — Change Function Declaration
213
+
214
+ ### Intent
215
+ Make a function name or parameter contract better express how callers should use it.
216
+
217
+ ### Typical Signals
218
+ - A name is misleading, parameters are missing/unused, or callers need a clearer contract.
219
+
220
+ ### Avoid When
221
+ - Do not casually change exported/public signatures, framework callback contracts, or externally consumed APIs.
222
+
223
+ ### Preconditions
224
+ - Current observable behavior and affected callers are understood.
225
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
226
+
227
+ ### Mechanics
228
+ 1. Map all callers and public boundaries.
229
+ 2. Introduce the new name/signature, using a compatibility shim when needed.
230
+ 3. Migrate callers in small verified steps.
231
+ 4. Remove the old form only when compatibility requirements allow.
232
+
233
+ ### Behavior-Preservation Checkpoints
234
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
235
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
236
+
237
+ ### Related Code Smells
238
+ - `SMELL-MYSTERIOUS-NAME`
239
+ - `SMELL-SPECULATIVE-GENERALITY`
240
+ - `SMELL-ALTERNATIVE-CLASSES-DIFFERENT-INTERFACES`
241
+ - `SMELL-COMMENTS`
242
+
243
+ ### Composes Well With
244
+ - Combine only with a separately justified next transformation; no fixed sequence is required.
245
+
246
+ ### JavaScript Notes
247
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
248
+
249
+ ### TypeScript Notes
250
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
251
+
252
+ ### React Notes
253
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
254
+
255
+ ### Vue Notes
256
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
257
+
258
+ ### Frontend-Craft Adaptation
259
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
260
+
261
+ ### Example Transformation
262
+ Before: private `send(data, true)` becomes `sendUrgently(data)` or a clearer signature; public APIs keep a compatibility path when required.
263
+
264
+ ## RF-ENCAPSULATE-VARIABLE — Encapsulate Variable
265
+
266
+ ### Intent
267
+ Route access to a variable through an explicit boundary so reads and writes can be controlled.
268
+
269
+ ### Typical Signals
270
+ - A shared variable can be mutated from many locations or representation changes are difficult.
271
+
272
+ ### Avoid When
273
+ - Do not add ceremonial getters around genuinely local constants.
274
+
275
+ ### Preconditions
276
+ - Current observable behavior and affected callers are understood.
277
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
278
+
279
+ ### Mechanics
280
+ 1. Create a controlled read/write API around the variable.
281
+ 2. Migrate one access path at a time.
282
+ 3. Restrict direct access after callers are migrated.
283
+ 4. Then change representation or ownership behind the seam if useful.
284
+
285
+ ### Behavior-Preservation Checkpoints
286
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
287
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
288
+
289
+ ### Related Code Smells
290
+ - `SMELL-GLOBAL-DATA`
291
+ - `SMELL-MUTABLE-DATA`
292
+
293
+ ### Composes Well With
294
+ - `RF-RENAME-VARIABLE` when its preconditions independently hold.
295
+ - Move Function when its preconditions independently hold.
296
+
297
+ ### JavaScript Notes
298
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
299
+
300
+ ### TypeScript Notes
301
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
302
+
303
+ ### React Notes
304
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
305
+
306
+ ### Vue Notes
307
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
308
+
309
+ ### Frontend-Craft Adaptation
310
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
311
+
312
+ ### Example Transformation
313
+ Before: modules assign `currentTenant` directly. After: expose `getCurrentTenant()` / `setCurrentTenant()` or a store action boundary.
314
+
315
+ ## RF-RENAME-VARIABLE — Rename Variable
316
+
317
+ ### Intent
318
+ Give a variable a name that communicates its role and domain meaning.
319
+
320
+ ### Typical Signals
321
+ - Readers must infer meaning from context; the name is generic, stale, or misleading.
322
+
323
+ ### Avoid When
324
+ - Do not churn stable domain vocabulary without evidence of confusion.
325
+
326
+ ### Preconditions
327
+ - Current observable behavior and affected callers are understood.
328
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
329
+
330
+ ### Mechanics
331
+ 1. Choose the domain-accurate name.
332
+ 2. Rename the declaration and all statically verified references.
333
+ 3. Check string-based/dynamic references where relevant.
334
+ 4. Run type/lint/tests for the affected scope.
335
+
336
+ ### Behavior-Preservation Checkpoints
337
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
338
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
339
+
340
+ ### Related Code Smells
341
+ - `SMELL-MYSTERIOUS-NAME`
342
+
343
+ ### Composes Well With
344
+ - Combine only with a separately justified next transformation; no fixed sequence is required.
345
+
346
+ ### JavaScript Notes
347
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
348
+
349
+ ### TypeScript Notes
350
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
351
+
352
+ ### React Notes
353
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
354
+
355
+ ### Vue Notes
356
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
357
+
358
+ ### Frontend-Craft Adaptation
359
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
360
+
361
+ ### Example Transformation
362
+ Before: `let d` in a date-range calculation becomes `billingPeriodEnd` when that is the actual meaning.
363
+
364
+ ## RF-INTRODUCE-PARAMETER-OBJECT — Introduce Parameter Object
365
+
366
+ ### Intent
367
+ Group parameters that form one concept into a named object contract.
368
+
369
+ ### Typical Signals
370
+ - Several values repeatedly travel together or their relationships are hidden by positional arguments.
371
+
372
+ ### Avoid When
373
+ - Avoid a bag-of-options object when values are unrelated or the object only makes a one-off call less explicit.
374
+
375
+ ### Preconditions
376
+ - Current observable behavior and affected callers are understood.
377
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
378
+
379
+ ### Mechanics
380
+ 1. Identify the stable parameter cluster.
381
+ 2. Define an object/options shape with meaningful field names.
382
+ 3. Add the object parameter and migrate callers.
383
+ 4. Move behavior into the object only when invariants or domain behavior justify it.
384
+
385
+ ### Behavior-Preservation Checkpoints
386
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
387
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
388
+
389
+ ### Related Code Smells
390
+ - `SMELL-LONG-FUNCTION`
391
+ - `SMELL-LONG-PARAMETER-LIST`
392
+ - `SMELL-DATA-CLUMPS`
393
+ - `SMELL-PRIMITIVE-OBSESSION`
394
+
395
+ ### Composes Well With
396
+ - Combine only with a separately justified next transformation; no fixed sequence is required.
397
+
398
+ ### JavaScript Notes
399
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
400
+
401
+ ### TypeScript Notes
402
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
403
+
404
+ ### React Notes
405
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
406
+
407
+ ### Vue Notes
408
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
409
+
410
+ ### Frontend-Craft Adaptation
411
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
412
+
413
+ ### Example Transformation
414
+ Before: `loadMessages(folderId, page, size, sort)` becomes `loadMessages({ folderId, page, size, sort })` with a typed request shape.
415
+
416
+ ## RF-COMBINE-FUNCTIONS-INTO-CLASS — Combine Functions into Class
417
+
418
+ ### Intent
419
+ Place functions that operate on shared data behind one cohesive context so their relationship is explicit.
420
+
421
+ ### Typical Signals
422
+ - Several functions repeatedly accept the same data and calculate related results.
423
+
424
+ ### Avoid When
425
+ - Do not force a class when a module, closure, hook, composable, or service provides the clearer frontend abstraction.
426
+
427
+ ### Preconditions
428
+ - Current observable behavior and affected callers are understood.
429
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
430
+
431
+ ### Mechanics
432
+ 1. Identify the shared data/context and related functions.
433
+ 2. Create the smallest cohesive owner for that context.
434
+ 3. Move one function at a time while preserving outputs.
435
+ 4. Choose class/module/hook/composable/service based on existing architecture.
436
+
437
+ ### Behavior-Preservation Checkpoints
438
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
439
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
440
+
441
+ ### Related Code Smells
442
+ - `SMELL-LONG-PARAMETER-LIST`
443
+ - `SMELL-MUTABLE-DATA`
444
+ - `SMELL-SHOTGUN-SURGERY`
445
+
446
+ ### Composes Well With
447
+ - Combine only with a separately justified next transformation; no fixed sequence is required.
448
+
449
+ ### JavaScript Notes
450
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
451
+
452
+ ### TypeScript Notes
453
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
454
+
455
+ ### React Notes
456
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
457
+
458
+ ### Vue Notes
459
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
460
+
461
+ ### Frontend-Craft Adaptation
462
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
463
+
464
+ ### Example Transformation
465
+ Before: several pricing helpers all take the same quote. After: expose a cohesive pricing module or `useQuotePricing()` rather than mechanically introducing a class.
466
+
467
+ ## RF-COMBINE-FUNCTIONS-INTO-TRANSFORM — Combine Functions into Transform
468
+
469
+ ### Intent
470
+ Collect related derived calculations into a transform that returns the enriched result together.
471
+
472
+ ### Typical Signals
473
+ - Many functions derive values from the same immutable input and callers need several of them.
474
+
475
+ ### Avoid When
476
+ - Avoid when derivations are effectful, expensive but rarely used, or require independent lifecycle timing.
477
+
478
+ ### Preconditions
479
+ - Current observable behavior and affected callers are understood.
480
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
481
+
482
+ ### Mechanics
483
+ 1. Define the input and derived output fields.
484
+ 2. Create a pure transform that copies/enriches rather than mutating the input.
485
+ 3. Move one calculation at a time into the transform.
486
+ 4. Verify derived values and object identity expectations.
487
+
488
+ ### Behavior-Preservation Checkpoints
489
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
490
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
491
+
492
+ ### Related Code Smells
493
+ - `SMELL-MUTABLE-DATA`
494
+ - `SMELL-SHOTGUN-SURGERY`
495
+
496
+ ### Composes Well With
497
+ - Combine only with a separately justified next transformation; no fixed sequence is required.
498
+
499
+ ### JavaScript Notes
500
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
501
+
502
+ ### TypeScript Notes
503
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
504
+
505
+ ### React Notes
506
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
507
+
508
+ ### Vue Notes
509
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
510
+
511
+ ### Frontend-Craft Adaptation
512
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
513
+
514
+ ### Example Transformation
515
+ Before: multiple selectors derive displayName, initials, and domain from one contact DTO. After: `toContactViewModel(dto)` returns the enriched view model.
516
+
517
+ ## RF-SPLIT-PHASE — Split Phase
518
+
519
+ ### Intent
520
+ Separate sequential concerns so each phase has a clear input/output boundary.
521
+
522
+ ### Typical Signals
523
+ - One routine performs conceptually distinct stages whose intermediate data can be named.
524
+
525
+ ### Avoid When
526
+ - Avoid splitting tightly interleaved work when the intermediate contract would be more complex than the original.
527
+
528
+ ### Preconditions
529
+ - Current observable behavior and affected callers are understood.
530
+ - The target scope is inside a declared diff budget and can be verified after this one primary transformation.
531
+
532
+ ### Mechanics
533
+ 1. Identify the phase boundary and intermediate data.
534
+ 2. Extract the later phase first behind an explicit input.
535
+ 3. Extract/normalize the earlier phase.
536
+ 4. Verify phase ordering, errors, and side effects.
537
+
538
+ ### Behavior-Preservation Checkpoints
539
+ - Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
540
+ - For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
541
+
542
+ ### Related Code Smells
543
+ - `SMELL-DIVERGENT-CHANGE`
544
+ - `SMELL-SHOTGUN-SURGERY`
545
+ - `SMELL-DATA-CLASS`
546
+
547
+ ### Composes Well With
548
+ - `RF-EXTRACT-FUNCTION` when its preconditions independently hold.
549
+ - Move Function when its preconditions independently hold.
550
+
551
+ ### JavaScript Notes
552
+ - Preserve JavaScript evaluation order, closures, `this`, default parameters, rest/spread, and side effects.
553
+
554
+ ### TypeScript Notes
555
+ - Use typed parameter objects and keep inference/public signatures stable; do not silence errors with casts.
556
+
557
+ ### React Notes
558
+ - For React, extracted helpers must not violate Hook rules or capture stale values; keep event/effect ordering stable.
559
+
560
+ ### Vue Notes
561
+ - For Vue, preserve `ref`/`reactive` unwrapping, computed dependencies, and composable lifecycle scope.
562
+
563
+ ### Frontend-Craft Adaptation
564
+ - Prefer helpers, handlers, modules, hooks/composables, or services when they express the same intent more naturally than classes.
565
+
566
+ ### Example Transformation
567
+ Before: one submit function parses, normalizes, validates, and sends. After: `parse → normalize → validate → submit`, preserving error order.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: fec-refactoring-inheritance
3
+ description: Use when behavior-preserving frontend refactoring focuses on legacy OO hierarchies, subtype responsibilities, superclass extraction/collapse, or delegation, and the selected technique needs family-specific mechanics, risks, and JavaScript/TypeScript/React/Vue adaptation.
4
+ ---
5
+
6
+ # Inheritance Refactorings
7
+
8
+ ## Overview
9
+ Use this family after evidence identifies a fitting structural transformation. Apply one primary technique at a time and verify immediately.
10
+
11
+ ## Procedure
12
+ 1. Confirm the selected technique and its preconditions in [Inheritance Refactorings](references/inheritance-refactorings.md).
13
+ 2. Record affected behavior and a diff budget.
14
+ 3. Apply only the selected technique's smallest viable step.
15
+ 4. Verify the step before composing another transformation.
16
+ 5. Stop and reassess when public contracts, lifecycle, state identity, or actual scope exceed expectations.
17
+
18
+ ## Quick Reference
19
+ The family reference contains 11 canonical techniques with intent, signals, avoid conditions, mechanics, preservation checkpoints, smell links, composition hints, JavaScript/TypeScript notes, React/Vue notes, adaptation guidance, and original frontend examples.
20
+
21
+ ## Common Mistakes
22
+ - Choosing a technique by name without checking its preconditions.
23
+ - Combining several structural intentions in one diff.
24
+ - Assuming a classical class-based form is mandatory in modern frontend code.
25
+ - Treating passing tests as proof when the relevant behavior is not covered.