awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
j178 avatar

j178/prek

0
View on GitHub↗
6,297 stars·167 forks·Rust·mit·7 viewsprek.j178.dev↗

Prek

Prek is a Git hook manager written in Rust that runs configured hooks as a single binary without requiring Python or other external runtimes. It executes hooks faster than standard tools through parallel processing and bundled Rust implementations, and includes a built-in hook repository that enables fully offline operation without network access or environment setup. The tool supports both TOML and YAML configuration formats with identical semantics, and can run hooks from existing pre-commit configuration files without modification.

Prek distinguishes itself through workspace-aware monorepo support, discovering nested project configurations recursively and running hooks independently per project with parent-child ordering. It provides containerized hook execution inside Docker containers, managed language environments for Python, Node, Go, Rust, and other runtimes, and a configurable auto-update system that delays adoption of new hook revisions by a minimum age while validating pinned SHA revisions against upstream refs. The tool also offers parallel project discovery with caching, and can replace remote hook implementations with faster Rust-native versions automatically.

The tool manages the full hook lifecycle including installation of Git shims for automatic execution, selective hook execution by project or ID, dry-run previews, and CI integration. It supports file filtering by regex or glob patterns, hook execution ordering with numeric priority, and output control for debugging. Configuration validation, cache management, and migration from existing pre-commit setups are provided through dedicated commands.

