The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Development · SKILL.md

code-review-refactor

code-review-refactor

对现有 Nuxt 4 + Vue3 + Vuetify3 代码进行 Code Review,并给出“可落地”的重构/复用方案(逻辑抽取、CSS 去重、页面 JSON 驱动复用)。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: code-review-refactor description: 对现有 Nuxt 4 + Vue3 + Vuetify3 代码进行 Code Review,并给出“可落地”的重构/复用方案(逻辑抽取、CSS 去重、页面 JSON 驱动复用)。

Code Review & Refactor 规范 Skill

当用户提出“代码很乱 / 需要 Code Review / 重构不够规范 / 提取可复用逻辑 / CSS 太多 / 页面重复应该 JSON 驱动”等诉求时,使用本 Skill。

0. 使用范围(When to Use)

  • 用户明确说要 Code Review
  • 或用户反馈:组件/页面冗长、CSS 重复、相似页面太多、缺少抽取到 utils/composables/services、缺少可复用结构
  • 或发现你在修改时重复造轮子(应优先提取/复用)

1. 重构总原则(必须遵守)

  1. 行为优先(Behavior First):重构仅做结构优化,不改变既有功能、接口与用户交互语义。
  2. 小步可验证:每次改动都应能局部验证;先提取再替换,避免“一次大改导致难排查”。
  3. 优先抽取可复用逻辑:
    • 纯函数与可复用算法:app/utils/
    • 与组件生命周期/状态联动的逻辑:app/composables/
    • API 请求/数据转换:app/services/
  4. 优先组件化重复 UI:
    • 动作按钮组、筛选条、分页条、表格工具栏等重复结构 -> 公共组件
    • 相似页面 -> 用“配置/JSON + 事件绑定”做驱动,而不是拷贝复制页面
  5. CSS 去重:
    • 多处重复的 CSS -> 提取为组件内共用 class,或提取公共样式(同风格、同作用域规则)
    • 只为“一个小变量”复制 CSS 的 -> 合并成同一个 class + 参数化/状态类

2. Code Review 检查清单(Checklists)

2.1 逻辑抽取(Logic Extraction)

在 review 时,逐段检查是否存在以下情况:

  1. 一个组件里出现多次相同的处理逻辑(如 parse/safeParse/格式化/渲染拼装)。
  2. 多个页面存在相同的业务流程(如同一类 SSE 流式组装、同一类 markdown/eCharts 渲染触发)。
  3. 与页面无关的纯逻辑没有被移到 utils 或 composables。

输出要求:

  • 指出“重复点”与“提取位置建议”(utils/composables/services 哪个更合适)
  • 给出新的接口/函数签名建议(至少用参数名与返回类型描述)

2.2 组件拆分(Componentization)

  • 组件文件是否超过合理规模(建议阈值:500 行内易维护,复杂组件建议拆子组件)
  • 是否存在“混杂多职责”(例如:渲染 + 请求 + 状态 + 事件处理全部写在一个组件)

输出要求:

  • 提出“拆分方案”:哪些子组件/哪些 composables
  • 标明拆分后组件仍保持同样的 Props/事件语义

2.3 CSS 去重(CSS De-duplication)

检查:

  1. 不同组件/页面有大量相同 CSS(尤其是 markdown-body、code block、card spacing、按钮样式等)。
  2. 相同选择器重复定义或只差少量颜色/间距。

输出要求:

  • 优先给出“提取成一个 class”方案
  • 或建议做“公共样式组件/公共 wrapper 组件”(如果是 UI 结构层面的重复)

2.4 JSON 驱动的页面复用(Config-Driven Pages)

当你发现多个管理页面“按钮数量不同、内容通过 JSON 稍有差异”,建议使用 JSON 驱动:

  • 页面结构拆为通用骨架:
    • 顶部标题区
    • 操作按钮组(来自配置)
    • 表格/列表区(列定义来自配置)
    • 弹窗/抽屉(表单字段来自配置)
  • 事件由页面注入(例如:onAction(actionKey, payload) 或通过映射表)

输出要求:

  • 提出一个“最小通用配置 schema”(字段列表 + 示例)
  • 指出每个页面需要补充的差异化配置项

2.5 TypeScript 与安全护栏

检查是否存在:

  • arr[i] 取值后未做 TS 收窄导致 T | undefined 警告
  • SSE/流式数据拼接在 TS 层面不安全

输出要求:

  • 给出 TS 收窄的推荐写法(局部变量 + if 守卫 / type guard)

3. 推荐的输出格式(必须用)

当用户说开始 Code Review 时,你的回答应使用以下结构(按序):

  1. ## 最关键问题(按严重度从高到低)
    • 每条用一句话概括 + 标明影响范围(渲染/性能/可维护性/正确性)
  2. ## 重构/复用建议(可落地)
    • 对每条建议写:提取目标(utils/composables/services/组件/CSS)、原因、预计收益
  3. ## JSON 驱动复用方案(如果存在重复页面)
    • 给出配置 schema(字段列表)+ 示例(可以是伪 JSON)
  4. ## 验证与回归(Test Plan)
    • 给出最少的手动验证清单(UI 是否一致、功能是否不变、关键交互是否回归)

4. 允许与禁止

允许:

  • 提取公共逻辑、拆子组件、创建新 util/composable/services
  • CSS 合并、抽取公共 class、增加必要 wrapper 组件 禁止:
  • 仅为“看起来更漂亮”而改变现有交互语义或数据结构
  • 大而全的重写(除非用户明确要求并且能接受高风险)
Saved skills