hai @cocanegirl Enforce clear separation of responsibilities
Split the codebase into distinct layers:
Core / logic
Pure Python. No Maya imports. This contains algorithms, math, data handling, and rules.
Maya integration layer
All maya.cmds and API calls live here. This layer translates scene data into inputs for the core logic.
UI layer
PySide UI code only. No business logic. UI talks to controllers, not directly to Maya.
This separation alone prevents the “giant script” problem.
Use a package-based folder structure
Instead of many standalone scripts, use a proper Python package:
studio_tools/
├─ core/ # pure logic (testable outside Maya)
├─ maya/ # cmds / API wrappers
├─ tools/ # one folder per tool
│ └─ tween/
│ ├─ logic.py
│ ├─ controller.py
│ └─ ui.py
├─ ui/ # shared UI components
├─ config/ # per-project settings
├─ tests/ # unit tests
└─ launcher.py
Each tool is self-contained, and shared functionality lives in common modules.