--- description: Ban dynamic import() in production code — use static imports instead globs: packages/*/src/**/*.ts alwaysApply: true --- # No Dynamic Import in Production Code ## Rule Do NOT use `await import()` or dynamic `import()` expressions in production source code. Always use static top-level `import` statements. ## Why - Static imports enable tree-shaking and bundler optimizations - They make dependencies explicit and discoverable at a glance - Dynamic imports of Node built-ins or project modules add unnecessary async overhead ## Exceptions (must include a comment explaining why) 1. **`sense-runtime.ts`** — loads user-authored sense modules whose paths are only known at runtime 2. **`packages/workflow/src/worker.ts`** — loads user-authored workflow modules whose paths are only known at runtime When suppressing, add a comment directly above: ```ts // Dynamic import required: user module path resolved at runtime const mod = await import(senseIndexPath); ``` ## Test Files Test files (`__tests__/**`) are exempt — dynamic import after `vi.mock()` is standard vitest practice.