用途:为全栈项目搭建快速、并行的提交前质量检查流程,覆盖 Python 后端与 JS/TS 前端的代码检查、格式化以及提交信息规范。
主要能力:自动识别项目结构(通过 pyproject.toml、requirements.txt、backend/ 判断 Python 后端;通过 package.json、frontend/、src/ 下的 .ts/.tsx 判断前端;检查 .husky/、lefthook.yml、.pre-commit-config.yaml 判断已有钩子);安装并配置 Lefthook、Ruff、Biome、commitlint;生成 lefthook.yml 与 commitlint.config.mjs。工具选择明确:用 Lefthook 而非 Husky,用 Ruff 而非 Black/Flake8,用 Biome 而非 ESLint/Prettier,理由为速度、简单、单一工具单一职责。
使用方式:安装 Lefthook(如 brew install lefthook 或 npm install -D lefthook);检测到后端时通过 uvx 使用 Ruff(uvx ruff --version 验证);检测到前端时执行 npm install -D @biomejs/biome;执行 npm install -D @commitlint/cli @commitlint/config-conventional。随后创建 lefthook.yml,配置 pre-commit 的 parallel 命令(ruff-check、ruff-format、biome-check)与 commit-msg 的 commitlint,并按项目类型调整 glob、root 及是否移除对应命令。创建 commitlint.config.mjs,继承 @commitlint/config-conventional,规则包括 scope-empty 与 subject-max-length 72;scope 强制范围需询问用户,不明确时省略 scope-enum。最后执行 lefthook install,用 lefthook run pre-commit 做冒烟测试,并提交配置文件。
适用场景:Python 后端、JS/TS 前端或全栈项目,含 monorepo(需按目录布局调整 glob 和 root)。限制:发现已有钩子时须先询问用户再覆盖;若项目结构未提供或无法识别,相关事实暂未提供。