[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5564":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},5564,"prek","j178\u002Fprek","j178","⚡ A fast Git hook manager written in Rust, designed as a drop-in alternative to pre-commit, reimagined.","https:\u002F\u002Fprek.j178.dev\u002F",null,"Rust",7819,219,15,56,0,11,42,218,49,38.03,"MIT License",false,"master",true,[27,28,29],"git","git-hooks","pre-commit","2026-06-12 02:01:12","\u003Cdiv align=\"center\">\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fj178\u002Fprek\u002Fmaster\u002Fdocs\u002Fassets\u002Flogo-dark.png\">\n  \u003Cimg width=\"600\" alt=\"prek\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fj178\u002Fprek\u002Fmaster\u002Fdocs\u002Fassets\u002Flogo.png\" \u002F>\n\u003C\u002Fpicture>\n\n[![prek](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fj178\u002Fprek\u002Fmaster\u002Fdocs\u002Fassets\u002Fbadge-v0.json)](https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fprek.svg)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fprek)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgithub\u002Fj178\u002Fprek\u002Fgraph\u002Fbadge.svg?token=MP6TY24F43)](https:\u002F\u002Fcodecov.io\u002Fgithub\u002Fj178\u002Fprek)\n[![PyPI Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fprek?logo=python)](https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fprek)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1403581202102878289?logo=discord)](https:\u002F\u002Fdiscord.gg\u002F3NRJUqJz86)\n\n\u003C\u002Fdiv>\n\n\u003C!-- --8\u003C-- [start: description] -->\n\n[pre-commit](https:\u002F\u002Fpre-commit.com\u002F) is a framework to run hooks written in many languages, and it manages the\nlanguage toolchain and dependencies for running the hooks.\n\n*prek* is a reimagined version of pre-commit, built in Rust.\nIt is designed to be a faster, dependency-free and drop-in alternative for it,\nwhile also providing some additional long-requested features.\n\n\u003C!-- --8\u003C-- [end: description] -->\n\n> [!NOTE]\n> Although prek is pretty new, it’s already powering real‑world projects like [CPython](https:\u002F\u002Fgithub.com\u002Fpython\u002Fcpython), [Apache Airflow](https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow), [FastAPI](https:\u002F\u002Fgithub.com\u002Ffastapi\u002Ffastapi), and more projects are picking it up—see [Who is using prek?](#who-is-using-prek). If you’re looking for an alternative to `pre-commit`, please give it a try—we’d love your feedback!\n>\n> Please note that some languages are not yet supported for full drop‑in parity with `pre-commit`. See [Language Support](https:\u002F\u002Fprek.j178.dev\u002Flanguages\u002F) for current status.\n\n\u003C!-- --8\u003C-- [start:features] -->\n\n## Features\n\n- A single binary with no dependencies, does not require Python or any other runtime.\n- [Faster](https:\u002F\u002Fprek.j178.dev\u002Fbenchmark\u002F) than `pre-commit` and more efficient in disk space usage.\n- Fully compatible with the original pre-commit configurations and hooks.\n- Built-in support for monorepos (i.e. [workspace mode](https:\u002F\u002Fprek.j178.dev\u002Fworkspace\u002F)).\n- Integration with [`uv`](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv) for managing Python virtual environments and dependencies.\n- Improved toolchain installations for Python, Node.js, Bun, Go, Rust and Ruby, shared between hooks.\n- [Built-in](https:\u002F\u002Fprek.j178.dev\u002Fbuiltin\u002F) Rust-native implementation of some common hooks.\n\n\u003C!-- --8\u003C-- [end:features] -->\n\n## Table of contents\n\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [Why prek?](#why-prek)\n- [Who is using prek?](#who-is-using-prek)\n- [Acknowledgements](#acknowledgements)\n\n## Installation\n\n\u003Cdetails>\n\u003Csummary>Standalone installer\u003C\u002Fsummary>\n\nprek provides a standalone installer script to download and install the tool,\n\nOn Linux and macOS:\n\n\u003C!-- --8\u003C-- [start: linux-standalone-install] -->\n\n```bash\ncurl --proto '=https' --tlsv1.2 -LsSf https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek\u002Freleases\u002Fdownload\u002Fv0.3.13\u002Fprek-installer.sh | sh\n```\n\n\u003C!-- --8\u003C-- [end: linux-standalone-install] -->\n\nOn Windows:\n\n\u003C!-- --8\u003C-- [start: windows-standalone-install] -->\n\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek\u002Freleases\u002Fdownload\u002Fv0.3.13\u002Fprek-installer.ps1 | iex\"\n```\n\n\u003C!-- --8\u003C-- [end: windows-standalone-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>PyPI\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: pypi-install] -->\n\nprek is published as Python binary wheel to PyPI, you can install it using `pip`, `uv` (recommended), or `pipx`:\n\n```bash\n# Using uv (recommended)\nuv tool install prek\n\n# Using uvx (install and run in one command)\nuvx prek\n\n# Adding prek to the project dev-dependencies\nuv add --dev prek\n\n# Using pip\npip install prek\n\n# Using pipx\npipx install prek\n```\n\n\u003C!-- --8\u003C-- [end: pypi-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Homebrew\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: homebrew-install] -->\n\n```bash\nbrew install prek\n```\n\n\u003C!-- --8\u003C-- [end: homebrew-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>mise\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: mise-install] -->\n\nTo use prek with [mise](https:\u002F\u002Fmise.jdx.dev) ([v2025.8.11](https:\u002F\u002Fgithub.com\u002Fjdx\u002Fmise\u002Freleases\u002Ftag\u002Fv2025.8.11) or later):\n\n```bash\nmise use prek\n```\n\n\u003C!-- --8\u003C-- [end: mise-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Cargo binstall\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: cargo-binstall] -->\n\nInstall pre-compiled binaries from GitHub using [cargo-binstall](https:\u002F\u002Fgithub.com\u002Fcargo-bins\u002Fcargo-binstall):\n\n```bash\ncargo binstall prek\n```\n\n\u003C!-- --8\u003C-- [end: cargo-binstall] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Cargo\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: cargo-install] -->\n\nBuild from source using Cargo (Rust 1.89+ is required):\n\n```bash\ncargo install --locked prek\n```\n\n\u003C!-- --8\u003C-- [end: cargo-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>npmjs\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: npmjs-install] -->\n\nprek is published as a [Node.js package](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@j178\u002Fprek)\nand can be installed with any npm-compatible package manager:\n\n```bash\n# As a dev dependency\nnpm add -D @j178\u002Fprek\npnpm add -D @j178\u002Fprek\nbun add -D @j178\u002Fprek\n\n# Or install globally\nnpm install -g @j178\u002Fprek\npnpm add -g @j178\u002Fprek\nbun install -g @j178\u002Fprek\n\n# Or run directly without installing\nnpx @j178\u002Fprek --version\nbunx @j178\u002Fprek --version\n```\n\n\u003C!-- --8\u003C-- [end: npmjs-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Nix\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: nix-install] -->\n\nprek is available via [Nixpkgs](https:\u002F\u002Fsearch.nixos.org\u002Fpackages?channel=unstable&show=prek&query=prek).\n\n```shell\n# Choose what's appropriate for your use case.\n# One-off in a shell:\nnix-shell -p prek\n\n# NixOS or non-NixOS without flakes:\nnix-env -iA nixos.prek\n\n# Non-NixOS with flakes:\nnix profile install nixpkgs#prek\n```\n\n\u003C!-- --8\u003C-- [end: nix-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Conda\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: conda-forge-install] -->\n\nprek is available as `prek` via [conda-forge](https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fprek).\n\n```shell\nconda install conda-forge::prek\n```\n\n\u003C!-- --8\u003C-- [end: conda-forge-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Scoop (Windows)\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: scoop-install] -->\n\nprek is available via [Scoop](https:\u002F\u002Fscoop.sh\u002F#\u002Fapps?q=prek).\n\n```powershell\nscoop install main\u002Fprek\n```\n\n\u003C!-- --8\u003C-- [end: scoop-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Winget (Windows)\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: winget-install] -->\n\nprek is available via [winget](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fpackage-manager\u002Fwinget\u002F).\n\n```powershell\nwinget install --id j178.Prek\n```\n\n\u003C!-- --8\u003C-- [end: winget-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>MacPorts\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: macports-install] -->\n\nprek is available via [MacPorts](https:\u002F\u002Fports.macports.org\u002Fport\u002Fprek\u002F).\n\n```bash\nsudo port install prek\n```\n\n\u003C!-- --8\u003C-- [end: macports-install] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>GitHub Releases\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: pre-built-binaries] -->\n\nPre-built binaries are available for download from the [GitHub releases](https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek\u002Freleases) page.\n\n\u003C!-- --8\u003C-- [end: pre-built-binaries] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>GitHub Actions\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: github-actions] -->\n\nprek can be used in GitHub Actions via the [j178\u002Fprek-action](https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek-action) repository.\n\nExample workflow:\n\n```yaml\nname: Prek checks\non: [push, pull_request]\n\njobs:\n  prek:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v6\n      - uses: j178\u002Fprek-action@v2\n```\n\nThis action installs prek and runs `prek run --all-files` on your repository.\n\nprek is also available via [`taiki-e\u002Finstall-action`](https:\u002F\u002Fgithub.com\u002Ftaiki-e\u002Finstall-action) for installing various tools.\n\n\u003C!-- --8\u003C-- [end: github-actions] -->\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>prek skill for agents\u003C\u002Fsummary>\n\n\u003C!-- --8\u003C-- [start: gh-skill-install] -->\n\nTo let agents use `prek`, install the `prek` skill with `gh skill` (`v2.90.0+`):\n\n```bash\ngh skill install j178\u002Fprek prek\n```\n\n\u003C!-- --8\u003C-- [end: gh-skill-install] -->\n\n\u003C\u002Fdetails>\n\n\u003C!-- --8\u003C-- [start: self-update] -->\n\nIf installed via the standalone installer, prek can update itself to the latest version:\n\n```bash\nprek self update\n```\n\n\u003C!-- --8\u003C-- [end: self-update] -->\n\n## Quick start\n\n- **I already use pre-commit:** follow the short migration checklist in the [quickstart guide](https:\u002F\u002Fprek.j178.dev\u002Fquickstart\u002F#already-using-pre-commit) to swap in `prek` safely.\n- **I'm new to pre-commit-style tools:** learn the basics—creating a config, running hooks, and installing Git shims—in the [beginner quickstart walkthrough](https:\u002F\u002Fprek.j178.dev\u002Fquickstart\u002F#new-to-pre-commit-style-workflows).\n\n\u003C!-- --8\u003C-- [start: why] -->\n\n## Why prek?\n\n### prek is faster\n\n- It is [multiple times faster](https:\u002F\u002Fprek.j178.dev\u002Fbenchmark\u002F) than `pre-commit` while also using less disk space.\n- Hook environments and toolchains are shared across hooks instead of being duplicated per repository, which reduces both install time and cache size.\n- Repositories are fetched in parallel, hook environments are prepared in parallel when their dependencies do not overlap, and hooks can run concurrently by [`priority`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fconfiguration\u002F#priority).\n- It uses [`uv`](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv) for creating Python virtualenvs and installing dependencies, which is known for its speed and efficiency.\n- It implements some common hooks in Rust as [builtins](https:\u002F\u002Fprek.j178.dev\u002Fbuiltin\u002F), which are faster than their Python counterparts.\n- It supports `repo: builtin` for offline, zero-setup hooks, which is not available in `pre-commit`.\n\n### prek is easier to work with\n\n- No need to install Python or any other runtime just to use `prek`; it is a single binary.\n- `prek` automatically installs the toolchains it needs for supported languages, so you spend less time managing Python versions, Node runtimes, Ruby installs, and similar setup.\n- It supports native [`prek.toml`](https:\u002F\u002Fprek.j178.dev\u002Fconfiguration\u002F) in addition to pre-commit YAML, and [`prek util yaml-to-toml`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-util-yaml-to-toml) helps migrate existing configs.\n- Built-in support for [workspaces](https:\u002F\u002Fprek.j178.dev\u002Fworkspace\u002F) means monorepos can keep separate configs per project and still run everything from one command.\n- [`prek install`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-install) and [`prek uninstall`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-uninstall) honor repo-local and worktree-local `core.hooksPath`.\n- [`prek run`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-run) supports selecting or skipping multiple projects or hooks in workspace mode, instead of only accepting a single optional hook id, and adds quality-of-life improvements such as `--dry-run`, `--directory`, `--last-commit`, and `--no-fail-fast`.\n- [`prek list`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-list), [`prek util identify`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-util-identify), and [`prek util list-builtins`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-util-list-builtins) make it easier to inspect configured hooks, debug file matching, and discover builtins.\n\n### prek includes security-focused safeguards\n\n- [`prek auto-update`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-auto-update) supports `--cooldown-days`, so you can keep newly published releases on hold for a cooling-off period before adopting them.\n- [`prek auto-update`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-auto-update) validates pinned SHA revisions against the fetched upstream refs, including impostor-commit detection, and keeps `# frozen:` comments in sync with the configured commit.\n- [`prek auto-update --check`](https:\u002F\u002Fprek.j178.dev\u002Freference\u002Fcli\u002F#prek-auto-update--check) is useful in CI when you want updates or frozen-reference mismatches to fail the job without rewriting the config.\n\nFor more detailed improvements prek offers, take a look at [Difference from pre-commit](https:\u002F\u002Fprek.j178.dev\u002Fdiff\u002F).\n\n## Who is using prek?\n\nprek is pretty new, but it is already being used or recommended by some projects and organizations.\nGitHub stars are current as of April 15, 2026.\n\n- [apache\u002Fairflow](https:\u002F\u002Fgithub.com\u002Fapache\u002Fairflow\u002Fissues\u002F44995) \u003Csub>45,050 stars\u003C\u002Fsub>\n- [apache\u002Figgy](https:\u002F\u002Fgithub.com\u002Fapache\u002Figgy\u002Fpull\u002F2383) \u003Csub>4,116 stars\u003C\u002Fsub>\n- [apache\u002Flucene](https:\u002F\u002Fgithub.com\u002Fapache\u002Flucene\u002Fpull\u002F15629) \u003Csub>3,401 stars\u003C\u002Fsub>\n- [ast-grep\u002Fast-grep](https:\u002F\u002Fgithub.com\u002Fast-grep\u002Fast-grep.github.io\u002Fcommit\u002Fe30818144b2967a7f9172c8cf2f4596bba219bf5) \u003Csub>13,413 stars\u003C\u002Fsub>\n- [astral-sh\u002Fruff](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\u002Fpull\u002F22505) \u003Csub>47,070 stars\u003C\u002Fsub>\n- [astral-sh\u002Fty](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fty\u002Fpull\u002F2469) \u003Csub>18,308 stars\u003C\u002Fsub>\n- [authlib\u002Fauthlib](https:\u002F\u002Fgithub.com\u002Fauthlib\u002Fauthlib\u002Fpull\u002F804) \u003Csub>5,271 stars\u003C\u002Fsub>\n- [cachix\u002Fdevenv](https:\u002F\u002Fgithub.com\u002Fcachix\u002Fdevenv\u002Fpull\u002F2304) \u003Csub>6,665 stars\u003C\u002Fsub>\n- [cocoindex-io\u002Fcocoindex](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1564) \u003Csub>6,865 stars\u003C\u002Fsub>\n- [commitizen-tools\u002Fcommitizen](https:\u002F\u002Fgithub.com\u002Fcommitizen-tools\u002Fcommitizen) \u003Csub>3,377 stars\u003C\u002Fsub>\n- [DetachHead\u002Fbasedpyright](https:\u002F\u002Fgithub.com\u002FDetachHead\u002Fbasedpyright\u002Fpull\u002F1413) \u003Csub>3,267 stars\u003C\u002Fsub>\n- [django\u002Fdjangoproject.com](https:\u002F\u002Fgithub.com\u002Fdjango\u002Fdjangoproject.com\u002Fpull\u002F2252) \u003Csub>1,994 stars\u003C\u002Fsub>\n- [fastapi\u002Fasyncer](https:\u002F\u002Fgithub.com\u002Ffastapi\u002Fasyncer\u002Fpull\u002F437) \u003Csub>2,407 stars\u003C\u002Fsub>\n- [fastapi\u002Ffastapi](https:\u002F\u002Fgithub.com\u002Ffastapi\u002Ffastapi\u002Fpull\u002F14572) \u003Csub>97,209 stars\u003C\u002Fsub>\n- [fastapi\u002Ftyper](https:\u002F\u002Fgithub.com\u002Ffastapi\u002Ftyper\u002Fpull\u002F1453) \u003Csub>19,210 stars\u003C\u002Fsub>\n- [Future-House\u002Fpaper-qa](https:\u002F\u002Fgithub.com\u002FFuture-House\u002Fpaper-qa\u002Fpull\u002F1098) \u003Csub>8,377 stars\u003C\u002Fsub>\n- [getsentry\u002Fsentry](https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry\u002Fpull\u002F110808) \u003Csub>43,639 stars\u003C\u002Fsub>\n- [godotengine\u002Fgodot](https:\u002F\u002Fgithub.com\u002Fgodotengine\u002Fgodot\u002Fpull\u002F119150) \u003Csub>110,312 stars\u003C\u002Fsub>\n- [Goldziher\u002Fkreuzberg](https:\u002F\u002Fgithub.com\u002FGoldziher\u002Fkreuzberg\u002Fpull\u002F142) \u003Csub>7,550 stars\u003C\u002Fsub>\n- [home-assistant\u002Fcore](https:\u002F\u002Fgithub.com\u002Fhome-assistant\u002Fcore\u002Fpull\u002F160427) \u003Csub>86,029 stars\u003C\u002Fsub>\n- [jcrist\u002Fmsgspec](https:\u002F\u002Fgithub.com\u002Fjcrist\u002Fmsgspec\u002Fpull\u002F918) \u003Csub>3,692 stars\u003C\u002Fsub>\n- [jlowin\u002Ffastmcp](https:\u002F\u002Fgithub.com\u002Fjlowin\u002Ffastmcp\u002Fpull\u002F2309) \u003Csub>24,539 stars\u003C\u002Fsub>\n- [MoonshotAI\u002Fkimi-cli](https:\u002F\u002Fgithub.com\u002FMoonshotAI\u002Fkimi-cli\u002Fpull\u002F535) \u003Csub>7,800 stars\u003C\u002Fsub>\n- [openclaw\u002Fopenclaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fpull\u002F1720) \u003Csub>357,512 stars\u003C\u002Fsub>\n- [OpenLineage\u002FOpenLineage](https:\u002F\u002Fgithub.com\u002FOpenLineage\u002FOpenLineage\u002Fpull\u002F3965) \u003Csub>2,406 stars\u003C\u002Fsub>\n- [pdm-project\u002Fpdm](https:\u002F\u002Fgithub.com\u002Fpdm-project\u002Fpdm\u002Fpull\u002F3593) \u003Csub>8,553 stars\u003C\u002Fsub>\n- [prowler-cloud\u002Fprowler](https:\u002F\u002Fgithub.com\u002Fprowler-cloud\u002Fprowler\u002Fpull\u002F10601) \u003Csub>13,592 stars\u003C\u002Fsub>\n- [pyodide\u002Fpyodide](https:\u002F\u002Fgithub.com\u002Fpyodide\u002Fpyodide\u002Fpull\u002F6182) \u003Csub>14,527 stars\u003C\u002Fsub>\n- [python-attrs\u002Fattrs](https:\u002F\u002Fgithub.com\u002Fpython-attrs\u002Fattrs\u002Fcommit\u002Fc95b177682e76a63478d29d040f9cb36a8d31915) \u003Csub>5,770 stars\u003C\u002Fsub>\n- [python-telegram-bot\u002Fpython-telegram-bot](https:\u002F\u002Fgithub.com\u002Fpython-telegram-bot\u002Fpython-telegram-bot\u002Fpull\u002F5142) \u003Csub>29,025 stars\u003C\u002Fsub>\n- [python\u002Fcpython](https:\u002F\u002Fgithub.com\u002Fpython\u002Fcpython\u002Fissues\u002F143148) \u003Csub>72,330 stars\u003C\u002Fsub>\n- [simple-icons\u002Fsimple-icons](https:\u002F\u002Fgithub.com\u002Fsimple-icons\u002Fsimple-icons\u002Fpull\u002F14245) \u003Csub>24,873 stars\u003C\u002Fsub>\n\n\u003C!-- --8\u003C-- [end: why] -->\n\n## Acknowledgements\n\nThis project is heavily inspired by the original [pre-commit](https:\u002F\u002Fpre-commit.com\u002F) tool, and it wouldn't be possible without the hard work\nof the maintainers and contributors of that project.\n\nAnd a special thanks to the [Astral](https:\u002F\u002Fgithub.com\u002Fastral-sh) team for their remarkable projects, particularly [uv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv),\nfrom which I've learned a lot on how to write efficient and idiomatic Rust code.\n","prek 是一个用 Rust 语言编写的快速 Git Hook 管理工具，旨在作为 pre-commit 的替代方案。其核心功能包括提供了一个无需额外依赖的单一可执行文件，比 pre-commit 更快且更节省磁盘空间，同时保持与原有 pre-commit 配置和钩子的完全兼容性。此外，prek 支持单体仓库模式，并集成了 `uv` 用于管理 Python 虚拟环境及依赖项，还增强了对 Python、Node.js、Bun、Go、Rust 和 Ruby 工具链的安装支持。适用于需要高效 Git Hook 执行效率以及简化依赖管理的各种软件开发场景，特别适合于已经使用或考虑使用 pre-commit 的项目迁移至性能更优的解决方案。",2,"2026-06-11 03:03:59","top_language"]