用途:为 moai-adk-go 项目提供 CLI 与模板系统的领域知识,补充 expert-backend 技能中的项目专属模式。
主要能力:介绍 moai 二进制(Go)的架构,包括 internal/cli/ 下约 50 个 cobra 命令文件、internal/template/ 下的模板源、自动生成的 embedded.go、TemplateContext 与渲染引擎,以及 internal/config/ 的配置加载与默认值。
关键模式:模板优先规则——.claude/ 或 .moai/ 下的新文件必须先加入 internal/template/templates/,再执行 make build;嵌入系统使用 //go:embed templates/*,该文件自动生成、不可手动编辑;模板变量有 {{.GoBinPath}} 与 {{.HomeDir}}(均为初始化时绝对路径);.sh.tmpl 文件建议用 $HOME 而非 .HomeDir 以保持运行时灵活性;模板对 16 种语言一视同仁,无“PRIMARY”语言。
构建流程:编辑模板后执行 make build 重新生成嵌入文件,再运行 go test ./internal/template/... 并检查 embedded.go。
命令结构:每个 cobra 命令位于 internal/cli/<command>.go,测试在 <command>_test.go;rootCmd 在 root.go 中通过 init() 注册子命令。
配置系统:主配置为 .moai/config/config.yaml,分节配置位于 .moai/config/sections/*.yaml(quality、language、user、workflow、harness、design);优先级为环境变量 > 用户配置 > 模板默认值;环境变量键定义在 internal/config/envkeys.go,不应硬编码。
实现指南:新增命令需创建命令文件、在 init() 注册、用 t.TempDir() 编写测试,若涉及模板则添加模板文件并执行 make build 与 go test ./internal/cli/...;新增模板文件需放入 templates/<path>,需要变量替换时用 .tmpl 扩展名,必要时在 renderer.go 注册透传标记,再 make build 并测试。
渲染管线:TemplateContext{GoBinPath, HomeDir} 经 renderer.Render 输出替换后的文件;保留透传标记包括 $HOME、$PATH、$CLAUDE_PROJECT_DIR 及 shell 脚本中的环境变量引用,原样传递不替换。
错误处理约定:使用 fmt.Errorf 配合 %w 包装错误,避免字符串拼接。
限制:资料未提供该技能的安装方式、收费、平台支持或效果数据。