Character keeps glitching when on ramp

The small angles given are probably just because its actually off by that small angle
A 0.1 degree difference or even a 3 degree difference Id say is an expected value
Does it not increase beyond that?
If you just anchor it and tilt and rotate it does it give the proper angle, even on slopes?
It should always give the angle to the flat edge of the surface in degrees

if its a flat edge i dont understand why it varies so much from 0,0. Anyways heres a clip

Are you using the skateboards look right and up vector or the humanoidrootparts?
It doesn’t look responsive to the rotation of the skateboard like it should be (they’d prob be welded together anyways but) but is definitely acting correctly in response to a certain CFrame, I’d guess the hrp
Otherwise it looks like it’s working perfectly

im not too sure about perfect, its doing the sole problem i was trying to fix and it kind of glitches out or something randomly

(problem being the swinging to the left or right when going up a slope)

You could add an additional pid for steering or use a bodygyro for steering or smthn, but given that you didnt want to use a bodygyro for balancing Id guess not
If the angle is reading correctly which it is Id say the issue is then mostly with the implementation of it (the sudden turning doesnt help because it can cause the angles to suddenly change, but theres ways to compensate), you could try applying the force at the center of mass + some height, or some other solution
Not sure whatd work

why does it vary so much though? that doesnt feel right to me

i think what your code is doing is giving the angle that it is in instead of what it should be

You are right that it gives you what it currently is relative to the surface, but what the angle should be relative to the surface is always 0

Im not very good with scripting, but I hope this can help, change the max slope angle to a higher number in settings