From 860223f22e3d7cc4d01b9f9b4d57bf009e181b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Sat, 14 Feb 2026 10:42:38 +0000 Subject: [PATCH] chore: use ultacite --- .claude/CLAUDE.md | 123 ++++++++++ .claude/settings.json | 15 ++ .cursor/hooks.json | 10 + .cursor/rules/ultracite.mdc | 123 ++++++++++ .zed/settings.json | 50 ++++ admin/tsconfig.json | 5 +- apps/api/tsconfig.json | 3 +- apps/start/biome.json | 31 --- biome.json | 65 ++++-- package.json | 15 +- packages/auth/tsconfig.json | 3 +- packages/common/tsconfig.json | 3 +- packages/constants/tsconfig.json | 3 +- packages/db/tsconfig.json | 3 +- packages/email/tsconfig.json | 3 +- packages/geo/tsconfig.json | 3 +- packages/importer/tsconfig.json | 3 +- packages/integrations/tsconfig.json | 3 +- packages/js-runtime/tsconfig.json | 3 +- packages/json/tsconfig.json | 3 +- packages/logger/tsconfig.json | 3 +- packages/queue/tsconfig.json | 3 +- packages/redis/tsconfig.json | 3 +- packages/sdks/_info/tsconfig.json | 3 +- packages/sdks/astro/tsconfig.json | 3 +- packages/sdks/express/tsconfig.json | 3 +- packages/sdks/nextjs/tsconfig.json | 3 +- packages/sdks/nuxt/tsconfig.json | 3 +- packages/sdks/react-native/tsconfig.json | 3 +- packages/sdks/sdk/tsconfig.json | 3 +- packages/sdks/web/tsconfig.json | 3 +- packages/trpc/tsconfig.json | 3 +- packages/validation/tsconfig.json | 3 +- pnpm-lock.yaml | 286 ++++++++++++++++------- tooling/publish/tsconfig.json | 3 +- 35 files changed, 635 insertions(+), 163 deletions(-) create mode 100644 .claude/CLAUDE.md create mode 100644 .claude/settings.json create mode 100644 .cursor/hooks.json create mode 100644 .cursor/rules/ultracite.mdc create mode 100644 .zed/settings.json delete mode 100644 apps/start/biome.json diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md new file mode 100644 index 00000000..76b4361d --- /dev/null +++ b/.claude/CLAUDE.md @@ -0,0 +1,123 @@ +# Ultracite Code Standards + +This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting. + +## Quick Reference + +- **Format code**: `pnpm dlx ultracite fix` +- **Check for issues**: `pnpm dlx ultracite check` +- **Diagnose setup**: `pnpm dlx ultracite doctor` + +Biome (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable. + +--- + +## Core Principles + +Write code that is **accessible, performant, type-safe, and maintainable**. Focus on clarity and explicit intent over brevity. + +### Type Safety & Explicitness + +- Use explicit types for function parameters and return values when they enhance clarity +- Prefer `unknown` over `any` when the type is genuinely unknown +- Use const assertions (`as const`) for immutable values and literal types +- Leverage TypeScript's type narrowing instead of type assertions +- Use meaningful variable names instead of magic numbers - extract constants with descriptive names + +### Modern JavaScript/TypeScript + +- Use arrow functions for callbacks and short functions +- Prefer `for...of` loops over `.forEach()` and indexed `for` loops +- Use optional chaining (`?.`) and nullish coalescing (`??`) for safer property access +- Prefer template literals over string concatenation +- Use destructuring for object and array assignments +- Use `const` by default, `let` only when reassignment is needed, never `var` + +### Async & Promises + +- Always `await` promises in async functions - don't forget to use the return value +- Use `async/await` syntax instead of promise chains for better readability +- Handle errors appropriately in async code with try-catch blocks +- Don't use async functions as Promise executors + +### React & JSX + +- Use function components over class components +- Call hooks at the top level only, never conditionally +- Specify all dependencies in hook dependency arrays correctly +- Use the `key` prop for elements in iterables (prefer unique IDs over array indices) +- Nest children between opening and closing tags instead of passing as props +- Don't define components inside other components +- Use semantic HTML and ARIA attributes for accessibility: + - Provide meaningful alt text for images + - Use proper heading hierarchy + - Add labels for form inputs + - Include keyboard event handlers alongside mouse events + - Use semantic elements (`