Skip to content
Ultracite
Esc
↑↓navigate↵open⌘Jpreview
Latest update — v7.12.2 released

The linter and formatter for agentic development

Ultracite is a zero-config preset for Oxlint, Biome, and ESLint that helps humans and agents write consistent, type-safe code.

$

Terminal

$ npx ultracite@latest init┌  Ultracite v7.12.2 Initialization│●  Detected lockfile, using bun│◇  Which linter do you want to use?│  Oxlint + Oxfmt (Recommended)│◇  Which frameworks are you using (optional)?│  React, Next.js, Vitest / Bun│◇  Which JS plugins would you like to add (optional)?│  none│◇  Which editors do you want to configure (recommended)?│  Universal (creates .vscode/settings.json for Visual Studio Code, Cursor, Windsurf, and more)│◇  Which agent files do you want to add (optional)?│  Universal (creates AGENTS.md for Codex, Jules, Devin, and more), Claude (creates .claude/CLAUDE.md)│◇  Which agent hooks do you want to enable (optional)?│  Cursor, Claude Code│◆  Would you like any of the following (optional)?│  ◻ Husky pre-commit hook│  ◻ Lefthook pre-commit hook│  ◻ Lint-staged│  ◻ pre-commit (Python framework)│  ↑/↓ to navigate • Space: select • Enter: confirm└

Trusted by top companies

And used by thousands of open source projects.

OpenAI
Vercel
Profound
Adobe
Clerk
Alan Turing Institute
Prisma
U.S. Department of Veterans Affairs
French Government
Tencent
PostHog
Axiom
Resend
Neon
ElevenLabs
Mintlify
Sentry
Raycast
Moonshot
Augment Code
  • Biome
  • ESLint
  • Oxlint
  • Prettier
  • Stylelint

Works with your favorite tools

Hundreds of rules for your framework to optimize your JavaScript / TypeScript code, while still allowing you to customize when needed.

I'm using
import { defineConfig } from "oxlint";
import core from "ultracite/oxlint/core";
import react from "ultracite/oxlint/react";
import next from "ultracite/oxlint/next";
import vitest from "ultracite/oxlint/vitest";

export default defineConfig({
  extends: [core, react, next, vitest],
  ignorePatterns: core.ignorePatterns,
});
import { defineConfig } from "oxfmt";
import ultracite from "ultracite/oxfmt";

export default defineConfig({
  ...ultracite,
});

What ultracite init writes with the React, Next.js and Vitest presets.

Designed for humans and agents

Ensure consistent code style and quality across all team members and AI models, eliminating debates over formatting and reducing code review friction.

Agent integration

Rules files for 41 agents, plus hooks that fix every file an agent edits in Cursor, Windsurf, CodeBuddy, Claude Code, and GitHub Copilot.

Editor configuration

Automatically generate editor files for format on save, auto-fixes, and TypeScript defaults.

Configurable presets

Strict linter and formatter defaults out of the box, with every rule still yours to override.

Problems panel

Diagnostics from your linter's editor extension show up in the VS Code Problems panel.

Fix everything, not just the autofixable

Autofix handles the mechanical issues. For everything else, ultracite fix --claude or --codex hands the remaining diagnostics to your local agent CLI — an autonomous harness that repairs your codebase file by file and proves every fix.

Terminal

$ npx ultracite fix --codex ┌  ultracite fix — powered by Codex│◇  Autofix complete. 9 issues in 3 files left for Codex.✓ src/queue.ts:2:22  no-async-promise-executor — Promise executor functions…✓ src/queue.ts:2:22  require-await — Async function has no `await` expression.✓ src/queue.ts:23:26  require-await — Async function has no `await` expression. src/config-loader.ts:3:10  no-eval — eval can be harmful. src/config-loader.ts:10:22  eqeqeq — Expected === and instead saw == src/config-loader.ts:18:10  no-self-compare — Both sides of this comparison…… 3 more issues in 1 file

Requires the Claude Code or Codex CLI. Agents run non-interactively with edit-only permissions.

See Ultracite in action

Two community walkthroughs of replacing ESLint and Prettier with Ultracite's Biome preset in a real project.

The EASIEST Way To Switch From ESLint & Prettier to Biome — Ultraciteby Better Stack
This New Tool Made Me Delete ESLint Without Regretby OrcDev

Works with all your favorite agents…

Ultracite writes a rules file for every one of these agents, so the code they generate follows the same standards your linter enforces.

  • Claude Code
  • Codex
  • Gemini
  • Warp
  • OpenCode
  • Qwen Code
  • GitHub Copilot
  • 34 more agents

…and all your favorite editors

Ultracite writes settings for each of these editors, so your code is formatted and fixed on save by your linter's extension.

  • Visual Studio Code
  • Cursor
  • Windsurf
  • CodeBuddy
  • Antigravity
  • IBM Bob
  • Kiro
  • Trae
  • Void
  • Zed

Supported by our sponsors

Ultracite is a community-driven project, powered by the generosity of these companies. Become a sponsor.

Try it in your terminal

One command to install. Zero config, works with Oxlint, Biome, and ESLint.

$