I’m not completely sure, but I don’t think it’s an importer issue. I tried a few viewers and they all seem to have bad normals. It’s a bit hard to tell because the skin is scaling the model up so much that the bounding calculations for the camera is all messed up.
So after more investigation into the normals, I found the issue and solved it. TL;DR: Updating from Blender 2.82 -> 2.91 fixed it.
So in Blender 2.82 there was a bug where exporting a mesh into glTF rotated it 90 degrees and miniaturised the mesh. This was fixed in 2.83 which had big improvements in skinning for the glTF importer.