Features

  • Git Hook Managers - Runs and manages Git hooks across repositories with a single binary that requires no external runtime dependencies.
  • Git Hook Managers - Executes configured Git hooks as a single binary without requiring Python or other runtimes.
  • Pre-commit Hooks - Executes Git hooks defined in pre-commit config files using a single Rust binary without requiring Python or other runtimes.
  • Offline Hook Executions - Runs hooks from a built-in repository without network access or environment setup, enabling fully offline operation.
  • Offline Hook Execution - Runs hooks from a built-in repository requiring no cloning, environment setup, or network connection.
  • Git Hooks - Natively executes common pre-commit hooks using Rust code bundled in the binary.
  • Directory-Scoped Hook Runs - Applies each configuration file only to files within its own directory, supporting independent nested projects.
  • Monorepo Hook Execution - Runs hooks across multiple independent projects in a monorepo concurrently with parent-child ordering.
  • Fast Hook Runners - Executes configured Git hooks on all files up to four times faster than the standard pre-commit tool.
  • Pre-Commit Migrations - Executes Git hooks from existing .pre-commit-config.yaml files without requiring configuration changes.
  • TOML Configuration Support - Enables project configuration using structured TOML files for defining hook repositories and settings.
  • Dual-Format Configuration Support - Supports a native TOML configuration format alongside standard YAML with a migration utility.
  • Nested Project Configurations - Scopes hook configurations to individual subdirectories, preventing parent configs from processing nested project files.
  • Configuration Hooks - Executes all hooks defined in the configuration file against the current workspace.
  • Git Hook Configurations - Defines which hooks to run by listing repositories and hook IDs in a TOML or YAML configuration file.
  • Automatic Workspace Discoveries - Walks up the directory tree to find the workspace root and recursively discovers all projects with hook configurations.
  • Monorepo Hook Workspaces - Discovers nested project configurations recursively and runs hooks independently per project with parent-child ordering.
  • Workspace Hook Execution - Processes hooks across multiple projects in a monorepo concurrently with parent-child ordering.
  • Built-in Hook Listings - Runs pre-built, offline hooks shipped with the tool by referencing them with a builtin repo source.
  • Declarative Configuration Files - Defines hook sources and rules in a declarative TOML or YAML config file parsed at runtime.
  • Directory-Scoped File Processing - Restricts each project's hooks to only process files within its own directory tree, preventing cross-project interference.
  • Native Hook Implementations - Ships bundled Rust implementations of common hooks for faster startup and lower overhead.
  • Git Hook Repositories - Ships a built-in repository of pre-compiled Git hooks for fully offline execution without network access.
  • Pre-Commit Hook Runners - A Git hook manager implemented in Rust that runs configured hooks faster using parallel execution and bundled implementations.
  • YAML Configuration Files - Defines hook repositories and settings in YAML configuration files with anchors and aliases.
  • Per-Directory Configuration Scoping - Associates each configuration file with its own project directory, enabling independent hook runs for nested subprojects.
  • Subproject File Isolation - Marks nested projects as orphan so their files are handled only by their own configuration and ignored by parent projects.
  • Nested Project Configurations - Scopes hook configurations to individual subdirectories, preventing parent configs from processing nested project files.
  • Directory-Scoped File Processing - Restricts each project's hooks to only process files within its own directory tree, preventing cross-project interference.
  • Native Hook Executors - Executes Git hooks using compiled Rust binaries instead of Python interpreters, eliminating runtime dependencies.
  • Monorepo Tooling - Supports separate hook configurations per project in a monorepo and runs independent projects concurrently.
  • Cooldown-Based Hook Updaters - Updates pinned hook revisions with a configurable cooldown period and validates them against upstream refs.
  • Structural File Validators - Checks files for whitespace issues, line endings, encoding markers, and JSON/TOML/YAML/XML validity before committing.
  • Staged File Processors - Executes configured hooks against files in the Git staging area.
  • Hook File Filters - Applies include and exclude patterns to candidate file paths before hooks run.
  • Concurrent Hook Executions - Executes hooks concurrently by priority and independent projects in parallel.
  • Dependency Update Cooldowns - Delays adoption of new hook revisions by a configurable minimum age before automatic updates.
  • Stage-Restricted Hook Configurations - Restricts hooks to run only during specific Git lifecycle events like pre-commit or pre-push.
  • Inline Hook Definitions - Defines hooks inline within the project's own configuration file.
  • Project-Isolated Hook Contexts - Executes each project's hooks within its own directory to prevent cross-project interference.
  • Subproject File Scope Isolations - Marks a sub-project as orphan so its files are handled only by its own configuration.
  • Deepest-First Project Executions - Runs projects from the deepest subdirectory to the root so more specific configurations take precedence.
  • Pinned Revision Validators - Checks pinned SHA revisions against upstream refs and detects impostor commits during auto-update.
  • Stage-Restricted Hook Configurations - Limits which Git hook stages a hook is eligible to run in.
  • Hook Execution Exclusions - Uses a colon-slash selector syntax to target individual hooks, entire projects, or specific hooks within a project.
  • CI Environment Hook Configurations - Runs all configured git hooks against every file in a repository as part of a CI pipeline.
  • Shared Hook Environments - Reuses toolchains and virtual environments across hooks and repositories to reduce disk usage.
  • Hook File Filters - Filters candidate files using regex or glob patterns at global and hook levels before execution.
  • Staged File Execution - Executes configured hooks against staged files, the whole repository, or a single hook by ID.
  • Isolated Hook Environments - Creates isolated runtime environments per hook language using language-specific package managers and toolchains.
  • Commit Blockers - Blocks commits that contain large files, private keys, merge conflicts, broken symlinks, or files destined for protected branches.
  • Hook Execution Skipping - Excludes specific hooks or projects from execution using selector syntax and environment variables.
  • Project-Targeted Hook Selections - Selects or skips multiple projects and hooks in workspace mode for targeted execution.
  • Selective Hook Executions - Uses a flexible selector syntax to target or exclude individual hooks, projects, or subprojects.
  • Numeric Priority Orderings - Assigns numeric priorities to hooks for deterministic ordering and concurrent execution grouping.
  • Execution Priorities - Assigns numerical weights to hooks to control execution sequence and concurrency grouping.
  • Hook Revision Auto-Updates - Checks for newer pinned revisions of hooks, applies a cooldown period, and validates SHA refs against upstream.
  • Pinned Revision Updates - Automatically updates pinned hook repository revisions to their latest versions.
  • Developer Tools - Dependency-free alternative to pre-commit.
  • Development Tools - Fast, dependency-free alternative to pre-commit hooks.

