git-hooks-setuplisted
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