Ruff Python Linter 配置器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/ruff-python-linter-configurator。
技能介绍
迁移 Ruff 时的配置难题
Python 项目长期维护后,常见的工具组合是 Flake8 做代码检查、isort 管理导入顺序、Black 统一代码格式。这三个工具各自有独立的配置文件和规则体系,比如项目根目录可能有 setup.cfg、.isort.cfg、pyproject.toml 等多个配置文件。
Ruff 用 Rust 编写,速度极快,它把代码检查和格式化合二为一,但这意味着不能简单地把 Flake8 的 .flake8 配置直接复制过去。isort 的 known_first_party、Black 的 line_length 在 Ruff 里对应的是 [tool.ruff.isort] 和 [tool.ruff.format] 的键,命名和位置都不一样。手动迁移不仅费时,还容易遗漏规则,导致 CI 通过但实际检查覆盖不全。
自动迁移与冲突解决
这个技能的核心工作是读取项目中已有的 Flake8、isort、Black 配置,生成一份优化后的 Ruff 配置。它把分散在多个文件里的规则映射到 pyproject.toml 的 [tool.ruff] 节,并自动处理规则冲突。
典型流程是这样的:
- 扫描项目根目录,识别
.flake8、setup.cfg、tox.ini里的 Flake8 配置 - 读取
.isort.cfg或pyproject.toml里的[tool.isort]节 - 检查 Black 的配置,比如
line_length、target_version - 生成
[tool.ruff]配置,把三个工具的规则合并进去 - 遇到冲突规则时自动选择优先级更高的那个
输出的 pyproject.toml 可以直接用于 Ruff,不需要额外修改。
适用边界
这个技能依赖上游 Ruff 的文档和规则定义。Ruff 的规则集与 Flake8 插件并不完全一一对应,某些 Flake8 插件提供的规则在 Ruff 中可能没有等价实现,或者名称不同。这种情况下生成的配置会缺失相应规则,需要手动补充。
另外,技能处理的是 静态配置文件 层面的迁移,不会修改项目代码本身。如果现有代码不满足 Ruff 的规则,生成配置后运行 ruff check 仍然会报错,需要开发者自己修复代码或调整规则。
Ruff 本身的安装和升级属于上游工具的范畴,技能只负责配置生成这一环节。
使用场景
- 维护多年的 Python 项目要弃用 Flake8、isort、Black,需要把旧规则一次性迁移到 Ruff 配置中
- 代码库同时存在 `.flake8`、`setup.cfg` 和 `pyproject.toml`,想统一收敛到 `[tool.ruff]` 下的单一配置
- 从 Black 切到 Ruff formatter 时,需要把 `line-length`、`skip-string-normalization` 等参数无损映射过去
- CI 里 linter 和 formatter 分属 Flake8 和 Black,想用一个 Ruff 配置替代以减少维护成本
适合人员
- 维护遗留 Python 项目的后端工程师,正在把多个 linter 收敛到 Ruff 一个工具
- 负责团队代码规范的技术负责人,需要为整个代码库生成统一的 Ruff 配置基线
- 从 Flake8/Black 迁移到 Ruff 的工具链开发者,希望自动完成规则映射和冲突处理
- 管理多个 Python 微服务仓库的 DevOps 工程师,想在各服务间推行一致的 Ruff 配置