Skip to content

Run lint once for the whole repository - #1495

Draft
cristianrgreco wants to merge 1 commit into
claude/knip-5dccc1from
claude/lint-whole-repo
Draft

cristianrgreco wants to merge 1 commit into
claude/knip-5dccc1from
claude/lint-whole-repo

Conversation

@cristianrgreco

Copy link
Copy Markdown
Collaborator

Stacked on #1492. Review and merge that one first.

Summary

Replaces the per-module lint matrix and the separate Knip job with one Lint job for the whole repository. It runs npm run lint:ci and then npm run knip.

  • lint:ci is now biome ci --error-on-warnings . instead of taking a per-module path.
  • The job installs every workspace through npm-setup (the mode added in Detect unused code and dependencies with knip #1492), because knip needs that.
  • The job has no if, so it also runs when only knip.jsonc or biome.json changes. Compile, smoke tests and tests still wait on it, and are still gated by which packages changed.

Why

Biome checks all 457 files in about 0.1s. On the last all-green run of Checks, linting took 44 jobs and 1171s of runner time (27s per job on average), nearly all of it runner start-up and per-module installs.

Verification

  • npm run lint:ci: passes on the whole repository. It exits 1 when a badly formatted file is added under a module, so . covers the packages.
  • npm run knip: passes.
  • npm run format, npm run lint: no fixes applied (457 files).
  • checks.yml parses, and the job graph is detect-modules, lint, compile, smoke-test, smoke-test-bun, test, end.
  • Not verified: the Checks workflow only runs for PRs that target main, so it won't run on this PR until Detect unused code and dependencies with knip #1492 merges and this one is retargeted.

Why this isn't breaking

CI-only. No package source, dependency or published file changes.

The check name changes from Lint (<module>) to Lint. main has no branch protection or required status checks, so nothing needs updating.

Biome checks every file in well under a second, so the per-module lint
matrix mostly paid for runner start-up and installs. Replace it and the
separate Knip job with one Lint job that runs Biome and then knip.
@cristianrgreco cristianrgreco added maintenance Improvements that do not change functionality patch Backward compatible bug fix labels Oct 10, 2026
@cristianrgreco
cristianrgreco added this pull request to stack #1498 October 10, 2026 20:35

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance Improvements that do not change functionality patch Backward compatible bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant