← ClaudeAtlas

git-hooks-setuplisted

Use when user wants to set up git hooks, configure pre-commit checks, enforce commit message conventions, automate linting and formatting on commit, or standardize team development workflow with husky or lefthook
wu529778790/shenzjd-skills · ★ 0 · Code & Development · score 68
Install: claude install-skill wu529778790/shenzjd-skills
# Git Hooks Setup 一键配置 Git Hooks,标准化团队开发流程。 ## Overview 自动生成 pre-commit / commit-msg / push hook 配置,包含代码格式化、commit message 校验、敏感信息检查。支持 husky、lefthook、原生 git hooks 三种方案。 ## When to Use - 用户想配置 git hooks - 用户提到 pre-commit、commit message 规范 - 用户想自动化 lint/format 检查 - 用户输入 `/git-hooks-setup` **When NOT to Use:** - 用户只是想看当前的 git hooks 配置 - 用户想用 CI 做检查(不需要本地 hooks) - 用户的项目已有完整的 hooks 配置 ## Core Pattern ### Step 1: 检测项目环境 ```bash # 检测包管理器 ls package-lock.json && echo "npm" ls yarn.lock && echo "yarn" ls pnpm-lock.yaml && echo "pnpm" # 检测是否已有 hooks ls .husky/ 2>/dev/null && echo "husky 已配置" cat .git/hooks/pre-commit 2>/dev/null && echo "原生 hooks 已配置" # 检测 lint 工具 cat package.json | python3 -c "import sys,json; d=json.load(sys.stdin); print([k for k in d.get('devDependencies',{}) if 'eslint' in k or 'prettier' in k or 'lint' in k])" ``` ### Step 2: 选择方案 | 方案 | 适用场景 | 优点 | |------|---------|------| | husky | Node.js 项目 | 团队协作友好,配置即代码 | | lefhook | 任何项目 | 更快,Go 编写 | | 原生 git hooks | 非 Node.js 项目 | 无依赖 | ### Step 3: 生成配置 **方案 A: Husky** ```bash npx husky init ``` 生成 `.husky/pre-commit`: ```bash npx lint-staged ``` 生成 `.husky/commit-msg`: ```bash npx --no -- commitlint --edit ${1} ``` 生成 `.huskyrc` 或 `lint-staged` 配置: ```json { "*.{ts,tsx,js,jsx}": ["eslint --fix", "prettier --write"], "*.{json,md,yml}": ["prettier --write"] } ``` **方案 B: 原生 git hooks** ```bash cat > .git/hooks/pre-commit << 'EOF' #!/bin/sh # 自动 lint + format npm run lint -- --fix npm run format g