go-framework

SKILL.md

Go Framework Patterns

Package Structure

<package>/
├── <interface>.go     # Extension contract
├── registry.go        # Register(), New(), List()
├── hooks.go           # Lifecycle hooks
├── middleware.go       # Middleware type + Apply()
└── providers/          # Built-in implementations

Registry + Factory

var (
    mu       sync.RWMutex
    registry = make(map[string]Factory)
)

func Register(name string, f Factory) {
    mu.Lock()
    defer mu.Unlock()
    registry[name] = f
}

func New(name string, cfg ProviderConfig) (Interface, error) {
    mu.RLock()
    f, ok := registry[name]
    mu.RUnlock()
    if !ok {
        return nil, fmt.Errorf("unknown provider %q (registered: %v)", name, List())
    }
    return f(cfg)
}

func List() []string { /* sorted keys */ }

Functional Options

type Option func(*options)
func WithTimeout(d time.Duration) Option { return func(o *options) { o.timeout = d } }
func New(opts ...Option) *Thing { o := defaults(); for _, opt := range opts { opt(&o) }; return &Thing{opts: o} }

Provider Registration

func init() {
    llm.Register("openai", func(cfg llm.ProviderConfig) (llm.ChatModel, error) { return New(cfg) })
}
// Users import: import _ "github.com/lookatitude/beluga-ai/llm/providers/openai"

Rules

  • Compile-time interface check: var _ Interface = (*Impl)(nil)
  • Lifecycle: Start(ctx), Stop(ctx), Health() — shutdown in reverse order.
  • Error handling: return (T, error), wrap with core.Error, check IsRetryable().
  • context.Context is always first parameter.
Weekly Installs
8
GitHub Stars
9
First Seen
Feb 10, 2026
Installed on
codex8
opencode7
gemini-cli7
github-copilot7
kimi-cli7
amp7