pre-commit
A framework for managing and maintaining multi-language pre-commit hooks.
Decision gist · record as of 2026-08-14
Yes. pre-commit is actively maintained, has no known vulnerabilities, installs with low friction, and is widely used (top 1000 on PyPI). It solves a real problem—automating code quality checks before commit—and is the de facto standard for this use case in Python and multi-language projects. Install it if your team needs consistent, automated validation at commit time.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later; git must be installed and initialized in your project directory.
- Installation is low-friction: the package is pure Python, actively maintained with a release 4 days ago, and has 15505 repository stars.
- It requires Python 3.10 or later and depends on five well-established packages (cfgv, identify, nodeenv, pyyaml, virtualenv), all of which are common infrastructure libraries.
License · maintenance · safety
MIT (permissive) — MIT is a permissive license with minimal restrictions; you can use, modify, and distribute pre-commit freely in commercial and private projects as long as you include the license notice.
last release 2026-08-10 (4 days) · last repo commit 2026-08-10 · 15,505 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 179,908,032 downloads/mo, #229 on PyPI
Alternatives
Verify before relying
pip install pre-commit
# Create .pre-commit-config.yaml in your repo, then:
pre-commit install
pre-commit run --all-files- Whether the package's hook ecosystem (third-party hook repositories) is actively maintained and covers your specific validation needs.
- Performance characteristics when running many hooks on large codebases or in CI/CD pipelines.
What it is and what it does
pre-commit is a git hook framework that lets you define, install, and run code quality checks automatically before commits are made. Instead of manually managing shell scripts in .git/hooks, you declare your hooks in a YAML configuration file (.pre-commit-config.yaml), and pre-commit handles installation, updates, and execution across your team. It supports hooks written in any language by managing isolated environments for each hook via virtualenv and nodeenv.
The package is designed for multi-language projects where different tools need to run consistently before code is committed. It prevents incomplete or broken code from entering the repository, catches common mistakes early, and enforces team coding standards without requiring developers to remember which checks to run manually.
Use it for
- Enforce linting and formatting on Python code before commit in a team project.
- Run type checking and security scans automatically on every commit to catch issues early.
- Manage hooks across a polyglot repository where different languages have different validation tools.
- Prevent secrets or large files from being committed by running validation checks.
- Standardize code quality checks across CI/CD and local development by using the same hook configuration everywhere.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
pre-commit is actively maintained, has no known vulnerabilities, installs with low friction, and is widely used (top 1000 on PyPI). It solves a real problem—automating code quality checks before commit—and is the de facto standard for this use case in Python and multi-language projects. Install it if your team needs consistent, automated validation at commit time.
Install
pre-commit on PyPI
Before you install
Installation is low-friction: the package is pure Python, actively maintained with a release 4 days ago, and has 15505 repository stars. It requires Python 3.10 or later and depends on five well-established packages (cfgv, identify, nodeenv, pyyaml, virtualenv), all of which are common infrastructure libraries.
Requires Python 3.10 or later; git must be installed and initialized in your project directory.
License in practice
MIT is a permissive license with minimal restrictions; you can use, modify, and distribute pre-commit freely in commercial and private projects as long as you include the license notice.
Quickstart
pip install pre-commit
# Create .pre-commit-config.yaml in your repo, then:
pre-commit install
pre-commit run --all-files
Verify before relying
- Whether the package's hook ecosystem (third-party hook repositories) is actively maintained and covers your specific validation needs.
- Performance characteristics when running many hooks on large codebases or in CI/CD pipelines.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 5 packagescfgvidentifynodeenvpyyamlvirtualenv |
| Maintenance | Actively maintained 4 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 179,908,032 / month, #229 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Programming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy |
Evidence: pre_commit-4.6.2-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pre-commit framework”
- pre-commitpre-commit is a framework for installing and running git hooks…
- prekprek is a Git hook manager written in Rust that runs hooks before…
- conventional-pre-commitA pre-commit hook that validates git commit messages against…
Give your agent the search over MCP, or paste the wish link into any chat.
More Build Tools packages
Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.
Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.
Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.
poetry-core is a PEP 517 build backend that enables build frontends like pip to construct and install Poetry-managed projects without requiring Poetry itself or its dependencies.
See also pre-commit-hooks · prek · bar-raiser · conventional-pre-commit · commitlint · lefthook · pre-commit-uv · actionlint-py · commitizen · check-jsonschema