Command svcdec stands for 'service decorator'. It reads a service interface XYZServer generated by protoc and generates DecoratedXYZ with this structure:

type DecoratedXYZ struct {
  Service XYZServer
  Prelude func(ctx context.Context, methodName string, req proto.Message) (context.Context, error)

DecoratedXYZ has the same methods as XYZServer: they call Prelude before forwarding the call to the corresponding XYZServer method.

svcdec is designed to be run through go generate:

//go:generate svcdec -type GreetServer