last update
Jun 24, 2026
license
MITv1.0.0
format
SKILL.md
- Install
// Downloads SKILL.md into ~/.claude/skills/biome-lint-format-toolchain/
$ curl -fsSL --create-dirs -o ~/.claude/skills/biome-lint-format-toolchain/SKILL.md https://claudeskil.com/skills/biome-lint-format-toolchain/SKILL.md - Invoke
// Inside Claude Code, type the skill name as a slash command
> /biome-lint-format-toolchain wire up a GitHub Actions deploy - Or just ask
// Claude loads the skill by itself when a request matches its description
> wire up a GitHub Actions deploy
- name:
- Biome Toolchain Pro
- slug:
- biome-lint-format-toolchain
- version:
- v1.0.0
- license:
- MIT
- author:
- @chiragthummar16
- categories:
- tags:
- #biome#linter#formatter#eslint-migration#type-aware
- description:
Migrate ESLint+Prettier to Biome 2.x — type-aware lint, biome.json config, GritQL plugins, CI and format-on-save.
// What you can do with it
- Runs biome migrate eslint --write and biome migrate prettier --write to translate existing configs into biome.json, including reading .eslintrc extends and inferring .prettierrc formatting options.
- Structures biome.json with linter, formatter, assist, files.includes, and per-path overrides.
- Enables the project domain so multi-file, type-aware rules work using Biome's own module graph (no TypeScript compiler invocation).
- Authors GritQL plugins (.grit files referenced under plugins) for project-specific patterns ESLint would have needed a custom rule for.
- Sets up CI via biome ci and editor format-on-save through the Biome LSP / editor.defaultFormatter.
README.md
Biome Toolchain Pro
This skill walks a JavaScript/TypeScript project off ESLint and Prettier and onto Biome 2.x as a single lint-and-format toolchain. It's aimed at teams who are tired of reconciling two config files, plugin version drift, and slow CI, and who want type-aware linting without standing up a separate type-check pass. The agent handles the migration mechanics, ports your existing rules, and wires up CI and editor integration.
When to use it
- You have an
.eslintrc*and.prettierrc*and want one tool with one config. - You want type-aware rules like
noFloatingPromisesoruseExhaustiveDependenciesbut don't want to runtscin lint. - A monorepo where different packages need different rules via globs/overrides.
- You need a custom lint rule and don't want to write a full ESLint plugin.
What it does
- Runs
biome migrate eslint --writeandbiome migrate prettier --writeto translate existing configs intobiome.json, including reading.eslintrcextends and inferring.prettierrcformatting options. - Structures
biome.jsonwithlinter,formatter,assist,files.includes, and per-pathoverrides. - Enables the
projectdomain so multi-file, type-aware rules work using Biome's own module graph (no TypeScript compiler invocation). - Authors GritQL plugins (
.gritfiles referenced underplugins) for project-specific patterns ESLint would have needed a custom rule for. - Sets up CI via
biome ciand editor format-on-save through the Biome LSP /editor.defaultFormatter.
Usage
curl -fsSL --create-dirs -o ~/.claude/skills/biome-lint-format-toolchain/SKILL.md https://claudeskil.com/skills/biome-lint-format-toolchain/SKILL.md
# then, in your repo:
npm i -D --save-exact @biomejs/biome
npx biome migrate eslint --write
npx biome migrate prettier --write
npx biome check --write . # lint + format + organize imports
npx biome ci . # what CI runs (no writes)
A trimmed biome.json:
{
"linter": {
"domains": { "project": "recommended" },
"rules": { "nursery": { "noFloatingPromises": "error" } }
},
"plugins": ["./grit/no-console-in-prod.grit"],
"overrides": [
{ "includes": ["**/*.test.ts"], "linter": { "rules": { "suspicious": "off" } } }
]
}
Tips & gotchas
- Pin Biome with
--save-exact; rule sets shift between minor versions and unpinned upgrades can fail CI unexpectedly. - Type-aware rules live behind the
projectdomain and some are still innursery— enable them explicitly;recommendedalone won't turn them on. biome migratecovers rules with a Biome equivalent; unmapped ESLint rules are skipped silently, so diff the before/after rule coverage.- Biome's type inference is intentionally not a full type-checker — keep
tsc --noEmitin CI for actual type errors.
FAQ
Does Biome replace tsc? No. It catches a curated set of type-aware lint issues without tsc, but it does not report type errors. Run both.
Will it handle my monorepo? Yes — use a root biome.json with overrides keyed by includes globs, or nested configs with extends.
Can I keep some ESLint rules? You can run both during transition, but disable overlapping formatting in ESLint to avoid fighting Biome's formatter.
$ cat reviews/