Skip to content
d3 Wiki
04.04

Linting, formatting, and pre-commit hooks

Machines enforce style so reviewers don't have to.

Updated
Oct 3, 2026
On this page

Purpose

Machines enforce style so reviewers don't have to.

The standard

Language

Formatter

Linter

Hook

TS/JS

Prettier

ESLint

lint-staged via Husky

Python

ruff format

ruff, mypy

pre-commit

C#

dotnet format

analyzers

CI only (Windows)

SQL

sqlfluff (optional)

Markdown

Prettier

  • Hooks run on staged files only; CI runs on everything. Hooks never take longer than ~10 s.

  • Templates ship with hooks configured; do not disable them with --no-verify except to commit a WIP on an exp/ branch.

Procedure — new repo

npx husky init (TS) or uv run pre-commit install (Python) — the templates already did this.

Owner: Matt · Last reviewed: 2026-09