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 從公開儲存庫中收錄這些內容。

檢舉或申請下架