yy-lint
描述
执行代码 lint 检查,自动检测 lint 脚本、验证 Node 版本、执行检查并修复报错(不修复警告)。修复前必须先定位报错根因,无法定位根因时不盲目修复;修复方案涉及大规模文件改动时,必须先给出方案并获得用户明确确认。支持自定义命令。
使用场景
- 用户提到"lint"、"代码检查"、"代码风格检查"
- 用户要求运行 lint 检查
- 用户要求检查代码风格问题
- 用户指定自定义 lint 命令(如
/yy-lint npm run eslint:fix)
不应触发:
- 用户只是查看代码
- 用户要求重构代码
- 用户要求修复 bug(除非明确提到 lint)
- 用户要求编写测试
指令
步骤 1. 确定执行命令
按优先级确定要执行的命令:
- 用户明确指定的命令(如
/yy-lint npm run eslint:fix) package.json中的lint:fix脚本package.json中的lint脚本
决策分支:
- 有可用命令:进入步骤 2
- 无可用命令:提示用户并结束执行
步骤 2. 验证 Node 版本
检查 .nvmrc 文件是否存在:
- 不存在:跳过版本验证,继续执行
- 存在:验证当前 Node 版本是否满足要求
- 满足:继续执行
- 不满足:显示警告并结束执行
步骤 3. 执行 lint 检查
执行确定的命令并捕获 exit code:
- exit code 为 0:检测通过,显示成功消息,不读取输出日志(节省 token),进入步骤 7
- exit code 非 0:读取错误日志,进入步骤 4
并行任务约束:
- 若有多个任务正在并行执行(同时修改文件),不执行 lint
- 等所有并行任务完成后,再统一执行
步骤 4. 定位报错根因
对报错日志逐条分析,先定位根因,再谈修复:
- 按规则类型和涉及文件对报错归类,区分独立报错与级联报错(一个根因引发的多条报错)
- 打开报错涉及的源文件和相关配置文件,确认报错的实际触发位置
- 判断根因类型:代码问题、lint/TS 配置问题、依赖或工具链问题
决策分支:
- 根因明确、修复方式确定:进入步骤 5
- 根因无法定位(报错信息不足以判断、级联报错找不到源头、疑似配置或工具链异常):不盲目修改任何文件,输出报错清单和初步分析,提示用户人工介入,进入步骤 7
步骤 5. 评估修复规模并确认
根据已定位的根因,评估修复方案预计涉及的改动范围。
大规模改动判定(满足任一即视为大规模):
- 预计修改文件 ≥ 10 个
- 需要修改 lint 或 TypeScript 全局配置文件(如 ESLint 配置、tsconfig)
- 根因指向依赖或工具链(需要升级、更换依赖或调整工具版本)
决策分支:
- 小规模改动:直接进入步骤 6
- 大规模改动:先输出修复方案(报错分类、涉及文件清单、每类报错的修复方式),等待用户明确答复
- 用户确认采纳:进入步骤 6
- 用户拒绝或要求调整:按用户意见处理,未确认前不修改任何文件
步骤 6. 修复报错并验证
只修复已定位根因的报错:
- 正面解决问题,不得绕过(如添加
any类型、删除功能代码) - 警告不自动修复,保留供人工评估
- 修复完成后重新执行 lint 命令验证,仍有报错则回到步骤 4
步骤 7. 输出结果
输出格式:执行状态、命令名称、报错数量(如有)、根因定位结果(如有)、修复结果(如有)。无法定位根因或大规模方案未获确认时,明确标注未修复的报错及原因。
详细工作流程参考 resources/workflow.md,输出示例参考 examples/output.md。
安全边界
禁止主动执行的命令:
- 除
npm run lint:fix或npm run lint外的其他 package.json 脚本 - 编译、构建、部署命令
- 自动执行的测试命令
- 除
node --version外的其他 npx 命令
相关资源
examples/output.md:各类输出示例resources/workflow.md:详细工作流程和错误修复原则