
Ultracite
Install when you want zero-config lint and format standards enforced while writing or reviewing JavaScript and TypeScript in an Ultracite-backed repo.
Overview
Ultracite is an agent skill most often used in Build (also Ship review) that teaches agents how to run and apply a zero-config JS/TS lint-and-format preset across Biome, ESLint, or Oxlint backends.
Install
npx skills add https://github.com/haydenbleasel/ultracite --skill ultraciteWhat is this skill?
- Zero-config preset with interactive `ultracite init` or CI flags (`--pm`, `--linter`)
- Three linter backends: Biome (recommended), ESLint + Prettier, and Oxlint + Oxfmt
- CLI workflow: `check` (read-only), `fix` (auto-fix), `doctor` (diagnose setup), optional file paths
- Agent-guided standards when writing or reviewing JS/TS in projects that already list `ultracite` in devDependencies
- Detect active stack via `biome.jsonc`, `eslint.config.mjs`, or `oxlint.config.ts`
- Three linter backends: Biome, ESLint + Prettier, Oxlint + Oxfmt
- Four primary CLI commands: check, fix, doctor, init
Adoption & trust: 4.3k installs on skills.sh; 3k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are shipping fast in JS/TS but agents and humans keep diverging on style, missing lint failures, or breaking a linter setup you never wanted to babysit.
Who is it for?
Solo builders on Bun/npm/pnpm/yarn repos who already have or want `ultracite` in devDependencies and need agents to lint, fix, and troubleshoot without reinventing config.
Skip if: Non–JavaScript/TypeScript codebases, or teams that refuse Ultracite/Biome/ESLint/Oxlint and only want ad-hoc formatting with no shared preset.
When should I use this skill?
Setting up or initializing Ultracite (ultracite init), running lint/format (check, fix, doctor), writing or reviewing JS/TS in an Ultracite project, troubleshooting lint/format issues, or when the user mentions ultracite
What do I get? / Deliverables
After following the skill, the agent runs the right Ultracite commands, respects the detected linter backend, and edits code to match the project’s enforced standards.
- Correct Ultracite CLI invocations (check/fix/doctor/init) for the detected backend
- JS/TS edits and reviews that follow the active Ultracite linter configuration
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Ultracite lands on the build shelf because solo builders typically add it during project setup and daily coding, before quality gates at ship time. Integrations fits dev-tooling that wires Biome, ESLint, or Oxlint into the repo—not a product feature, but how the codebase stays consistent.
Where it fits
Run `ultracite init --linter biome` when scaffolding a new SaaS API so agents know which config file to respect.
Apply Ultracite standards while refactoring React components so `ultracite fix` and agent edits stay aligned.
Execute `bunx ultracite check` on changed paths before opening a PR to catch style and lint regressions.
Use `ultracite doctor` after a dependency upgrade when CI suddenly reports biome or eslint config errors.
How it compares
Use this skill package to operationalize Ultracite CLI and standards—not as a replacement for installing the npm `ultracite` package or writing custom rule sets from scratch.
Common Questions / FAQ
Who is ultracite for?
It is for solo and indie builders (and their coding agents) working in JavaScript or TypeScript projects where Ultracite is installed and you want consistent lint, format, init, and doctor workflows.
When should I use ultracite?
Use it during build when setting up or editing JS/TS, during ship when running checks before merge or release, and during operate when diagnosing recurring lint or config issues—especially on `ultracite init`, `check`, `fix`, or `doctor`.
Is ultracite safe to install?
Treat it like any third-party skill: review the Security Audits panel on this Prism page and your org policy before enabling it in production workflows; the skill itself documents CLI usage rather than granting new permissions beyond your agent’s normal shell and filesystem acces
SKILL.md
READMESKILL.md - Ultracite
# Ultracite Zero-config linting and formatting for JS/TS projects. Supports three linter backends: **Biome** (recommended), **ESLint** + Prettier, and **Oxlint** + Oxfmt. ## Detecting Ultracite Check if `ultracite` is in `package.json` devDependencies. Detect the active linter by looking for: - `biome.jsonc` → Biome - `eslint.config.mjs` → ESLint - `oxlint.config.ts` → Oxlint ## CLI Commands ```bash # 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`. ## Initialization `bunx ultracite init` runs an interactive setup. For non-interactive (CI) use, pass flags: ```bash bunx 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`. ## Code Standards When writing code in a project with Ultracite, follow these standards. For the full rules reference, see [references/code-standards.md](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,