Formatting
A formatter rewrites code to one layout so diffs show only real changes; in CI it runs in check mode and fails on drift.
Sub-techniques
3
| ID | Name | Description |
|---|---|---|
V1001.001 | Code formatter | One opinionated formatter per language, run on save and in CI. |
V1001.002 | Import ordering | Sort and group imports so they never cause conflicts or noise. |
V1001.003 | Check mode gate | Run the formatter with --check or --diff in CI so unformatted code fails instead of being rewritten. |
Craft it
- Pick one formatter per language and commit its config at the repository root.
- Run it once over the whole tree in a single commit and add that commit to .git-blame-ignore-revs.
- Add a pre-commit hook that rewrites, and a CI step in check mode that fails.
Reverse engineer it
Signs that a codebase already runs this technique, and where to read how it is configured.
- Formatter config in pyproject.toml, .prettierrc, rustfmt.toml or biome.json.
- A CI step running the formatter with --check, --diff or format --check.
- A .git-blame-ignore-revs file pointing at a mass-format commit.
Where the scanned repositories configure it:
.github/workflows/*.ymlin 74 repositoriespackage.jsonin 47 repositories.pre-commit-config.yamlin 33 repositoriesMakefilein 22 repositories.prettierrcin 17 repositoriesrustfmt.tomlin 15 repositories
Detected by the scanner as: Formatting (layout drift that buries the real change in the diff.)
Open-source packages
6
- Ruff astral-sh/ruff
- Black psf/black
- isort PyCQA/isort
- Prettier prettier/prettier
- Biome biomejs/biome
- rustfmt rust-lang/rustfmt
Tools seen in scans
by repositories that run them
| Tool | Repos | Command seen | Runs in | Docs |
|---|---|---|---|---|
prettier autofix |
98 | prettier --write . |
pre-commit, ci, local | docs |
rustfmt autofix |
46 | cargo fmt --check |
pre-commit, ci, local | docs |
ruff-format autofix |
43 | ruff format . |
pre-commit, ci, local | docs |
black autofix |
14 | black --check --diff . |
pre-commit, ci, local | docs |
isort autofix |
9 | isort --check-only --diff django tests scripts |
pre-commit, ci, local | docs |
gofmt autofix |
7 | gofumpt -l -w . |
pre-commit, local | docs |
Procedure examples
repositories that run it, most-starred first; 40 of 112
| Repository | Tools | Runs in | Evidence |
|---|---|---|---|
| freeCodeCamp/freeCodeCamp | prettier |
ci, local | .github/workflows/crowdin-download.client-ui.yml jobs.i18n-download-client-ui... |
| kamranahmedse/developer-roadmap | prettier |
local | package.json scripts.format |
| nousresearch/hermes-agent | prettier |
local | ui-tui/package.json scripts.fmt |
| TheAlgorithms/Python | ruff-format |
pre-commit, ci | .pre-commit-config.yaml ci (pre-commit.ci) |
| microsoft/vscode | rustfmt |
ci | .github/workflows/pr-linux-cli-test.yml jobs.cli.steps[5] (Check formatting) |
| vercel/next.js | prettier |
local | package.json scripts.lint-fix |
| facebook/react-native | prettier |
local | package.json scripts.format-check |
| langgenius/dify | ruff-format |
ci, local | .github/workflows/autofix.yml jobs.autofix.steps[10] |
| langflow-ai/langflow | ruff-format |
pre-commit, ci, local | .github/workflows/py_autofix.yml jobs.lint.steps[3] |
| mui/material-ui | prettier |
local | package.json scripts.prettier:all |
| fatedier/frp | gofmt |
local | Makefile target fmt (line 28) |
| ant-design/ant-design | prettier |
local | package.json scripts.prettier |
| mermaid-js/mermaid | prettier |
ci, local | .github/workflows/autofix.yml jobs.autofix.steps[4] (Fix Linting) |
| fastapi/fastapi | ruff-format |
pre-commit, ci | .github/workflows/pre-commit.yml jobs.pre-commit.steps[10] |
| supabase/supabase | prettier |
ci, local | .github/workflows/autofix_linters.yml jobs.format.steps[5] (Run Prettier in f... |
| django/django | black, isort |
pre-commit, ci, local | .github/workflows/linters.yml jobs.black.steps[1] (black) |
| sveltejs/svelte | prettier |
ci, local | .github/workflows/autofix.yml jobs.autofix-lint.steps[6] (Run prettier) |
| home-assistant/core | prettier, ruff-format |
pre-commit | .pre-commit-config.yaml hooks.prettier |
| infiniflow/ragflow | gofmt, ruff-format |
pre-commit | lefthook.yml pre-commit.jobs[5] |
| earendil-works/pi | rustfmt |
ci | .github/workflows/env.yml jobs.tests.steps[4] (Daemon format, lint and unit t... |
| oven-sh/bun | rustfmt |
ci, local | .github/workflows/format.yml jobs.autofix.steps[4] (Format Code) |
| python/cpython | black, ruff-format |
pre-commit | .pre-commit-config.yaml hooks.black |
| microsoft/markitdown | black |
pre-commit, ci | .github/workflows/pre-commit.yml jobs.pre-commit.steps[3] (Run pre-commit) |
| pallets/flask | ruff-format |
pre-commit, ci, local | .github/workflows/pre-commit.yaml jobs.main.steps[4] |
| nestjs/nest | prettier |
local | package.json scripts.format |
| browser-use/browser-use | ruff-format |
pre-commit, ci | .github/workflows/lint.yml jobs.lint-style.steps[4] |
| grafana/grafana | gofmt, prettier |
pre-commit, ci, local | lefthook.yml pre-commit.commands.backend-format |
| lobehub/lobe-chat | prettier |
ci, local | .github/workflows/auto-i18n.yml jobs.update-i18n.steps[5] (Update i18n) |
| google-gemini/gemini-cli | prettier |
local | Makefile target format (line 39) |
| zed-industries/zed | rustfmt |
ci | .github/workflows/autofix_pr.yml jobs.run_autofix.steps[12] (autofix_pr::run_... |
| astral-sh/uv | ruff-format, rustfmt |
ci | .github/workflows/check-fmt.yml jobs.python.steps[2] |
| prometheus/prometheus | prettier |
local | Makefile target generate-promql-functions (line 99) |
| warpdotdev/warp | rustfmt |
ci | .github/workflows/ci.yml jobs.wasm-lint.steps[4] (Check Rust formatting) |
| traefik/traefik | gofmt, prettier |
local | Makefile target fmt (line 196) |
| remix-run/react-router | prettier |
ci, local | .github/workflows/format.yml jobs.format.steps[4] (Format) |
| firecrawl/firecrawl | rustfmt |
ci | .github/workflows/test-rust-sdk.yml jobs.test.steps[3] (Check formatting) |
| appwrite/appwrite | prettier |
local | package.json scripts.format:compose |
| aaif-goose/goose | rustfmt |
ci, local | .github/workflows/ci.yml jobs.rust-format.steps[2] (Run cargo fmt) |
| bmad-code-org/bmad-method | prettier, ruff-format |
pre-commit, ci, local | .github/workflows/quality.yaml jobs.docs-site.steps[4] (Prettier format check) |
| vllm-project/vllm | ruff-format |
pre-commit | .pre-commit-config.yaml hooks.ruff-format |