1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | run-acceptance-tests-hashicorp-agent-skills |
| 作者/维护者 | HashiCorp(仓库维护方);该子技能由社区贡献者 bbasata 提交合入 |
| 来源链接 | https://github.com/hashicorp/agent-skills/tree/main/terraform/provider-development/skills/run-acceptance-tests |
| 许可证 | MPL-2.0(GitHub API 获取,与 SKILL.md 前置元数据一致) |
| GitHub Stars / Forks | 758 / 114(GitHub API 获取;数字属整个 hashicorp/agent-skills 合集仓库,不代表本技能自身热度) |
| 最新版本 | 0.0.1(SKILL.md 前置元数据) |
| 安装方式 | npx skills add 或 Claude Code 插件市场(见第 10 章) |
2. 功能介绍与亮点
run-acceptance-tests 是一份面向 Terraform Provider 开发者的验收测试运行与调试指南。核心内容围绕 Go 语言中以 TestAcc 为前缀的验收测试函数展开:
- 聚焦运行:给出运行单个验收测试的标准命令(
go test -run=TestAccXxx,配合TF_ACC=1),并提醒某些 Provider 需要额外的环境变量。 - 分级排障:为失败的验收测试提供从浅到深的诊断顺序——重跑(
-count=1避免缓存)、开启详细输出(-v)、开启调试日志(TF_LOG=debug)、保留测试产生的 Terraform 工作目录(TF_ACC_WORKING_DIR_PERSIST=1),每一步都建立在前一步之上。 - 反向验证(Flip Test):提供一种验证“通过的测试是否为假阴性”的方法——临时改动某个
TestCheckFuncs的期望值,确认测试确实会失败,再撤销改动,用来确认测试本身具备真实的检测能力。
该内容提炼自作者在真实 Terraform Provider(如 terraform-provider-dns)项目中调试验收测试的实际经验,篇幅精炼,是一份“可直接照做”的操作手册,而非泛泛的最佳实践罗列。
3. 适用场景
所属分类:工程效率与代码质量
适合正在开发或维护自定义 Terraform Provider 的工程师:当需要运行某个特性对应的验收测试、诊断验收测试失败原因、或怀疑现有测试断言写得过松(假阴性)时,均可直接调用本技能获得下一步操作指令。目标用户是熟悉 Go 测试工具链、使用 terraform-plugin-testing 或 terraform-plugin-sdk 编写 Provider 的开发者。
4. 跨 Agent 兼容性
- Claude Code:原生支持 ✅ ——官方仓库提供专属插件市场,可通过
claude plugin install terraform-provider-development@hashicorp安装,本技能是该插件的组成部分。 - Codex / OpenClaw / Hermes Agent:未验证 ——仓库 README 说明通用安装工具
npx skills add可用于 “GitHub Copilot、Claude Code、Opencode、Cursor 等”,但未点名以上三者,不构成兼容性证据。SKILL.md 本身遵循通用 Agent Skills 规范(YAML front matter + 指令正文),理论上可手动复制安装,但缺乏官方点名,故三者均判定为未验证。
5. 推荐理由
这是一份来自真实 Provider 调试经验、可直接照做的验收测试运行与排障手册:把“测试失败了该先做什么、再做什么”的排查顺序固化下来,省去工程师每次现查 go test/TF_ACC 参数组合的过程,尤其对刚接触 Terraform Provider 开发、还不熟悉验收测试工具链细节的中级用户很有价值。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 6 | 合集仓库整体 star 数不计入个体;该子目录由一名有真实 Provider 调试经验的外部贡献者提交合入,此后另一位在 Terraform 生态有资深背景的工程师(曾任 AWS 开源 Terraform 工程负责人)提交了具体的改进建议,形成有机的跨方参与,但目前讨论范围仅限该子目录本身,未见更广泛的独立讨论 |
| 可用性 | 8 | 一条命令(npx skills add 或 claude plugin install)即可安装;内容是可直接执行的分步指令,命令本身即示例;子目录最近一次代码提交发生在 2026 年 7 月上旬,维护活跃;无付费依赖 |
| 安全性 | 8 | 检查清单详见下表 |
安全检查清单
| 项目 | 结果 |
|---|---|
| ① Shell 命令及权限范围 | 仅指导在本地执行标准 go test 命令与设置环境变量,操作范围清晰、无越权 |
| ② 联网外发 | 技能本身不引入额外外联;下游验收测试会连接被测 Provider 对应的真实云 API,但这是 Terraform Provider 验收测试固有行为,非本技能自身发起的不透明外发 |
| ③ API Key/凭据 | 需要 Provider 特定的环境变量(可能含云凭据),SKILL 建议“以安全方式配置”,但未给出具体存储细节;已有社区改进建议(见第 8 章)提出更明确的操作规范,尚未合并 |
| ④ 可疑指令 | 通篇为标准 Go 测试与环境变量操作指令,未见混淆代码或隐蔽外发迹象 |
| ⑤ 作者/组织信誉 | 原始贡献者为具名 GitHub 用户,仓库由 HashiCorp 官方维护,提交记录可查 |
| ⑥ License | MPL-2.0,仓库与 SKILL 元数据一致,明确 |
| ⑦ 最近维护 | 该子目录最近一次提交在 2026 年 7 月上旬,处于活跃维护状态 |
7. 跟同类 Skills 相比的优势
| Skill | 定位 | 与本技能的差异 |
|---|---|---|
| provider-test-patterns-hashicorp-agent-skills(同仓库) | 指导如何编写 Terraform Provider 的验收测试用例与断言模式 | 面向“写测试”阶段;本技能面向“跑测试、查失败原因”阶段,两者是同一开发流程的不同环节 |
| terraform-test-hashicorp-agent-skills(同仓库) | 指导编写 Terraform 原生 .tftest.hcl 测试文件 |
针对的是 Terraform 配置本身的原生测试框架,而非 Provider 源码的 Go 验收测试,测试对象和工具链完全不同 |
| wshobson/agents 的 debugging-toolkit 插件 | 通过 agents + commands 提供跨语言的通用调试能力 | 面向任意语言的通用调试场景,不针对 Terraform Provider 验收测试的特定命令与环境变量组合,也不是 SKILL.md 形态的技能包 |
8. 用户评价
- bbasata(GitHub 具名用户,最初提交本技能的贡献者):在合并的 Pull Request 讨论中提到,这份手册提炼自其在真实项目
terraform-provider-dns中运行和调试验收测试的实际经验,认为该流程对他而言效果不错。 - Tyler Lynch(AdamTylerLynch)(在 Terraform 生态有资深背景,现任 HashiCorp/IBM 相关职务,曾任 AWS 开源 Terraform 工程负责人):在后续 Pull Request 中指出手册第二步“如何安全设置环境变量”过于笼统,并提出了具体改进方案——通过
PreCheck/testAccPreCheck及grep os.Getenv自动发现所需变量、按次设置而非写入 shell 配置文件等,目前该改进尚未合并。
9. 其他补充
本技能于 2026 年初由社区贡献者提交合入,2026 年 7 月又有一次后续代码更新,同期还有一份尚未合并的改进提案在讨论中,整体处于持续打磨状态。
10. 安装使用方式
- 通用安装(适用于 Claude Code、GitHub Copilot、Opencode、Cursor 等支持 Agent Skills 规范的工具):
npx skills add hashicorp/agent-skills/terraform/provider-development/skills/run-acceptance-tests - Claude Code 插件市场:
安装后无需重启,在与 Terraform Provider 源码相关的对话中提及“运行验收测试”或以claude plugin marketplace add hashicorp/agent-skills claude plugin install terraform-provider-development@hashicorpTestAcc为前缀的测试名即可触发。
11. 注意事项
- 使用前提是本地已具备 Go 测试工具链,且目标 Provider 已按
terraform-plugin-testing/terraform-plugin-sdk规范编写了验收测试。 - 验收测试通常会针对真实云厂商 API 创建实际资源,可能产生云成本,SKILL.md 正文未对此单独提示,使用前建议自行确认目标 Provider 测试所需的云账号权限与预算。
- 环境变量的具体发现与安全设置方式目前描述简略,必要时可参考进行中的社区改进讨论自行补充操作细节。