Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects. Use when: (1) Setting up or initializing Ultracite in a project (ultracite init), (2) Running linting or formatting commands (check, fix, doctor), (3) Writing or reviewing JS/TS code in a project that uses Ultracite — to follow its code standards, (4) Troubleshooting linting/formatting issues, (5) User mentions 'ultracite', 'lint', 'format', 'code quality', or 'biome/eslint/oxlint' in a project with Ultr
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 29% | 0% |
Zero-config linting and formatting for JS/TS projects. Supports three linter backends: Biome (recommended), ESLint + Prettier, and Oxlint + Oxfmt.
Check if ultracite is in package.json devDependencies. Detect the active linter by looking for:
biome.jsonc → Biomeeslint.config.mjs → ESLintoxlint.config.ts → Oxlintbash# Check for issues (read-only) bunx ultracite check # Auto-fix issues bunx ultracite fix # Diagnose setup problems bunx ultracite doctor # Initialize in a new project bunx ultracite init
Replace bunx with npx, pnpx, or yarn dlx depending on the package manager.
check and fix accept optional file paths: bunx ultracite check src/index.ts.
bunx ultracite init runs an interactive setup. For non-interactive (CI) use, pass flags:
bashbunx ultracite init \ --pm bun \ --linter biome \ --editors universal \ --agents claude copilot \ --frameworks react next \ --integrations husky lint-staged \ --quiet
Flags:
--pm — npm | yarn | pnpm | bun--linter — biome (recommended) | eslint | oxlint--editors — universal (writes .vscode/settings.json for every VS Code-based editor) | vscode | zed | cursor | windsurf | antigravity | kiro | trae | void | bob | codebuddy--agents — claude | codex | copilot | cline | amp | gemini | cursor-cli + 19 more--frameworks — react | next | solid | vue | svelte | qwik | remix | angular | astro | nestjs--integrations — husky | lefthook | lint-staged | pre-commit--hooks — Enable auto-fix hooks for supported agents/editors--type-aware — Enable type-aware linting (oxlint only)--skip-install — Skip dependency installation--quiet — Suppress prompts (auto-detected when CI=true)Init creates config that extends Ultracite presets:
jsonc// biome.jsonc { "extends": ["ultracite/biome/core", "ultracite/biome/react"] }
Framework presets available per linter: core, react, next, solid, vue, svelte, qwik, remix, angular, astro, nestjs.
When writing code in a project with Ultracite, follow these standards. For the full rules reference, see references/code-standards.md.
Key rules at a glance:
Formatting is handled by the project's configured linter/formatter. Respect the repository's existing formatter settings instead of forcing one fixed line width, quote style, or trailing comma policy.
Type safety: Use explicit types when they improve clarity. Prefer unknown over any. Use as const for immutable values and rely on type narrowing over blunt assertions.
Modern JavaScript/TypeScript: Prefer const, destructuring, optional chaining, nullish coalescing, template literals, for...of, and concise arrow functions.
Async and correctness: Always await promises in async functions. Prefer async/await over promise chains. Remove console.log, debugger, and alert from production code.
React and accessibility: Use function components, keep hooks top-level with correct deps, avoid nested component definitions, and use semantic HTML with the right labels, headings, alt text, and keyboard affordances.
Organization, security, performance, and testing: Keep functions focused, prefer early returns, avoid dangerouslySetInnerHTML and eval(), prefer specific imports and top-level regex, and keep tests free of .only and .skip.
Run bunx ultracite doctor to diagnose. It checks:
.eslintrc.*, .prettierrc.* files)Common fixes:
.eslintrc.* and .prettierrc.* files after migrating to Ultracitebunx ultracite init again or manually add ultracite to devDependenciesOther measured skills in the registry, with their headline benchmark lift.