Biome - Fast All-in-One Toolchain Overview Biome is a fast, all-in-one toolchain for web projects written in Rust. It replaces both ESLint and Prettier with a single tool that's 100x faster and provides zero-config defaults. Key Features : - Single tool for linting and formatting - 100x faster than ESLint - Zero configuration by default - Built-in import sorting - TypeScript-first design - Partial Prettier compatibility - Native monorepo support - VS Code integration Installation : Quick Start 1. Initialize Biome 2. Package.json Scripts 3. Basic Configuration Core Commands Check Command (Reco…

)\n\nif [ -n \"$STAGED_FILES\" ]; then\n echo \"Running Biome on staged files...\"\n npx @biomejs/biome check --write --no-errors-on-unmatched $STAGED_FILES\n\n # Add formatted files back to staging\n git add $STAGED_FILES\nfi\n```\n\n## CI/CD Integration\n\n### GitHub Actions\n\n```yaml\nname: Biome CI\n\non:\n push:\n branches: [main, develop]\n pull_request:\n branches: [main]\n\njobs:\n biome:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20'\n cache: 'npm'\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run Biome CI\n run: npx @biomejs/biome ci .\n\n - name: Check formatting\n run: npx @biomejs/biome format .\n\n - name: Lint\n run: npx @biomejs/biome lint .\n```\n\n### GitLab CI\n\n```yaml\nbiome:\n image: node:20-alpine\n stage: test\n script:\n - npm ci\n - npx @biomejs/biome ci .\n cache:\n paths:\n - node_modules/\n only:\n - merge_requests\n - main\n```\n\n### CircleCI\n\n```yaml\nversion: 2.1\n\njobs:\n biome:\n docker:\n - image: cimg/node:20.11\n steps:\n - checkout\n - restore_cache:\n keys:\n - deps-{{ checksum \"package-lock.json\" }}\n - run: npm ci\n - save_cache:\n paths:\n - node_modules\n key: deps-{{ checksum \"package-lock.json\" }}\n - run: npx @biomejs/biome ci .\n\nworkflows:\n test:\n jobs:\n - biome\n```\n\n## Import Sorting\n\nBiome includes built-in import sorting:\n\n```bash\n# Organize imports\nbiome check --write --organize-imports-enabled=true .\n```\n\n**Configuration**:\n```json\n{\n \"organizeImports\": {\n \"enabled\": true\n }\n}\n```\n\n**Example**:\n```typescript\n// Before\nimport { useState } from 'react';\nimport axios from 'axios';\nimport { Button } from './components/Button';\nimport type { User } from './types';\nimport './styles.css';\n\n// After (sorted)\nimport type { User } from './types';\n\nimport axios from 'axios';\nimport { useState } from 'react';\n\nimport { Button } from './components/Button';\n\nimport './styles.css';\n```\n\n## TypeScript Support\n\nBiome has first-class TypeScript support:\n\n```json\n{\n \"linter\": {\n \"rules\": {\n \"suspicious\": {\n \"noExplicitAny\": \"warn\",\n \"noUnsafeDeclarationMerging\": \"error\"\n },\n \"correctness\": {\n \"noUnusedVariables\": \"error\"\n },\n \"style\": {\n \"useImportType\": \"error\",\n \"useExportType\": \"error\"\n }\n }\n }\n}\n```\n\n**Type-aware linting**:\n```typescript\n// Biome detects unused variables\nconst unused = 123; // ❌ Error\n\n// Enforces type imports\nimport { User } from './types'; // ❌ Error\nimport type { User } from './types'; // ✅ Correct\n\n// Detects unsafe type assertions\nconst num = \"123\" as any as number; // ⚠️ Warning\n```\n\n## Monorepo Support\n\nBiome works great in monorepos:\n\n### Project Structure\n```\nmy-monorepo/\n├── biome.json (root config)\n├── packages/\n│ ├── web/\n│ │ └── biome.json (extends root)\n│ ├── api/\n│ │ └── biome.json\n│ └── shared/\n│ └── biome.json\n```\n\n### Root Configuration\n```json\n{\n \"$schema\": \"https://biomejs.dev/schemas/1.9.4/schema.json\",\n \"extends\": [],\n \"formatter\": {\n \"enabled\": true,\n \"indentStyle\": \"space\",\n \"indentWidth\": 2\n },\n \"linter\": {\n \"enabled\": true,\n \"rules\": {\n \"recommended\": true\n }\n }\n}\n```\n\n### Package Override\n```json\n{\n \"extends\": [\"../../biome.json\"],\n \"formatter\": {\n \"lineWidth\": 100\n },\n \"linter\": {\n \"rules\": {\n \"style\": {\n \"noNonNullAssertion\": \"off\"\n }\n }\n }\n}\n```\n\n### Monorepo Scripts\n```json\n{\n \"scripts\": {\n \"check\": \"biome check .\",\n \"check:packages\": \"biome check packages/*\",\n \"format\": \"biome format --write .\",\n \"lint\": \"biome lint packages/*\"\n }\n}\n```\n\n## Performance Benefits\n\n### Speed Comparison\n\n| Tool | Time (10,000 files) |\n|------|---------------------|\n| ESLint + Prettier | ~60s |\n| Biome | ~0.6s |\n\n**100x faster** on average workloads.\n\n### Caching\n\nBiome includes intelligent caching:\n\n```bash\n# First run (no cache)\nbiome check . # 1.2s\n\n# Second run (with cache)\nbiome check . # 0.1s\n\n# Clear cache\nrm -rf node_modules/.cache/biome\n```\n\n### Parallel Processing\n\nBiome uses all CPU cores by default:\n\n```bash\n# Limit CPU cores\nbiome check --max-diagnostics=50 .\n\n# Verbose output\nbiome check --verbose .\n```\n\n## Common Patterns\n\n### React Projects\n\n```json\n{\n \"linter\": {\n \"rules\": {\n \"a11y\": {\n \"recommended\": true,\n \"useButtonType\": \"error\",\n \"useKeyWithClickEvents\": \"error\"\n },\n \"correctness\": {\n \"useExhaustiveDependencies\": \"warn\",\n \"useHookAtTopLevel\": \"error\"\n },\n \"suspicious\": {\n \"noArrayIndexKey\": \"error\"\n }\n }\n },\n \"javascript\": {\n \"formatter\": {\n \"jsxQuoteStyle\": \"double\"\n }\n }\n}\n```\n\n### Next.js Projects\n\n```json\n{\n \"files\": {\n \"ignore\": [\".next\", \"out\", \"node_modules\"]\n },\n \"overrides\": [\n {\n \"include\": [\"app/**/*.tsx\", \"pages/**/*.tsx\"],\n \"linter\": {\n \"rules\": {\n \"a11y\": {\n \"recommended\": true\n }\n }\n }\n }\n ]\n}\n```\n\n### Node.js Backend\n\n```json\n{\n \"linter\": {\n \"rules\": {\n \"security\": {\n \"recommended\": true,\n \"noGlobalEval\": \"error\"\n },\n \"correctness\": {\n \"noUnusedVariables\": \"error\"\n }\n }\n },\n \"javascript\": {\n \"formatter\": {\n \"semicolons\": \"always\"\n }\n }\n}\n```\n\n## Best Practices\n\n1. **Use `biome check`** instead of separate format/lint commands\n2. **Enable `--write`** flag for automatic fixes\n3. **Configure VS Code** for format-on-save\n4. **Add git hooks** to enforce quality before commits\n5. **Use CI mode** (`biome ci`) in continuous integration\n6. **Start with recommended rules** then customize\n7. **Leverage import sorting** to organize imports automatically\n8. **Use overrides** for different file types or directories\n9. **Enable VCS integration** to respect .gitignore\n10. **Keep configuration minimal** - Biome has smart defaults\n\n## Troubleshooting\n\n### Biome Not Formatting\n\n```bash\n# Check if formatter is enabled\nbiome rage\n\n# Verify file is not ignored\nbiome check --verbose src/file.ts\n\n# Check VS Code extension logs\n# View → Output → Biome\n```\n\n### Conflicts with Prettier\n\n```bash\n# Disable Prettier in VS Code settings\n\"[javascript]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\"\n}\n\n# Remove Prettier dependencies\nnpm uninstall prettier\n```\n\n### Performance Issues\n\n```bash\n# Check cache location\nbiome rage\n\n# Clear cache\nrm -rf node_modules/.cache/biome\n\n# Reduce max diagnostics\nbiome check --max-diagnostics=20 .\n```\n\n### Rule Configuration Not Working\n\n```json\n// Ensure correct category\n{\n \"linter\": {\n \"rules\": {\n \"correctness\": { // Category name matters\n \"noUnusedVariables\": \"error\"\n }\n }\n }\n}\n```\n\n## Local Biome Configs (Your Repos)\n\nPatterns from active projects:\n\n- `ai-code-review/biome.json`: `files.includes` targets `src/**/*.ts` and excludes tests, `lineWidth: 100`, single quotes, semicolons always, and `noExplicitAny: warn`.\n- `itinerizer-ts/biome.json`: `files.ignore` includes `node_modules`, `dist`, `.claude`, and data directories; `organizeImports.enabled = true`.\n- `matsuoka-com` and `diogenes` use similar formatting defaults (2-space indent, lineWidth 100).\n\nCommon scripts:\n\n```json\n{\n \"lint\": \"biome check src/ --diagnostic-level=error\",\n \"lint:fix\": \"biome check src/ --write\",\n \"format\": \"biome format src/ --write\"\n}\n```\n\n## Resources\n\n- **Official Docs**: https://biomejs.dev\n- **VS Code Extension**: https://marketplace.visualstudio.com/items?itemName=biomejs.biome\n- **GitHub**: https://github.com/biomejs/biome\n- **Rules Reference**: https://biomejs.dev/linter/rules/\n- **Migration Guide**: https://biomejs.dev/guides/migrate-eslint-prettier/\n\n## Summary\n\n- **Biome** is a fast all-in-one linter and formatter\n- **100x faster** than ESLint + Prettier\n- **Zero config** by default with smart defaults\n- **Built in Rust** for maximum performance\n- **TypeScript-first** with excellent type support\n- **Import sorting** included out of the box\n- **VS Code integration** with official extension\n- **Perfect for** modern web projects, monorepos, CI/CD\n- **Easy migration** from ESLint and Prettier","attachment_filenames":["metadata.json"],"attachments":[{"filename":"metadata.json","content":"{\n \"name\": \"biome\",\n \"version\": \"1.0.0\",\n \"category\": \"toolchain\",\n \"toolchain\": \"javascript\",\n \"framework\": null,\n \"tags\": [\n \"linting\",\n \"formatting\",\n \"biome\",\n \"tooling\",\n \"code-quality\",\n \"typescript\",\n \"javascript\",\n \"rust\"\n ],\n \"entry_point_tokens\": 169,\n \"full_tokens\": 5014,\n \"related_skills\": [\n \"../../typescript/typescript-core\",\n \"../build/vite\",\n \"../../frameworks/react/react-core\"\n ],\n \"author\": \"Claude MPM\",\n \"license\": \"MIT\",\n \"updated\": \"2025-12-31\",\n \"source_path\": \"toolchains/javascript/tooling/biome/SKILL.md\",\n \"repository\": \"https://github.com/bobmatnyc/claude-mpm-skills\",\n \"description\": \"Fast all-in-one linter and formatter (Rust-based replacement for ESLint + Prettier)\",\n \"when_to_use\": [\n \"When you need fast linting and formatting\",\n \"When replacing ESLint + Prettier\",\n \"When working with TypeScript/JavaScript\",\n \"When you want zero-config setup\"\n ],\n \"quick_start\": [\n \"npm install --save-dev @biomejs/biome\",\n \"npx @biomejs/biome init\",\n \"npx @biomejs/biome check --write .\"\n ]\n}\n","content_type":"application/json; charset=utf-8","language":"json","size":1093,"content_sha256":"91809291be88c48e61c47875cf57117a21d258d341abb535aecdb1a471363c68"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Biome - Fast All-in-One Toolchain","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Overview","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome is a fast, all-in-one toolchain for web projects written in Rust. It replaces both ESLint and Prettier with a single tool that's 100x faster and provides zero-config defaults.","type":"text"}]},{"type":"paragraph","content":[{"text":"Key Features","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Single tool for linting and formatting","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"100x faster than ESLint","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Zero configuration by default","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Built-in import sorting","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"TypeScript-first design","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Partial Prettier compatibility","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Native monorepo support","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"VS Code integration","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Installation","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"npm install --save-dev @biomejs/biome","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Quick Start","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1. Initialize Biome","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Create biome.json configuration\nnpx @biomejs/biome init\n\n# Check your project\nnpx @biomejs/biome check .\n\n# Fix issues automatically\nnpx @biomejs/biome check --write .\n\n# Format only\nnpx @biomejs/biome format --write .\n\n# Lint only\nnpx @biomejs/biome lint .","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2. Package.json Scripts","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"scripts\": {\n \"check\": \"biome check .\",\n \"check:write\": \"biome check --write .\",\n \"format\": \"biome format --write .\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\"\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3. Basic Configuration","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"$schema\": \"https://biomejs.dev/schemas/1.9.4/schema.json\",\n \"vcs\": {\n \"enabled\": true,\n \"clientKind\": \"git\",\n \"useIgnoreFile\": true\n },\n \"files\": {\n \"ignoreUnknown\": false,\n \"ignore\": [\"node_modules\", \"dist\", \"build\", \".next\"]\n },\n \"formatter\": {\n \"enabled\": true,\n \"indentStyle\": \"space\",\n \"indentWidth\": 2,\n \"lineWidth\": 100\n },\n \"linter\": {\n \"enabled\": true,\n \"rules\": {\n \"recommended\": true\n }\n },\n \"javascript\": {\n \"formatter\": {\n \"quoteStyle\": \"single\",\n \"semicolons\": \"asNeeded\",\n \"trailingCommas\": \"all\"\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Core Commands","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Check Command (Recommended)","type":"text"}]},{"type":"paragraph","content":[{"text":"The ","type":"text"},{"text":"check","type":"text","marks":[{"type":"code_inline"}]},{"text":" command runs both linting and formatting:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Check all files\nbiome check .\n\n# Fix issues automatically\nbiome check --write .\n\n# Unsafe fixes (may change behavior)\nbiome check --write --unsafe .\n\n# Apply suggested fixes\nbiome check --write --unsafe --apply-suggested\n\n# Check specific files\nbiome check src/**/*.ts\n\n# CI mode (exit with error on issues)\nbiome ci .","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Format Command","type":"text"}]},{"type":"paragraph","content":[{"text":"Format code without linting:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Format all files\nbiome format --write .\n\n# Check formatting without changing files\nbiome format .\n\n# Format specific files\nbiome format --write src/**/*.{ts,tsx,js,jsx}\n\n# Format stdin\necho \"const x={a:1}\" | biome format --stdin-file-path=file.js","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Lint Command","type":"text"}]},{"type":"paragraph","content":[{"text":"Lint code without formatting:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Lint all files\nbiome lint .\n\n# Fix linting issues\nbiome lint --write .\n\n# Show rule names\nbiome lint --verbose .\n\n# Apply unsafe fixes\nbiome lint --write --unsafe .","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Configuration Deep Dive","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Formatter Configuration","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"formatter\": {\n \"enabled\": true,\n \"formatWithErrors\": false,\n \"indentStyle\": \"space\",\n \"indentWidth\": 2,\n \"lineEnding\": \"lf\",\n \"lineWidth\": 80,\n \"attributePosition\": \"auto\"\n },\n \"javascript\": {\n \"formatter\": {\n \"quoteStyle\": \"single\",\n \"jsxQuoteStyle\": \"double\",\n \"quoteProperties\": \"asNeeded\",\n \"trailingCommas\": \"all\",\n \"semicolons\": \"asNeeded\",\n \"arrowParentheses\": \"always\",\n \"bracketSpacing\": true,\n \"bracketSameLine\": false\n }\n },\n \"json\": {\n \"formatter\": {\n \"trailingCommas\": \"none\"\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Linter Configuration","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"linter\": {\n \"enabled\": true,\n \"rules\": {\n \"recommended\": true,\n \"a11y\": {\n \"recommended\": true,\n \"noAutofocus\": \"error\",\n \"useKeyWithClickEvents\": \"warn\"\n },\n \"complexity\": {\n \"recommended\": true,\n \"noForEach\": \"off\",\n \"useLiteralKeys\": \"error\"\n },\n \"correctness\": {\n \"recommended\": true,\n \"noUnusedVariables\": \"error\",\n \"useExhaustiveDependencies\": \"warn\"\n },\n \"performance\": {\n \"recommended\": true,\n \"noAccumulatingSpread\": \"warn\"\n },\n \"security\": {\n \"recommended\": true,\n \"noDangerouslySetInnerHtml\": \"error\"\n },\n \"style\": {\n \"recommended\": true,\n \"noNonNullAssertion\": \"warn\",\n \"useConst\": \"error\",\n \"useTemplate\": \"warn\"\n },\n \"suspicious\": {\n \"recommended\": true,\n \"noExplicitAny\": \"warn\",\n \"noArrayIndexKey\": \"error\"\n }\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"File Ignore Patterns","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"files\": {\n \"ignore\": [\n \"node_modules\",\n \"dist\",\n \"build\",\n \".next\",\n \"coverage\",\n \"*.min.js\",\n \"public/assets/**\"\n ],\n \"ignoreUnknown\": false,\n \"include\": [\"src/**/*.ts\", \"src/**/*.tsx\"]\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Override Configuration for Specific Files","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"overrides\": [\n {\n \"include\": [\"**/*.test.ts\", \"**/*.spec.ts\"],\n \"linter\": {\n \"rules\": {\n \"suspicious\": {\n \"noExplicitAny\": \"off\"\n }\n }\n }\n },\n {\n \"include\": [\"scripts/**/*.js\"],\n \"formatter\": {\n \"lineWidth\": 120\n }\n }\n ]\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"VS Code Integration","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1. Install Biome Extension","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Install from VS Code marketplace\ncode --install-extension biomejs.biome","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2. VS Code Settings (","type":"text"},{"text":".vscode/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"[javascript]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\",\n \"editor.formatOnSave\": true,\n \"editor.codeActionsOnSave\": {\n \"quickfix.biome\": \"explicit\",\n \"source.organizeImports.biome\": \"explicit\"\n }\n },\n \"[typescript]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\",\n \"editor.formatOnSave\": true,\n \"editor.codeActionsOnSave\": {\n \"quickfix.biome\": \"explicit\",\n \"source.organizeImports.biome\": \"explicit\"\n }\n },\n \"[typescriptreact]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\",\n \"editor.formatOnSave\": true\n },\n \"[json]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\",\n \"editor.formatOnSave\": true\n },\n \"biome.lspBin\": \"./node_modules/@biomejs/biome/bin/biome\"\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3. Workspace Settings","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"editor.formatOnSave\": true,\n \"editor.formatOnPaste\": true,\n \"editor.defaultFormatter\": \"biomejs.biome\",\n \"biome.rename\": true,\n \"files.autoSave\": \"onFocusChange\"\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Migration from ESLint and Prettier","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1. Remove Old Tools","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Remove ESLint and Prettier\nnpm uninstall eslint prettier eslint-config-prettier \\\n eslint-plugin-react eslint-plugin-import \\\n @typescript-eslint/parser @typescript-eslint/eslint-plugin\n\n# Remove configuration files\nrm .eslintrc.js .eslintrc.json .prettierrc .prettierignore","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2. Migrate Configuration","type":"text"}]},{"type":"paragraph","content":[{"text":"Use Biome's migration tool:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Migrate from Prettier config\nbiome migrate prettier --write\n\n# Migrate from ESLint config\nbiome migrate eslint --write","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3. Manual Migration","type":"text"}]},{"type":"paragraph","content":[{"text":"Prettier → Biome Formatter","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"// .prettierrc (old)\n{\n \"semi\": false,\n \"singleQuote\": true,\n \"trailingComma\": \"all\",\n \"printWidth\": 100\n}\n\n// biome.json (new)\n{\n \"formatter\": {\n \"lineWidth\": 100\n },\n \"javascript\": {\n \"formatter\": {\n \"semicolons\": \"asNeeded\",\n \"quoteStyle\": \"single\",\n \"trailingCommas\": \"all\"\n }\n }\n}","type":"text"}]},{"type":"paragraph","content":[{"text":"ESLint → Biome Linter","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"// .eslintrc.json (old)\n{\n \"rules\": {\n \"no-unused-vars\": \"error\",\n \"prefer-const\": \"warn\"\n }\n}\n\n// biome.json (new)\n{\n \"linter\": {\n \"rules\": {\n \"correctness\": {\n \"noUnusedVariables\": \"error\"\n },\n \"style\": {\n \"useConst\": \"warn\"\n }\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"4. Update Scripts","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"scripts\": {\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"check\": \"biome check --write .\"\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Git Hooks Integration","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Using Husky + lint-staged","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Install dependencies\nnpm install --save-dev husky lint-staged\nnpx husky init","type":"text"}]},{"type":"paragraph","content":[{"text":".husky/pre-commit","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx lint-staged","type":"text"}]},{"type":"paragraph","content":[{"text":"package.json","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"lint-staged\": {\n \"*.{js,ts,jsx,tsx,json}\": [\n \"biome check --write --no-errors-on-unmatched\"\n ]\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Using Lefthook","type":"text"}]},{"type":"paragraph","content":[{"text":"lefthook.yml","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"pre-commit:\n commands:\n lint:\n glob: \"*.{js,ts,jsx,tsx,json}\"\n run: biome check --write --no-errors-on-unmatched {staged_files}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Simple Git Hook (no dependencies)","type":"text"}]},{"type":"paragraph","content":[{"text":".git/hooks/pre-commit","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"#!/bin/bash\n\n# Get staged files\nSTAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\\.(js|ts|jsx|tsx|json)

Biome - Fast All-in-One Toolchain Overview Biome is a fast, all-in-one toolchain for web projects written in Rust. It replaces both ESLint and Prettier with a single tool that's 100x faster and provides zero-config defaults. Key Features : - Single tool for linting and formatting - 100x faster than ESLint - Zero configuration by default - Built-in import sorting - TypeScript-first design - Partial Prettier compatibility - Native monorepo support - VS Code integration Installation : Quick Start 1. Initialize Biome 2. Package.json Scripts 3. Basic Configuration Core Commands Check Command (Reco…

)\n\nif [ -n \"$STAGED_FILES\" ]; then\n echo \"Running Biome on staged files...\"\n npx @biomejs/biome check --write --no-errors-on-unmatched $STAGED_FILES\n\n # Add formatted files back to staging\n git add $STAGED_FILES\nfi","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"CI/CD Integration","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"GitHub Actions","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"name: Biome CI\n\non:\n push:\n branches: [main, develop]\n pull_request:\n branches: [main]\n\njobs:\n biome:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20'\n cache: 'npm'\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run Biome CI\n run: npx @biomejs/biome ci .\n\n - name: Check formatting\n run: npx @biomejs/biome format .\n\n - name: Lint\n run: npx @biomejs/biome lint .","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"GitLab CI","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"biome:\n image: node:20-alpine\n stage: test\n script:\n - npm ci\n - npx @biomejs/biome ci .\n cache:\n paths:\n - node_modules/\n only:\n - merge_requests\n - main","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CircleCI","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"version: 2.1\n\njobs:\n biome:\n docker:\n - image: cimg/node:20.11\n steps:\n - checkout\n - restore_cache:\n keys:\n - deps-{{ checksum \"package-lock.json\" }}\n - run: npm ci\n - save_cache:\n paths:\n - node_modules\n key: deps-{{ checksum \"package-lock.json\" }}\n - run: npx @biomejs/biome ci .\n\nworkflows:\n test:\n jobs:\n - biome","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Import Sorting","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome includes built-in import sorting:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Organize imports\nbiome check --write --organize-imports-enabled=true .","type":"text"}]},{"type":"paragraph","content":[{"text":"Configuration","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"organizeImports\": {\n \"enabled\": true\n }\n}","type":"text"}]},{"type":"paragraph","content":[{"text":"Example","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"typescript"},"content":[{"text":"// Before\nimport { useState } from 'react';\nimport axios from 'axios';\nimport { Button } from './components/Button';\nimport type { User } from './types';\nimport './styles.css';\n\n// After (sorted)\nimport type { User } from './types';\n\nimport axios from 'axios';\nimport { useState } from 'react';\n\nimport { Button } from './components/Button';\n\nimport './styles.css';","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"TypeScript Support","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome has first-class TypeScript support:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"linter\": {\n \"rules\": {\n \"suspicious\": {\n \"noExplicitAny\": \"warn\",\n \"noUnsafeDeclarationMerging\": \"error\"\n },\n \"correctness\": {\n \"noUnusedVariables\": \"error\"\n },\n \"style\": {\n \"useImportType\": \"error\",\n \"useExportType\": \"error\"\n }\n }\n }\n}","type":"text"}]},{"type":"paragraph","content":[{"text":"Type-aware linting","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"typescript"},"content":[{"text":"// Biome detects unused variables\nconst unused = 123; // ❌ Error\n\n// Enforces type imports\nimport { User } from './types'; // ❌ Error\nimport type { User } from './types'; // ✅ Correct\n\n// Detects unsafe type assertions\nconst num = \"123\" as any as number; // ⚠️ Warning","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Monorepo Support","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome works great in monorepos:","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Project Structure","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"my-monorepo/\n├── biome.json (root config)\n├── packages/\n│ ├── web/\n│ │ └── biome.json (extends root)\n│ ├── api/\n│ │ └── biome.json\n│ └── shared/\n│ └── biome.json","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Root Configuration","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"$schema\": \"https://biomejs.dev/schemas/1.9.4/schema.json\",\n \"extends\": [],\n \"formatter\": {\n \"enabled\": true,\n \"indentStyle\": \"space\",\n \"indentWidth\": 2\n },\n \"linter\": {\n \"enabled\": true,\n \"rules\": {\n \"recommended\": true\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Package Override","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"extends\": [\"../../biome.json\"],\n \"formatter\": {\n \"lineWidth\": 100\n },\n \"linter\": {\n \"rules\": {\n \"style\": {\n \"noNonNullAssertion\": \"off\"\n }\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Monorepo Scripts","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"scripts\": {\n \"check\": \"biome check .\",\n \"check:packages\": \"biome check packages/*\",\n \"format\": \"biome format --write .\",\n \"lint\": \"biome lint packages/*\"\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Performance Benefits","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Speed Comparison","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tool","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Time (10,000 files)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ESLint + Prettier","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"~60s","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Biome","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"~0.6s","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"100x faster","type":"text","marks":[{"type":"strong"}]},{"text":" on average workloads.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Caching","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome includes intelligent caching:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# First run (no cache)\nbiome check . # 1.2s\n\n# Second run (with cache)\nbiome check . # 0.1s\n\n# Clear cache\nrm -rf node_modules/.cache/biome","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Parallel Processing","type":"text"}]},{"type":"paragraph","content":[{"text":"Biome uses all CPU cores by default:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Limit CPU cores\nbiome check --max-diagnostics=50 .\n\n# Verbose output\nbiome check --verbose .","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Common Patterns","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"React Projects","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"linter\": {\n \"rules\": {\n \"a11y\": {\n \"recommended\": true,\n \"useButtonType\": \"error\",\n \"useKeyWithClickEvents\": \"error\"\n },\n \"correctness\": {\n \"useExhaustiveDependencies\": \"warn\",\n \"useHookAtTopLevel\": \"error\"\n },\n \"suspicious\": {\n \"noArrayIndexKey\": \"error\"\n }\n }\n },\n \"javascript\": {\n \"formatter\": {\n \"jsxQuoteStyle\": \"double\"\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Next.js Projects","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"files\": {\n \"ignore\": [\".next\", \"out\", \"node_modules\"]\n },\n \"overrides\": [\n {\n \"include\": [\"app/**/*.tsx\", \"pages/**/*.tsx\"],\n \"linter\": {\n \"rules\": {\n \"a11y\": {\n \"recommended\": true\n }\n }\n }\n }\n ]\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Node.js Backend","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"linter\": {\n \"rules\": {\n \"security\": {\n \"recommended\": true,\n \"noGlobalEval\": \"error\"\n },\n \"correctness\": {\n \"noUnusedVariables\": \"error\"\n }\n }\n },\n \"javascript\": {\n \"formatter\": {\n \"semicolons\": \"always\"\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Best Practices","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use ","type":"text","marks":[{"type":"strong"}]},{"text":"biome check","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" instead of separate format/lint commands","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Enable ","type":"text","marks":[{"type":"strong"}]},{"text":"--write","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" flag for automatic fixes","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Configure VS Code","type":"text","marks":[{"type":"strong"}]},{"text":" for format-on-save","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add git hooks","type":"text","marks":[{"type":"strong"}]},{"text":" to enforce quality before commits","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use CI mode","type":"text","marks":[{"type":"strong"}]},{"text":" (","type":"text"},{"text":"biome ci","type":"text","marks":[{"type":"code_inline"}]},{"text":") in continuous integration","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Start with recommended rules","type":"text","marks":[{"type":"strong"}]},{"text":" then customize","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Leverage import sorting","type":"text","marks":[{"type":"strong"}]},{"text":" to organize imports automatically","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use overrides","type":"text","marks":[{"type":"strong"}]},{"text":" for different file types or directories","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Enable VCS integration","type":"text","marks":[{"type":"strong"}]},{"text":" to respect .gitignore","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Keep configuration minimal","type":"text","marks":[{"type":"strong"}]},{"text":" - Biome has smart defaults","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Troubleshooting","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Biome Not Formatting","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Check if formatter is enabled\nbiome rage\n\n# Verify file is not ignored\nbiome check --verbose src/file.ts\n\n# Check VS Code extension logs\n# View → Output → Biome","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Conflicts with Prettier","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Disable Prettier in VS Code settings\n\"[javascript]\": {\n \"editor.defaultFormatter\": \"biomejs.biome\"\n}\n\n# Remove Prettier dependencies\nnpm uninstall prettier","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Performance Issues","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Check cache location\nbiome rage\n\n# Clear cache\nrm -rf node_modules/.cache/biome\n\n# Reduce max diagnostics\nbiome check --max-diagnostics=20 .","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Rule Configuration Not Working","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"// Ensure correct category\n{\n \"linter\": {\n \"rules\": {\n \"correctness\": { // Category name matters\n \"noUnusedVariables\": \"error\"\n }\n }\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Local Biome Configs (Your Repos)","type":"text"}]},{"type":"paragraph","content":[{"text":"Patterns from active projects:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ai-code-review/biome.json","type":"text","marks":[{"type":"code_inline"}]},{"text":": ","type":"text"},{"text":"files.includes","type":"text","marks":[{"type":"code_inline"}]},{"text":" targets ","type":"text"},{"text":"src/**/*.ts","type":"text","marks":[{"type":"code_inline"}]},{"text":" and excludes tests, ","type":"text"},{"text":"lineWidth: 100","type":"text","marks":[{"type":"code_inline"}]},{"text":", single quotes, semicolons always, and ","type":"text"},{"text":"noExplicitAny: warn","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"itinerizer-ts/biome.json","type":"text","marks":[{"type":"code_inline"}]},{"text":": ","type":"text"},{"text":"files.ignore","type":"text","marks":[{"type":"code_inline"}]},{"text":" includes ","type":"text"},{"text":"node_modules","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"dist","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":".claude","type":"text","marks":[{"type":"code_inline"}]},{"text":", and data directories; ","type":"text"},{"text":"organizeImports.enabled = true","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"matsuoka-com","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"diogenes","type":"text","marks":[{"type":"code_inline"}]},{"text":" use similar formatting defaults (2-space indent, lineWidth 100).","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Common scripts:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"lint\": \"biome check src/ --diagnostic-level=error\",\n \"lint:fix\": \"biome check src/ --write\",\n \"format\": \"biome format src/ --write\"\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Resources","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Official Docs","type":"text","marks":[{"type":"strong"}]},{"text":": https://biomejs.dev","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"VS Code Extension","type":"text","marks":[{"type":"strong"}]},{"text":": https://marketplace.visualstudio.com/items?itemName=biomejs.biome","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"GitHub","type":"text","marks":[{"type":"strong"}]},{"text":": https://github.com/biomejs/biome","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Rules Reference","type":"text","marks":[{"type":"strong"}]},{"text":": https://biomejs.dev/linter/rules/","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Migration Guide","type":"text","marks":[{"type":"strong"}]},{"text":": https://biomejs.dev/guides/migrate-eslint-prettier/","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Summary","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Biome","type":"text","marks":[{"type":"strong"}]},{"text":" is a fast all-in-one linter and formatter","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"100x faster","type":"text","marks":[{"type":"strong"}]},{"text":" than ESLint + Prettier","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Zero config","type":"text","marks":[{"type":"strong"}]},{"text":" by default with smart defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Built in Rust","type":"text","marks":[{"type":"strong"}]},{"text":" for maximum performance","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"TypeScript-first","type":"text","marks":[{"type":"strong"}]},{"text":" with excellent type support","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Import sorting","type":"text","marks":[{"type":"strong"}]},{"text":" included out of the box","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"VS Code integration","type":"text","marks":[{"type":"strong"}]},{"text":" with official extension","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Perfect for","type":"text","marks":[{"type":"strong"}]},{"text":" modern web projects, monorepos, CI/CD","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Easy migration","type":"text","marks":[{"type":"strong"}]},{"text":" from ESLint and Prettier","type":"text"}]}]}]}]},"metadata":{"date":"2026-11-02","name":"biome","tags":["biome","linting","formatting","code-quality","tooling","typescript","javascript"],"author":"Claude MPM Team","source":{"stars":78,"repo_name":"claude-mpm-skills","origin_url":"https://github.com/bobmatnyc/claude-mpm-skills/blob/HEAD/toolchains/javascript/tooling/biome/SKILL.md","repo_owner":"bobmatnyc","body_sha256":"3470665b9db2bfcb1bb1001c2e67816b393676c8e94ba7b51adc86e53c5a10d1","cluster_key":"439d240273f53eca26dc628abd8b41aca5ed76cb6c1a287b4c039fde124fa2e3","clean_bundle":{"format":"clean-skill-bundle-v1","source":"bobmatnyc/claude-mpm-skills/toolchains/javascript/tooling/biome/SKILL.md","text_bytes":1093,"source_commit":"718070a7d622921b01687799a1f9613f36c6f615","skills_sh_rank":13658,"attachment_count":1,"text_attachments":1,"attachment_storage":"skill_attachments","binary_attachments":0},"cluster_size":1,"skill_md_path":"toolchains/javascript/tooling/biome/SKILL.md","import_metadata":{"date":"2026-11-02","author":"Claude MPM Team","version":"1.0.0","category":"software-engineering","category_label":"Engineering"},"exact_dupes_collapsed_into_this":0},"license":"MIT","version":"1.0.0","category":"software-engineering","import_tag":"skills-sh-top20k-2026-11","description":"Biome - Fast all-in-one toolchain for web projects (linter + formatter in Rust, 100x faster than ESLint)","context_limit":700,"requires_tools":[],"user-invocable":false,"progressive_disclosure":{"entry_point":{"summary":"Fast all-in-one linter and formatter (Rust-based replacement for ESLint + Prettier)","quick_start":["npm install --save-dev @biomejs/biome","npx @biomejs/biome init","npx @biomejs/biome check --write ."],"when_to_use":["When you need fast linting and formatting","When replacing ESLint + Prettier","When working with TypeScript/JavaScript","When you want zero-config setup"]}},"disable-model-invocation":true}},"renderedAt":1793666619249}

Biome - Fast All-in-One Toolchain Overview Biome is a fast, all-in-one toolchain for web projects written in Rust. It replaces both ESLint and Prettier with a single tool that's 100x faster and provides zero-config defaults. Key Features : - Single tool for linting and formatting - 100x faster than ESLint - Zero configuration by default - Built-in import sorting - TypeScript-first design - Partial Prettier compatibility - Native monorepo support - VS Code integration Installation : Quick Start 1. Initialize Biome 2. Package.json Scripts 3. Basic Configuration Core Commands Check Command (Reco…