Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add shipshitdev/library --skill "biome-validator"
Install specific skill from multi-skill repository
# 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.
# SKILL.md
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
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+:
{
"$schema": "https://biomejs.dev/schemas/2.3.12/schema.json"
}
BAD - Old schema:
{
"$schema": "https://biomejs.dev/schemas/1.9.0/schema.json"
}
2. Package Version
// 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:
{
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"suspicious": {
"noExplicitAny": "warn"
}
}
}
}
4. Biome Assist (2.0+)
GOOD - Using assist:
{
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
BAD - Old organizeImports location:
{
"organizeImports": {
"enabled": true
}
}
5. Domains (2.0+)
GOOD - Using domains for framework-specific rules:
{
"linter": {
"domains": {
"react": "on",
"next": "on"
}
}
}
6. Suppression Comments
GOOD - Biome 2.0+ comments:
// biome-ignore lint/suspicious/noExplicitAny: legacy code
// biome-ignore-all lint/style/useConst
// biome-ignore-start lint/complexity
// biome-ignore-end
BAD - Wrong format:
// @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:
{
"linter": {
"rules": {
"correctness": {
"noUndeclaredVariables": "error",
"useAwaitThenable": "error"
}
}
}
}
Assist Actions
{
"assist": {
"actions": {
"source": {
"organizeImports": "on",
"useSortedKeys": "on"
}
}
}
}
Multi-file Analysis
Lint rules can query information from other files for more powerful analysis.
Framework Domains
{
"linter": {
"domains": {
"react": "on", // React-specific rules
"next": "on", // Next.js rules
"test": "on" // Testing framework rules
}
}
}
Recommended Configuration
{
"$schema": "https://biomejs.dev/schemas/2.3.12/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
bun remove eslint prettier eslint-config-* eslint-plugin-*
bun add -D @biomejs/biome@latest
Step 2: Create biome.json
bunx biome init
Step 3: Migrate rules
bunx biome migrate eslint --write
Step 4: Update scripts
{
"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
rm .eslintrc* .prettierrc* .eslintignore .prettierignore
VS Code Integration
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"source.organizeImports.biome": "explicit",
"quickfix.biome": "explicit"
}
}
CI/CD Integration
# .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 scratchnextjs-validator- Validates Next.js (enable next domain)bun-validator- Validates Bun workspace
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.