- Maintain type hints - All functions need type annotations
- Add docstrings - Every public method needs documentation
- Handle errors gracefully - Never crash the engine
- Log appropriately - Use logger, not print()
- Circular imports with core modules
- Not handling None/empty inputs
- Memory leaks in long-running processes
- Breaking backward compatibility
- Unit test all public methods
- Test error conditions
- Test with edge cases (empty, None, max values)
- Verify no regressions in existing tests
- Follow PEP 8
- Use pathlib for paths
- Prefer dataclasses over dicts
- Use enums for constants