Skip to content

// Migrate ESLint+Prettier to Biome 2.x — type-aware lint, biome.json config, GritQL plugins, CI and format-on-save.

Biome Toolchain Pro

skill --stat
  • last update

    Jun 24, 2026

  • license

    MITv1.0.0

  • format

    SKILL.md

quickstart.sh
3 steps
  1. 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
  2. Invoke

    // Inside Claude Code, type the skill name as a slash command

    > /biome-lint-format-toolchain wire up a GitHub Actions deploy
  3. Or just ask

    // Claude loads the skill by itself when a request matches its description

    > wire up a GitHub Actions deploy
biome-lint-format-toolchain/
references
SKILL.md
readonly
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.

features.md
5 capabilities

// 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-lint-format-toolchain/README.md
7 sections

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 noFloatingPromises or useExhaustiveDependencies but don't want to run tsc in 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 --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.

Usage

bash
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:

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 project domain and some are still in nursery — enable them explicitly; recommended alone won't turn them on.
  • biome migrate covers 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 --noEmit in 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/

Reviews

// No reviews yet. Be the first.
Loading review form…

$ ls related/

explore all →