biome-tooling

SKILL.md

Biome Tooling

Biome is a modern, performant toolchain for JavaScript, TypeScript, and related web languages. It combines formatting, linting, and import organization into a single tool that's 15-20x faster than ESLint/Prettier.

When to Use This Skill

Use this skill when... Use another approach when...
Starting a new JS/TS project Need specific ESLint plugins (React hooks, a11y)
Want zero-config formatting/linting Have complex custom ESLint rules
Need fast CI/CD pipelines Need framework-specific rules (Next.js, Nuxt)
Migrating from ESLint+Prettier Legacy codebase with heavy ESLint customization

Hybrid approach: Use Biome for formatting, ESLint for specialized linting.

Core Expertise

What is Biome?

  • All-in-one toolchain: Linter + formatter + import sorter
  • Zero-config: Works out of the box with sensible defaults
  • Fast: Written in Rust, processes files in parallel
  • Compatible: Matches Prettier formatting 97%+
  • Supports: JavaScript, TypeScript, JSX, TSX, JSON, CSS

Installation

# Project-local (recommended)
bun add --dev @biomejs/biome

# Verify installation
bunx biome --version

# Initialize configuration
bunx biome init

Essential Commands

# Format files
bunx biome format --write src/

# Lint with fixes
bunx biome lint --write src/

# Check everything (format + lint + organize imports)
bunx biome check --write src/

# Check without changes (CI mode)
bunx biome check src/

# CI mode (exits with error on issues)
bunx biome ci src/

# Migrate from ESLint/Prettier
bunx biome migrate eslint --write
bunx biome migrate prettier --write

# Explain a rule
bunx biome explain noUnusedVariables

Configuration (biome.json)

Minimal Setup (Zero Config)

Biome works without configuration. For basic customization:

{
  "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
  "vcs": {
    "enabled": true,
    "clientKind": "git",
    "useIgnoreFile": true
  },
  "files": {
    "ignoreUnknown": false,
    "ignore": ["dist", "build", "node_modules", ".next", "coverage"]
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  },
  "organizeImports": {
    "enabled": true
  }
}

Rule Categories

Category Purpose Example Rules
recommended Essential rules everyone should enable Most rules marked "recommended"
correctness Prevent bugs and logic errors noUnusedVariables, noUnreachable
suspicious Detect code that might be wrong noExplicitAny, noDoubleEquals
style Enforce consistent style useConst, noVar
complexity Reduce code complexity noForEach, useFlatMap
performance Optimize performance noAccumulatingSpread
a11y Accessibility best practices noSvgWithoutTitle, useAltText
security Security vulnerabilities noDangerouslySetInnerHtml

Common Patterns

Ignore Files and Directories

Via biome.json:

{
  "files": {
    "ignore": [
      "dist",
      "build",
      "node_modules",
      "**/*.config.js",
      "scripts/legacy/**"
    ]
  }
}

Via .gitignore (automatic):

{
  "vcs": {
    "enabled": true,
    "useIgnoreFile": true
  }
}

Performance Comparison

Tool Time (1000 files) Notes
Biome 0.5s Rust, parallel processing
ESLint 8-10s Node.js, single-threaded
Prettier 3-5s Node.js, formatting only
ESLint + Prettier 11-15s Sequential execution

Agentic Optimizations

Context Command
Quick check bunx biome check src/
Fix all bunx biome check --write src/
Format only bunx biome format --write src/
Lint only bunx biome lint --write src/
CI mode bunx biome ci src/
Errors only bunx biome check --diagnostic-level=error src/
Limited output bunx biome check --max-diagnostics=10 src/
GitHub reporter bunx biome check --reporter=github src/
JSON output bunx biome check --reporter=json src/
Migrate ESLint bunx biome migrate eslint --write
Migrate Prettier bunx biome migrate prettier --write

Quick Reference

Flag Description
--write Apply fixes/formatting
--reporter=github GitHub annotations format
--reporter=json JSON output
--diagnostic-level=error Errors only
--max-diagnostics=N Limit output count
--verbose Show detailed diagnostics
--no-errors-on-unmatched Ignore unmatched files
ci CI mode (check + exit code)

For detailed examples, advanced patterns, and best practices, see REFERENCE.md.

References

Weekly Installs
29
GitHub Stars
13
First Seen
Feb 27, 2026
Installed on
opencode29
gemini-cli29
github-copilot29
codex29
amp29
cline29