Skip to content

File Conventions

File Conventions

The config applies additional rules and relaxations based on file patterns. Follow these conventions and the matching override blocks apply automatically.

File patterns

PatternPurposeConvention source
*.test.{ts,tsx}, __tests__/**Unit/integration testsVitest default
*.spec.tsE2E testsPlaywright default
*.stories.{ts,tsx}Component storiesStorybook default
*.config.*, vite.config.*, vitest.config.*, etc.Tool configsVite / Vitest / Next / Tailwind conventions
*.d.tsType declarationsTypeScript convention
scripts/**Build/dev scriptsCommon project convention

Generated block model

Generated configs always include a shared base block plus file-scoped overrides:

BlockFilesPurpose
eslint-config-setup/baseall filesShared core rules (TypeScript, imports, quality, etc.)
eslint-config-setup/tests**/*.test.{ts,tsx}, **/__tests__/**/*.{ts,tsx}Vitest rules + relaxed strictness
eslint-config-setup/tests-testing-librarysame as testsTesting Library rules
eslint-config-setup/e2e**/*.spec.tsPlaywright rules + relaxed strictness
eslint-config-setup/stories**/*.stories.{ts,tsx}Storybook rules + relaxed strictness
eslint-config-setup/config-filesconfig globsRelaxed rules for config files
eslint-config-setup/declarations**/*.d.tsRelaxed rules for declaration files
eslint-config-setup/scripts**/scripts/**/*.{ts,mts,js,mjs}Relaxed rules for scripts
eslint-config-setup/json, eslint-config-setup/jsonc, eslint-config-setup/markdownmatching file typesJSON/JSONC/Markdown linting
eslint-config-setup/prettierall filesDisables Prettier-conflicting formatting rules

Additional optional blocks are enabled by flags:

  • eslint-config-setup/ai-* when ai: true
  • eslint-config-setup/react + eslint-config-setup/react-effect when react: true
  • eslint-config-setup/node when node: true
  • eslint-config-setup/oxlint* when oxlint: true

Mixed runtime note

If you enable both react: true and node: true, browser and Node concerns are active in the same generated baseline. For repos that contain both frontend and backend code, add your own files-scoped blocks in eslint.config.ts to make runtime boundaries explicit. See Configuration.