You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mpak's TS packages currently use prettier for formatting and eslint for linting. The rest of NimbleBrain's TS code (nimblebrain/code, the in-tree synapse-app servers) standardized on Biome — single binary, single config, faster, no plugin hairball.
Today's hairball:
apps/web, apps/registry, packages/sdk-typescript, packages/cli, packages/schemas all carry separate eslint + prettier setups.
New contributors hit two competing formatters between this repo and the rest of the org.
Migration
Add @biomejs/biome as a workspace devDep at the root.
Drop a biome.json mirroring NimbleBrain's settings (2-space indent, single quotes, trailing commas — match prettier's current output to avoid a one-shot reformat churn the first time).
Replace per-package lint / format:check / format scripts with biome check / biome format.
Drop the prettier + eslint devDeps + their config files (.prettierrc, eslint.config.js).
Update .github/workflows/test.yml — replace the Format check job with biome ci.
Update CONTRIBUTING.md and per-package CLAUDE.md files where they reference prettier or eslint.
Run biome check --write once to normalize the tree, commit as a separate "style: biome reformat" commit so the substantive history stays grep-able.
Why now
Removes the inconsistency between this repo and nimblebrain/code — same tooling everywhere makes context-switching cheap.
Kills one CI job (Format check folds into lint).
One config file replaces ~6 scattered configs.
Open questions
The Python side stays on ruff (already standard); only the TS packages migrate.
apps/scanner is Python — out of scope.
Some legacy lint rules in eslint.config.js (custom unused-import handling) need a mapping check; biome covers most of them, may be a few stragglers worth flagging.
mpak's TS packages currently use prettier for formatting and eslint for linting. The rest of NimbleBrain's TS code (
nimblebrain/code, the in-tree synapse-app servers) standardized on Biome — single binary, single config, faster, no plugin hairball.Today's hairball:
apps/web,apps/registry,packages/sdk-typescript,packages/cli,packages/schemasall carry separate eslint + prettier setups.pnpm --filter ... exec prettier --check.Migration
@biomejs/biomeas a workspace devDep at the root.biome.jsonmirroring NimbleBrain's settings (2-space indent, single quotes, trailing commas — match prettier's current output to avoid a one-shot reformat churn the first time).lint/format:check/formatscripts withbiome check/biome format..prettierrc,eslint.config.js)..github/workflows/test.yml— replace theFormat checkjob withbiome ci.CONTRIBUTING.mdand per-packageCLAUDE.mdfiles where they reference prettier or eslint.biome check --writeonce to normalize the tree, commit as a separate "style: biome reformat" commit so the substantive history stays grep-able.Why now
nimblebrain/code— same tooling everywhere makes context-switching cheap.Open questions
ruff(already standard); only the TS packages migrate.apps/scanneris Python — out of scope.eslint.config.js(custom unused-import handling) need a mapping check; biome covers most of them, may be a few stragglers worth flagging.