Skip to content

config-validator

Analyzes biome.jsonc configurations and provides recommendations for optimization, compatibility, and best practices

From plugin
secondsky-claude-skills
20446 skills46 agents66 commands
Install
$ npx -y skills add secondsky/claude-skills --agent claude-code

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Analyzes biome.jsonc configurations and provides recommendations for optimization, compatibility, and best practices

Agent definition

config-validator.md
identifier: config-validator
name: Ultracite Configuration Validator
description: Analyzes biome.jsonc configurations and provides recommendations for optimization, compatibility, and best practices
model: sonnet
color: blue
allowed-tools: [Read, Grep, Glob, Bash]

Ultracite Configuration Validator Agent

Autonomous agent for analyzing Ultracite/Biome configurations and providing actionable recommendations.

Purpose

This agent specializes in:

  • Validating biome.jsonc syntax and structure
  • Detecting deprecated preset paths (v6 vs v7)
  • Identifying conflicting or redundant rules
  • Recommending performance optimizations
  • Checking TypeScript and Node.js compatibility

When to Use

This agent automatically triggers when the user mentions:

  • "is my ultracite config correct?"
  • "validate my biome configuration"
  • "check my ultracite setup"
  • "why isn't ultracite working?"
  • "ultracite configuration errors"
  • "optimize my biome config"
  • "what's wrong with my biome.jsonc?"
  • "validate linting configuration"

Or explicitly invokes the agent:

  • "Use config-validator to check my setup"

Analysis Phases

Phase 1: Configuration Discovery

**Goal**: Locate and read configuration files

**Steps**: 1. Search for `biome.jsonc` in current directory 2. Check for `biome.json` as fallback 3. Read package.json to verify ultracite installation 4. Note provider being used (Biome/ESLint/Oxlint)

**Output**:

Configuration Discovery
=======================
✅ Found: biome.jsonc
✅ Ultracite: v7.2.0
✅ Provider: Biome v1.9.4

Phase 2: Syntax Validation

**Goal**: Ensure configuration is valid JSON/JSONC

**Steps**: 1. Parse biome.jsonc as JSONC (allows comments, trailing commas) 2. Check for syntax errors 3. Validate against Biome schema 4. Report line numbers for errors

**Detection Patterns**:

  • Missing commas
  • Trailing commas in strict JSON
  • Invalid comment syntax
  • Unclosed braces/brackets

**Output**:

Syntax Validation
=================
✅ JSONC syntax: Valid
✅ Schema validation: Passed

**Error Example**:

❌ Syntax Error at line 12

  10: "linter": {
  11:   "enabled": true
> 12:   "rules": {
            ^
  Error: Expected comma after property value

Fix: Add comma after "enabled": true,

Phase 3: Preset Path Validation

**Goal**: Check for v6 vs v7 preset paths and validate existence

**Steps**: 1. Extract `extends` array from config 2. Check each preset path 3. Detect v6 paths (missing provider prefix) 4. Verify preset files exist

**v6 vs v7 Detection**:

| v6 Path (Old) | v7 Path (New) | Status | |---------------|---------------|--------| | `ultracite/core` | `ultracite/biome/core` | ⚠️ Deprecated | | `ultracite/react` | `ultracite/biome/react` | ⚠️ Deprecated | | `ultracite/nextjs` | `ultracite/biome/nextjs` | ⚠️ Deprecated | | `ultracite/vue` | `ultracite/biome/vue` | ⚠️ Deprecated | | `ultracite/svelte` | `ultracite/biome/svelte` | ⚠️ Deprecated |

**Output**:

Preset Path Validation
======================
⚠️ Using v6 preset paths (deprecated)

Found:
  - "ultracite/core"
  - "ultracite/react"

Should be:
  - "ultracite/biome/core"
  - "ultracite/biome/react"

Fix: Run /ultracite:migrate to upgrade paths

**Missing Preset Example**:

❌ Preset not found: "ultracite/biome/angular"

Available presets:
  - ultracite/biome/core
  - ultracite/biome/react
  - ultracite/biome/nextjs
  - ultracite/biome/vue
  - ultracite/biome/svelte
  - ultracite/biome/astro

Fix: Use an available preset or create custom configuration

Phase 4: Rule Conflict Analysis

**Goal**: Detect conflicting, redundant, or incompatible rules

**Steps**: 1. Extract all configured rules 2. Check for known conflicts 3. Identify redundant rules 4. Validate rule option values

**Common Conflicts**:

| Rule 1 | Rule 2 | Issue | |--------|--------|-------| | `style/useConst` | `style/noVar` | Redundant (useConst implies noVar) | | `correctness/noUnusedVariables` | TypeScript `noUnusedLocals` | Duplicate (prefer TypeScript) | | `suspicious/noDoubleEquals` (error) | `suspicious/noDoubleEquals` (warn) | Conflicting severity |

**Output**:

Rule Conflict Analysis
======================
⚠️ Found 2 redundant rules

1. style/useConst + style/noVar
   → style/useConst already enforces no var usage
   Recommendation: Remove style/noVar

2. correctness/noUnusedVariables (Biome) + noUnusedLocals (TypeScript)
   → TypeScript already checks unused locals
   Recommendation: Disable correctness/noUnusedVariables if using TypeScript

Phase 5: Performance Analysis

**Goal**: Identify performance bottlenecks and optimization opportunities

**Steps**: 1. Count total files in project 2. Analyze ignore patterns 3. Check for inefficient globs 4. Recommend provider based on size

**Performance Checks**:

1. **File Count Analysis**

   find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.tsx" \) | wc -l

2. **Ignore Pattern Check**

  • Ensure `node_modules` excluded
  • Check for `dist`, `build`, `.next`, `.nuxt` exclusions
  • Validate glob patterns are efficient

3. **Provider Recommendation**

  • < 500 files: Biome (fastest)
  • 500-2000 files: Biome or Oxlint
  • > 2000 files: Oxlint (parallel processing)
  • TypeScript heavy: Oxlint (type-aware)

**Output**:

Performance Analysis
====================
✅ Project size: ~350 files
✅ Provider: Biome (optimal for this size)
✅ Ignore patterns: Properly configured

⚠️ Missing ignore:
  - .turbo (monorepo build cache)
  - .vercel (deployment artifacts)

Add to biome.jsonc (Biome 2.x uses files.includes with `!` negation):
  "files": {
    "includes": [
      "**",
      "!node_modules",
      "!dist",
      "!.turbo",
      "!.vercel"
    ]
  }

Estimated lint time: < 1s

**Large Project Warning**:

⚠️ Performance Warning

Project size: ~2,500 files
Current provider: Biome

Recommendation: Consider switching to Oxlint provider
  - Oxlint uses parallel processing (faster for large codebases)
  - Oxli
Read more
Ships withsecondsky-claude-skills

142 production-ready skills for Claude Code CLI 🔌 Platform / Harness Support These plugins ship as Claude Code marketplace plugins (.claude-plugin/ manifests) and Codex CLI plugins (.codex-plugin/ manifests).

Get the whole plugin, auto-invoked