Skip to content

Toolchain Overview

Kibu Toolchain

Kibu provides a suite of code generation and analysis tools that eliminate boilerplate and enable type-safe communication across your stack.

Core Tools

ToolPurposeDocumentation
kibumodService definition analyzerReference
kibugenv2Go plumbing code generatorReference
kibuwireWire dependency injection generatorReference
kibugen_tsTypeScript client generatorReference

How It Works

The toolchain follows a pipeline pattern:

Go Source Code
┌─────────┐
│ kibumod │ ← Analyzes interfaces with //kibu: decorators
└────┬────┘
┌───────────┐ ┌────────────┐
│ kibugenv2 │ ──► │ kibuwire │
└─────┬─────┘ └─────┬──────┘
│ │
▼ ▼
*.gen.go kibuwire.gen.go
┌────────────┐
│ kibugen_ts │
└─────┬──────┘
*.gen.ts

Quick Start

Install the toolchain:

Terminal window
go install github.com/google/wire/cmd/wire@latest
go install github.com/kibu-sh/kibu/internal/toolchain/kibugenv2/cmd/kibugenv2@main
go install github.com/kibu-sh/kibu/internal/toolchain/kibuwire/cmd/kibuwire@main
go install github.com/kibu-sh/kibu/internal/toolchain/kibugen_ts/cmd/kibugen_ts@main

Create a generate.go file:

package generate
//go:generate kibugenv2 ./...
//go:generate kibuwire ./...
//go:generate kibugen_ts -output ./frontend/src/api ./...

Run generation:

Terminal window
go generate ./...

Decorator-Driven Development

Kibu uses comment directives (decorators) to annotate your code:

// UserService handles user operations
//
//kibu:service
type UserService interface {
//kibu:service:method method=GET path=/users/{id}
GetUser(ctx context.Context, req GetUserRequest) (GetUserResponse, error)
}

See the Decorators Reference for all available decorators.

Generated Artifacts

ToolOutputPurpose
kibugenv2*.gen.goControllers, clients, workflow interfaces
kibuwirekibuwire/kibuwire.gen.goWire provider sets
kibugen_ts*.gen.tsTypeScript types and service clients

Best Practices

  1. Don’t edit generated files - They’re overwritten on each generation
  2. Commit generated files - Include in version control for CI/CD
  3. Run in order - kibugenv2 before kibuwire, both before kibugen_ts
  4. Use go:generate - Centralize generation in a single file