Creating a custom visualization plugin for Kibana is arguably even more complex. Here is documentation for plugin development in general: External plugin development | Kibana Guide [8.2] | Elastic
AS an example check out how the tagcloud visualization is implemented - sankey would be similar: kibana/src/plugins/vis_types/tagcloud at main · elastic/kibana · GitHub