| name | ultracite-skilld |
| description | ALWAYS use when writing code importing "ultracite". Consult for debugging, best practices, or modifying ultracite. |
| metadata | {"version":"7.8.4","generated_by":"Anthropic · Haiku 4.5","generated_at":"2026-07-02T00:00:00.000Z"} |
haydenbleasel/ultracite ultracite@7.8.4
Tags: canary: 5.0.0--canary.162.3c1836f.0, latest: 7.8.4
References: package.json • README • Issues • Discussions • Releases
Search
Use skilld search "query" -p ultracite instead of grepping .skilld/ directories. Run skilld search --guide -p ultracite for full syntax, filters, and operators.
API Changes
This section documents version-specific API changes — prioritise recent major/minor releases.
-
BREAKING: tanstack framework preset — TanStack Query/Router rules moved from react preset to new tanstack preset in v7.8.0. Projects relying on Query rules must explicitly opt into tanstack preset; TanStack Router projects now resolve to tanstack instead of remix source
-
NEW: .biome.json and .biome.jsonc configuration files — v7.8.0 added support for dot-prefixed Biome config filenames. detectLinter and the doctor command now match .biome.json/.biome.jsonc alongside standard names, following Biome's documented configuration resolution order source
-
BREAKING: Oxlint configuration format — v7.5.0 migrated oxlint and oxfmt configurations from JSON to TypeScript using defineConfig. CLI now generates oxlint.config.ts and oxfmt.config.ts instead of .oxlintrc.json and .oxfmtrc.jsonc source
-
NEW: nestjs ESLint preset enforcement — v7.7.0 wired up the nestjs preset to actually enforce rules. Previously exported an empty config; now layers @darraghor/eslint-plugin-nestjs-typed (22 rules covering NestJS conventions, dependency injection, and class-validator/Swagger usage). Consumers may see new violations on first run source
-
FIXED: Oxlint ignorePatterns application — v7.8.0 fixed silent bug where ignorePatterns set in core preset were ignored because Oxlint does not merge them through extends. Generated config now sets ignorePatterns at root level for actual enforcement source
-
FIXED: Oxlint TanStack preset filename conventions — v7.8.1 corrected route files under routes/ and app/routes/ to be exempt from unicorn/filename-case, matching v7.8.0 documentation source
Also changed: Biome stable rules added in v7.7.0 · ESLint preset alignment with Oxlint configs in v7.7.0 · New Oxlint/Stylelint rules enabled in v7.8.2 · Package manager validation hardened in v7.8.0 · Generated oxlint.config.ts now pre-formatted in v7.8.1
Best Practices
-
Extend framework-specific presets rather than using generic ones — each framework (TanStack, Next.js, Remix, Vue) has dedicated presets that layer framework-aware rules for naming conventions, generated files, and plugin integration source
-
Use defineConfig() helper for Oxlint and Oxfmt configurations — migrating from JSON to TypeScript enables type inference and ensures consistency source
-
Override specific rules in your project config rather than disabling entire presets — when a rule conflicts with your use case (e.g., useAwait in abstract base classes), override it at the project level instead of turning off the whole framework preset source
-
Run ultracite doctor to verify setup before troubleshooting — the diagnostic command catches configuration issues early and provides actionable guidance source
-
Pass ignorePatterns at the root level of Oxlint configs — Oxlint does not merge patterns through extends, so they must be duplicated at the top level to actually apply source
-
Exclude package-manager lock files from linting — lock files (bun.lock, package-lock.json, yarn.lock, pnpm-lock.yaml) should be in ignorePatterns to avoid spurious violations source
-
Use --type-aware flag during init for projects that need type-safe linting — enables additional TypeScript-aware rules across the codebase source
-
Align ESLint and Oxlint presets for cross-toolchain consistency — when using both linters, keep rule configurations synchronized since they share rule semantics source
-
Leverage dynamic-enable pattern for plugin integration — framework presets dynamically enable all non-deprecated rules from framework plugins rather than hand-picking individual rules source
-
Use ultracite init --quiet in CI environments to suppress interactive prompts — prevents blocking automation workflows when running setup in non-interactive contexts source
-
Test rule changes against your codebase before committing config updates — when Ultracite enables new rules in a patch release, review violations in context before merging changes source
-
Avoid relying on framework auto-detection alone for monorepo projects — explicitly specify --frameworks during init to ensure all packages get the correct framework presets source
-
Keep Biome's default formatter settings unless overriding for a specific reason — Ultracite aligns with Biome's defaults (e.g., formatter.quoteStyle: "double") to simplify migration and reduce cognitive overhead source
-
Monitor the Ultracite /updates page for rule change explanations — rule enablement/disablement decisions are documented with reasoning to help teams understand configuration drift source
Related: zod-skilld