Integrate Biome into Nx monorepos with deterministic setup, caching, migration from ESLint and Prettier, and plugin-based inferred tasks; use when adding Biome, replacing ESLint/Prettier, tuning cache inputs, or scaling lint and format workflows across projects.
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Navigation hub for integrating Biome in Nx workspaces with predictable setup and migration.
biome.json).npm install --save-dev @biomejs/biome
npx @biomejs/biome initExpected: root biome.json exists.
nx biome-lint my-project
nx biome-format my-projectExpected: lint and format targets execute for the selected project.
nx run-many -t biome-lint
nx run-many -t biome-formatExpected: all configured projects run with consistent config and cache behavior.
bun run nx run-many -t biome-lintExpected: Biome lint runs through package-managed Nx entrypoint.
nx resetExpected: daemon cache is cleared and targets refresh.
Cache inputs for the Biome targets in nx.json:
{
"targetDefaults": {
"biome-lint": {
"cache": true,
"inputs": ["default", "^default", "{workspaceRoot}/biome.json", { "externalDependencies": ["@biomejs/biome"] }]
},
"biome-format": {
"cache": true,
"inputs": ["default", "^default", "{workspaceRoot}/biome.json", { "externalDependencies": ["@biomejs/biome"] }]
}
}
}Read-only verification in CI, with write mode kept for local fixes:
nx run-many -t biome-lint biome-formatbiome.json for simple workspace-wide setupsWHY: unnecessary config layering increases maintenance and rule drift.
BAD: create biome.json in every project by default.
GOOD: use one root config and add nested configs only for migration or real overrides.
WHY: dual lint pipelines produce conflicting diagnostics and wasted CI time.
BAD: keep ESLint glob coverage unchanged after adding Biome.
GOOD: define migration boundaries so each file set has one active lint authority.
biome.json and Biome dependency from Nx cache inputsWHY: cache hits become stale after config/tool version changes.
BAD: cache only default and ^default inputs.
GOOD: include "{workspaceRoot}/biome.json" and externalDependencies: ["@biomejs/biome"].
WHY: write-mode formatting in CI mutates files and obscures validation failures.
BAD: run biome format --write in required CI checks.
GOOD: use check/lint mode in CI; reserve write-mode for local or dedicated fix jobs.
WHY: suppressing high-signal rules hides real issues and delays stabilization.
BAD: globally reduce important rules to off during migration.
GOOD: scope temporary exceptions narrowly with documented expiration.
WHY: a misconfigured target or cache input fails everywhere at once and hides the real cause.
BAD: run nx run-many -t biome-lint as the first execution after adding targets.
GOOD: run nx biome-lint my-project and nx biome-format my-project first, then run across the workspace.
nx reset after changing plugin-inferred tasksWHY: the Nx daemon cache keeps serving the old target graph.
BAD: edit the inference plugin and re-run tasks immediately, expecting new targets.
GOOD: run nx reset so the daemon cache clears and targets refresh.
WHY: a missing Nx workspace, an unsupported Node.js version or an unclear package manager breaks the install in confusing ways.
BAD: run npm install --save-dev @biomejs/biome without checking Node.js 18+ or the package manager in use.
GOOD: confirm the Nx workspace, Node.js 18+ and the package manager first, then install and initialise.
WHY: undocumented exceptions become permanent and the migration never finishes.
BAD: add an override with no owner or end date.
GOOD: record each temporary exception with clear removal criteria.
references/biome-configuration-deep-dive.mdreferences/migration-guide.mdreferences/plugin-patterns.mdpantheon-org/tekhne
c8416e9
Also appears in
last in sync Aug 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.