| name | domain-kebab-case |
| description | Requires kebab-case filenames for modules under app/src/domain. Use when adding, renaming, or importing files in app/src/domain, or when a PR touches domain layout or @domain/* path aliases. |
Domain module filenames (kebab-case)
All files under app/src/domain/ use kebab-case names, including test suffixes:
season-manager.ts, season-manager.test.ts, season-manager.integration.test.ts
discord-gateway.ts, prediction-monitor.ts
events-manager.ts, monitor-runner.ts, with-pool-client.ts
Imports use the same stem as the file (via @domain/... or relative paths):
@domain/events/events-manager
@domain/seasons/season-manager
Symbols inside files stay idiomatic TypeScript (eventsManager, SeasonManager, MonitorRunner classes, etc.); only filenames are kebab-case.
Subfolders stay lowercase single words where they already are (discord/, events/, monitors/, predictions/, seasons/, webhooks/).
For what belongs inside domain modules (orchestration vs HTTP), see domain-operations.
Naming collision: @shared/validation/domain (wire Zod snippets in app/src/shared/validation/domain.ts) is unrelated to app/src/domain/ (product domain code). Prefer @domain/... for the latter.