@bovinphang/frontend-craft 2.8.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 (195) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +378 -339
  4. package/CHANGELOG.zh-CN.md +377 -338
  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 -320
  9. package/README.openclaw.zh-CN.md +359 -320
  10. package/README.zh-CN.md +545 -493
  11. package/agents/fec-code-reviewer.md +24 -3
  12. package/agents/fec-debugger.md +1 -1
  13. package/agents/fec-doc-updater.md +1 -1
  14. package/agents/fec-e2e-runner.md +1 -1
  15. package/agents/fec-figma-implementer.md +1 -1
  16. package/agents/fec-performance-optimizer.md +1 -1
  17. package/agents/fec-refactor-cleaner.md +4 -1
  18. package/agents/fec-refactoring-expert.md +81 -0
  19. package/agents/fec-security-reviewer.md +17 -1
  20. package/agents/fec-test-planner.md +1 -1
  21. package/agents/fec-typescript-reviewer.md +24 -8
  22. package/agents/fec-ui-checker.md +11 -11
  23. package/commands/fec-debug.md +1 -1
  24. package/commands/fec-refactor-plan.md +17 -0
  25. package/commands/fec-refactor.md +18 -0
  26. package/commands/fec-review.md +40 -10
  27. package/commands/fec-scaffold.md +1 -1
  28. package/commands/fec-smell.md +17 -0
  29. package/commands/fec-tdd.md +6 -2
  30. package/dist/bin/frontend-craft.js +190 -38
  31. package/dist/hooks/fec-run-tests.js +5 -1
  32. package/dist/hooks/fec-session-start.js +1 -1
  33. package/docs/example-prompts.md +157 -140
  34. package/docs/ja-JP/README.md +534 -493
  35. package/docs/ko-KR/README.md +534 -493
  36. package/docs/project-structure.md +151 -131
  37. package/docs/refactoring/README.md +50 -0
  38. package/docs/refactoring/catalog.md +105 -0
  39. package/docs/refactoring/smell-refactoring-matrix.md +41 -0
  40. package/docs/review-and-diagram-workflows.md +39 -0
  41. package/docs/runtimes/antigravity.md +18 -10
  42. package/docs/runtimes/augment.md +18 -10
  43. package/docs/runtimes/claude.md +191 -177
  44. package/docs/runtimes/claude.zh-CN.md +189 -175
  45. package/docs/runtimes/cline.md +18 -10
  46. package/docs/runtimes/codebuddy.md +18 -10
  47. package/docs/runtimes/codex.md +18 -10
  48. package/docs/runtimes/compatibility.md +27 -0
  49. package/docs/runtimes/copilot.md +18 -10
  50. package/docs/runtimes/cursor.md +18 -10
  51. package/docs/runtimes/gemini.md +18 -10
  52. package/docs/runtimes/kilo.md +18 -10
  53. package/docs/runtimes/openclaw.md +18 -10
  54. package/docs/runtimes/opencode.md +18 -10
  55. package/docs/runtimes/qoder.md +18 -19
  56. package/docs/runtimes/trae.md +18 -10
  57. package/docs/runtimes/windsurf.md +18 -10
  58. package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
  59. package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
  60. package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
  61. package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
  62. package/docs/zh-CN/example-prompts.md +157 -140
  63. package/docs/zh-CN/project-structure.md +148 -128
  64. package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
  65. package/docs/zh-TW/README.md +534 -493
  66. package/localized/zh-CN/agents/fec-code-reviewer.md +22 -3
  67. package/localized/zh-CN/agents/fec-refactor-cleaner.md +3 -0
  68. package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
  69. package/localized/zh-CN/agents/fec-security-reviewer.md +16 -0
  70. package/localized/zh-CN/agents/fec-typescript-reviewer.md +23 -7
  71. package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
  72. package/localized/zh-CN/commands/fec-refactor.md +14 -0
  73. package/localized/zh-CN/commands/fec-review.md +40 -9
  74. package/localized/zh-CN/commands/fec-smell.md +13 -0
  75. package/localized/zh-CN/commands/fec-tdd.md +4 -0
  76. package/localized/zh-CN/skills/eval_queries.json +244 -0
  77. package/localized/zh-CN/skills/fec-code-review/SKILL.md +20 -1
  78. package/localized/zh-CN/skills/fec-code-review/references/report-template.md +11 -1
  79. package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
  80. package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
  81. package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
  82. package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  83. package/localized/zh-CN/skills/fec-image-generation/SKILL.md +31 -1
  84. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  85. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  86. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  87. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  88. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  89. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  90. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  91. package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +10 -3
  92. package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
  93. package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
  94. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  95. package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  96. package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
  97. package/localized/zh-CN/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  98. package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
  99. package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
  100. package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +3 -0
  101. package/localized/zh-CN/skills/fec-refactoring/SKILL.md +83 -0
  102. package/localized/zh-CN/skills/fec-refactoring/references/principles.md +43 -0
  103. package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
  104. package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
  105. package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +59 -0
  106. package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
  107. package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  108. package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
  109. package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  110. package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  111. package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
  112. package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
  113. package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  114. package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
  115. package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  116. package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  117. package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  118. package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
  119. package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  120. package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  121. package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  122. package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
  123. package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  124. package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
  125. package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
  126. package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
  127. package/localized/zh-CN/skills/fec-security-review/SKILL.md +16 -0
  128. package/localized/zh-CN/skills/fec-security-review/references/report-template.md +10 -0
  129. package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +3 -0
  130. package/localized/zh-CN/skills/metadata.json +408 -50
  131. package/localized/zh-CN/skills/relations.json +271 -3
  132. package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +1 -0
  133. package/openclaw.plugin.json +2 -3
  134. package/package.json +27 -17
  135. package/skills/eval_queries.json +244 -0
  136. package/skills/fec-code-review/SKILL.md +20 -1
  137. package/skills/fec-code-review/references/report-template.md +11 -1
  138. package/skills/fec-code-smells/SKILL.md +33 -0
  139. package/skills/fec-code-smells/references/detection-guide.md +25 -0
  140. package/skills/fec-code-smells/references/smell-catalog.md +861 -0
  141. package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
  142. package/skills/fec-data-fetching/SKILL.md +1 -1
  143. package/skills/fec-image-generation/SKILL.md +31 -1
  144. package/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
  145. package/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
  146. package/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
  147. package/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
  148. package/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
  149. package/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
  150. package/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
  151. package/skills/fec-image-generation/references/diagram-workflows.md +10 -3
  152. package/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
  153. package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
  154. package/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
  155. package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
  156. package/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
  157. package/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
  158. package/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
  159. package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
  160. package/skills/fec-legacy-web-standard/SKILL.md +1 -1
  161. package/skills/fec-refactor-clean/SKILL.md +3 -0
  162. package/skills/fec-refactoring/SKILL.md +83 -0
  163. package/skills/fec-refactoring/references/principles.md +60 -0
  164. package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
  165. package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
  166. package/skills/fec-refactoring/references/workflow.md +90 -0
  167. package/skills/fec-refactoring-api/SKILL.md +25 -0
  168. package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
  169. package/skills/fec-refactoring-catalog/SKILL.md +28 -0
  170. package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
  171. package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
  172. package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
  173. package/skills/fec-refactoring-control/SKILL.md +25 -0
  174. package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
  175. package/skills/fec-refactoring-data/SKILL.md +25 -0
  176. package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
  177. package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
  178. package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
  179. package/skills/fec-refactoring-functions/SKILL.md +25 -0
  180. package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
  181. package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
  182. package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
  183. package/skills/fec-refactoring-move-features/SKILL.md +25 -0
  184. package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
  185. package/skills/fec-refactoring-validation/SKILL.md +59 -0
  186. package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
  187. package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
  188. package/skills/fec-security-review/SKILL.md +16 -0
  189. package/skills/fec-security-review/references/report-template.md +10 -0
  190. package/skills/fec-tdd-workflow/SKILL.md +5 -1
  191. package/skills/metadata.json +434 -71
  192. package/skills/relations.json +264 -0
  193. package/templates/shared/rules/fec-agent-workflow.md +1 -0
  194. package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
  195. package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: fec-refactoring
