关于 dagger-codegen
dagger-codegen 是面向 Dagger 开发者的技能,帮助定位并修改 Go 代码生成相关实现。它区分 Dagger 中四类代码生成,并列出常见修改入口与参考资料。
主要功能
- 01区分四类 Dagger 代码生成
- 02定位 Go 模板与 SDK 接口
- 03查找生成客户端实现
- 04提供按需参考文档
适用场景
- 01修改生成的 Go 代码或模板
- 02排查生成结果异常
- 03调整 SDK 接口或客户端生成
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dagger/ dagger --skill dagger-codegen安装后在 Claude Code 中输入/dagger-codegen确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/codegen-types.mdgenerated-clients.mdgo-templates.mdsdk-architecture.md详细介绍
Dagger 代码生成
何时加载此技能
- 编辑
dagger.gen.go或internal/dagger/dagger.gen.go输出 - 修改
cmd/codegen/generator/go/templates/中的 Go 模板 - 更改
core/sdk.go中的 SDK 接口 - 使用
dagger develop、dagger call或dagger client install - 调试生成的代码为何看起来不正确
关键概念
在 Dagger 中,“代码生成”有 4 种不同含义:
| # | 名称 | 触发方式 | 关键文件 |
|---|---|---|---|
| 1 | 模块内绑定 | dagger develop | cmd/codegen/generator/go/templates/ |
| 2 | 运行时分发 | 模块启动 | cmd/codegen/generator/go/templates/modules.go:140 |
| 3 | SDK 库 | go generate | sdk/go/generate.go |
| 4 | 生成的客户端 | dagger client install | _dagger.gen.go/client.go.tmpl |
编辑之前,先确认你要处理的是哪一种。
关键入口
| 要更改…… | 编辑 |
|---|---|
| 生成的方法签名 | cmd/codegen/generator/go/templates/src/_types/object.go.tmpl |
| 生成的类型定义 | cmd/codegen/generator/go/templates/src/_types/*.go.tmpl |
模块 invoke() 分发 | cmd/codegen/generator/go/templates/modules.go:140 |
独立客户端 Connect() | cmd/codegen/generator/go/templates/src/_dagger.gen.go/client.go.tmpl |
| 模板函数 | cmd/codegen/generator/go/templates/functions.go:54 |
| SDK 接口 | core/sdk.go:20(ClientGenerator)、:93(CodeGenerator) |
| 内置 SDK 列表 | core/sdk/consts.go |
| Python 输出 | sdk/python/codegen/src/codegen/generator.py |
参考文件
根据具体需求加载:
| 需求 | 加载 |
|---|---|
| 了解 4 种代码生成类型 | codegen-types.md |
| SDK 架构、接口、Go 特例 | sdk-architecture.md |
| Go 模板条件语句、两阶段生成 | go-templates.md |
dagger client install 内部机制 | generated-clients.md |
评论
支持 Markdown