Beuria shared a breakdown of the project, so if you want to recreate it, feel free.
First, he downloaded a Rubik’s Cube model and wrote a Python script for it. He set up the rig by creating joints for each of the 26 cube pieces, all parented under a root joint. These joints were then skin-bound to their respective cube pieces. He also created nine controls, three for each of the rotation axis planes.
For functionality, he ran a script job that responded to selection changes. When a control was selected, a function gathered all the bones within that control’s rotation plane. These bones were then parented to the selected control, allowing the Cube’s face to rotate with the control’s rotation.