git-hooks について
git-hooksは、Gitフックの設定を支援するスキルです。コミットメッセージの検証、秘密情報のスキャン、言語別の品質チェック、push前のテストを扱い、Python、JavaScript、Goなどの導入例も含みます。
主な機能
- 01Conventional Commits形式の検証
- 02ステージ済み変更の秘密情報スキャン
- 03言語別の品質チェック
- 04push前のテスト実行
- 05導入とトラブルシューティングの案内
活用シーン
- 01Python、JavaScript、Goのリポジトリにチェックを設定
- 02秘密情報のコミットを防止
- 03push前のテストを自動実行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ autumnsgrove/ lattice --skill git-hooksインストール後、Claude Code で/git-hooksを入力して読み込まれたか確認します。
詳細
Git Hooks Skill
使用するタイミング
次の場合にこのスキルを使用します:
- コミット前フックを設定するとき
- コミットメッセージの検証を設定するとき
- シークレットスキャナーをインストールするとき
- コード品質基準を徹底するとき
- プッシュ前テストを自動化するとき
クイックインストール
# Use interactive installer (recommended)
./AgentUsage/pre_commit_hooks/install_hooks.sh
# Or manual installation for Python project
cp AgentUsage/pre_commit_hooks/commit-msg .git/hooks/
cp AgentUsage/pre_commit_hooks/pre-commit-python .git/hooks/pre-commit
cp AgentUsage/pre_commit_hooks/pre-commit-secrets-scanner .git/hooks/pre-commit-secrets
cp AgentUsage/pre_commit_hooks/pre-push .git/hooks/
chmod +x .git/hooks/*
利用可能なフック
コアフック(すべてのプロジェクト)
| フック | 目的 |
|---|---|
commit-msg | Conventional Commits 形式を検証します |
pre-commit-secrets-scanner | API キーやシークレットの漏えいを防ぎます |
言語別
| フック | 言語 | チェック項目 |
|---|---|---|
pre-commit-python | Python | Black、Ruff |
pre-commit-javascript | JS/TS | Prettier、ESLint、TypeScript |
pre-commit-go | Go | gofmt、go vet |
pre-commit-multi-language | 混在 | 言語を自動検出し、適切なツールを実行します |
自動化フック
| フック | 目的 |
|---|---|
pre-push | プッシュ前にテストを実行します |
post-checkout | ブランチ切り替え時に依存関係を自動更新します |
post-commit | コミットの概要と TODO を表示します |
プロジェクト別のフック選択
# Python Project
commit-msg + pre-commit-python + pre-commit-secrets-scanner + pre-push
# JavaScript Project
commit-msg + pre-commit-javascript + pre-commit-secrets-scanner + pre-push
# Go Project
commit-msg + pre-commit-go + pre-commit-secrets-scanner + pre-push
# Multi-language
commit-msg + pre-commit-multi-language + pre-commit-secrets-scanner + pre-push
各フックの動作
commit-msg
コミットメッセージの形式を検証します:
# Accepted formats
feat: Add user authentication
fix: Correct validation error
docs(readme): Update installation
# Rejected
Update files # No type
feat add feature # Missing colon
pre-commit-secrets-scanner
公開されたシークレットをスキャンします:
- Anthropic API キー(
sk-ant-...) - OpenAI API キー(
sk-...) - AWS 認証情報(
AKIA...) - GitHub トークン(
ghp_...) - ハードコードされたパスワード
pre-commit-python
# Runs automatically on staged .py files
uv run black --check $file
uv run ruff check $file
pre-push
# Runs before push
uv run pytest tests/ # or pnpm test, go test, cargo test
フックのテスト
# Test pre-commit directly
.git/hooks/pre-commit
# Test with sample commit
git add .
git commit -m "test: verify hooks"
# Run with debug output
bash -x .git/hooks/pre-commit
フックの回避(緊急時のみ)
# Skip all hooks
git commit --no-verify -m "Emergency fix"
# Only use when:
# - Emergency production fixes
# - Hook malfunction
# - Intentional override
トラブルシューティング
フックが実行されない
# Check existence
ls -l .git/hooks/
# Fix permissions
chmod +x .git/hooks/*
# Check syntax
bash -n .git/hooks/pre-commit
アクセスが拒否される
chmod +x .git/hooks/*
品質チェックの失敗
# Run tools manually
uv run black --check .
uv run ruff check .
# Fix issues
uv run black .
uv run ruff check --fix .
# Retry commit
git commit -m "Your message"
ツールが見つからない
# Install code quality tools
uv add --dev black ruff
# Verify installation
which black
uv run black --version
カスタムフックの設定
プロジェクトに合わせて pre-commit を変更する
#!/bin/bash
# .git/hooks/pre-commit
# Get staged Python files
FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.py$')
if [ -n "$FILES" ]; then
# Run your tools
uv run black --check $FILES || exit 1
uv run ruff check $FILES || exit 1
fi
exit 0
フックの実行順序
- pre-commit - コミット前(コード品質)
- commit-msg - メッセージ形式を検証
- post-commit - コミット後(通知)
- pre-push - プッシュ前(テスト)
ベストプラクティス
実施すること ✅
- すべてのプロジェクトにシークレットスキャナーをインストールする
- 一貫した履歴を保つために commit-msg を使用する
- pre-push でテストを実行する
- インストール後にフックをテストする
実施しないこと ❌
- フックを頻繁にスキップする
- シークレットスキャンを無効にする
- フックの失敗を無視する
- フックを事前にテストせずにコミットする
関連リソース
AgentUsage/pre_commit_hooks/ を参照してください。内容は次のとおりです:
setup_guide.md- インストールの完全ガイドexamples.md- カスタムフックの例TROUBLESHOOTING.md- よくある問題- 参考用の各フックスクリプト
コメント
Markdown 対応