name: fix description: 系统性地修复由/review发现或用户报告的问题 allowed-tools: Read, Grep, Glob, Edit, Write, Bash(git diff*), Bash(npx tsc *)
Fix 技能
系统性地修复由 /review 发现或用户报告的代码问题。
使用说明
步骤 1:识别问题
如果来自 /review,则从审查输出中收集问题。否则,询问用户需要修复什么。
按严重程度对每个问题进行分类:
- 严重 — 编译错误、缺少导入、运行时崩溃
- 高 — 内存泄漏、缺少清理、安全问题、违反 DRY 原则
- 中 — 违反约定、不一致性、命名问题
- 低 — 风格偏好、次要优化
步骤 2:规划修复顺序
按严重程度顺序(先严重)修复问题。当相关修复涉及同一文件时,将它们分组在一起以最小化更改。
在开始之前向用户展示计划:
## 修复计划
### 严重(优先修复)
1. [问题] — [文件:行号] — [要做什么]
### 高
2. [问题] — [文件:行号] — [要做什么]
### 中
3. [问题] — [文件:行号] — [要做什么]
步骤 3:应用修复
对于每个修复:
- 阅读文件以了解当前代码
- 应用修复问题所需的最小更改
- 验证修复不会破坏附近的任何内容
- 移至下一个问题
遵循以下原则:
- 最小更改 — 只修复损坏的部分,不要重构周围的代码
- 一次只关注一个点 — 不要在同一编辑中混合修复不同的问题
- 保留意图 — 在修复问题的同时保持原始行为
- 遵循项目约定 — 使用
.claude/rules/中的模式应用修复
步骤 4:验证
所有修复完成后:
- 运行
npx tsc --noEmit以检查类型错误 - 向用户展示修复内容的摘要
## 修复摘要
### 已修复
- [问题] — [文件] — [做了什么]
### 已跳过(需要讨论)
- [问题] — [原因]
### 剩余
- [问题] — [为什么没有修复]
步骤 5:审查更改
向用户展示所有更改的差异:
git diff --stat
询问他们是否要继续提交或是否需要调整。
常见修复模式
缺少导入
在文件顶部添加导入,与类似的导入分组。
缺少 useEffect 清理
添加一个返回函数,用于移除事件监听器、取消动画帧、清除超时以及移除地图图层/源/标记。
未跟踪的 setTimeout/setInterval
将计时器 ID 存储在 ref 中,并在清理函数中清除它。
未跟踪的 requestAnimationFrame
存储 RAF ID 并在清理函数中使用 cancelAnimationFrame 取消它。
将 any 替换为适当的类型
识别值的实际类型,并为其创建命名类型。仅在万不得已时使用 unknown。
违反 DRY 原则
将重复的代码提取到共享的实用程序文件中。更新所有使用重复代码的文件以从共享位置导入。
违反约定
参考 .claude/rules/ 以获取正确的模式并一致地应用它。