Skip to content
dagger-codegen logo

dagger-codegen

Edit dagger.gen.go output, Go templates (object.go.tmpl, defs.go.tmpl), invoke() dispatch, SDK interfaces (CodeGenerator, ClientGenerator), `dagger develop`, `dagger client install`. Keywords: codegen, SDK, bindings, templates, internal/dagger, dag.*, ModuleMainSrc

SKILL.md

Full skill instructions

Dagger Codegen

When to Load This Skill

  • Editing dagger.gen.go or internal/​dagger/​dagger.gen.go output
  • Modifying Go templates in cmd/​codegen/​generator/​go/​templates/
  • Changing SDK interfaces in core/​sdk.go
  • Working on dagger develop, dagger call, or dagger client install
  • Debugging why generated code looks wrong

Critical Concepts

"Codegen" means 4 different things in Dagger:

#NameTriggerKey Files
1In-Module Bindingsdagger developcmd/​codegen/​generator/​go/​templates/
2Runtime DispatchModule startupcmd/​codegen/​generator/​go/​templates/​modules.go:140
3SDK Librariesgo generatesdk/​go/​generate.go
4Generated Clientsdagger client install_dagger.gen.go/​client.go.tmpl

Know which one you're dealing with before editing.

Key Entry Points

To change...Edit
Generated method signaturescmd/​codegen/​generator/​go/​templates/​src/​_types/​object.go.tmpl
Generated type definitionscmd/​codegen/​generator/​go/​templates/​src/​_types/​*.go.tmpl
Module invoke() dispatchcmd/​codegen/​generator/​go/​templates/​modules.go:140
Standalone client Connect()cmd/​codegen/​generator/​go/​templates/​src/​_dagger.gen.go/​client.go.tmpl
Template functionscmd/​codegen/​generator/​go/​templates/​functions.go:54
SDK interfacescore/​sdk.go:20 (ClientGenerator), :93 (CodeGenerator)
Built-in SDK listcore/​sdk/​consts.go
Python outputsdk/​python/​codegen/​src/​codegen/​generator.py

Reference Files

Load based on specific need:

NeedLoad
Understanding the 4 codegen typescodegen-types.md
SDK architecture, interfaces, Go special casesdk-architecture.md
Go template conditionals, two-pass generationgo-templates.md
dagger client install internalsgenerated-clients.md