This to me looks like a solid way to do things. I don’t agree with all of it, for sure, but I’m a big proponent of separating concerns.
James breaks utilities down into 3 concerns: aesthetics, layout and spacing. Aesthetic being more like CUBE CSS Blocks, layouts being like CUBE CSS Compositions and spacing acting as CUBE CSS Utilities.
To add my opinion in the ring, we’ve found that avoiding any aesthetics with utility classes to be very useful in recent projects, especially where heavy theming has been required. The point I’m making is like James’: always be open to making changes to how you approach CSS to make it work for you and your team.