用途:pre-commit 是用于多语言预提交钩子管理的框架,可在代码提交前自动执行代码质量检查、格式化、静态检查和安全性扫描。该技能围绕它整理安装、配置、添加钩子、排错、CI 集成和自定义钩子等流程。
主要能力:提供按用途划分的工作流入口,包括 Setup(初始化钩子与创建配置)、AddHooks(添加 lint、格式化、安全钩子)、Troubleshoot(钩子失败调试)、CIIntegration(GitHub Actions / GitLab CI)和 CustomHook(本地/自定义钩子)。文档含快速入门、按语言与用途分类的钩子目录、高级配置与安全钩子说明,工具含 PreCommitManager、HookGenerator 和 HookValidator。支持钩子类别覆盖 Python(black、isort、flake8、mypy、bandit、pyupgrade)、JavaScript/TypeScript(prettier、eslint、biome)、基础设施(terraform、terragrunt、helm、kustomize)、Kubernetes(kubeconform、kubeval、checkov)、安全(gitleaks、detect-secrets、trufflehog、trivy)以及通用(yamllint、jsonlint、shellcheck、markdownlint)。
常用命令:pre-commit install、pre-commit run --all-files、pre-commit autoupdate、pre-commit run <hook-id>。
限制与注意事项:通过编辑器内 git commit -m 运行时 hook 输出可能被吞掉,建议直接运行 pre-commit run --all-files 查看失败信息;autoupdate 只更新到最新 tag,不会更新钩子仓库内部固定的依赖版本,需检查 additional_dependencies;钩子默认只对已暂存文件运行,git add 后再修改文件会按旧内容检查,CI 中应使用 --all-files;exclude 正则锚定方式与 files 不同,建议锚定写法;language: system 依赖 PATH,在 CI 可能失败,优先用 language: python 配合 additional_dependencies;install 默认不安装 commit-msg 与 pre-push,需分别指定 --hook-type;SKIP 跳过仅对当前 shell 调用有效,CI 新环境仍会触发。具体收费与价格信息暂未提供。