ESLint 自定义规则生成代理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/eslint-rule-generator-agent。
技能介绍
它解决什么问题
团队里总有一些约定散落在 README 或 Code Review 评论里:导出的常量必须带后缀、某些 API 不允许在业务代码里出现、文件命名要统一。把这些约定落地成 ESLint 规则,通常意味着手写 AST 遍历、补 RuleTester 用例、再处理 TypeScript 的类型收窄,成本高到多数人直接放弃,让约定停留在口头。
这个技能做的是:把一句自然语言描述变成可用的 ESLint 规则。你描述希望拦截什么样的代码,它基于 RuleTester API 与 AST 选择器生成规则实现与校验用例,并接入 typescript-eslint 解析器,让规则在 TypeScript 代码里也能读到类型信息。
核心能力与工作流程
- 自然语言到规则:把「禁止在 import 中使用
require」这类描述,转成RuleMetaData、create()里的遍历逻辑与报错信息。 - AST 选择器定位目标:用选择器精确描述要匹配的语法节点,而不是靠猜一条遍历路径。
- RuleTester 校验:生成的规则自带最小测试用例,保证该报错的报错、该放过的放过。
- TypeScript 感知:借助
typescript-eslintparser 获取类型信息,覆盖重载、条件类型这类纯 JS 解析器看不清的场景。
大致流程:描述规则 → 解析出目标 AST 节点与触发条件 → 生成规则代码与 RuleTester 用例 → 本地跑一遍验证。
适用边界与注意点
- 生成结果仍是规则骨架:语义判断(例如「这个默认参数不安全」)需要你自己补逻辑,工具提供结构与测试脚手架。
- Node.js 版本要求较新:
^20.19.0、^22.13.0或>=24,且构建时需要 SSL 支持。 - 若要使用 ESLint 的 TypeScript 类型定义,需要 TypeScript
5.3+。 - 上游文档摘自 ESLint 官方 README,规则 API 以实际安装的 ESLint 版本为准。
使用场景
- 给代码库补充团队约定规则:希望禁止 import 里出现 require,并生成 RuleTester 用例来验证。
- 项目从 JavaScript 迁到 TypeScript,需要基于 typescript-eslint 解析器生成能识别类型信息的规则。
- 针对某个 API 调用路径写拦截规则,用 AST 选择器精确定位语法节点,避免误伤无关代码。
- 想把评审里反复出现的规范问题固化成规则骨架,先拿到可跑的实现与测试再自行补语义判断。
适合人员
- 维护自研脚手架的前后端工程师:需要在模板仓库里新增 ESLint 规则并附带 RuleTester 用例。
- 负责 TypeScript 迁移的技术负责人:希望检查规则能感知类型信息,覆盖重载与条件类型场景。
- 补齐 CI 检查项的 DevOps 工程师:打算把命名与导入约定固化为规则,在流水线里自动校验。
- 给开源库写贡献的提交者:需要按维护者要求新增一条自定义规则并附上最小测试用例。