From shipshitdev-library
Validates Biome 2.3+ configurations, detects outdated patterns like old schemas and rules, ensures domains, assists, and type-aware linting. Use before linting, auditing, or after AI-generated configs.
npx claudepluginhub shipshitdev/skillsThis skill uses the workspace's default tool permissions.
Validates Biome 2.3+ configuration and prevents outdated patterns. Ensures type-aware linting, domains, and modern Biome features are properly configured.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes competition with Porter's Five Forces, Blue Ocean Strategy, and positioning maps to identify differentiation opportunities and market positioning for startups and pitches.
Validates Biome 2.3+ configuration and prevents outdated patterns. Ensures type-aware linting, domains, and modern Biome features are properly configured.
python3 scripts/validate.py --root .
python3 scripts/validate.py --root . --strict
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"
}
// GOOD: v2.3+
"@biomejs/biome": "^2.3.0"
// BAD: v1.x or v2.0-2.2
"@biomejs/biome": "^1.9.0"
GOOD - Biome 2.x:
{
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"suspicious": {
"noExplicitAny": "warn"
}
}
}
}
GOOD - Using assist:
{
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
BAD - Old organizeImports location:
{
"organizeImports": {
"enabled": true
}
}
GOOD - Using domains for framework-specific rules:
{
"linter": {
"domains": {
"react": "on",
"next": "on"
}
}
}
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.0+ includes type inference without requiring TypeScript compiler:
{
"linter": {
"rules": {
"correctness": {
"noUndeclaredVariables": "error",
"useAwaitThenable": "error"
}
}
}
}
{
"assist": {
"actions": {
"source": {
"organizeImports": "on",
"useSortedKeys": "on"
}
}
}
}
Lint rules can query information from other files for more powerful analysis.
{
"linter": {
"domains": {
"react": "on", // React-specific rules
"next": "on", // Next.js rules
"test": "on" // Testing framework rules
}
}
}
{
"$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 | 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 |
=== Biome 2.3+ Validation Report ===
Package Version: @biomejs/biome@2.3.11 ✓
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
bun remove eslint prettier eslint-config-* eslint-plugin-*
bun add -D @biomejs/biome@latest
bunx biome init
bunx biome migrate eslint --write
{
"scripts": {
"lint": "biome lint .",
"lint:fix": "biome lint --write .",
"format": "biome format --write .",
"check": "biome check .",
"check:fix": "biome check --write ."
}
}
rm .eslintrc* .prettierrc* .eslintignore .prettierignore
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"source.organizeImports.biome": "explicit",
"quickfix.biome": "explicit"
}
}
# .github/workflows/lint.yml
- name: Validate Biome Config
run: |
python3 scripts/validate.py \
--root . \
--strict \
--ci
- name: Lint
run: bunx biome check --error-on-warnings .
linter-formatter-init - Sets up Biome from scratchnextjs-validator - Validates Next.js (enable next domain)bun-validator - Validates Bun workspace