smithery.ai

git-hooks

Set up and configure Git pre-commit hooks for code quality, secrets scanning, and commit message validation. Use when installing git hooks, configuring pre-commit checks, or enforcing code standards.

First seen Mar 27, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,865 B
  • docs SUMMARY.md 216 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

Git Hooks Skill

When to Activate

Activate this skill when:

  • Setting up pre-commit hooks
  • Configuring commit message validation
  • Installing secrets scanners
  • Enforcing code quality standards
  • Automating pre-push tests

Quick Installation

# 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/*

Available Hooks

Core Hooks (All Projects)

Hook Purpose
commit-msg Validates conventional commit format
pre-commit-secrets-scanner Prevents leaked API keys/secrets

Language-Specific

Hook Language Checks
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 Mixed Auto-detects and runs appropriate tools

Automation Hooks

Hook Purpose
pre-push Runs tests before push
post-checkout Auto-updates dependencies on branch switch
post-commit Shows commit summary and TODOs

Hook Selection by Project

# 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

What Each Hook Does

commit-msg

Validates commit message format:

# 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

Scans for exposed secrets:

  • Anthropic API keys (sk-ant-...)
  • OpenAI API keys (sk-...)
  • AWS credentials (AKIA...)
  • GitHub tokens (ghp_...)
  • Hardcoded passwords

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

Testing Hooks

# 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

Bypassing Hooks (Emergency Only)

# Skip all hooks
git commit --no-verify -m "Emergency fix"

# Only use when:
# - Emergency production fixes
# - Hook malfunction
# - Intentional override

Troubleshooting

Hook Not Running

# Check existence
ls -l .git/hooks/

# Fix permissions
chmod +x .git/hooks/*

# Check syntax
bash -n .git/hooks/pre-commit

Permission Denied

chmod +x .git/hooks/*

Failed Quality Checks

# 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"

Missing Tools

# Install code quality tools
uv add --dev black ruff

# Verify installation
which black
uv run black --version

Custom Hook Configuration

Modify pre-commit for Your Project

#!/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

Hook Execution Order

  1. pre-commit - Before commit (code quality)
  2. commit-msg - Validates message format
  3. post-commit - After commit (notifications)
  4. pre-push - Before push (tests)

Best Practices

DO ✅

  • Install secrets scanner on ALL projects
  • Use commit-msg for consistent history
  • Run tests in pre-push
  • Test hooks after installation

DON'T ❌

  • Skip hooks regularly
  • Disable secrets scanning
  • Ignore hook failures
  • Commit without testing hooks first

Related Resources

See AgentUsage/precommithooks/ for:

  • setup_guide.md - Complete installation guide
  • examples.md - Custom hook examples
  • TROUBLESHOOTING.md - Common issues
  • Individual hook scripts for reference