用途:在当前仓库配置提交前钩子,自动执行代码格式化、类型检查与测试,并按项目实际使用的钩子系统(Husky 或 pre-commit)落地。
钩子系统检测:存在 .pre-commit-config.yaml 判定为 pre-commit(Python 工具);存在 .husky/ 目录判定为 Husky(Node.js);两者皆无时 Node 项目默认 Husky,Python 项目默认 pre-commit。
必需钩子(两套系统通用):check-secrets 在 pre-commit 阶段拦截 .env 与凭据;commit-msg 校验提交信息格式并阻止阶段引用;pre-push 执行技能清单并阻止直接推送到 main。
Husky 用法:先检测包管理器(package-lock.json/pnpm-lock.yaml/yarn.lock/bun.lockb,不明则 npm),安装依赖 <pm> add -D husky lint-staged prettier,运行 npx husky init 生成 .husky/ 并在 package.json 添加 prepare: "husky";从蓝图复制 commit-msg、pre-push 脚本并 chmod +x;创建 .husky/pre-commit,内容为 <pm> exec lint-staged、<pm> run typecheck、<pm> run test(package.json 无对应脚本时省略并告知用户);创建 .lintstagedrc("*": "prettier --ignore-unknown --write")与 .prettierrc;最后验证三脚本存在可执行、.lintstagedrc 与 Prettier 配置存在,并用 echo 管道对 commit-msg 做冒烟测试。
pre-commit 用法:将钩子脚本复制到 scripts/ 并加执行权限,在 .pre-commit-config.yaml 中登记 check-commit-msg 与 pre-push-check,再在 devcontainer 内运行 pre-commit install --hook-type commit-msg --hook-type pre-push,验证方式同上。
限制与说明:Husky v9+ 钩子文件无需 shebang;prettier --ignore-unknown 跳过无法解析的文件;pre-push 确认提示在 CI 中经 [ -t 1 ] 检测自动跳过;pre-commit install 需在提供 pre-commit Python 包的 devcontainer 中运行。其他限制资料未提供。