Try:
UPROPERTY(EditAnywhere, Category = "Abilities")
TSubclassOf<class UAbility> PrimaryAbilityBP;
// add UPROPERTY header if needed
class UAbility* PrimaryAbility; // you'll have to spawn this from the BP class above
Or if you’d rather have a stack of abilities a character can have:
UPROPERTY(EditAnywhere, Category = "Abilities")
TArray< TSubclassOf<class UAbility>> AbilityBPs;
// add UPROPERTY header if needed
TArray< class UAbility*> Abilities; // spawn each BP and add to this array
This will let you add BPs in the edtior. It won’t be an instanced object, but the static class you can then spawn the object with in BeginPlay or wherever. I think this is the only practical way to do what you want, I am using a similar system.