Ultracite

作者 haydenbleaselc162e819eb18无许可证3.3K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库今天更新

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 Ultracite installed.

AI 生成的概览

指导 JavaScript/TypeScript 项目中 Ultracite 代码检查与格式化预设的安装、使用和故障排查。

功能
该技能说明如何检测、初始化并使用 Ultracite——一个面向 JavaScript 和 TypeScript 项目的零配置代码检查与格式化预设。它记录了用于检查、自动修复、诊断和初始化项目的命令行命令,以及用于包管理器、检查器后端、编辑器、代理、框架和集成的初始化参数。它还概述了在 Ultracite 项目中编写和审查代码的代码规范,并列出常见配置问题的排查步骤。
适用场景
适用于在项目中安装 Ultracite、运行其检查或格式化命令,或诊断安装问题。也适用于在使用了 Ultracite 的代码库中编写或审查 JavaScript/TypeScript 代码,或用户提到 ultracite、lint、format、代码质量或 biome/eslint/oxlint 时。
运行要求
需要一个 JavaScript/TypeScript 项目,并配备 npm、yarn、pnpm、bun、deno、nub 或 aube 等包管理器;初始化时需要网络访问以下载 ultracite 包。该技能不附带脚本,仅为说明文档,并包含一份代码规范参考文档。

Ultracite

Zero-config linting and formatting for JS/TS projects. Supports three linter backends: Oxlint + Oxfmt (recommended), Biome, and ESLint + Prettier + Stylelint.

Detecting Ultracite

Check if ultracite is in package.json dependencies or devDependencies. Detect the active linter by looking for (searching upward from the current directory):

  • biome.json / biome.jsonc → Biome
  • eslint.config.* (.mjs, .js, .cjs, .ts, .mts, .cts) → ESLint (with Prettier for formatting)
  • oxlint.config.ts → Oxlint (with oxfmt.config.ts for formatting)

CLI Commands

bash
# Check for issues (read-only)bunx ultracite check
# Auto-fix issuesbunx ultracite fix
# Diagnose setup problemsbunx ultracite doctor
# Initialize in a new projectbunx ultracite init

Replace bunx with npx, pnpm exec, or yarn depending on the package manager, so the project's installed Ultracite runs (pnpm dlx and yarn dlx download the latest release instead, and Yarn 1 has no dlx). Only init in a project without Ultracite needs a download runner such as pnpm dlx.

check and fix accept optional file paths: bunx ultracite check src/index.ts. Unknown options are passed through to the underlying linter (e.g. bunx ultracite check --max-warnings 0).

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 | deno | nub | aube
  • --linter — oxlint (recommended) | biome | eslint
  • --editors — universal (writes .vscode/settings.json for every VS Code-based editor) | vscode | cursor | windsurf | codebuddy | antigravity | bob | kiro | trae | void | zed
  • --agents — universal (writes AGENTS.md) | claude | codex | copilot | cline | amp | gemini | cursor-cli + 34 more (41 agents supported)
  • --frameworks — react | next | solid | vue | svelte | qwik | remix | tanstack | angular | astro | nestjs | jest | vitest
  • --integrations — husky | lefthook | lint-staged | pre-commit
  • --hooks — Enable auto-fix hooks: claude | copilot | cursor | windsurf | codebuddy
  • --js-plugins — Opt-in Oxlint JS plugins: @shadcn/lint | anti-slop | eslint-plugin-github | eslint-plugin-sonarjs | oxlint-plugin-react-doctor
  • --type-aware — Enable type-aware linting (Biome: extends the type-aware preset; Oxlint: installs oxlint-tsgolint)
  • --install-skill — Install the reusable Ultracite skill after setup
  • --skip-install — Skip dependency installation
  • --quiet — Suppress prompts (auto-detected when CI=true); defaults to oxlint when --linter is omitted

Init creates config that extends Ultracite presets:

jsonc
// biome.jsonc{ "extends": ["ultracite/biome/core", "ultracite/biome/react"] }
ts
// eslint.config.mjs — arrays of flat configs, spread togetherimport core from "ultracite/eslint/core";import react from "ultracite/eslint/react";export default [...core, ...react];
ts
// oxlint.config.ts — imports passed to extendsimport { defineConfig } from "oxlint";import core from "ultracite/oxlint/core";export default defineConfig({  extends: [core],  ignorePatterns: core.ignorePatterns,});

Presets available per linter (ultracite/<linter>/<preset>): core, react, next, solid, vue, svelte, qwik, remix, tanstack, angular, astro, nestjs, jest, vitest. Biome also has type-aware. Oxlint also has js-plugins (eslint-plugin-github, eslint-plugin-sonarjs and oxlint-plugin-react-doctor run through oxlint's JS plugin support, with next/js-plugins and tanstack/js-plugins adding framework-specific React Doctor rules), anti-slop and shadcn. These are opt-in: init only adds them when picked in its prompt or passed with --js-plugins. Oxlint and ESLint also have gdp, for codebases that use gdp-ts authorization proofs (@gdp-ts/core ships the plugin); init never adds it, so extend it by hand after core.

Code Standards

When writing code in a project with Ultracite, follow these standards. For the full rules reference, see references/code-standards.md [blocked].

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.

Troubleshooting

Run bunx ultracite doctor to diagnose. It checks:

  1. Linter and formatter installation (Biome; or ESLint + Prettier + Stylelint; or Oxlint + oxfmt)
  2. Config validity (extends the ultracite presets correctly)
  3. Ultracite in package.json dependencies
  4. Conflicting tools (legacy .eslintrc.* files; .prettierrc.*/prettier.config.* when not using the ESLint backend)

Common fixes:

  • Conflicting configs: Delete legacy .eslintrc.* and .prettierrc.* files after migrating to Ultracite
  • Missing dependency: Run bunx ultracite init again or manually add ultracite to devDependencies
  • Rules not applying: Ensure config file extends the correct presets for your framework

来源与署名

来源:haydenbleasel/ultracite位于skills/ultracite提交c162e81

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架