kitgen is an experimental code generation utility that helps with some of the boilerplate code required to implement the "onion" pattern go-kit utilizes.


Before using this tool please explore the testdata directory for examples of the inputs it requires and the outputs that will be produced. You may not need this tool. If you are new to and just learning go-kit or if your use case involves introducing go-kit to an existing codebase you are better suited by slowly building out the "onion" by hand.

Before starting you need to install kitgen utility — see instructions below.

  1. Define your service. Create a .go file with the definition of your Service interface and any of the custom types it refers to:
// service.go
package profilesvc // don't forget to name your package

type Service interface {
    PostProfile(ctx context.Context, p Profile) error
    // ...
type Profile struct {
    ID        string    `json:"id"`
    Name      string    `json:"name,omitempty"`
    // ...
  1. Generate your code. Run the following command:
kitgen ./service.go
# kitgen has a couple of flags that you may find useful

# keep all code in the root directory
kitgen -repo-layout flat ./service.go

# put generated code elsewhere
kitgen -target-dir ~/Projects/gohome/src/


  1. Fetch the inlinefiles utility. Go generate will use it to create your code:
go get
  1. Install the binary for easy access to kitgen. Run the following commands:
cd $GOPATH/src/
go install

# Check installation by running:
kitgen -h


The Go Gopher

There is no documentation for this package.


Path Synopsis