home / skills / julianobarbosa / claude-code-skills / pre-commit-skill

pre-commit-skill skill

/skills/pre-commit-skill

This skill helps you set up and manage pre-commit hooks across languages, automating quality checks, formatting, and security scans.

npx playbooks add skill julianobarbosa/claude-code-skills --skill pre-commit-skill

Review the files below or copy the command above to add this skill to your agents.

Files (14)
SKILL.md
3.3 KB
---
name: PreCommit
description: Pre-commit hooks framework for multi-language code quality automation. USE WHEN setting up pre-commit OR configuring git hooks OR adding linting OR code formatting OR security scanning OR Terraform validation OR Kubernetes manifests OR Helm charts OR Python linting OR JavaScript formatting. Manages .pre-commit-config.yaml, hook installation, and CI integration.
---

# PreCommit

A comprehensive skill for managing [pre-commit](https://pre-commit.com/) hooks - the framework for multi-language pre-commit hook management that automates code quality, formatting, linting, and security scanning.

## Quick Reference

| Command | Description |
|---------|-------------|
| `pre-commit install` | Install git hooks |
| `pre-commit run --all-files` | Run all hooks on all files |
| `pre-commit autoupdate` | Update hooks to latest versions |
| `pre-commit run <hook-id>` | Run specific hook |

## Workflow Routing

| Workflow | Trigger | File |
|----------|---------|------|
| **Setup** | "setup pre-commit", "initialize hooks", "create config" | `Workflows/Setup.md` |
| **AddHooks** | "add hook", "add linting", "add formatter", "add security" | `Workflows/AddHooks.md` |
| **Troubleshoot** | "fix pre-commit", "hook failing", "debug hooks" | `Workflows/Troubleshoot.md` |
| **CIIntegration** | "CI pipeline", "GitHub Actions", "GitLab CI" | `Workflows/CIIntegration.md` |
| **CustomHook** | "create custom hook", "local hook", "write hook" | `Workflows/CustomHook.md` |

## Documentation

| Document | Purpose |
|----------|---------|
| `QuickStartGuide.md` | Installation and first-time setup |
| `HooksReference.md` | Comprehensive hook catalog by language/purpose |
| `ConfigurationGuide.md` | Advanced configuration options |
| `SecurityHooks.md` | Secret detection and security scanning |

## Tools

| Tool | Purpose |
|------|---------|
| `Tools/PreCommitManager.ts` | CLI for managing pre-commit configurations |
| `Tools/HookGenerator.ts` | Generate .pre-commit-config.yaml templates |
| `Tools/HookValidator.ts` | Validate hook configurations |

## Examples

**Example 1: Setup pre-commit for a new project**
```
User: "Setup pre-commit for my Python project"
→ Invokes Setup workflow
→ Creates .pre-commit-config.yaml with Python hooks (black, isort, flake8)
→ Runs pre-commit install
```

**Example 2: Add Terraform hooks**
```
User: "Add Terraform validation hooks"
→ Invokes AddHooks workflow
→ Adds terraform_fmt, terraform_validate, terraform_docs hooks
→ Configures tflint and checkov integration
```

**Example 3: Add security scanning**
```
User: "Add secret detection to pre-commit"
→ Invokes AddHooks workflow
→ Adds gitleaks, detect-secrets, trufflehog hooks
→ Configures appropriate exclusion patterns
```

**Example 4: Debug failing hook**
```
User: "My eslint pre-commit hook is failing"
→ Invokes Troubleshoot workflow
→ Checks hook configuration and dependencies
→ Provides fix recommendations
```

## Supported Hook Categories

- **Python**: black, isort, flake8, mypy, bandit, pyupgrade
- **JavaScript/TypeScript**: prettier, eslint, biome
- **Infrastructure**: terraform, terragrunt, helm, kustomize
- **Kubernetes**: kubeconform, kubeval, checkov
- **Security**: gitleaks, detect-secrets, trufflehog, trivy
- **General**: yamllint, jsonlint, shellcheck, markdownlint

Overview

This skill manages pre-commit hooks to automate code quality, formatting, linting, and security scanning across multi-language repositories. It creates and updates .pre-commit-config.yaml, installs git hooks, and helps integrate hook runs into CI pipelines. The skill covers common languages and infra tooling so teams get consistent checks before commits and in CI.

How this skill works

The skill inspects the repository layout and existing .pre-commit-config.yaml, then generates or updates configuration with selected hooks (Python, JavaScript/TypeScript, Terraform, Kubernetes, security, etc.). It can install hooks locally (pre-commit install), run hooks across all files, autoupdate hooks, and validate hook definitions. It also provides guidance and fixes for failing hooks and produces CI snippets to run pre-commit as part of pipelines.

When to use it

  • Setting up pre-commit for a new or existing project to enforce formatting and linting.
  • Adding language-specific hooks (Python, JS/TS) or infrastructure validations (Terraform, Helm, Kubernetes).
  • Integrating pre-commit checks into CI pipelines (GitHub Actions, GitLab CI, etc.).
  • Automating security scanning with secret detection and vulnerability hooks.
  • Troubleshooting or debugging failing pre-commit hooks or dependency issues.

Best practices

  • Start with a minimal set of stable hooks (formatter + linter) and expand gradually.
  • Commit a canonical .pre-commit-config.yaml to the repository to ensure consistency.
  • Use pre-commit autoupdate in a controlled workflow or scheduled CI job to bump hook versions.
  • Run pre-commit --all-files before major merges or when enabling new hooks to catch legacy issues.
  • Add pre-commit to CI pipelines to enforce checks for contributors who skip local hook installation.

Example use cases

  • Initialize a Python project with black, isort, flake8 and automatically install git hooks.
  • Add Terraform hooks (terraform_fmt, tflint, terraform_validate) and configure checkov for policy scanning.
  • Add secret-detection hooks like gitleaks and detect-secrets with repository-specific exclusions.
  • Generate CI job snippets to run pre-commit --all-files on push and pull request pipelines.
  • Debug a failing eslint hook: validate node environment, update hook versions, and suggest fixes.

FAQ

Can this skill install hooks locally for contributors?

Yes — it generates or updates .pre-commit-config.yaml and runs pre-commit install to register git hooks locally.

How do I keep hooks up to date safely?

Use pre-commit autoupdate in a scheduled branch or CI job, test updates on CI, and roll back if a hook introduces breaking changes.

Will pre-commit run in CI even if contributors don't install hooks?

Yes — the skill provides CI snippets to run pre-commit --all-files so checks run server-side during pipelines.