I need a method to store class type in variable, so it can be like
private ClassType classType; //.................... classType = Regeneration; //Regeneration - some class, extending base Skill class gameObject.AddComponent<classType>(); //.................... Skill skillComp = (Skill)GetComponent<classType>();
.NET Reference is viable source of information regarding advanced C# aspects: Object.GetType Method (System) | Microsoft Learn
For a Component to be attached to a GameObject it must derive/inherit/extend from MonoBehaviour. You can put the custom type on a class that does infact inherit from MonoBehaviour and use it like any other object type(field/property/etc).