We created something like this for our project. The whole thing was added a little hacky and there is definitely room for improvements 😉
I added an excerpt of our git patch file containing the changes made to node canvas. (The patch will most likely not work on your project but I think you’ll get the idea from reading it)
[CreateAssetMenu(fileName = “new_FloatReference”, menuName = “VariableRefs/Float”)]
public class FloatRef : VariableRef<float>
The scriptable objects can then be selected from nodecanvas when selecting a variable.