This problem is usually solved by using shader permutations.
Basically you write a single shader containing *all* techniques you want to support (all the ones you mentioned and more). But separate each technique inside preprocessor #if X -> #endif sections.
Eg:
float3 position;
float3 normal;
#if SKINNING
skin(position)
#endif
#if NORMAL_MAPPING
process(normal)
#endif
//ETC
Then you generate multiple permutations of one shader file by compiling it multiple times with different defines (4th argument of D3DCompile function).
At runtime you select the appropriate shader permutation based on the requirements of the object you are drawing.
More info here
This way you only have to manage a shader source file and each permutation only contains the required code (no branches at runtime).
You can also try to analyse this shader for Bitsquid engine (start at line 1389 for some easy to understand code) (it combines multiple techniques like I explained)
Keep in mind that a system like this looks simple but can become quite complex once you add dependencies between techniques, keep generated permutations optimized, etc.
(For my engine I wrote a tool that manages the different permutations)
Also, each new technique can potentially double the number of permutations, so it's probably best to keep a database of the permutations your game actually need and only generate those. More info in this post
PS: Above, when I said a single shader file, I actually mean one shader file per type of object. For example I have a shader file for 3D actors, one for the terrain, a few for particles, etc. I could put them all in the same file but it doesn't make much sense since they don't share techniques (terrain and particles dont support skinning, etc)