AgentSkillsCN

dagger-codegen

编辑 dagger.gen.go 输出、Go 模板(object.go.tmpl、defs.go.tmpl)、invoke() 分发, 以及 SDK 接口(CodeGenerator、ClientGenerator)、`dagger develop`、`dagger client install`。 关键词:codegen、SDK、绑定、模板、internal/dagger、dag.*、ModuleMainSrc

SKILL.md
--- frontmatter
name: dagger-codegen
description: |
  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

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