Developers spend a fair chunk of time during their development flow on
fixing relatively trivial problems in their code.
pre-commit.ci
both enforces that these issues are discovered (which is opt-in for each
developer's workflow via
pre-commit)
but also fixes the issues automatically, letting developers focus their
time on more valuable problems.
Sign In With GitHub
features ¶
supported hosting platforms: currently only GitHub
is supported, more to come in the future!
configuration: zero configuration setup -- nothing is needed beyond the
.pre-commit-config.yaml file you already have!
auto fixing pull requests: if tools make changes to files during a pull
request, pre-commit.ci will automatically fix the pull request.
pre-commit.ci will run on all pull request commits, but will not push for
commits made by bots.

speed: much faster than comparable, free CI systems

caching: tool caching is baked in and shared across all users. this means
that the more users there are of pre-commit.ci, the more likely you will get
faster builds!

automatic updates: pre-commit.ci will periodically autoupdate your
configuration ensuring that your hook versions are kept up to date.
--freeze format is automatically preserved.
this autoupdate is currently scheduled weekly at approximately 16:00 UTC
Monday.
here is an example autoupdate pull request.

re-running a pull request: you can trigger a re-run on a pull request by
commenting pre-commit.ci run (must appear on a line by itself).
alternatively, one can attach a pre-commit.ci run label to the pull request.
skipping push runs: skip a run by putting [skip ci], [ci skip],
[skip pre-commit.ci], or [pre-commit.ci skip] in the commit message.
configuration ¶
pre-commit.ci is configured in .pre-commit-config.yaml in the ci: section.
note: ci: configuration is entirely optional and will assume the defaults
below.
autofix_commit_msg
| (optional, default: '[pre-commit.ci] auto fixes [...]')
custom commit message for PR autofixes.
|
autofix_prs
| (optional, default: true) whether to autofix pull requests. when
disabled, comment / label "pre-commit.ci autofix" to a pull request to
manually trigger auto-fixing.
|
autoupdate_branch
| (optional: default '') branch to send autoupdate PRs to.
by default, pre-commit.ci will update the default branch of the
repository.
this configuration option and other autoupdate settings will be
read from the .pre-commit-config.yaml in the default branch of
the repository.
|
autoupdate_commit_msg
| (optional, default: '[pre-commit.ci] pre-commit autoupdate')
custom commit message for autoupdate PRs.
|
autoupdate_schedule
| (optional, default: 'weekly') control when the autoupdate runs,
possible values: 'weekly', 'monthly', 'quarterly'.
|
skip
| (optional, default: []) a list of hook ids to skip only in
pre-commit.ci
for example:
ci:
skip: [pylint]
repos:
- repo: local
hooks:
- id: pylint
# ...
this is equivalent to running SKIP=pylint pre-commit ...
|
submodules
| (optional, default: false) whether to recursively check out submodules
|
a full config with all the defaults:
ci:
autofix_commit_msg: |
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
autofix_prs: true
autoupdate_branch: ''
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
autoupdate_schedule: weekly
skip: []
submodules: false
alternative using github actions ¶
pre-commit.ci also provides a lite version which adds auto
fixing to GitHub actions.
pricing ¶
pre-commit.ci will always be free for open source repositories.
all paid plans also include pre-commit.ci lite pro at no additional cost.
for private and organization repository support see the GitHub Marketplace.
for single-tenant or larger installations, contact [email protected].
following the development ¶
sponsoring ¶
if you'd like to support the development there are two ways to sponsor: