{"id":13773143,"url":"https://github.com/commit-check/commit-check","last_synced_at":"2026-01-31T02:06:51.860Z","repository":{"id":62678366,"uuid":"485387677","full_name":"commit-check/commit-check","owner":"commit-check","description":"Commit Check enforces commit metadata standards — commit messages, branch naming, committer info, signoff, and more.","archived":false,"fork":false,"pushed_at":"2026-01-27T04:00:40.000Z","size":43781,"stargazers_count":52,"open_issues_count":8,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-27T16:05:33.927Z","etag":null,"topics":["branch-naming","commit-check","conventional-branch","conventional-commits","naming-conventions","standard-naming","yet-another-commit-checker"],"latest_commit_sha":null,"homepage":"https://commit-check.github.io/commit-check/","language":"Python","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/commit-check.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"shenxianpeng"}},"created_at":"2022-04-25T13:41:15.000Z","updated_at":"2026-01-27T04:00:08.000Z","dependencies_parsed_at":"2023-12-18T06:23:16.498Z","dependency_job_id":"cbf9f67b-71f6-477c-a9d8-3bdeffcbcdd3","html_url":"https://github.com/commit-check/commit-check","commit_stats":null,"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/commit-check/commit-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commit-check%2Fcommit-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commit-check%2Fcommit-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commit-check%2Fcommit-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commit-check%2Fcommit-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commit-check","download_url":"https://codeload.github.com/commit-check/commit-check/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commit-check%2Fcommit-check/sbom","scorecard":{"id":300910,"data":{"date":"2023-10-30T08:18:24Z","repo":{"name":"github.com/commit-check/commit-check","commit":"d11b4805f5082821c1be3e8950623eea6e2f28f9"},"scorecard":{"version":"v4.13.1","commit":"49c0eed3a423f00c872b5c3c9f1bbca9e8aae799"},"score":5.6,"checks":[{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":5,"reason":"16 out of 28 merged PRs checked by a CI test -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#ci-tests"}},{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":1,"reason":"found 5 unreviewed changesets out of 6 -- score normalized to 1","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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#code-review"}},{"name":"Contributors","score":0,"reason":"0 different organizations found -- score normalized to 0","details":["Warn: no contributors have an org or company"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#contributors"}},{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: tool 'Dependabot' is used: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dependency-update-tool"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no OSSFuzz integration found: Follow the steps in https://github.com/google/oss-fuzz to integrate fuzzing for your project.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no OneFuzz integration found: Follow the steps in https://github.com/microsoft/onefuzz to start fuzzing for your project.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no GoBuiltInFuzzer integration found: Follow the steps in https://go.dev/doc/fuzz/ to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no PythonAtherisFuzzer integration found: Follow the steps in https://github.com/google/atheris to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no CLibFuzzer integration found: Follow the steps in https://llvm.org/docs/LibFuzzer.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no CppLibFuzzer integration found: Follow the steps in https://llvm.org/docs/LibFuzzer.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no SwiftLibFuzzer integration found: Follow the steps in https://google.github.io/oss-fuzz/getting-started/new-project-guide/swift-lang/ to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no RustCargoFuzzer integration found: Follow the steps in https://rust-fuzz.github.io/book/cargo-fuzz.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no JavaJazzerFuzzer integration found: Follow the steps in https://github.com/CodeIntelligenceTesting/jazzer to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no ClusterFuzzLite integration found: Follow the steps in https://github.com/google/clusterfuzzlite to integrate fuzzing as part of CI.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no HaskellPropertyBasedTesting integration found: Use one of the following frameworks to fuzz your project:\nQuickCheck: https://hackage.haskell.org/package/QuickCheck\nhedgehog: https://hedgehog.qa/\nvalidity: https://github.com/NorfairKing/validity\nsmallcheck: https://hackage.haskell.org/package/smallcheck\nhspec: https://hspec.github.io/\ntasty: https://hackage.haskell.org/package/tasty (High effort)","Warn: no TypeScriptPropertyBasedTesting integration found: Use fast-check: https://github.com/dubzzz/fast-check (High effort)","Warn: no JavaScriptPropertyBasedTesting integration found: Use fast-check: https://github.com/dubzzz/fast-check (High effort)"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: License file found in expected location: LICENSE:1","Info: FSF or OSI recognized license: LICENSE:1"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#license"}},{"name":"Maintained","score":9,"reason":"11 commit(s) out of 30 and 0 issue activity out of 27 found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#maintained"}},{"name":"Packaging","score":10,"reason":"publishing workflow detected","details":["Info: GitHub/GitLab publishing workflow used in run https://api.github.com/repos/commit-check/commit-check/actions/runs/4060488099: .github/workflows/publish-image.yml:12"],"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:105: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-image.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/publish-image.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-package.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/publish-package.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-package.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/publish-package.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/scorecard.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.12-slim to python:3.12-slim@sha256:babc0d450bf9ed2b369814bc2f466e53a6ea43f1201f6df4e7988751f755c52c","Warn: pipCommand not pinned by hash: Dockerfile:13-17","Warn: pipCommand not pinned by hash: Dockerfile:13-17","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:91","Warn: pipCommand not pinned by hash: .github/workflows/publish-package.yml:24","Info:   2 out of  15 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   2 out of   8 pipCommand 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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (28) are checked with a SAST tool","Warn: CodeQL tool not detected"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#sast"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md.\nFor additional information on vulnerability disclosure, see https://github.com/ossf/oss-vulnerability-guide/blob/main/maintainer-guide.md. (Medium effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nProvide a point of contact in your SECURITY.md.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":["Warn: no GitHub releases found"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1: Visit https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/main.yml/main?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Warn: no topLevel permission defined: .github/workflows/publish-image.yml:1: Visit https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/publish-image.yml/main?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Warn: no topLevel permission defined: .github/workflows/publish-package.yml:1: Visit https://app.stepsecurity.io/secureworkflow/commit-check/commit-check/publish-package.yml/main?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":10,"reason":"no vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T20:35:57.929Z","repository_id":62678366,"created_at":"2025-08-17T20:35:57.929Z","updated_at":"2025-08-17T20:35:57.929Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28926633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"online","status_checked_at":"2026-01-31T02:00:09.179Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["branch-naming","commit-check","conventional-branch","conventional-commits","naming-conventions","standard-naming","yet-another-commit-checker"],"created_at":"2024-08-03T17:01:11.957Z","updated_at":"2026-01-31T02:06:51.840Z","avatar_url":"https://github.com/commit-check.png","language":"Python","readme":"Commit Check\n============\n\n.. |pypi-version| image:: https://img.shields.io/pypi/v/commit-check?logo=python\u0026logoColor=white\u0026color=%232c9ccd\n    :target: https://pypi.org/project/commit-check/\n    :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/commit-check/commit-check/actions/workflows/main.yml/badge.svg\n    :target: https://github.com/commit-check/commit-check/actions/workflows/main.yml\n    :alt: CI\n\n.. |sonar-badge| image:: https://sonarcloud.io/api/project_badges/measure?project=commit-check_commit-check\u0026metric=alert_status\n    :target: https://sonarcloud.io/summary/new_code?id=commit-check_commit-check\n    :alt: Quality Gate Status\n\n.. |codecov-badge| image:: https://codecov.io/gh/commit-check/commit-check/branch/main/graph/badge.svg?token=GC2U5V5ZRT\n    :target: https://codecov.io/gh/commit-check/commit-check\n    :alt: CodeCov\n\n.. |commit-check-badge| image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git\u0026logoColor=white\u0026color=%232c9ccd\n    :target: https://github.com/commit-check/commit-check\n    :alt: commit-check\n\n.. |slsa-badge| image:: https://slsa.dev/images/gh-badge-level3.svg\n    :target: https://slsa.dev\n    :alt: SLSA\n\n|ci-badge| |sonar-badge| |pypi-version| |commit-check-badge| |codecov-badge| |slsa-badge|\n\nOverview\n--------\n\n**Commit Check** (aka **cchk**) is an open-source tool that enforces commit metadata standards — including commit messages, branch naming, committer name/email, commit signoff, and more — helping teams maintain consistency and compliance.\n\nAs a lightweight alternative to GitHub Enterprise `Metadata restrictions \u003chttps://docs.github.com/en/enterprise-server@3.11/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#metadata-restrictions\u003e`_\nand Bitbucket's paid plugin `Yet Another Commit Checker \u003chttps://marketplace.atlassian.com/apps/1211854/yet-another-commit-checker?tab=overview\u0026hosting=datacenter\u003e`_, Commit Check integrates DevOps principles and Infrastructure as Code (IaC) practices for a modern workflow.\n\nWhat’s New in v2.0.0\n--------------------\n\nVersion 2.0.0 is a major release featuring a new configuration format, a modernized architecture, and an improved user experience.\n\n**✨ Highlights**\n\n* **TOML Configuration** — Replaces ``.commit-check.yml`` with ``cchk.toml`` or ``commit-check.toml`` for clearer, more consistent syntax.\n* **Simplified CLI \u0026 Hooks** — Legacy pre-commit hooks and options removed to deliver a cleaner, more streamlined interface.\n* **New Validation Engine** — Fully redesigned for greater flexibility, performance, and maintainability.\n\nFor the full list of updates and improvements, visit the `What's New \u003chttps://commit-check.github.io/commit-check/what-is-new.html\u003e`_ page.\n\nInstallation\n------------\n\nTo install Commit Check, you can use pip:\n\n.. code-block:: bash\n\n    pip install commit-check\n\nOr install directly from the GitHub repository:\n\n.. code-block:: bash\n\n    pip install git+https://github.com/commit-check/commit-check.git@main\n\nThen, run ``commit-check --help`` or ``cchk --help`` (alias for ``commit-check``) from the command line.\nFor more information, see the `docs \u003chttps://commit-check.github.io/commit-check/cli_args.html\u003e`_.\n\n\nConfiguration\n-------------\n\nUse Default Configuration\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- **Commit Check** uses a `default configuration \u003chttps://github.com/commit-check/commit-check/blob/main/docs/configuration.rst\u003e`_ if you do not provide a ``cchk.toml`` or ``commit-check.toml`` file.\n\n- The default configuration is lenient — it only checks whether commit messages follow the `Conventional Commits \u003chttps://www.conventionalcommits.org/en/v1.0.0/#summary\u003e`_ specification and branch names follow the `Conventional Branch \u003chttps://conventional-branch.github.io/#summary\u003e`_ convention.\n\nUse Custom Configuration\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo customize the behavior, create a configuration file named ``cchk.toml`` or ``commit-check.toml`` in your repository's root directory, e.g., `cchk.toml \u003chttps://github.com/commit-check/commit-check/blob/main/cchk.toml\u003e`_\n\nUsage\n-----\n\nFor detailed usage instructions including pre-commit hooks, CLI commands, and STDIN examples, see the `Usage Examples documentation \u003chttps://commit-check.github.io/commit-check/example.html\u003e`_.\n\nExamples\n--------\n\nCheck Commit Message Failed\n\n.. code-block:: text\n\n    Commit rejected by Commit-Check.\n\n      (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)\n       / ._. \\      / ._. \\      / ._. \\      / ._. \\      / ._. \\\n     __\\( C )/__  __\\( H )/__  __\\( E )/__  __\\( C )/__  __\\( K )/__\n    (_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)\n       || E ||      || R ||      || R ||      || O ||      || R ||\n     _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._\n    (.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)\n     `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´\n\n    Commit rejected.\n\n    Type message check failed ==\u003e test commit message check\n    It doesn't match regex: ^(chore|ci|docs|feat|fix|refactor|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)|(Merge).*|(fixup!.*)\n    The commit message should follow Conventional Commits. See https://www.conventionalcommits.org\n    Suggest: Use \u003ctype\u003e(\u003cscope\u003e): \u003cdescription\u003e with allowed types\n\n\nCheck Branch Naming Failed\n\n.. code-block:: text\n\n    Commit rejected by Commit-Check.\n\n      (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)\n       / ._. \\      / ._. \\      / ._. \\      / ._. \\      / ._. \\\n     __\\( C )/__  __\\( H )/__  __\\( E )/__  __\\( C )/__  __\\( K )/__\n    (_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)\n       || E ||      || R ||      || R ||      || O ||      || R ||\n     _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._\n    (.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)(.-./`-´\\.-.)\n     `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´\n\n    Commit rejected.\n\n    Type branch check failed ==\u003e test-branch\n    It doesn't match regex: ^(feature|bugfix|hotfix|release|chore|feat|fix)\\/.+|(master)|(main)|(HEAD)|(PR-.+)\n    The branch should follow Conventional Branch. See https://conventional-branch.github.io/\n    Suggest: Use \u003ctype\u003e/\u003cdescription\u003e with allowed types or ignore_authors in config branch section to bypass\n\nMore examples see `example documentation \u003chttps://commit-check.github.io/commit-check/example.html\u003e`_.\n\nBadging your repository\n-----------------------\n\nYou can add a badge to your repository to show that you use commit-check!\n\n.. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git\u0026logoColor=white\u0026color=%232c9ccd\n    :target: https://github.com/commit-check/commit-check\n    :alt: commit-check\n\nMarkdown\n\n.. code-block:: text\n\n    [![commit-check](https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git\u0026logoColor=white\u0026color=%232c9ccd)](https://github.com/commit-check/commit-check)\n\nreStructuredText\n\n.. code-block:: text\n\n    .. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git\u0026logoColor=white\u0026color=%232c9ccd\n        :target: https://github.com/commit-check/commit-check\n        :alt: commit-check\n\n\nVersioning\n----------\n\nVersioning follows `Semantic Versioning \u003chttps://semver.org/\u003e`_.\n\nHave question or feedback?\n--------------------------\n\nPlease post to `issues \u003chttps://github.com/commit-check/commit-check/issues\u003e`_ for feedback, feature requests, or bug reports.\n\nLicense\n-------\n\nThis project is released under the `MIT License \u003chttps://github.com/commit-check/commit-check/blob/main/LICENSE\u003e`_\n","funding_links":["https://github.com/sponsors/shenxianpeng"],"categories":["Resources"],"sub_categories":["Related"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommit-check%2Fcommit-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommit-check%2Fcommit-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommit-check%2Fcommit-check/lists"}