@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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +378 -339
- package/CHANGELOG.zh-CN.md +377 -338
- package/CONTRIBUTING.md +371 -361
- package/CONTRIBUTING.zh-CN.md +371 -361
- package/README.md +545 -493
- package/README.openclaw.md +359 -320
- package/README.openclaw.zh-CN.md +359 -320
- package/README.zh-CN.md +545 -493
- package/agents/fec-code-reviewer.md +24 -3
- package/agents/fec-debugger.md +1 -1
- package/agents/fec-doc-updater.md +1 -1
- package/agents/fec-e2e-runner.md +1 -1
- package/agents/fec-figma-implementer.md +1 -1
- package/agents/fec-performance-optimizer.md +1 -1
- package/agents/fec-refactor-cleaner.md +4 -1
- package/agents/fec-refactoring-expert.md +81 -0
- package/agents/fec-security-reviewer.md +17 -1
- package/agents/fec-test-planner.md +1 -1
- package/agents/fec-typescript-reviewer.md +24 -8
- package/agents/fec-ui-checker.md +11 -11
- package/commands/fec-debug.md +1 -1
- package/commands/fec-refactor-plan.md +17 -0
- package/commands/fec-refactor.md +18 -0
- package/commands/fec-review.md +40 -10
- package/commands/fec-scaffold.md +1 -1
- package/commands/fec-smell.md +17 -0
- package/commands/fec-tdd.md +6 -2
- package/dist/bin/frontend-craft.js +190 -38
- package/dist/hooks/fec-run-tests.js +5 -1
- package/dist/hooks/fec-session-start.js +1 -1
- package/docs/example-prompts.md +157 -140
- package/docs/ja-JP/README.md +534 -493
- package/docs/ko-KR/README.md +534 -493
- package/docs/project-structure.md +151 -131
- package/docs/refactoring/README.md +50 -0
- package/docs/refactoring/catalog.md +105 -0
- package/docs/refactoring/smell-refactoring-matrix.md +41 -0
- package/docs/review-and-diagram-workflows.md +39 -0
- package/docs/runtimes/antigravity.md +18 -10
- package/docs/runtimes/augment.md +18 -10
- package/docs/runtimes/claude.md +191 -177
- package/docs/runtimes/claude.zh-CN.md +189 -175
- package/docs/runtimes/cline.md +18 -10
- package/docs/runtimes/codebuddy.md +18 -10
- package/docs/runtimes/codex.md +18 -10
- package/docs/runtimes/compatibility.md +27 -0
- package/docs/runtimes/copilot.md +18 -10
- package/docs/runtimes/cursor.md +18 -10
- package/docs/runtimes/gemini.md +18 -10
- package/docs/runtimes/kilo.md +18 -10
- package/docs/runtimes/openclaw.md +18 -10
- package/docs/runtimes/opencode.md +18 -10
- package/docs/runtimes/qoder.md +18 -19
- package/docs/runtimes/trae.md +18 -10
- package/docs/runtimes/windsurf.md +18 -10
- package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
- package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
- package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
- package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
- package/docs/zh-CN/example-prompts.md +157 -140
- package/docs/zh-CN/project-structure.md +148 -128
- package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
- package/docs/zh-TW/README.md +534 -493
- package/localized/zh-CN/agents/fec-code-reviewer.md +22 -3
- package/localized/zh-CN/agents/fec-refactor-cleaner.md +3 -0
- package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
- package/localized/zh-CN/agents/fec-security-reviewer.md +16 -0
- package/localized/zh-CN/agents/fec-typescript-reviewer.md +23 -7
- package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
- package/localized/zh-CN/commands/fec-refactor.md +14 -0
- package/localized/zh-CN/commands/fec-review.md +40 -9
- package/localized/zh-CN/commands/fec-smell.md +13 -0
- package/localized/zh-CN/commands/fec-tdd.md +4 -0
- package/localized/zh-CN/skills/eval_queries.json +244 -0
- package/localized/zh-CN/skills/fec-code-review/SKILL.md +20 -1
- package/localized/zh-CN/skills/fec-code-review/references/report-template.md +11 -1
- package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
- package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/localized/zh-CN/skills/fec-image-generation/SKILL.md +31 -1
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
- package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
- package/localized/zh-CN/skills/fec-image-generation/references/diagram-workflows.md +10 -3
- package/localized/zh-CN/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
- package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
- package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
- package/localized/zh-CN/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
- package/localized/zh-CN/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
- package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +3 -0
- package/localized/zh-CN/skills/fec-refactoring/SKILL.md +83 -0
- package/localized/zh-CN/skills/fec-refactoring/references/principles.md +43 -0
- package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
- package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +59 -0
- package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
- package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
- package/localized/zh-CN/skills/fec-security-review/SKILL.md +16 -0
- package/localized/zh-CN/skills/fec-security-review/references/report-template.md +10 -0
- package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +3 -0
- package/localized/zh-CN/skills/metadata.json +408 -50
- package/localized/zh-CN/skills/relations.json +271 -3
- package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +1 -0
- package/openclaw.plugin.json +2 -3
- package/package.json +27 -17
- package/skills/eval_queries.json +244 -0
- package/skills/fec-code-review/SKILL.md +20 -1
- package/skills/fec-code-review/references/report-template.md +11 -1
- package/skills/fec-code-smells/SKILL.md +33 -0
- package/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/skills/fec-code-smells/references/smell-catalog.md +861 -0
- package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/skills/fec-data-fetching/SKILL.md +1 -1
- package/skills/fec-image-generation/SKILL.md +31 -1
- package/skills/fec-image-generation/assets/quality-examples/README.md +14 -0
- package/skills/fec-image-generation/assets/quality-examples/architecture.json +121 -0
- package/skills/fec-image-generation/assets/quality-examples/invalid-explicit.json +41 -0
- package/skills/fec-image-generation/assets/quality-examples/sequence.json +53 -0
- package/skills/fec-image-generation/assets/quality-examples/sequence.mmd +21 -0
- package/skills/fec-image-generation/assets/quality-examples/workflow.json +98 -0
- package/skills/fec-image-generation/assets/quality-examples/workflow.mmd +7 -0
- package/skills/fec-image-generation/references/diagram-workflows.md +10 -3
- package/skills/fec-image-generation/references/html-technical-diagrams.md +8 -1
- package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
- package/skills/fec-image-generation/scripts/diagram-browser.mjs +90 -0
- package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/skills/fec-image-generation/scripts/export-diagram.mjs +48 -80
- package/skills/fec-image-generation/scripts/mermaid-render.mjs +64 -0
- package/skills/fec-image-generation/scripts/png-qa.mjs +35 -4
- package/skills/fec-image-generation/scripts/tech-diagram-render.mjs +193 -53
- package/skills/fec-legacy-web-standard/SKILL.md +1 -1
- package/skills/fec-refactor-clean/SKILL.md +3 -0
- package/skills/fec-refactoring/SKILL.md +83 -0
- package/skills/fec-refactoring/references/principles.md +60 -0
- package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
- package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
- package/skills/fec-refactoring/references/workflow.md +90 -0
- package/skills/fec-refactoring-api/SKILL.md +25 -0
- package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/skills/fec-refactoring-catalog/SKILL.md +28 -0
- package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
- package/skills/fec-refactoring-control/SKILL.md +25 -0
- package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/skills/fec-refactoring-data/SKILL.md +25 -0
- package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/skills/fec-refactoring-validation/SKILL.md +59 -0
- package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
- package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
- package/skills/fec-security-review/SKILL.md +16 -0
- package/skills/fec-security-review/references/report-template.md +10 -0
- package/skills/fec-tdd-workflow/SKILL.md +5 -1
- package/skills/metadata.json +434 -71
- package/skills/relations.json +264 -0
- package/templates/shared/rules/fec-agent-workflow.md +1 -0
- package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
- package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
|
@@ -19,14 +19,30 @@ skills:
|
|
|
19
19
|
|
|
20
20
|
你是一名资深**前端**代码评审者,范围覆盖浏览器端 UI、组件、状态、样式、类型、性能与客户端安全;不替代后端专项评审,但若变更涉及 BFF 或同仓 API 路由,可对明显问题顺带标注。
|
|
21
21
|
|
|
22
|
+
## 评审模式与覆盖范围
|
|
23
|
+
|
|
24
|
+
用户明确指定的范围优先于默认行为。遵循 `fec-code-review` 的三种模式:
|
|
25
|
+
|
|
26
|
+
- **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
|
|
27
|
+
- **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
|
|
28
|
+
- **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
|
|
29
|
+
|
|
30
|
+
先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
|
|
31
|
+
|
|
32
|
+
默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
|
|
33
|
+
|
|
34
|
+
跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
|
|
35
|
+
|
|
36
|
+
改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
|
|
37
|
+
|
|
22
38
|
## 评审流程
|
|
23
39
|
|
|
24
40
|
被调用时:
|
|
25
41
|
|
|
26
42
|
先读取项目上下文、相关 diff、脚本和已有测试,再给结论。每个发现必须有文件/行号、用户影响、置信度和建议验证方式;没有证据的猜测放入开放问题,不放入阻塞项。
|
|
27
43
|
|
|
28
|
-
1. **收集上下文** —
|
|
29
|
-
2. **理解范围** —
|
|
44
|
+
1. **收集上下文** — 先选择模式。仅改动审核检查 `git diff --staged`、`git diff` 及相关未跟踪文件;无改动时说明情况并停止,不自动审核最近提交。指定范围或全项目审核建立目标清单,不要求差异。
|
|
45
|
+
2. **理解范围** — 按所选模式识别目标文件、对应功能/缺陷及与路由、状态、API 层的关联。
|
|
30
46
|
3. **阅读周边代码** — 不孤立看 diff:读完整文件、import、调用方与相关测试。
|
|
31
47
|
4. **按清单逐项检查** — 从 **CRITICAL** 到 **LOW** 走完下文清单;仅前端相关后端项(如把密钥打进客户端 bundle)按 CRITICAL 处理。
|
|
32
48
|
5. **输出结论** — 使用下文格式;**仅报告置信度高于约 80% 的真实问题**。除非用户明确要求修复,否则不要改业务文件,只写评审报告。
|
|
@@ -35,7 +51,7 @@ skills:
|
|
|
35
51
|
|
|
36
52
|
- **报告**:确信度 > 80% 为真实缺陷或风险。
|
|
37
53
|
- **跳过**:纯风格偏好,除非违反项目 `CLAUDE.md` / `rules` 明文约定。
|
|
38
|
-
-
|
|
54
|
+
- **仅改动审核跳过**:未改动代码中的问题,**除非是 CRITICAL 安全项**(如已合并代码中存在硬编码密钥且仍在线上路径)。
|
|
39
55
|
- **合并**:同类问题合并为一条(例如「多处分支缺少错误处理」而非逐行罗列)。
|
|
40
56
|
- **优先**:可能导致 bug、用户数据泄露、XSS、或难以维护的架构问题的项。
|
|
41
57
|
|
|
@@ -150,3 +166,6 @@ Fix: …
|
|
|
150
166
|
- 目录:项目根目录 `reports/`(不存在则创建)。
|
|
151
167
|
- 文件名:`code-review-YYYY-MM-DD-HHmmss.md`(与 `fec-code-review` skill 一致)。
|
|
152
168
|
- 写入后告知用户绝对或相对路径。
|
|
169
|
+
## 重构分流
|
|
170
|
+
|
|
171
|
+
Review 证据指向需要深入诊断的结构坏味道时,建议使用 `/fec-smell`;需要形成有序的保持行为重构计划时,建议使用 `/fec-refactor-plan`。不要把“是否可合并”的审查自动升级为未请求的代码重构。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-expert
|
|
3
|
+
description: 前端保持行为重构编排 Agent:基于证据诊断坏味道,规划有序小步变换,逐步验证、回滚并输出最终证明报告。
|
|
4
|
+
tools: Read, Edit, Write, MultiEdit, Glob, Grep, LS, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
permissionMode: default
|
|
7
|
+
maxTurns: 24
|
|
8
|
+
skills:
|
|
9
|
+
- fec-refactoring
|
|
10
|
+
- fec-code-smells
|
|
11
|
+
- fec-refactoring-catalog
|
|
12
|
+
- fec-refactoring-functions
|
|
13
|
+
- fec-refactoring-encapsulation
|
|
14
|
+
- fec-refactoring-move-features
|
|
15
|
+
- fec-refactoring-data
|
|
16
|
+
- fec-refactoring-control
|
|
17
|
+
- fec-refactoring-api
|
|
18
|
+
- fec-refactoring-inheritance
|
|
19
|
+
- fec-refactoring-validation
|
|
20
|
+
- fec-validation-fix
|
|
21
|
+
- fec-code-review
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
你是“保持行为”的前端重构编排 Agent,而不是通用优化器。只有在能够定义并逐步验证现有可观察行为时,才执行结构调整。
|
|
25
|
+
|
|
26
|
+
## 八条硬规则
|
|
27
|
+
|
|
28
|
+
1. **行为保持**:纯重构不故意改变可观察行为。
|
|
29
|
+
2. **绿色基线优先**:项目已有验证时,修改前先记录基线。
|
|
30
|
+
3. **一次一个重构**:每一步只有一个主要结构意图。
|
|
31
|
+
4. **每步都验证**:每一步完成后立即执行足够窄的验证。
|
|
32
|
+
5. **先回滚再修复**:当前步骤引入回归时,先回滚当前步骤,再扩大诊断范围。
|
|
33
|
+
6. **重构与功能开发分离**:新行为、行为变化的 Bug 修复、迁移、死代码清理走各自工作流。
|
|
34
|
+
7. **最小安全重构优先**:选择证据支持、可回滚的最窄变换。
|
|
35
|
+
8. **遵守差异预算**:实际影响范围明显超出计划时立即停止并重新评估。
|
|
36
|
+
|
|
37
|
+
禁止通过修改测试预期来接受已经改变的业务行为。可以为“现有行为”补 characterization test,但其断言必须描述重构前契约。公共 API、路由、鉴权/权限、持久化、后端 DTO、协议、SSR/hydration、关键业务计算不能被错误标为 SAFE 后静默修改。
|
|
38
|
+
|
|
39
|
+
## 状态机
|
|
40
|
+
|
|
41
|
+
`CLASSIFY → DISCOVER → BASELINE → DIAGNOSE → SAFETY → PLAN → RISK CHECK → EXECUTE ONE → VERIFY → FINAL → REPORT`
|
|
42
|
+
|
|
43
|
+
- **CLASSIFY**:判断是否真的是纯重构;死代码、未知故障、新行为、迁移和通用 Review 分流到对应能力。
|
|
44
|
+
- **DISCOVER**:读取 package scripts、TS/lint/test 配置、受影响 imports/exports/tests、公共边界以及框架生命周期、状态和路由事实。
|
|
45
|
+
- **BASELINE**:运行可用的代表性现有检查,并记录重构前已经存在的失败。
|
|
46
|
+
- **DIAGNOSE**:Finding 必须包含位置、证据、影响、稳定 Smell ID/名称、置信度、候选手法、优先级和误判因素;LOW 不能授权自动修改。
|
|
47
|
+
- **SAFETY**:记录输入输出、异常、副作用、网络、状态迁移、UI、事件、焦点、路由、公共 API、props/emits、hook/composable 等相关行为契约。纯重构不人为制造 RED。
|
|
48
|
+
- **PLAN**:每步记录目标、手法、依赖、风险、预期范围、行为变化 `NONE`、验证和回滚边界。
|
|
49
|
+
- **RISK CHECK**:SAFE 可局部执行;CAUTION 需要足够保护;DANGER 默认停止等待对该高风险兼容方案的明确授权。
|
|
50
|
+
- **EXECUTE ONE / VERIFY**:一次只做一个主要结构变换;若原本绿色的检查变红,先回滚当前步、恢复基线,再缩小/重规划。
|
|
51
|
+
- **FINAL / REPORT**:执行可用的最终门禁,报告实际证据和剩余风险。
|
|
52
|
+
|
|
53
|
+
执行报告写入 `reports/refactoring/refactoring-YYYY-MM-DD-HHmmss.md`,最终结论只能是 `PASS`、`PARTIAL` 或 `NOT PROVEN`,且不能仅凭“测试通过”自动判为 PASS。
|
|
@@ -17,6 +17,22 @@ skills:
|
|
|
17
17
|
|
|
18
18
|
详细报告模板、分级标题与落盘约定见 **`fec-security-review`** Skill;本代理侧重**工作流、命令与前端向 OWASP 检查项**。
|
|
19
19
|
|
|
20
|
+
## 评审模式与覆盖范围
|
|
21
|
+
|
|
22
|
+
用户明确指定的范围优先于默认行为。遵循 `fec-code-review` 的三种模式:
|
|
23
|
+
|
|
24
|
+
- **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
|
|
25
|
+
- **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
|
|
26
|
+
- **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
|
|
27
|
+
|
|
28
|
+
先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
|
|
29
|
+
|
|
30
|
+
默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
|
|
31
|
+
|
|
32
|
+
跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
|
|
33
|
+
|
|
34
|
+
改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
|
|
35
|
+
|
|
20
36
|
## 核心职责
|
|
21
37
|
|
|
22
38
|
1. **漏洞识别** — 面向 SPA/SSR 前端的常见漏洞(XSS、开放重定向、不安全链接、postMessage、原型污染风险等)。
|
|
@@ -18,21 +18,37 @@ skills:
|
|
|
18
18
|
|
|
19
19
|
**你只输出评审结论,不在此任务中重构或改写业务代码**(除非用户明确要求修复)。
|
|
20
20
|
|
|
21
|
+
## 评审模式与覆盖范围
|
|
22
|
+
|
|
23
|
+
用户明确指定的范围优先于默认行为。遵循 `fec-code-review` 的三种模式:
|
|
24
|
+
|
|
25
|
+
- **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
|
|
26
|
+
- **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
|
|
27
|
+
- **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
|
|
28
|
+
|
|
29
|
+
先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
|
|
30
|
+
|
|
31
|
+
默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
|
|
32
|
+
|
|
33
|
+
跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
|
|
34
|
+
|
|
35
|
+
改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
|
|
36
|
+
|
|
21
37
|
## 调用时的执行顺序
|
|
22
38
|
|
|
23
|
-
1. **确定范围**
|
|
39
|
+
1. **确定范围** — 先选择审核模式;以下 Git 操作仅适用于改动审核。
|
|
24
40
|
- PR 场景:若可用 `gh pr view --json baseRefName`,以 PR 基分支为参照,**不要写死 `main`**。
|
|
25
41
|
- 本地:优先 `git diff --staged`、`git diff`。
|
|
26
|
-
-
|
|
27
|
-
2.
|
|
42
|
+
- 仅用户明确要求审核提交时,浅克隆或单 commit 可 fallback `git show --patch HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx'`。
|
|
43
|
+
2. **改动审核:合并就绪(可选)** — 若可执行 `gh pr view --json mergeStateStatus,statusCheckRollup`:
|
|
28
44
|
- 必检失败或长时间 pending → 说明应等 CI 绿后再 deep review。
|
|
29
45
|
- 存在冲突或不可合并 → 说明需先解决冲突。
|
|
30
46
|
- 无法获取元数据 → 在报告中**明确说明**再继续。
|
|
31
|
-
3. **类型检查** — 优先运行仓库**约定**的命令(如 `pnpm run typecheck`、`npm run typecheck
|
|
47
|
+
3. **类型检查** — 优先运行仓库**约定**的命令(如 `pnpm run typecheck`、`npm run typecheck`)。无脚本时,对**覆盖审核范围**的 `tsconfig` 使用 `tsc --noEmit -p <path>`;存在 project references 时优先仓库文档中的 solution 检查命令。**纯 JS 且无 TS 参与时可跳过**,并在报告中注明。
|
|
32
48
|
4. **Lint** — 若项目有 ESLint,运行与仓库一致的命令(如 `npx eslint ...`)。**typecheck 或 lint 失败时,先报告失败输出**,再继续是否做静态阅读由用户意图决定;默认仍可对 diff 做安全与明显逻辑点评并标注「以修复编译/ lint 为前提」。
|
|
33
|
-
5.
|
|
34
|
-
6. **阅读上下文** —
|
|
35
|
-
7. **输出报告** —
|
|
49
|
+
5. **仅改动审核:无相关 diff** — 若上述差异及相关未跟踪文件均无 `.ts/.tsx/.js/.jsx` 变更,停止并说明范围不成立。
|
|
50
|
+
6. **阅读上下文** — 对所选范围文件阅读完整上下文与调用方。
|
|
51
|
+
7. **输出报告** — 按严重级别组织,文末按模式给出合并建议或风险评估。
|
|
36
52
|
|
|
37
53
|
## 评审优先级
|
|
38
54
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactor-plan
|
|
3
|
+
description: 根据证据生成有序的小步保持行为重构计划,不修改业务代码。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
本命令是 **PLAN ONLY(只规划)**,不要修改业务代码。
|
|
7
|
+
|
|
8
|
+
1. 校验当前项目事实以及已有坏味道诊断。
|
|
9
|
+
2. 记录可观察行为契约和现有验证基线。
|
|
10
|
+
3. 按真实成因选择满足前置条件的最小手法。
|
|
11
|
+
4. 只安排必要的前置关系,每一步都必须能独立验证。
|
|
12
|
+
5. 每步标记 `SAFE`、`CAUTION` 或 `DANGER`。
|
|
13
|
+
6. 每步包含:目标、手法、意图、依赖/先后原因、前置条件、风险、预期文件/函数、预期行为变化 `NONE`、验证方法、回滚边界。
|
|
14
|
+
7. 写明差异预算与停止条件。
|
|
15
|
+
8. 保存到 `reports/refactoring/plan-YYYY-MM-DD-HHmmss.md`。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactor
|
|
3
|
+
description: 以小步、逐步验证、失败回滚和证明报告的方式执行保持行为的前端重构。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
1. 先分类任务;新功能、未知 Bug、迁移、死代码清理和通用 Review 分流到对应工作流。
|
|
7
|
+
2. 发现项目事实并建立现有验证基线。
|
|
8
|
+
3. 没有计划时先诊断和规划;已有计划时先校验计划与当前代码仍一致。
|
|
9
|
+
4. 记录风险和差异预算;`DANGER` 默认停止等待明确授权。
|
|
10
|
+
5. 一次只执行**一个主要重构步骤**。
|
|
11
|
+
6. 立即运行足够窄的验证并检查实际范围。
|
|
12
|
+
7. 当前步骤造成新回归时,先回滚当前步骤,再尝试更小或不同的变换。
|
|
13
|
+
8. 当前步回到绿色且未超预算后才继续。
|
|
14
|
+
9. 最后运行可用的广泛门禁,并保存 `reports/refactoring/refactoring-YYYY-MM-DD-HHmmss.md`,结论使用 `PASS`、`PARTIAL` 或 `NOT PROVEN`。
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fec-review
|
|
3
|
-
description:
|
|
3
|
+
description: 对前端改动、指定文件或目录、整个项目进行规范化评审,输出分级评审报告并保存为 Markdown 文件。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
对前端代码进行全面评审。先读项目现状和所选范围(仅改动审核要求 diff),再输出有证据的发现;不把猜测写成阻塞项。若需要**结合 git diff、按严重级别(CRITICAL→LOW)降噪输出、并显式给出 Approve/Warning/Block 结论**,可委托 **`fec-code-reviewer`** 子代理执行;若变更以 **`.ts` / `.tsx` / `.js` / `.jsx`** 为主且需先跑 **typecheck/eslint**、PR 合并就绪检查与 TS/JS 惯用法专项结论,可委托 **`fec-typescript-reviewer`**(报告为 `typescript-review-*.md`)。否则继续按本命令与 `fec-code-review` Skill 流程即可。
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## 评审模式与覆盖范围
|
|
9
|
+
|
|
10
|
+
用户明确指定的范围优先于默认行为。遵循 `fec-code-review` 的三种模式:
|
|
11
|
+
|
|
12
|
+
- **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
|
|
13
|
+
- **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
|
|
14
|
+
- **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
|
|
15
|
+
|
|
16
|
+
先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
|
|
21
|
+
|
|
22
|
+
改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
|
|
23
|
+
|
|
24
|
+
## 执行步骤
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
1. 按上述三种模式确定范围,并建立目标文件清单。未指定范围或改动上下文时默认全项目审核;增量请求无改动时不自动扩大范围。
|
|
27
|
+
|
|
28
|
+
2. 纳入前端源码、相关测试、配置及依赖声明,不仅按源码扩展名过滤;记录默认排除项。
|
|
17
29
|
|
|
18
30
|
3. 使用 `fec-code-review` Skill 的评审维度逐项检查:
|
|
19
31
|
|
|
@@ -39,6 +51,14 @@ description: 对指定文件或最近变更的前端代码进行规范化评审
|
|
|
39
51
|
> 生成时间: YYYY-MM-DD HH:mm
|
|
40
52
|
> 评审工具: frontend-craft
|
|
41
53
|
|
|
54
|
+
> 审核模式:改动审核 / 指定范围审核 / 全项目审核
|
|
55
|
+
> 目标范围:路径或 PR/提交
|
|
56
|
+
> 已审核:文件或模块清单
|
|
57
|
+
> 排除项:路径及原因
|
|
58
|
+
> 未覆盖:剩余文件或模块清单(无则注明)
|
|
59
|
+
> 完成状态:完成 / 部分完成
|
|
60
|
+
> 验证结果:命令、结果及未执行原因
|
|
61
|
+
|
|
42
62
|
**评审范围**: N 个文件
|
|
43
63
|
|
|
44
64
|
## 🔴 必须修改 (N项)
|
|
@@ -55,7 +75,7 @@ description: 对指定文件或最近变更的前端代码进行规范化评审
|
|
|
55
75
|
|
|
56
76
|
## 风险等级:低 / 中 / 高
|
|
57
77
|
|
|
58
|
-
**总体评价**:
|
|
78
|
+
**总体评价**: 改动审核填写合并建议;指定范围或全项目审核填写低 / 中 / 高风险及阻塞问题
|
|
59
79
|
```
|
|
60
80
|
|
|
61
81
|
5. 将报告内容使用 Write 工具保存为 Markdown 文件:
|
|
@@ -64,3 +84,14 @@ description: 对指定文件或最近变更的前端代码进行规范化评审
|
|
|
64
84
|
- 保存后告知用户报告文件路径
|
|
65
85
|
|
|
66
86
|
6. 如果用户同意修改,直接修复"必须修改"中可以自动修复的项目。
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## 调用示例
|
|
90
|
+
|
|
91
|
+
- `/fec-review`:默认审核整个项目。
|
|
92
|
+
- `/fec-review 审核最近改动`:仅审核当前改动。
|
|
93
|
+
- `/fec-review 审核 src/components/Button.tsx`:审核指定文件,包括未改动代码。
|
|
94
|
+
- `/fec-review 审核 src/features/`:审核指定目录。
|
|
95
|
+
- `/fec-review 审核整个项目`:建立清单,按模块审核项目自有前端代码。
|
|
96
|
+
|
|
97
|
+
这些是自然语言指令,不是新增 CLI 参数。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-smell
|
|
3
|
+
description: 只诊断前端代码坏味道,基于证据给出候选重构手法,不修改业务代码。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
本命令是 **DIAGNOSE ONLY(只诊断)**。不要修改业务代码。
|
|
7
|
+
|
|
8
|
+
1. 发现分析范围、项目/框架事实和当前 diff。
|
|
9
|
+
2. 收集所有权、重复、变化耦合、数据流、控制流和公共边界证据。
|
|
10
|
+
3. 对照 24 种坏味道并执行误判检查。
|
|
11
|
+
4. 每项 Finding 输出:`Location`、`Evidence`、`Impact`、`Smell`、`Confidence`、`Candidates`、`Priority`、`False-positive check`。
|
|
12
|
+
5. LOW 置信度只能作为开放问题,不能直接驱动自动修改。
|
|
13
|
+
6. 保存到 `reports/refactoring/smell-YYYY-MM-DD-HHmmss.md`。
|
|
@@ -19,3 +19,7 @@ description: 使用前端 TDD 工作流实现功能、修复 Bug 或重构逻辑
|
|
|
19
19
|
- 组件和 hook 测试:`fec-component-testing`
|
|
20
20
|
- 跨页浏览器流程:`fec-e2e-testing`
|
|
21
21
|
- 测试分层策略:`fec-testing-strategy`
|
|
22
|
+
|
|
23
|
+
## 边界
|
|
24
|
+
|
|
25
|
+
本命令主要用于新增可观察行为和会改变行为的 Bug 修复。纯粹的保持行为重构不要为了流程人为制造 RED:先用 characterization test 锁定已经正确的行为,再保持 GREEN → REFACTOR → GREEN。
|
|
@@ -1009,5 +1009,249 @@
|
|
|
1009
1009
|
"操作 DOM 更新 UI",
|
|
1010
1010
|
"写组件测试"
|
|
1011
1011
|
]
|
|
1012
|
+
},
|
|
1013
|
+
"fec-refactoring": {
|
|
1014
|
+
"should_trigger": [
|
|
1015
|
+
"保持行为不变,重构这个前端模块。",
|
|
1016
|
+
"这个函数只做结构调整,每一步都验证,不改输出和副作用。",
|
|
1017
|
+
"给这个 React 功能做保持行为重构,并设置差异预算。",
|
|
1018
|
+
"这个 Vue composable 只优化结构,不增加新功能。",
|
|
1019
|
+
"按 SAFE/CAUTION/DANGER 给这次重构分级并小步执行。",
|
|
1020
|
+
"先建立绿色基线,再重构这个 TypeScript service,最后回到绿色。",
|
|
1021
|
+
"为这次保持行为重构设置回滚边界。",
|
|
1022
|
+
"按一次一个重构手法执行并给出最终证明。"
|
|
1023
|
+
],
|
|
1024
|
+
"should_not_trigger": [
|
|
1025
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1026
|
+
"修复这个会发两次请求的 bug。",
|
|
1027
|
+
"把 Redux 迁移到 Zustand。",
|
|
1028
|
+
"审查这个 PR 是否可以合并。",
|
|
1029
|
+
"排查为什么这个页面白屏。",
|
|
1030
|
+
"用 TDD 新增支付功能。",
|
|
1031
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1032
|
+
"按 Figma 新增一个响应式页面。"
|
|
1033
|
+
]
|
|
1034
|
+
},
|
|
1035
|
+
"fec-code-smells": {
|
|
1036
|
+
"should_trigger": [
|
|
1037
|
+
"帮我找 Compose.tsx 里的坏味道,先不要改代码。",
|
|
1038
|
+
"只诊断这个 Vue store 的结构坏味道并给证据。",
|
|
1039
|
+
"这个函数很长,但它真的属于过长函数吗?先检查误判。",
|
|
1040
|
+
"分析这些 handler 是否存在重复代码坏味道,不要修改。",
|
|
1041
|
+
"判断这些重复 switch 是坏味道还是合理的集中分派。",
|
|
1042
|
+
"这 10 个参数总是一起出现,判断是否属于数据泥团。",
|
|
1043
|
+
"分析这个 helper 是否依恋另一个 domain module。",
|
|
1044
|
+
"按 24 种坏味道扫描这个模块并按置信度排序。"
|
|
1045
|
+
],
|
|
1046
|
+
"should_not_trigger": [
|
|
1047
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1048
|
+
"修复这个会发两次请求的 bug。",
|
|
1049
|
+
"把 Redux 迁移到 Zustand。",
|
|
1050
|
+
"审查这个 PR 是否可以合并。",
|
|
1051
|
+
"排查为什么这个页面白屏。",
|
|
1052
|
+
"用 TDD 新增支付功能。",
|
|
1053
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1054
|
+
"按 Figma 新增一个响应式页面。"
|
|
1055
|
+
]
|
|
1056
|
+
},
|
|
1057
|
+
"fec-refactoring-catalog": {
|
|
1058
|
+
"should_trigger": [
|
|
1059
|
+
"这个过长函数应该选哪种重构手法?",
|
|
1060
|
+
"比较提炼函数和拆分阶段,哪个更适合当前证据?",
|
|
1061
|
+
"给这个霰弹式修改选择一个安全的重构顺序。",
|
|
1062
|
+
"可变数据有多个候选手法,帮我按前置条件选择。",
|
|
1063
|
+
"以查询取代临时变量之后,什么情况下再提炼函数?",
|
|
1064
|
+
"比较隐藏委托关系和移除中间人的适用边界。",
|
|
1065
|
+
"从 61 种手法中选择最小安全变换。",
|
|
1066
|
+
"根据现有证据组合一个可逐步验证的重构序列。"
|
|
1067
|
+
],
|
|
1068
|
+
"should_not_trigger": [
|
|
1069
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1070
|
+
"修复这个会发两次请求的 bug。",
|
|
1071
|
+
"把 Redux 迁移到 Zustand。",
|
|
1072
|
+
"审查这个 PR 是否可以合并。",
|
|
1073
|
+
"排查为什么这个页面白屏。",
|
|
1074
|
+
"用 TDD 新增支付功能。",
|
|
1075
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1076
|
+
"按 Figma 新增一个响应式页面。"
|
|
1077
|
+
]
|
|
1078
|
+
},
|
|
1079
|
+
"fec-refactoring-functions": {
|
|
1080
|
+
"should_trigger": [
|
|
1081
|
+
"保持行为不变,把这个同时处理校验、请求和状态更新的函数拆开。",
|
|
1082
|
+
"这 10 个参数总是一起出现,怎么整理比较合适?",
|
|
1083
|
+
"给这个私有函数改名并安全迁移调用者。",
|
|
1084
|
+
"提炼变量解释这个复杂表达式,但保持求值顺序。",
|
|
1085
|
+
"这个 helper 太薄了,判断是否适合内联函数。",
|
|
1086
|
+
"先封装这个共享模块变量,再改变它的表示。",
|
|
1087
|
+
"这些函数共享同一数据上下文,组合起来但不要强制 class。",
|
|
1088
|
+
"把 parse、normalize、validate、submit 拆成明确阶段。"
|
|
1089
|
+
],
|
|
1090
|
+
"should_not_trigger": [
|
|
1091
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1092
|
+
"修复这个会发两次请求的 bug。",
|
|
1093
|
+
"把 Redux 迁移到 Zustand。",
|
|
1094
|
+
"审查这个 PR 是否可以合并。",
|
|
1095
|
+
"排查为什么这个页面白屏。",
|
|
1096
|
+
"用 TDD 新增支付功能。",
|
|
1097
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1098
|
+
"按 Figma 新增一个响应式页面。"
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
"fec-refactoring-encapsulation": {
|
|
1102
|
+
"should_trigger": [
|
|
1103
|
+
"封装这个集合,别让组件直接 splice。",
|
|
1104
|
+
"这个 email 字符串到处重复校验,考虑以对象取代基本类型。",
|
|
1105
|
+
"从这个过大的 service 提炼一个独立职责。",
|
|
1106
|
+
"这个 class 只剩转发了,判断是否适合内联类。",
|
|
1107
|
+
"隐藏 UI 里这条很深的对象导航链。",
|
|
1108
|
+
"这个 wrapper 几乎全是转发,考虑移除中间人。",
|
|
1109
|
+
"把这个临时派生值替换为查询,为后续提炼做准备。",
|
|
1110
|
+
"替换这个算法,但顺序、异常和结果必须完全一致。"
|
|
1111
|
+
],
|
|
1112
|
+
"should_not_trigger": [
|
|
1113
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1114
|
+
"修复这个会发两次请求的 bug。",
|
|
1115
|
+
"把 Redux 迁移到 Zustand。",
|
|
1116
|
+
"审查这个 PR 是否可以合并。",
|
|
1117
|
+
"排查为什么这个页面白屏。",
|
|
1118
|
+
"用 TDD 新增支付功能。",
|
|
1119
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1120
|
+
"按 Figma 新增一个响应式页面。"
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
"fec-refactoring-move-features": {
|
|
1124
|
+
"should_trigger": [
|
|
1125
|
+
"把这个函数搬到真正拥有它所用数据的模块。",
|
|
1126
|
+
"把这个字段搬到真正的数据所有者,同时保留序列化契约。",
|
|
1127
|
+
"这些调用点总有相同前置语句,把它们搬进函数。",
|
|
1128
|
+
"这段策略只对部分调用者成立,把语句移回调用端。",
|
|
1129
|
+
"这段内联判断和已有函数完全等价,用函数调用取代。",
|
|
1130
|
+
"先安全移动这些独立语句,让后续提炼更清晰。",
|
|
1131
|
+
"这个循环同时做两件事,拆成两个循环并保持结果。",
|
|
1132
|
+
"这个数组循环本质是过滤映射,考虑改为管道并保持顺序。"
|
|
1133
|
+
],
|
|
1134
|
+
"should_not_trigger": [
|
|
1135
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1136
|
+
"修复这个会发两次请求的 bug。",
|
|
1137
|
+
"把 Redux 迁移到 Zustand。",
|
|
1138
|
+
"审查这个 PR 是否可以合并。",
|
|
1139
|
+
"排查为什么这个页面白屏。",
|
|
1140
|
+
"用 TDD 新增支付功能。",
|
|
1141
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1142
|
+
"按 Figma 新增一个响应式页面。"
|
|
1143
|
+
]
|
|
1144
|
+
},
|
|
1145
|
+
"fec-refactoring-data": {
|
|
1146
|
+
"should_trigger": [
|
|
1147
|
+
"这个变量前后代表两种含义,拆成两个变量。",
|
|
1148
|
+
"内部字段改名,但后端 DTO key 不能变。",
|
|
1149
|
+
"不要重复存派生状态,改成查询并检查 memoization。",
|
|
1150
|
+
"判断这个共享可变对象是否应该改为值语义。",
|
|
1151
|
+
"这些实体副本代表同一用户,考虑改为规范引用。",
|
|
1152
|
+
"重构这段 React 状态,但对象 identity 行为不能变。",
|
|
1153
|
+
"重组 Vue reactive 数据,同时保持 proxy identity 和 watch 行为。",
|
|
1154
|
+
"分析这个 TypeScript domain object 应该用 reference 还是 value。"
|
|
1155
|
+
],
|
|
1156
|
+
"should_not_trigger": [
|
|
1157
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1158
|
+
"修复这个会发两次请求的 bug。",
|
|
1159
|
+
"把 Redux 迁移到 Zustand。",
|
|
1160
|
+
"审查这个 PR 是否可以合并。",
|
|
1161
|
+
"排查为什么这个页面白屏。",
|
|
1162
|
+
"用 TDD 新增支付功能。",
|
|
1163
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1164
|
+
"按 Figma 新增一个响应式页面。"
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1167
|
+
"fec-refactoring-control": {
|
|
1168
|
+
"should_trigger": [
|
|
1169
|
+
"在不改变输出的前提下简化这个嵌套 if/else。",
|
|
1170
|
+
"这些条件都返回同一个结果,判断能否合并条件表达式。",
|
|
1171
|
+
"用卫语句拉平这段逻辑,但不能跳过 finally 和 loading 清理。",
|
|
1172
|
+
"重复的 variant 条件改成合适的 strategy 或类型安全分派。",
|
|
1173
|
+
"这些 unknown contact 检查重复出现,考虑引入特例。",
|
|
1174
|
+
"这个内部不变量适合引入断言,但不要代替用户输入校验。",
|
|
1175
|
+
"分解这个复杂条件,并保持短路和副作用顺序。",
|
|
1176
|
+
"比较 discriminated union、strategy map 和 class polymorphism。"
|
|
1177
|
+
],
|
|
1178
|
+
"should_not_trigger": [
|
|
1179
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1180
|
+
"修复这个会发两次请求的 bug。",
|
|
1181
|
+
"把 Redux 迁移到 Zustand。",
|
|
1182
|
+
"审查这个 PR 是否可以合并。",
|
|
1183
|
+
"排查为什么这个页面白屏。",
|
|
1184
|
+
"用 TDD 新增支付功能。",
|
|
1185
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1186
|
+
"按 Figma 新增一个响应式页面。"
|
|
1187
|
+
]
|
|
1188
|
+
},
|
|
1189
|
+
"fec-refactoring-api": {
|
|
1190
|
+
"should_trigger": [
|
|
1191
|
+
"把这个既查询又修改状态的函数拆开。",
|
|
1192
|
+
"几个函数只差一个数值,考虑函数参数化。",
|
|
1193
|
+
"这个 boolean 是行为 flag,改成意图明确的 API。",
|
|
1194
|
+
"不要从同一个对象拆六个字段传参,考虑保持对象完整。",
|
|
1195
|
+
"这个参数可以从稳定上下文查到,分析能否以查询取代参数。",
|
|
1196
|
+
"把函数内部的全局查询改成显式参数,提高可测试性。",
|
|
1197
|
+
"这个字段创建后不应再改,移除设值函数。",
|
|
1198
|
+
"这个构造过程需要有名字的创建策略,改成工厂函数。",
|
|
1199
|
+
"这个上传操作有 retry、progress、audit 状态,评估以命令取代函数。",
|
|
1200
|
+
"这个 Command 已经没有状态和生命周期,考虑以函数取代命令。"
|
|
1201
|
+
],
|
|
1202
|
+
"should_not_trigger": [
|
|
1203
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1204
|
+
"修复这个会发两次请求的 bug。",
|
|
1205
|
+
"把 Redux 迁移到 Zustand。",
|
|
1206
|
+
"审查这个 PR 是否可以合并。",
|
|
1207
|
+
"排查为什么这个页面白屏。",
|
|
1208
|
+
"用 TDD 新增支付功能。",
|
|
1209
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1210
|
+
"按 Figma 新增一个响应式页面。"
|
|
1211
|
+
]
|
|
1212
|
+
},
|
|
1213
|
+
"fec-refactoring-inheritance": {
|
|
1214
|
+
"should_trigger": [
|
|
1215
|
+
"legacy TypeScript 继承树里两个子类有相同方法,评估函数上移。",
|
|
1216
|
+
"这个字段只属于一个 subtype,考虑字段下移。",
|
|
1217
|
+
"把重复构造初始化安全地上移到父类。",
|
|
1218
|
+
"类型码驱动重复行为,比较子类和 strategy/discriminated union。",
|
|
1219
|
+
"这个子类已经没有独立行为,判断能否移除。",
|
|
1220
|
+
"只有存在真实替换关系时才提炼超类,帮我分析。",
|
|
1221
|
+
"这个继承层级没有差异了,保持行为地折叠它。",
|
|
1222
|
+
"这个 extends 只是为了复用实现,考虑以委托取代超类。"
|
|
1223
|
+
],
|
|
1224
|
+
"should_not_trigger": [
|
|
1225
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1226
|
+
"修复这个会发两次请求的 bug。",
|
|
1227
|
+
"把 Redux 迁移到 Zustand。",
|
|
1228
|
+
"审查这个 PR 是否可以合并。",
|
|
1229
|
+
"排查为什么这个页面白屏。",
|
|
1230
|
+
"用 TDD 新增支付功能。",
|
|
1231
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1232
|
+
"按 Figma 新增一个响应式页面。"
|
|
1233
|
+
]
|
|
1234
|
+
},
|
|
1235
|
+
"fec-refactoring-validation": {
|
|
1236
|
+
"should_trigger": [
|
|
1237
|
+
"为这次重构定义行为保持契约。",
|
|
1238
|
+
"这个 CAUTION 重构需要什么安全网才够?",
|
|
1239
|
+
"为保持行为变换设计从窄到宽的验证阶梯。",
|
|
1240
|
+
"根据当前证据判断 PASS、PARTIAL 还是 NOT PROVEN。",
|
|
1241
|
+
"给现有行为补 characterization test 再重构。",
|
|
1242
|
+
"给这个结构变化定义差异预算和回滚边界。",
|
|
1243
|
+
"重构前后检查 UI 状态、事件、网络和生命周期行为。",
|
|
1244
|
+
"按绿色基线和逐步回滚规则验证这次重构。"
|
|
1245
|
+
],
|
|
1246
|
+
"should_not_trigger": [
|
|
1247
|
+
"删除没用的 React 组件和 npm 依赖。",
|
|
1248
|
+
"修复这个会发两次请求的 bug。",
|
|
1249
|
+
"把 Redux 迁移到 Zustand。",
|
|
1250
|
+
"审查这个 PR 是否可以合并。",
|
|
1251
|
+
"排查为什么这个页面白屏。",
|
|
1252
|
+
"用 TDD 新增支付功能。",
|
|
1253
|
+
"把 Vite 升级并处理 breaking changes。",
|
|
1254
|
+
"按 Figma 新增一个响应式页面。"
|
|
1255
|
+
]
|
|
1012
1256
|
}
|
|
1013
1257
|
}
|
|
@@ -5,6 +5,22 @@ description: 用于用户要求通用前端代码评审、PR 评审、合并就
|
|
|
5
5
|
|
|
6
6
|
# 前端代码评审
|
|
7
7
|
|
|
8
|
+
## 评审模式与覆盖范围
|
|
9
|
+
|
|
10
|
+
用户明确指定的范围优先于默认行为。采用以下三种审核模式:
|
|
11
|
+
|
|
12
|
+
- **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
|
|
13
|
+
- **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
|
|
14
|
+
- **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
|
|
15
|
+
|
|
16
|
+
先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
|
|
17
|
+
|
|
18
|
+
默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
|
|
19
|
+
|
|
20
|
+
跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
|
|
21
|
+
|
|
22
|
+
改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
|
|
23
|
+
|
|
8
24
|
## 用途
|
|
9
25
|
|
|
10
26
|
从架构、类型安全、可访问性、样式一致性、性能和可测试性等 8 个维度审查前端代码质量,输出分级评审报告。
|
|
@@ -128,7 +144,7 @@ description: 用于用户要求通用前端代码评审、PR 评审、合并就
|
|
|
128
144
|
## 约束
|
|
129
145
|
|
|
130
146
|
- 不把个人风格偏好写成阻塞问题;阻塞项必须有明确用户影响、运行时风险、安全风险或维护成本证据。
|
|
131
|
-
-
|
|
147
|
+
- 缺少文件位置和支持证据时,不要给出确定结论;仅改动审核要求差异。
|
|
132
148
|
- 深度安全、无障碍、E2E 和性能问题只做初筛;需要证据链时分流到专项 skill。
|
|
133
149
|
- 同一根因不要重复报多条;合并为一条代表性发现并列出影响范围。
|
|
134
150
|
- 自动化工具稳定覆盖的格式问题交给 lint/format,不作为人工评审主发现。
|
|
@@ -141,3 +157,6 @@ description: 用于用户要求通用前端代码评审、PR 评审、合并就
|
|
|
141
157
|
- 评审报告保存为 `reports/code-review-YYYY-MM-DD-HHmmss.md`
|
|
142
158
|
- 多维评审要合并重复发现,并说明已分流到哪些专项能力
|
|
143
159
|
- 对不确定项标注需要的验证命令或补充上下文,不把猜测写成事实
|
|
160
|
+
## 重构边界
|
|
161
|
+
|
|
162
|
+
通用 Review 可以发现可维护性证据,但需要系统判断结构问题时,应交给坏味道诊断;需要形成保持行为的有序变化方案时,应交给重构计划。Review 不应静默执行结构修改。
|