Have you seen the Spine C++ documentation? It gives an overview of what's involved when creating your own renderer: Spine-cpp Runtime Documentation
To render a Spine skeleton you need to be able to render textured triangle soups with per vertex color and blending at a minimum. The mesh data is usually uploaded per frame, as Spine allows a vertex to be weighted by an arbitrary number of bones. Spine also supports free form deformation (keying position of vertices) which can't be easily done on the GPU. However, if you can fit the matrix palette into GPU side buffers, and don't use free form deformation, GPU side skinning is definitely possible.
We don't have an example for Vulkan, but you might find the renderer for SFML informative: spine-runtimes/spine-sfml.cpp at 3.7