How to make a Custom Movement Controller that can handle parkour

I don’t really know a lot to say about this, because I honestly have no idea where to start when making a custom movement controller that can handle parkour, such as climbing up walls, hanging off cliffs, etc.

What is the best method to achieve what I want to do? I have thought of creating a custom controller module, but how difficult would that actually be?