{"id":31753942,"url":"https://github.com/mrz1836/go-pre-commit","last_synced_at":"2026-03-09T16:28:48.646Z","repository":{"id":308981234,"uuid":"1034745938","full_name":"mrz1836/go-pre-commit","owner":"mrz1836","description":"🔒 Lightning-fast, Git pre-commit hooks for Go projects - built in pure Go","archived":false,"fork":false,"pushed_at":"2026-03-03T20:12:00.000Z","size":5488,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-03T23:34:55.756Z","etag":null,"topics":["go","golang","pre-commit","pre-commit-hook","pre-commit-hooks"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrz1836.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":".github/AGENTS.md","dco":null,"cla":null},"funding":{"github":"mrz1836","custom":"https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-pre-commit\u0026utm_term=go-pre-commit\u0026utm_content=go-pre-commit","buy_me_a_coffee":"mrz1818"}},"created_at":"2025-08-08T23:06:29.000Z","updated_at":"2026-03-03T20:06:41.000Z","dependencies_parsed_at":"2025-08-09T03:23:03.370Z","dependency_job_id":"b2af2ddf-5719-4004-a109-ce810e81153a","html_url":"https://github.com/mrz1836/go-pre-commit","commit_stats":null,"previous_names":["mrz1836/go-pre-commit"],"tags_count":62,"template":false,"template_full_name":"mrz1836/go-template","purl":"pkg:github/mrz1836/go-pre-commit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-pre-commit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-pre-commit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-pre-commit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-pre-commit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrz1836","download_url":"https://codeload.github.com/mrz1836/go-pre-commit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-pre-commit/sbom","scorecard":{"id":926044,"data":{"date":"2025-08-25T08:05:03Z","repo":{"name":"github.com/mrz1836/go-pre-commit","commit":"cb8045501182150229fc97afdeb1f290f25e9245"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":6.9,"checks":[{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/24 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/auto-merge-on-approval.yml:89","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:32","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dependabot-auto-merge.yml:88","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress-coverage.yml:110","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/fortress-coverage.yml:114","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress-coverage.yml:2094","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress-release.yml:55","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress-test-suite.yml:73","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress-test-suite.yml:412","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress-test-suite.yml:607","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/fortress-test-suite.yml:720","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress-test-suite.yml:716","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:62","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:97","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:116","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:128","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:176","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:257","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:276","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress.yml:379","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:195","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:214","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/fortress.yml:234","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/fortress.yml:230","Info: jobLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:389","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:254","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:339","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:432","Warn: jobLevel 'actions' permission set to 'write': .github/workflows/pull-request-management.yml:536","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:537","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pull-request-management.yml:639","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:86","Info: jobLevel 'contents' permission set to 'read': .github/workflows/sync-labels.yml:103","Info: topLevel 'contents' permission set to 'read': .github/workflows/auto-merge-on-approval.yml:39","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:23","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependabot-auto-merge.yml:35","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-benchmarks.yml:48","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-code-quality.yml:54","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-coverage.yml:53","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-performance-summary.yml:78","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-pre-commit.yml:46","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-release.yml:45","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-security-scans.yml:53","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-setup-config.yml:133","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-test-magex.yml:27","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress-test-suite.yml:63","Info: topLevel 'contents' permission set to 'read': .github/workflows/fortress.yml:45","Info: topLevel 'contents' permission set to 'read': .github/workflows/pull-request-management.yml:36","Info: topLevel 'contents' permission set to 'read': .github/workflows/scorecard.yml:23","Info: topLevel 'contents' permission set to 'read': .github/workflows/stale-check.yml:32","Info: topLevel 'contents' permission set to 'read': .github/workflows/sync-labels.yml:36"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-benchmarks.yml:66","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-benchmarks.yml:105","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-benchmarks.yml:113","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-benchmarks.yml:157","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:83","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:122","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:130","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:176","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:191","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:227","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:257","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress-test-suite.yml:345","Info: Possibly incomplete results: error parsing job operating system: .github/workflows/fortress.yml:150","Info:  63 out of  63 GitHub-owned GitHubAction dependencies pinned","Info:   7 out of   7 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (12) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.14 not signed: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241670565","Warn: release artifact v1.1.13 not signed: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241663866","Warn: release artifact v1.1.12 not signed: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241538226","Warn: release artifact v1.1.11 not signed: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241382297","Warn: release artifact v1.1.10 not signed: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241033799","Warn: release artifact v1.1.14 does not have provenance: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241670565","Warn: release artifact v1.1.13 does not have provenance: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241663866","Warn: release artifact v1.1.12 does not have provenance: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241538226","Warn: release artifact v1.1.11 does not have provenance: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241382297","Warn: release artifact v1.1.10 does not have provenance: https://api.github.com/repos/mrz1836/go-pre-commit/releases/241033799"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: GoBuiltInFuzzer integration found: internal/checks/builtin/fuzz_test.go:12","Info: GoBuiltInFuzzer integration found: internal/checks/builtin/fuzz_test.go:56","Info: GoBuiltInFuzzer integration found: internal/checks/builtin/fuzz_test.go:105","Info: GoBuiltInFuzzer integration found: internal/checks/builtin/fuzz_test.go:159","Info: GoBuiltInFuzzer integration found: internal/config/fuzz_test.go:9","Info: GoBuiltInFuzzer integration found: internal/config/fuzz_test.go:39","Info: GoBuiltInFuzzer integration found: internal/config/fuzz_test.go:69","Info: GoBuiltInFuzzer integration found: internal/config/fuzz_test.go:95","Info: GoBuiltInFuzzer integration found: internal/config/fuzz_test.go:125","Info: GoBuiltInFuzzer integration found: internal/git/fuzz_test.go:15","Info: GoBuiltInFuzzer integration found: internal/git/fuzz_test.go:49","Info: GoBuiltInFuzzer integration found: internal/git/fuzz_test.go:115","Info: GoBuiltInFuzzer integration found: internal/git/fuzz_test.go:146","Info: GoBuiltInFuzzer integration found: internal/git/fuzz_test.go:197","Info: GoBuiltInFuzzer integration found: internal/runner/fuzz_test.go:15","Info: GoBuiltInFuzzer integration found: internal/runner/fuzz_test.go:92","Info: GoBuiltInFuzzer integration found: internal/runner/fuzz_test.go:175","Info: GoBuiltInFuzzer integration found: internal/runner/fuzz_test.go:240","Info: GoBuiltInFuzzer integration found: internal/runner/fuzz_test.go:296"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":4,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'master'","Warn: 'stale review dismissal' is disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: 'last push approval' is disabled on branch 'master'","Warn: 'up-to-date branches' is disabled on branch 'master'","Info: status check found to merge onto on branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: found contributions from: skyetel @buxorg @bitcoinschema @tonicpow  @bitcoin-sv"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}},{"name":"CI-Tests","score":10,"reason":"6 out of 6 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-08-26T04:25:26.314Z","repository_id":308981234,"created_at":"2025-08-26T04:25:26.314Z","updated_at":"2025-08-26T04:25:26.314Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30302408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T14:33:48.460Z","status":"ssl_error","status_checked_at":"2026-03-09T14:33:48.027Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","pre-commit","pre-commit-hook","pre-commit-hooks"],"created_at":"2025-10-09T17:59:02.363Z","updated_at":"2026-03-09T16:28:48.634Z","avatar_url":"https://github.com/mrz1836.png","language":"Go","funding_links":["https://github.com/sponsors/mrz1836","https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-pre-commit\u0026utm_term=go-pre-commit\u0026utm_content=go-pre-commit","https://buymeacoffee.com/mrz1818"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🔒\u0026nbsp;\u0026nbsp;go-pre-commit\n\n**Lightning-fast, Git pre-commit hooks for Go projects - built in pure Go**\n\n\u003cbr/\u003e\n\n\u003ca href=\"https://github.com/mrz1836/go-pre-commit/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-pre/mrz1836/go-pre-commit?include_prereleases\u0026style=flat-square\u0026logo=github\u0026color=black\" alt=\"Release\"\u003e\u003c/a\u003e\n\u003ca href=\"https://golang.org/\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/mrz1836/go-pre-commit?style=flat-square\u0026logo=go\u0026color=00ADD8\" alt=\"Go Version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/mrz1836/go-pre-commit/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/mrz1836/go-pre-commit?style=flat-square\u0026color=blue\" alt=\"License\"\u003e\u003c/a\u003e\n\n\u003cbr/\u003e\n\n\u003ctable align=\"center\" border=\"0\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"right\"\u003e\n       \u003ccode\u003eCI / CD\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-pre-commit/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/mrz1836/go-pre-commit/fortress.yml?branch=master\u0026label=build\u0026logo=github\u0026style=flat-square\u0026v=2\" alt=\"Build\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-pre-commit/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/mrz1836/go-pre-commit?style=flat-square\u0026logo=git\u0026logoColor=white\u0026label=last%20update\" alt=\"Last Commit\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"right\"\u003e\n       \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003ccode\u003eQuality\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://goreportcard.com/report/github.com/mrz1836/go-pre-commit\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/mrz1836/go-pre-commit?style=flat-square\" alt=\"Go Report\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://mrz1836.github.io/go-pre-commit/\" target=\"_blank\"\u003e\u003cimg src=\"https://mrz1836.github.io/go-pre-commit/coverage-flat-square.svg\" alt=\"Code Coverage\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd align=\"right\"\u003e\n       \u003ccode\u003eSecurity\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://scorecard.dev/viewer/?uri=github.com/mrz1836/go-pre-commit\"\u003e\u003cimg src=\"https://api.scorecard.dev/projects/github.com/mrz1836/go-pre-commit/badge?style=flat-square\" alt=\"Scorecard\"\u003e\u003c/a\u003e\n       \u003ca href=\".github/SECURITY.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/policy-active-success?style=flat-square\u0026logo=security\u0026logoColor=white\" alt=\"Security\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"right\"\u003e\n       \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003ccode\u003eCommunity\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-pre-commit/graphs/contributors\"\u003e\u003cimg src=\"https://img.shields.io/github/contributors/mrz1836/go-pre-commit?style=flat-square\u0026color=orange\" alt=\"Contributors\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-pre-commit\u0026utm_term=go-pre-commit\u0026utm_content=go-pre-commit\"\u003e\u003cimg src=\"https://img.shields.io/badge/donate-bitcoin-ff9900?style=flat-square\u0026logo=bitcoin\" alt=\"Bitcoin\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### \u003ccode\u003eProject Navigation\u003c/code\u003e\n\n\u003c/div\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n       🚀\u0026nbsp;\u003ca href=\"#-quickstart\"\u003e\u003ccode\u003eQuickstart\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n       ⚙️\u0026nbsp;\u003ca href=\"#-configuration\"\u003e\u003ccode\u003eConfiguration\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n       🎯\u0026nbsp;\u003ca href=\"#-available-checks\"\u003e\u003ccode\u003eAvailable\u0026nbsp;Checks\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n       🔌\u0026nbsp;\u003ca href=\"#-plugin-system\"\u003e\u003ccode\u003ePlugin\u0026nbsp;System\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n       🧪\u0026nbsp;\u003ca href=\"#-examples--tests\"\u003e\u003ccode\u003eExamples\u0026nbsp;\u0026\u0026nbsp;Tests\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n       🤝\u0026nbsp;\u003ca href=\"#-contributing\"\u003e\u003ccode\u003eContributing\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr/\u003e\n\n## 🚀 Quickstart\n\nGet up and running with `go-pre-commit` in 30 seconds:\n\n### Install the binary\n\n```bash\n# Install from source (requires Go 1.25+)\ngo install github.com/mrz1836/go-pre-commit/cmd/go-pre-commit@latest\n\n# Upgrade to the latest version\ngo-pre-commit upgrade --force\n```\n\n\u003cbr\u003e\n\n### Install [MAGE-X](https://github.com/mrz1836/mage-x) build tool\n\n```bash\n# Install MAGE-X for development and building\ngo install github.com/mrz1836/mage-x/cmd/magex@latest\nmagex update:install\n```\n\n\u003cbr\u003e\n\n### Set up in your project\n\n```bash\n# Navigate to your Go project\ncd your-go-project\n\n# Install the pre-commit hook\ngo-pre-commit install\n\n# That's it! Your pre-commit hooks are now active!\n```\n\n\u003cbr\u003e\n\n### Test it out\n\n```bash\n# Make a change and commit\necho \"test\" \u003e\u003e test.go\ngit add test.go\ngit commit -m \"Test commit\"\n\n# The pre-commit system will automatically run checks:\n# ✓ Ensuring files end with newline\n# ✓ Running fumpt formatter\n# ✓ Running linter (golangci-lint)\n# ✓ Running go mod tidy\n# ✓ Fixing trailing whitespace\n```\n\n\u003e **Good to know:** `go-pre-commit` is a pure Go solution with minimal external dependencies.\n\u003e It's a single Go binary that replaces Python-based pre-commit frameworks.\n\u003e All formatting and linting tools are automatically installed when needed!\n\n\u003cbr/\u003e\n\n## ⚙️ Configuration\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eEnvironment Configuration\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n`go-pre-commit` uses environment variables for configuration, loaded from `.github/env/` (modular, preferred) or `.github/.env.base` + `.github/.env.custom` (legacy fallback):\n\n```bash\n# Core settings\nENABLE_GO_PRE_COMMIT=true              # Enable/disable the system\nGO_PRE_COMMIT_FAIL_FAST=false          # Stop on first failure\nGO_PRE_COMMIT_TIMEOUT_SECONDS=720      # Overall timeout\nGO_PRE_COMMIT_PARALLEL_WORKERS=2       # Number of parallel workers\n\n# Individual checks\nGO_PRE_COMMIT_ENABLE_EOF=true           # Ensure files end with newline\nGO_PRE_COMMIT_ENABLE_FUMPT=true         # Format with fumpt\nGO_PRE_COMMIT_ENABLE_GITLEAKS=false     # Scan for secrets and credentials\nGO_PRE_COMMIT_ENABLE_LINT=true          # Run golangci-lint\nGO_PRE_COMMIT_ENABLE_MOD_TIDY=true      # Run go mod tidy\nGO_PRE_COMMIT_ENABLE_WHITESPACE=true    # Fix trailing whitespace\n\n# Auto-staging (automatically stage fixed files)\nGO_PRE_COMMIT_EOF_AUTO_STAGE=true\nGO_PRE_COMMIT_FUMPT_AUTO_STAGE=true\nGO_PRE_COMMIT_WHITESPACE_AUTO_STAGE=true\n\n# Color output settings (auto-detected by default)\nGO_PRE_COMMIT_COLOR_OUTPUT=true             # Enable/disable color output\nNO_COLOR=                                   # Set to any value to disable colors (follows standard)\n```\n\n**Configuration System (auto-detected):**\n- **Modular (preferred):** `.github/env/*.env` files loaded in lexicographic order (last wins)\n- **Legacy (fallback):** `.github/.env.base` (defaults) + optional `.github/.env.custom` (overrides)\n- If `.github/env/` exists with \u003e=1 `.env` file, modular mode is used; otherwise falls back to legacy\n\n**Color Output:**\n- Colors are auto-detected based on terminal capabilities and environment\n- Automatically disabled in CI environments (GitHub Actions, GitLab CI, Jenkins, etc.)\n- Respects standard `NO_COLOR` environment variable\n- Can be controlled via `--color` flag or `GO_PRE_COMMIT_COLOR_OUTPUT` setting\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🔄 Workflow Process\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eInstalling Hooks\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n```bash\n# Install default pre-commit hook\ngo-pre-commit install\n\n# Install with specific hook types\ngo-pre-commit install --hook-type pre-commit --hook-type pre-push\n\n# Force reinstall (overwrites existing hooks)\ngo-pre-commit install --force\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eRunning Checks Manually\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n```bash\n# Run all checks on staged files\ngo-pre-commit run\n\n# Run specific checks\ngo-pre-commit run --checks fumpt,lint\n\n# Run on all files (not just staged)\ngo-pre-commit run --all-files\n\n# Skip specific checks\ngo-pre-commit run --skip lint,mod-tidy\n\n# Color output control\ngo-pre-commit run --color=never     # Disable color output\ngo-pre-commit run --color=always    # Force color output\ngo-pre-commit run --color=auto      # Auto-detect (default)\ngo-pre-commit run --no-color        # Same as --color=never\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eStatus \u0026 Updates\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n### Checking status\n\n```bash\n# View installation status and configuration\ngo-pre-commit status\n\n# Shows:\n# - Installation status\n# - Enabled checks\n# - Configuration location\n# - Current settings\n```\n\n### Updating go-pre-commit\n\n```bash\n# Check for available updates\ngo-pre-commit upgrade --check\n\n# Upgrade to the latest version\ngo-pre-commit upgrade\n\n# Force upgrade even if already on latest\ngo-pre-commit upgrade --force\n\n# Upgrade and reinstall hooks\ngo-pre-commit upgrade --reinstall\n\n# Verify version\ngo-pre-commit --version\n```\n\n### Uninstalling\n\n```bash\n# Remove all installed hooks\ngo-pre-commit uninstall\n\n# Remove specific hook types\ngo-pre-commit uninstall --hook-type pre-commit\n```\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🎯 Available Checks\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eBuilt-in Checks Reference\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n`go-pre-commit` includes these built-in checks:\n\n| Check            | Description                                        | Auto-fix | Configuration                  |\n|------------------|----------------------------------------------------|----------|--------------------------------|\n| **eof**          | Ensures files end with a newline                   | ✅        | Auto-stages changes if enabled |\n| **fumpt**        | Formats Go code with stricter rules than `gofmt`   | ✅        | Auto-installs if needed        |\n| **gitleaks**     | Scans for secrets and credentials in code          | ❌        | Auto-installs if needed        |\n| **lint**         | Runs golangci-lint for comprehensive linting       | ❌        | Auto-installs if needed        |\n| **mod-tidy**     | Ensures go.mod and go.sum are tidy                 | ✅        | Pure Go - no dependencies      |\n| **whitespace**   | Removes trailing whitespace                        | ✅        | Auto-stages changes if enabled |\n\nAll checks run in parallel for maximum performance. All checks work out-of-the-box with pure Go! Tools are automatically installed when needed.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🔌 Plugin System\n\n`go-pre-commit` supports custom plugins to extend its functionality with checks written in any language.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eQuick Start with Plugins\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n### What are Plugins?\n\nPlugins are external executables (scripts or binaries) that integrate seamlessly with the built-in checks. They can be written in:\n- Shell/Bash scripts for simple checks\n- Python for complex validation\n- Go for high-performance checks\n- Any language that can read JSON from stdin and write to stdout\n\n### Quick Setup\n\n**Enable plugins** in your configuration files:\n```bash\n# Add to .github/env/90-project.env (modular) or .env.custom (legacy)\nGO_PRE_COMMIT_ENABLE_PLUGINS=true\nGO_PRE_COMMIT_PLUGIN_DIR=.pre-commit-plugins\n```\n\n**Install an example plugin**:\n```bash\n# Copy an example plugin to your project\ncp -r examples/shell-plugin .pre-commit-plugins/\n\n# Or use the CLI\ngo-pre-commit plugin add examples/shell-plugin\n```\n\n**Run checks** (plugins run alongside built-in checks):\n```bash\ngo-pre-commit run\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003ePlugin Management \u0026 Creation\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n### Plugin Management Commands\n\n```bash\n# List available plugins\ngo-pre-commit plugin list\n\n# Add a plugin\ngo-pre-commit plugin add ./my-plugin\n\n# Remove a plugin\ngo-pre-commit plugin remove my-plugin\n\n# Validate a plugin manifest\ngo-pre-commit plugin validate ./my-plugin\n\n# Show plugin details\ngo-pre-commit plugin info my-plugin\n```\n\n### Creating Your Own Plugin\n\nEvery plugin needs:\n1. A manifest file (`plugin.yaml`, `plugin.yml`, or `plugin.json`)\n2. An executable script or binary\n3. JSON-based communication protocol\n\n**Example `plugin.yaml`:**\n```yaml\nname: my-custom-check\nversion: 1.0.0\ndescription: Checks for custom issues in code\nexecutable: ./check.sh\nfile_patterns:\n  - \"*.go\"\ntimeout: 30s\ncategory: linting\n```\n\n**Example Plugin Script:**\n```bash\n#!/bin/bash\nINPUT=$(cat)\n# Process files and output JSON response\necho '{\"success\": true, \"output\": \"Check passed\"}'\n```\n\n### Available Example Plugins\n\n| Plugin                                       | Description               | Language |\n|----------------------------------------------|---------------------------|----------|\n| [todo-checker](examples/shell-plugin)        | Finds TODO/FIXME comments | Shell    |\n| [json-validator](examples/python-plugin)     | Validates JSON formatting | Python   |\n| [license-header](examples/go-plugin)         | Checks license headers    | Go       |\n| [security-scanner](examples/docker-plugin)   | Security scanning         | Docker   |\n| [multi-validator](examples/composite-plugin) | Multi-step validation     | Mixed    |\n\nSee the [examples directory](examples) for complete plugin implementations and documentation.\n\n### Plugin Features\n\n- **Parallel Execution**: Plugins run in parallel with built-in checks\n- **File Filtering**: Process only relevant files using patterns\n- **Timeout Protection**: Configurable timeouts prevent hanging\n- **Environment Variables**: Pass configuration via environment\n- **JSON Protocol**: Structured communication for reliable integration\n- **Category Support**: Organize plugins by type (linting, security, etc.)\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🏗️ Starting a New Project\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eProject Setup Guide\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nSetting up `go-pre-commit` in a new Go project:\n\n### 1. Initialize your Go project\n\n```bash\nmkdir my-awesome-project\ncd my-awesome-project\ngo mod init github.com/username/my-awesome-project\n```\n\n### 2. Create the configuration\n\n```bash\n# Create the .github directory\nmkdir -p .github\n\n# Download the default configuration\ncurl -o .github/.env.base https://raw.githubusercontent.com/mrz1836/go-pre-commit/master/.github/.env.base\n\n# Optionally create project-specific overrides\ncat \u003e .github/.env.custom \u003c\u003c 'EOF'\nENABLE_GO_PRE_COMMIT=true\nGO_PRE_COMMIT_ENABLE_EOF=true\nGO_PRE_COMMIT_ENABLE_FUMPT=true\nGO_PRE_COMMIT_ENABLE_GITLEAKS=false\nGO_PRE_COMMIT_ENABLE_LINT=true\nGO_PRE_COMMIT_ENABLE_MOD_TIDY=true\nGO_PRE_COMMIT_ENABLE_WHITESPACE=true\nEOF\n```\n\n### 3. Install go-pre-commit\n\n```bash\n# Install the tool\ngo install github.com/mrz1836/go-pre-commit/cmd/go-pre-commit@latest\n\n# Set up hooks in your repository\ngo-pre-commit install\n\n# Verify installation\ngo-pre-commit status\n```\n\n### 4. Test your setup\n\n```bash\n# Create a test file with issues\necho -e \"package main\\n\\nfunc main() {  \\n}\" \u003e main.go\n\n# Try to commit\ngit add .\ngit commit -m \"Initial commit\"\n\n# Watch go-pre-commit automatically fix issues!\n```\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 📚 Advanced Documentation\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eRepository Features\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nThis repository includes 25+ built-in features covering CI/CD, security, code quality, developer experience, and community tooling.\n\n**[View the full Repository Features list →](.github/docs/repository-features.md)**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eLibrary Deployment\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nThis project uses [goreleaser](https://github.com/goreleaser/goreleaser) for streamlined binary and library deployment to GitHub. To get started, install it via:\n\n```bash\nbrew install goreleaser\n```\n\nThe release process is defined in the [.goreleaser.yml](.goreleaser.yml) configuration file.\n\nThen create and push a new Git tag using:\n\n```bash\nmagex version:bump bump=patch push=true branch=master\n```\n\nThis process ensures consistent, repeatable releases with properly versioned artifacts and citation metadata.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eBuild Commands\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nView all build commands\n\n```bash script\nmagex help\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eGitHub Workflows\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nAll workflows are driven by modular configuration in [`.github/env/`](.github/env/README.md) — no YAML editing required.\n\n**[View all workflows and the control center →](.github/docs/workflows.md)**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eUpdating Dependencies\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nTo update all dependencies (Go modules, linters, and related tools), run:\n\n```bash\nmagex deps:update\n```\n\nThis command ensures all dependencies are brought up to date in a single step, including Go modules and any managed tools. It is the recommended way to keep your development environment and CI in sync with the latest versions.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🧪 Examples \u0026 Tests\n\nAll unit tests and fuzz tests run via [GitHub Actions](https://github.com/mrz1836/go-pre-commit/actions) and use [Go version 1.25.x](https://go.dev/doc/go1.25). View the [configuration file](.github/workflows/fortress.yml).\n\nRun all tests (fast):\n\n```bash script\nmagex test\n```\n\nRun all tests with race detector (slower):\n```bash script\nmagex test:race\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eFuzz Tests\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nThe project includes comprehensive fuzz tests for security-critical components:\n\n```bash script\nmagex test:fuzz\n```\n\n**Available Fuzz Tests:**\n- **[Config Parsing](internal/config/fuzz_test.go)** - Tests environment variable parsing with malformed inputs\n- **[Builtin Checks](internal/checks/builtin/fuzz_test.go)** - Tests whitespace/EOF checks with binary and malformed files\n- **[Git Operations](internal/git/fuzz_test.go)** - Tests file path parsing and repository operations\n- **[Runner Engine](internal/runner/fuzz_test.go)** - Tests check execution with edge case configurations\n\nFuzz tests help ensure the system handles malformed inputs gracefully without crashes or security vulnerabilities.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## ⚡ Benchmarks\n\nRun the Go [benchmarks](internal/benchmark_test.go):\n\n```bash script\nmagex bench\n```\n\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eBenchmark Results\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Benchmark Results\n\n| Benchmark                                                                   | Iterations |     ns/op |    B/op | allocs/op | Description                      |\n|-----------------------------------------------------------------------------|------------|----------:|--------:|----------:|----------------------------------|\n| [PreCommitSystem_SmallProject](internal/benchmark_test.go)                  | 89,523     |    13,555 |  15,390 |        73 | Small project (3 files)          |\n| [PreCommitSystem_EndToEnd](internal/benchmark_test.go)                      | 44,742     |    24,436 |  36,070 |       111 | Full system (8 files)            |\n| [PreCommitSystem_LargeProject](internal/benchmark_test.go)                  | 24,704     |    48,146 | 108,986 |       229 | Large project (25+ files)        |\n| [Runner_New](internal/runner/runner_bench_test.go)                          | 4,086,028  |       293 |     592 |        10 | Runner creation                  |\n| [Runner_SingleCheck](internal/runner/runner_bench_test.go)                  | 187,984    |     6,415 |   7,312 |        33 | Single check execution           |\n| [WhitespaceCheck_SmallFile](internal/checks/builtin/builtin_bench_test.go)  | 6,148,348  |       195 |     128 |         2 | Whitespace check (small file)    |\n| [WhitespaceCheck_Parallel](internal/checks/builtin/builtin_bench_test.go)   | 14,334,333 |        85 |     128 |         2 | Parallel whitespace processing   |\n| [Repository_GetAllFiles](internal/git/git_bench_test.go)                    | 315        | 3,776,237 |  69,746 |       210 | Git file enumeration             |\n| [Runner_Performance_SmallCommit](internal/runner/performance_bench_test.go) | 58,266     |    20,899 |  16,990 |       112 | Typical small commit (1-3 files) |\n\n\u003e These benchmarks demonstrate lightning-fast pre-commit processing with minimal memory overhead.\n\u003e Performance results measured on Apple M1 Max (ARM64) showing microsecond-level execution times for individual checks and sub-second processing for complete commit workflows.\n\u003e The system scales efficiently from small single-file changes to large multi-file commits while maintaining consistent low-latency performance.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🛠️ Code Standards\nRead more about this Go project's [code standards](.github/CODE_STANDARDS.md).\n\n\u003cbr/\u003e\n\n## 🤖 AI Usage \u0026 Assistant Guidelines\nRead the [AI Usage \u0026 Assistant Guidelines](.github/tech-conventions/ai-compliance.md) for details on how AI is used in this project and how to interact with the AI assistants.\n\n\u003cbr/\u003e\n\n## 👥 Maintainers\n| [\u003cimg src=\"https://github.com/mrz1836.png\" height=\"50\" width=\"50\" alt=\"MrZ\" /\u003e](https://github.com/mrz1836) |\n|:-----------------------------------------------------------------------------------------------------------:|\n|                                      [MrZ](https://github.com/mrz1836)                                      |\n\n\u003cbr/\u003e\n\n## 🤝 Contributing\nView the [contributing guidelines](.github/CONTRIBUTING.md) and please follow the [code of conduct](.github/CODE_OF_CONDUCT.md).\n\n### How can I help?\nAll kinds of contributions are welcome :raised_hands:!\nThe most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:.\nYou can also support this project by [becoming a sponsor on GitHub](https://github.com/sponsors/mrz1836) :clap:\nor by making a [**bitcoin donation**](https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-pre-commit\u0026utm_term=go-pre-commit\u0026utm_content=go-pre-commit) to ensure this journey continues indefinitely! :rocket:\n\n[![Stars](https://img.shields.io/github/stars/mrz1836/go-pre-commit?label=Please%20like%20us\u0026style=social\u0026v=1)](https://github.com/mrz1836/go-pre-commit/stargazers)\n\n\u003cbr/\u003e\n\n## 📝 License\n\n[![License](https://img.shields.io/github/license/mrz1836/go-pre-commit.svg?style=flat\u0026v=1)](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrz1836%2Fgo-pre-commit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrz1836%2Fgo-pre-commit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrz1836%2Fgo-pre-commit/lists"}