3
+ description: 用于在不改变可观察行为的前提下重组既有前端代码,包括职责提炼、模块搬移、条件逻辑简化、API 整理和数据组织。不要用于新增功能、改变行为的缺陷修复、依赖或框架迁移,以及已经证实的死代码清理。
4
+ ---
5
+
6
+ # 技能:保持行为的重构
7
+
8
+ ## 用途
9
+
10
+ 以小步、可验证、可回滚的方式重组仍在使用的前端代码,同时保持用户、调用方、测试、路由和集成能够观察到的行为不变。
11
+
12
+ ## 核心契约
13
+
14
+ 每次执行都遵守以下规则:
15
+
16
+ 1. **行为保持**:纯重构只改变内部结构,不主动改变可观察行为。
17
+ 2. **修改前基线**:编辑前先记录当前可用验证结果。
18
+ 3. **一次只做一个主要重构**:每一步只有一个主要结构意图。
19
+ 4. **每一步都验证**:完成一步后立即运行最小但有效的验证。
20
+ 5. **先回滚当前步骤,再讨论修复**:若当前步骤引入回归,先恢复到上一步,再缩小或重排方案。
21
+ 6. **重构与功能修改分离**:新增行为或改变行为的缺陷修复不属于纯重构。
22
+ 7. **优先最小安全重构**:有局部、可逆方案时,不直接扩大为架构重写。
23
+ 8. **遵守差异预算**:实际修改范围明显超出计划时必须停止并重新评估。
24
+
25
+ 纯重构采用 **GREEN → REFACTOR → GREEN**,不为了形式上的 TDD 人为制造失败行为测试。
26
+
27
+ ## 流程
28
+
29
+ 1. 分类请求,确认目标是结构调整且要求行为保持。
30
+ 2. 读取项目配置、受影响模块、公开导出、路由、状态边界、测试和当前 diff。
31
+ 3. 记录相关可观察契约:输入、输出、异常、副作用、UI 状态、事件、网络请求、状态迁移、路由和公开 API。
32
+ 4. 建立修改前基线;既有失败要单独记录,不能算到后续重构头上。
33
+ 5. 基于证据诊断结构问题,并检查可能的误判。
34
+ 6. 建立安全网:优先复用已有测试,风险较高且覆盖不足时再补当前行为的特征测试。
35
+ 7. 把方案拆成有顺序的小步,每步记录手法、原因、前置条件、风险、差异预算、验证和回滚边界。
36
+ 8. 每次只执行一个主要结构变换,不夹带无关清理、格式化和重新设计。
37
+ 9. 立即验证,并比较实际修改范围与差异预算。
38
+ 10. 若出现新回归,先回滚当前步骤,确认基线恢复,再缩小或调整顺序。
39
+ 11. 最后按需要运行类型检查、测试、构建、E2E、无障碍或其他专项门禁。
40
+ 12. 根据证据给出 PASS、PARTIAL 或 NOT PROVEN,不夸大验证强度。
41
+
42
+ ## 风险分级
43
+
44
+ | 风险 | 常见范围 | 默认动作 |
45
+ | --- | --- | --- |
46
+ | `SAFE` | 局部私有代码、契约稳定、容易回滚 | 可执行,并逐步验证 |
47
+ | `CAUTION` | 跨模块、共享状态、导入、Hook/Composable、生命周期 | 安全证据充分时执行,否则先规划 |
48
+ | `DANGER` | 公开 API、路由、持久化、网络契约、认证、SSR/水合、大范围状态或继承改造 | 默认先规划并停止等待明确授权 |
49
+
50
+ 风险由上下文决定,不能只凭手法名称判定安全级别。
51
+
52
+ ## 差异预算
53
+
54
+ 每个可执行步骤先写清:
55
+
56
+ ```text
57
+ 预期文件数:N
58
+ 预期函数/组件数:N
59
+ 预期公开 API 变化:0
60
+ 预期行为变化:0
61
+ ```
62
+
63
+ 如果实际 diff 明显超出预算,停止并重新评估,不能静默扩大成重新设计。
64
+
65
+ ## 参考资料
66
+
67
+ - 安全规则、证据模型和风险语言见 [principles.md](references/principles.md)。
68
+ - 状态机、基线、回滚和报告契约见 [workflow.md](references/workflow.md)。
69
+ - 判断何时重构或何时延后见 [when-to-refactor.md](references/when-to-refactor.md)。
70
+ - 区分重构、功能、缺陷、清理、迁移和评审见 [refactoring-vs-feature-change.md](references/refactoring-vs-feature-change.md)。
71
+
72
+ ## 约束
73
+
74
+ - 不修改测试来接受被重构意外改变的业务行为。
75
+ - 未有充分证据时,不把认证、权限、路由、持久化、协议或公开包契约变化标为 `SAFE`。
76
+ - 当前步骤出现新失败后,不继续叠加结构修改。
77
+ - 项目没有测试框架时,不自动安装新框架。
78
+ - 行数、复杂度、注释、一个 switch 或链式调用都不能单独证明存在坏味道。
79
+ - 默认不执行远程 Git 写入。
80
+
81
+ ## 预期输出
82
+
83
+ 输出带证据、风险、差异预算、逐步验证和必要回滚记录的重构方案或实现,并给出 PASS、PARTIAL 或 NOT PROVEN 的行为保持结论。
@@ -0,0 +1,43 @@
1
+ # 重构原则
2
+
3
+ ## 定义
4
+
5
+ 重构是在不主动改变可观察行为的前提下调整既有代码内部结构,目标是让后续修改更容易理解、定位、验证和回滚,而不是把新功能偷偷塞进结构修改。
6
+
7
+ ## 八条硬规则
8
+
9
+ 1. **行为保持**:开始重要修改前先明确相关可观察契约。
10
+ 2. **修改前基线**:把既有失败与当前步骤新引入的回归区分开。
11
+ 3. **一次一个主要重构**:每一步只承担一个结构意图。
12
+ 4. **每一步都验证**:完成一步立即运行最小有效反馈。
13
+ 5. **先回滚再修复**:当前步骤导致新回归时,先恢复,再缩小或重排。
14
+ 6. **功能修改分离**:新增结果、改变规则、改变错误行为都不属于纯重构。
15
+ 7. **最小安全重构优先**:优先局部、可逆、证据充分的变换。
16
+ 8. **遵守差异预算**:修改范围膨胀是停止信号,不是继续扩张的理由。
17
+
18
+ ## 可观察行为
19
+
20
+ 按实际范围检查:
21
+
22
+ - 返回值、异常和错误映射;
23
+ - 副作用及有业务意义的顺序;
24
+ - 请求、载荷、重试、取消和认证行为;
25
+ - 状态迁移、持久化、缓存身份和 memoization 依赖的对象身份;
26
+ - DOM、加载/错误/空状态、焦点、键盘和事件;
27
+ - props、emits、slots、Hook/Composable 契约、包导出、路由和 URL。
28
+
29
+ ## 证据模型
30
+
31
+ 优先使用调用点、依赖方向、数据所有权、变更位置、已有测试、公开契约、动态注册点、路由、i18n、Storybook、样式动态引用以及框架生命周期语义。度量值只负责提示“去哪里看”,不能单独下诊断结论。
32
+
33
+ ## 风险模型
34
+
35
+ - **SAFE**:局部私有范围、契约稳定、容易回滚并有对应验证。
36
+ - **CAUTION**:跨文件/组件、共享辅助模块、状态所有权、生命周期或动态引用,或者行为覆盖不完整。
37
+ - **DANGER**:公开 API、路由、存储结构、后端契约、认证权限、SSR/水合、关键计算、大范围继承或状态架构替换。
38
+
39
+ 同一手法在不同上下文风险可能完全不同,例如局部变量改名可以很安全,而序列化字段改名可能影响外部契约。
40
+
41
+ ## 风险修改前的特征测试
42
+
43
+ 重要行为覆盖不足时,可以先补描述当前实际行为的特征测试。它第一次运行可以直接为绿,因为目的只是锁定既有行为,不是创造新需求。
@@ -0,0 +1,25 @@
1
+ # 重构与相邻工作的边界
2
+
3
+ ## 纯重构
4
+
5
+ 目标是改善职责、命名、封装、位置、条件逻辑、API 形状或数据组织,并明确要求不改变调用方/用户可观察行为时,属于纯重构。验证模型是 **GREEN → REFACTOR → GREEN**。
6
+
7
+ ## 功能或改变行为的缺陷修复
8
+
9
+ 新增能力、改变业务规则、改变接受输入、改变可见输出、改变错误结果或主动改变副作用,都不是纯重构。应先用失败行为测试表达新期望,再实现。
10
+
11
+ ## 调试
12
+
13
+ 故障原因未知时,应先找到根因。后续修复可能包含重构,但不能用“重构一下”代替故障证据。
14
+
15
+ ## 死代码清理
16
+
17
+ 已证实未使用的代码、导出、依赖、路由等需要专门检查动态 import、配置、模板、Storybook、CSS、i18n 和生成内容,不能与活代码的大范围结构改写混做。
18
+
19
+ ## 迁移
20
+
21
+ 框架、依赖、路由、构建系统、状态库或整体架构迁移会主动跨越兼容边界,即使设计因此更好,也应按迁移规划处理。
22
+
23
+ ## 普通评审
24
+
25
+ 合并前评审可以指出结构问题,但默认先输出报告;若要诊断或执行重构,应作为明确的后续动作,而不是评审过程中静默改写源码。
@@ -0,0 +1,17 @@
1
+ # 何时进行重构
2
+
3
+ ## 现在就重构
4
+
5
+ 当结构问题直接增加当前工作的修改成本或风险,并且能够保持行为稳定时值得立即处理,例如职责纠缠让一个小改动波及多处、同一概念重复编辑且已开始漂移、状态/数据所有权混乱、测试难以隔离目标行为等。
6
+
7
+ ## 记录后延后
8
+
9
+ 坏味道真实存在但与当前目标无关、安全网不足以支撑高风险变换、兼容工作量明显超过即时收益时,记录证据和候选顺序,不进行顺手的大范围重新设计。
10
+
11
+ ## 停止重构
12
+
13
+ 出现以下情况应停止:结构目标已经达成;下一步会改变可观察行为;下一步跨越公开契约但没有兼容方案;差异预算持续扩大;验证无法区分基线与新回归;剩余动机只来自个人审美而非修改成本或正确性风险。
14
+
15
+ ## 实用判断
16
+
17
+ 好的重构应让下一个真实需求更容易理解、局部化、验证或回滚。如果没有改善这些属性,应要求更强证据再继续。
@@ -0,0 +1,59 @@
1
+ # 重构执行工作流
2
+
3
+ ## 状态机
4
+
5
+ ```text
6
+ 分类请求
7
+ → 发现上下文
8
+ → 建立基线
9
+ → 诊断结构证据
10
+ → 建立安全网
11
+ → 构建有序计划
12
+ → 风险检查
13
+ → 执行一个重构步骤
14
+ → 立即验证
15
+ 通过:检查 diff 后进入下一步
16
+ 失败:回滚当前步骤,确认基线,再缩小或重排
17
+ → 最终验证
18
+ → 报告
19
+ ```
20
+
21
+ ## 上下文发现
22
+
23
+ 按需读取 `package.json`、工作区清单、TypeScript/ESLint 配置、测试脚本、受影响模块和调用点、barrel 导出、路由和注册点、store/持久化边界、生命周期敏感逻辑、异步副作用以及当前 Git diff。
24
+
25
+ ## 基线处理
26
+
27
+ 基线为绿时,当前步骤之后新出现的相关失败应优先视为该步骤可能引入的回归。基线已经为红时,要记录精确失败,不能没有比较证据就把后续失败归因于重构;安全证明不足时不要继续高风险变换。
28
+
29
+ ## 单步计划契约
30
+
31
+ ```text
32
+ 目标:
33
+ 手法:
34
+ 意图:
35
+ 前置条件:
36
+ 风险:SAFE | CAUTION | DANGER
37
+ 预期文件数:
38
+ 预期函数/组件数:
39
+ 预期公开 API 变化:0
40
+ 预期行为变化:0
41
+ 验证:
42
+ 回滚边界:
43
+ ```
44
+
45
+ ## 单步失败协议
46
+
47
+ 修改前为绿、当前步骤后变红时:停止;只回滚当前步骤;重跑相关检查确认基线恢复;判断失败源于行为、身份、生命周期、顺序、类型还是依赖假设;缩小步骤或增加前置重构;证据恢复后才能重试。
48
+
49
+ 不要为了“修绿”把改动扩散到不相关模块。
50
+
51
+ ## 最终验证
52
+
53
+ 按由窄到宽的顺序运行:最近的语法/类型检查、目标单元或组件测试、受影响集成测试、lint + 全量 typecheck、更广测试、构建,以及实际受影响时的 SSR、E2E、视觉、无障碍、性能等门禁。
54
+
55
+ ## 证明结论
56
+
57
+ - **PASS**:相关可观察契约覆盖充分,要求的检查全部通过。
58
+ - **PARTIAL**:已执行检查通过,但重要行为覆盖仍不完整。
59
+ - **NOT PROVEN**:依赖、环境、基线或安全网不足,无法可信证明行为保持。
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: fec-refactoring-api
3
+ description: 保持行为的前端重构主要涉及API 类重构,已经选定或正在评估对应手法,需要查询该 family 的操作步骤、风险与 JavaScript/TypeScript/React/Vue 适配时。
4
+ ---
5
+
6
+ # API 类重构
7
+
8
+ ## 概览
9
+ 只有在证据和前置条件支持时才使用对应手法。一次只执行一个主要结构变换,并在完成后立即验证。
10
+
11
+ ## 执行流程
12
+ 1. 在[API 类重构详细卡片](references/api-refactorings.md)确认手法和前置条件。
13
+ 2. 记录受影响行为与差异预算。
14
+ 3. 只执行该手法最小可行的一步。
15
+ 4. 在组合下一手法之前验证当前步骤。
16
+ 5. 公共契约、生命周期、状态身份或实际范围超出预期时停止并重新评估。
17
+
18
+ ## 快速索引
19
+ 详细 Reference 包含本 family 的 10 个标准手法,每项均包括意图、信号、不适用条件、操作步骤、行为保持检查、相关坏味道、组合关系、JS/TS/React/Vue 注意事项、前端适配和原创示例。
20
+
21
+ ## 常见错误
22
+ - 只根据手法名称套用,不核对前置条件。
23
+ - 一个 diff 同时混入多个结构目标。
24
+ - 把经典 class 形式机械套进现代 React/Vue。
25
+ - 相关行为没有覆盖时,仅凭“测试通过”就声称行为已得到证明。