Architectural and cross-package changes — dependency direction, editor/runtime boundaries, scene schema, persistence, renderer packages. Use when changing package boundaries, serialized formats, or multiple layers. Do not apply to localized UI, styling, or test-only edits.
Split oversized TypeScript modules and classes. Use when adding features to large files, extracting helpers, reviewing god objects, or a module exceeds 300–500 lines with mixed responsibilities.
Browser input is untrusted. All project filesystem access goes through ProjectService.resolveProjectPath → ProjectRootGuard.resolveSafe. Do not call path.resolve/readFile/writeFile on user-influenced paths without that guard.