Star history

Star history chart for j178/prekStar history chart for j178/prek

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does j178/prek do?

Prek is a Git hook manager written in Rust that runs configured hooks as a single binary without requiring Python or other external runtimes. It executes hooks faster than standard tools through parallel processing and bundled Rust implementations, and includes a built-in hook repository that enables fully offline operation without network access or environment setup. The tool supports both TOML and YAML configuration formats with identical semantics, and can run hooks from…

What are the main features of j178/prek?

The main features of j178/prek are: Git Hook Managers, Pre-commit Hooks, Offline Hook Executions, Offline Hook Execution, Git Hooks, Directory-Scoped Hook Runs, Monorepo Hook Execution, Fast Hook Runners.

What are some open-source alternatives to j178/prek?

Open-source alternatives to j178/prek include: sds/overcommit — Overcommit is a Git hook manager and pre-commit validation framework designed to automate the execution of scripts and… brigade/overcommit — Overcommit is a Git hook manager and workflow automation system used to configure, deploy, and orchestrate scripts… lint-staged/lint-staged — Lint-staged is a command-line utility designed to automate code quality checks and formatting tasks within a Git… evilmartians/lefthook — Lefthook is a Git hook manager and workflow automation tool designed to execute user-defined scripts during version… phpro/grumphp — GrumPHP is a Git commit validator and PHP code quality orchestrator. It functions as a Git hook manager that automates… pre-commit/pre-commit — Pre-commit is a framework for managing and executing automated tasks during the version control commit process. It…

Open-source alternatives to Prek

Similar open-source projects, ranked by how many features they share with Prek.
  • sds/overcommitsds avatar

    sds/overcommit

    4,008View on GitHub↗

    Overcommit is a Git hook manager and pre-commit validation framework designed to automate the execution of scripts and checks during various Git events. It serves as a workflow automation tool that ensures code quality and project standards are met before changes are committed or pushed to a remote repository. The system distinguishes itself through a comprehensive YAML-based configuration that allows for detailed hook behavior control, including file execution filtering, conditional skipping, and the management of hook dependencies. It provides specialized roles such as a commit message vali

    Ruby
    View on GitHub↗4,008
  • brigade/overcommitbrigade avatar

    brigade/overcommit

    4,008View on GitHub↗

    Overcommit is a Git hook manager and workflow automation system used to configure, deploy, and orchestrate scripts that enforce coding standards and project workflows. It acts as a management layer for distributed hook configuration, applying global templates across multiple repositories to ensure consistent validation rules. The system functions as a parallel task runner, executing multiple validation scripts concurrently across CPU cores to reduce the time spent during pre-commit checks. It distinguishes itself through signature-based integrity verification to detect unauthorized changes to

    Ruby
    View on GitHub↗4,008
  • lint-staged/lint-stagedlint-staged avatar

    lint-staged/lint-staged

    14,460View on GitHub↗

    Lint-staged is a command-line utility designed to automate code quality checks and formatting tasks within a Git repository. It functions as a pre-commit hook runner that executes defined operations exclusively on files currently staged for commit, ensuring that only code meeting project standards is permanently saved. The tool distinguishes itself by providing granular control over the development workflow through file filtering and task orchestration. It uses glob-pattern matching to isolate specific file types and executes sequences of shell commands in a strict order. To maintain reposito

    JavaScriptdeveloper-experienceeslintgit
    View on GitHub↗14,460
  • evilmartians/lefthookevilmartians avatar

    evilmartians/lefthook

    7,598View on GitHub↗

    Lefthook is a Git hook manager and workflow automation tool designed to execute user-defined scripts during version control events. It automates the execution of linters, tests, and formatters to validate changes and maintain code quality before commits or pushes. The project distinguishes itself through a parallel execution model that runs multiple shell commands concurrently to reduce latency. It supports complex configuration management, including the ability to merge global, remote, and local settings and synchronize configurations from external repositories to standardize development env

    Gogitgogolang
    View on GitHub↗7,598
  • See all 30 alternatives to Prek→