commit-guard-zhlisted
Install: claude install-skill YuAICode/ai-skills
# commit-guard-zh — 提交/推送前护栏 + 中文 commit
提交前在本地把关,别让密钥、迁移炸弹、误推主分支溜进仓库;干净了再帮你写一条规范的中文 commit。
## 何时触发
用户说"准备提交 / 帮我 commit / 提交一下 / 要 push 了"等。
## 工作流
### 1. 跑检查(确定性脚本,在仓库根目录执行)
```bash
bash <skill>/bin/secret-scan.sh # 扫 staged diff 的密钥/凭据
# 若该 repo 是 Go+GORM(.commit-guard.sh 里 ENABLE_GORM_CHECK=1):
bash <skill>/bin/gorm-mysql-check.sh # 扫 staged .go 的 TEXT/JSON 带 DEFAULT
# 若启用了 md lint(ENABLE_MD_LINT=1,需装 markdownlint-cli):
bash <skill>/bin/markdownlint-check.sh # 扫 staged .md(未装 linter 则自动跳过)
```
- 任一脚本 `exit 2` → **停下**。把 stderr 里的问题用中文讲清楚 + 给修法,等用户处理,**不要**擅自跳过或 `--no-verify`。
- 全 `exit 0` → 进入下一步。
### 2. 生成中文 commit
读 `git diff --cached`,生成一条 **conventional 前缀 + 中文描述**的 message:
- 前缀按改动性质:`feat:` / `fix:` / `refactor:` / `docs:` / `test:` / `chore:`
- 描述用中文;代码标识符、API、库名保持英文
- 多个改动点用 body 分条
- 展示给用户确认后再 `git commit`
### 3. 若要推送
```bash
bash <skill>/bin/push-guard.sh <分支名>
```
- 推到受保护分支(默认 main/master)时:**先确认本回合用户是否已明确授权推送主分支**(这是会自动部署/影响线上的高风险操作)。授权了再 `COMMIT_GUARD_CONFIRM=1 git push`。
- 脚本若报 env/密钥文件混进待推提交 → 停下,协助移除。
## 也可装成 git hook(不依赖 Claude)
确定性检查能装进目标 repo 的 `pre-commit` / `pre-push`,这样手动 git 操作也有护栏:
```bash
bash <skill>/install.sh /path/to/your-repo
```
详见 [README](./README.md)。
## 配置
目标 repo 根目录放 `.commit-guard.sh`(从 `config.example.sh` 复制):
- `BRANCH_PROTECT="main master"` — 受保护分支
- `ENABLE_GORM_CHECK=0` — 是否启用 GORM 检查(仅 Go+GORM 项目;默认关)
- `ENABLE_MD_LINT=0` — 是否启用 markdownlint 检查 .md(需 markdownlint-cli;默认关,未装自动跳过)
- `SECRET_W