Reference for non-obvious ESLint rules enforced by `@xylabs/eslint-config-flat`. Consult this before writing code to avoid common violations.

## Complexity limits
- `max-statements: 32` — break large functions into smaller helpers
- `complexity: 18` — max cyclomatic complexity per function
- `max-lines: 512` — per file (blank lines excluded)
- `max-depth: 6` — max nesting depth

## Import style
- `unicorn/import-style` — default imports for Node built-ins: `import PATH from 'node:path'`
- `no-restricted-imports` — never import from barrel `index.ts` files

## Object formatting
- Objects/imports/destructuring with 3+ properties must use multi-line:
  ```typescript
  // wrong
  const { created, templateNames, updated } = syncRuleFiles(rulesDir)

  // correct
  const {
    created, templateNames, updated,
  } = syncRuleFiles(rulesDir)
  ```
- Always use spaces inside braces: `{ foo }` not `{foo}`

## Expressions
- No standalone ternaries as statements — use `if/else`
- Prefix unused variables with `_`

## Enums are disallowed
- Use string literal unions or `const` objects:
  ```typescript
  // wrong
  enum Status { Active, Inactive }

  // correct
  type Status = 'active' | 'inactive'
  ```

## Class member ordering
- Order: fields, constructor, accessors, methods (alphabetical within groups)

## JSX
- No unnecessary braces in props: `prop="value"` not `prop={"value"}`
