Not sure how simple this. Maybe something like
class Generic1 f where
toSpine1 :: forall a. f a -> GenericSpine
fromSpine1 :: forall a. GenericSpine -> Maybe (f a)
toSignature1 :: Proxy1 f -> GenericSignature1
where GenericSignature1 adds a constructor for the type argument somehow.
With a view to deriving Functor, Foldable, Traversable, etc.