home / skills / gracefullight / stock-checker / biome-validator
This skill validates Biome 2.3+ configurations for correctness, updates patterns, and helps audit or prepare for linting.
npx playbooks add skill gracefullight/stock-checker --skill biome-validatorReview the files below or copy the command above to add this skill to your agents.
---
name: biome-validator
description: Validate Biome 2.3+ configuration and detect outdated patterns. Ensures proper schema version, domains, assists, and recommended rules. Use before any linting work or when auditing existing projects.
version: 1.0.0
tags:
- biome
- linter
- formatter
- validation
- code-quality
---
# Biome Validator
Validates Biome 2.3+ configuration and prevents outdated patterns. Ensures type-aware linting, domains, and modern Biome features are properly configured.
## When This Activates
- Setting up linting for a new project
- Before any code quality work
- Auditing existing Biome configurations
- After AI generates biome.json
- CI/CD pipeline validation
## Quick Start
```bash
python3 ~/.claude/skills/biome-validator/scripts/validate.py --root .
python3 ~/.claude/skills/biome-validator/scripts/validate.py --root . --strict
```
## What Gets Checked
### 1. Biome Version & Schema
**GOOD - Biome 2.3+:**
```json
{
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json"
}
```
**BAD - Old schema:**
```json
{
"$schema": "https://biomejs.dev/schemas/1.9.0/schema.json"
}
```
### 2. Package Version
```json
// GOOD: v2.3+
"@biomejs/biome": "^2.3.0"
// BAD: v1.x or v2.0-2.2
"@biomejs/biome": "^1.9.0"
```
### 3. Linter Configuration
**GOOD - Biome 2.x:**
```json
{
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"suspicious": {
"noExplicitAny": "warn"
}
}
}
}
```
### 4. Biome Assist (2.0+)
**GOOD - Using assist:**
```json
{
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
```
**BAD - Old organizeImports location:**
```json
{
"organizeImports": {
"enabled": true
}
}
```
### 5. Domains (2.0+)
**GOOD - Using domains for framework-specific rules:**
```json
{
"linter": {
"domains": {
"react": "on",
"next": "on"
}
}
}
```
### 6. Suppression Comments
**GOOD - Biome 2.0+ comments:**
```typescript
// biome-ignore lint/suspicious/noExplicitAny: legacy code
// biome-ignore-all lint/style/useConst
// biome-ignore-start lint/complexity
// biome-ignore-end
```
**BAD - Wrong format:**
```typescript
// @ts-ignore // Not Biome
// eslint-disable // Wrong tool
```
## Biome 2.3+ Features
### Type-Aware Linting
Biome 2.0+ includes type inference without requiring TypeScript compiler:
```json
{
"linter": {
"rules": {
"correctness": {
"noUndeclaredVariables": "error",
"useAwaitThenable": "error"
}
}
}
}
```
### Assist Actions
```json
{
"assist": {
"actions": {
"source": {
"organizeImports": "on",
"useSortedKeys": "on"
}
}
}
}
```
### Multi-file Analysis
Lint rules can query information from other files for more powerful analysis.
### Framework Domains
```json
{
"linter": {
"domains": {
"react": "on", // React-specific rules
"next": "on", // Next.js rules
"test": "on" // Testing framework rules
}
}
}
```
## Recommended Configuration
```json
{
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"complexity": {
"noForEach": "off"
},
"style": {
"noNonNullAssertion": "off"
},
"suspicious": {
"noArrayIndexKey": "off",
"noExplicitAny": "warn"
},
"correctness": {
"useAwaitThenable": "error",
"noLeakedRender": "error"
}
},
"domains": {
"react": "on",
"next": "on"
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"trailingCommas": "es5",
"semicolons": "always"
}
},
"files": {
"ignore": [
"node_modules",
"dist",
"build",
".next",
"out",
".cache",
".turbo",
"coverage"
]
}
}
```
## Deprecated Patterns
| Deprecated | Replacement (2.3+) |
|------------|-------------------|
| `organizeImports.enabled` | `assist.actions.source.organizeImports` |
| Schema < 2.0 | Schema 2.3.11+ |
| `@biomejs/biome` < 2.3 | `@biomejs/biome@latest` |
| No domains config | Use `linter.domains` for frameworks |
## Validation Output
```
=== Biome 2.3+ Validation Report ===
Package Version: @biomejs/[email protected] ✓
Configuration:
✓ Schema version: 2.3.11
✓ Linter enabled with recommended rules
✓ Using assist.actions for imports
✗ No domains configured (consider enabling react, next)
✓ Formatter configured
Rules:
✓ noExplicitAny: warn
✓ useAwaitThenable: error
✗ noLeakedRender not enabled (recommended)
Summary: 2 issues found
```
## Migration from ESLint
### Step 1: Install Biome
```bash
bun remove eslint prettier eslint-config-* eslint-plugin-*
bun add -D @biomejs/biome@latest
```
### Step 2: Create biome.json
```bash
bunx biome init
```
### Step 3: Migrate rules
```bash
bunx biome migrate eslint --write
```
### Step 4: Update scripts
```json
{
"scripts": {
"lint": "biome lint .",
"lint:fix": "biome lint --write .",
"format": "biome format --write .",
"check": "biome check .",
"check:fix": "biome check --write ."
}
}
```
### Step 5: Remove old configs
```bash
rm .eslintrc* .prettierrc* .eslintignore .prettierignore
```
## VS Code Integration
```json
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"source.organizeImports.biome": "explicit",
"quickfix.biome": "explicit"
}
}
```
## CI/CD Integration
```yaml
# .github/workflows/lint.yml
- name: Validate Biome Config
run: |
python3 ~/.claude/skills/biome-validator/scripts/validate.py \
--root . \
--strict \
--ci
- name: Lint
run: bunx biome check --error-on-warnings .
```
## Integration
- `linter-formatter-init` - Sets up Biome from scratch
- `nextjs-validator` - Validates Next.js (enable next domain)
- `bun-validator` - Validates Bun workspace
This skill validates Biome 2.3+ configuration files and detects outdated patterns that break modern Biome behavior. It helps ensure the correct schema, package version, linter settings, assist actions, domains, and recommended rules are present. Use it to catch migration gaps before linting or CI runs.
The validator scans biome.json (and related config) to confirm the $schema matches Biome 2.3+ and that @biomejs/biome is a compatible version. It checks linter.enabled, recommended rule sets, type-aware correctness rules, assist.actions for source actions, domains for framework-specific rules, formatter options, and suppression comment formats. The tool reports issues, explains deprecated patterns, and suggests concrete replacements.
What does the validator check first?
It first verifies the $schema and @biomejs/biome package version to ensure Biome 2.3+ compatibility.
Will it auto-fix deprecated fields?
The primary output is a report with recommended replacements; some integrations can offer automated migrations, but manual review is advised.