1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | provider-ephemeral-resources-hashicorp-agent-skills |
| 作者/维护者 | HashiCorp(现为 IBM 旗下) |
| 来源链接 | https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/provider-ephemeral-resources |
| 许可证 | MPL-2.0(数据来自 GitHub API) |
| GitHub Stars | 802(数据来自 GitHub API;该数字属整个 hashicorp/agent-skills 合集仓库,不代表本技能自身热度) |
| Forks | 119(同上,合集整体数字,数据来自 GitHub API) |
| 最新版本 | 0.0.1(SKILL.md 内声明) |
| 安装方式 | npx skills add 单条命令,或 Claude Code / Codex 官方插件市场安装产品插件包 |
2. 功能介绍与亮点
provider-ephemeral-resources 指导 Terraform Provider 开发者用 Plugin Framework 实现“临时资源”(Ephemeral Resources,Terraform 1.10+ 特性)——一类结果永不写入 state 或 plan 的资源类型,专门用来把令牌、临时证书、动态生成的密码等敏感值安全地传递给需要它们的配置,而不落盘:
- Open/Renew/Close 生命周期详解:
Open(必需)在 plan/apply 阶段按需获取值;Renew(可选)在值过期前被 Terraform 自动调用以续期,只能延长/刷新已有值而不能返回新值;Close(可选)在 Terraform 运行结束时撤销租约或删除临时凭据;三者可通过resp.Private传递字节数据(如租约 ID)串联生命周期; - 完整可运行的 Go 代码示例:涵盖接口断言(
EphemeralResourceWithConfigure/WithRenew/WithClose)、Schema 定义、Open/Renew/Close三方法实现,以真实的令牌签发场景演示完整实现; - 何时用临时资源 vs 数据源 vs 常规资源的判断表——按“是否敏感”“是否需要被下游托管资源存储”“是否会中途过期”三个维度给出决策依据;
- 设计红线:明确禁止把敏感值写入日志或 diagnostic 消息(一旦写入即违背临时资源“不落盘”的初衷);
RenewAt需预留安全边际,因 Terraform 是懒续期而非精确定时; - 测试方法论:临时资源结果不进入 state,测试需通过
echoprovider把临时值间接“回显”进一个可检查的常规资源,并做版本门控(tfversion.SkipBelow(tfversion.Version1_10_0)); - 附带 8 项实现检查清单,可直接用作代码评审依据;文档部分指向配套的
provider-docs/provider-resources/provider-test-patterns技能协同使用。
亮点:内容对齐 HashiCorp 官方文档(developer.hashicorp.com/terraform/plugin/framework/ephemeral-resources),把临时资源这一 2024 年才引入 Terraform 的较新特性的实现规范、常见陷阱与测试方法整合为结构化参考;技能全程只提供代码范例与方法论文字,不涉及任何命令执行。
3. 适用场景
所属分类:工程效率与代码质量(该技能围绕“如何用 Go 正确实现 Terraform Provider 的一种资源类型”这一具体编码任务展开,产出是 Provider 本体的 Go 源码,属于技术栈编码指南范畴,不涉及部署或运维基础设施本身)。
适用于维护 Terraform Provider 的开发者:为需要暴露的敏感值(数据库密码、STS 令牌、动态证书)设计资源类型时判断该用临时资源还是数据源;实现临时资源的 Open/Renew/Close 三方法时;为临时资源编写符合官方规范的验收测试时;或需要按官方最佳实践审查已有临时资源实现是否遗漏敏感值保护(如误将其记入日志)时。受益人群是 Terraform Provider 的开发者与维护者,而非编写 .tf 配置做基础设施部署的普通工程师。
4. 跨 Agent 兼容性
- Claude Code:原生支持 ✅——可通过 Claude Code 官方插件市场安装
terraform@hashicorp产品插件包,或用npx skills add单独安装该技能。 - Codex:原生支持 ✅——仓库自带专属
.agents/plugins/marketplace.json清单,可作为仓库市场添加后安装terraform插件,与 Claude Code 插件市场暴露相同的产品包与技能目录。 - OpenClaw:未验证 ❓——官方文档未点名支持,技能本体是标准 SKILL.md 格式。
- Hermes Agent:未验证 ❓——同上。
5. 推荐理由
临时资源是 Terraform 1.10 才引入的较新特性,专门解决“敏感值必须存在但绝不能落盘”这个长期缺乏标准做法的问题;官方虽有文档,但 Open/Renew/Close 的正确串联方式、Private 传递租约 ID 的模式、以及“日志绝不能带出敏感值”这类设计红线容易在实现中被遗漏。这份技能把官方规范、可运行代码骨架与测试方法整合成一份可直接被 Agent 调用的操作手册,能有效降低“临时资源实现不当反而泄露了敏感值”这类隐蔽安全问题的发生概率。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 7 | HashiCorp 是 Terraform 的官方所有者;合集仓库 802 stars 属整个 hashicorp/agent-skills 仓库,不代表本技能自身热度;该子技能于 2026-08-10 新增,尚无独立于官方身份之外的第三方证据(媒体报道、独立评测、采用数据) |
| 可用性 | 9 | npx skills add 单条命令即可安装,亦可通过 Claude Code / Codex 官方插件市场一键装入产品包;SKILL.md 含完整可运行代码示例与 8 项检查清单;2026-08-10 创建并为仓库当次重组新增,维护活跃;无付费依赖 |
| 安全性 | 9 | 纯 Go 代码范例与方法论指南,技能本体不执行任何 shell 命令、不联网外发数据;License 清晰(MPL-2.0);由 Terraform 的官方所有者 HashiCorp 发布,完全开源可审计 |
安全检查清单逐项结果:
① Shell 命令执行:无,技能只提供代码范例与文字指导,不会自动执行任何命令 ② 联网外发:无 ③ API Key/凭据存储:不涉及,技能本身不存储凭据,只指导如何在 Provider 代码中避免凭据落盘 ④ 可疑指令(Prompt Injection 迹象):未发现 ⑤ 作者/组织信誉:HashiCorp,Terraform 生态的官方所有者 ⑥ License:MPL-2.0,明确 ⑦ 最近维护时间:2026-08-10(近期,随仓库结构重组新增)
7. 跟同类 Skills 相比的优势
| 对比对象 | 定位 | 与本技能的差异 |
|---|---|---|
| HashiCorp 官方临时资源文档(developer.hashicorp.com/terraform/plugin/framework/ephemeral-resources) | 面向人类阅读的特性说明与 API 参考 | 内容权威,但以散文形式描述接口签名与行为,需自行提炼“何时该用”的判断依据与实现检查清单;本技能把同一套官方知识重组为可被 Agent 直接调用的决策表与操作手册 |
| provider-resources / provider-actions(HashiCorp,同仓库) | Framework 下常规资源的 CRUD、finder/waiter 编码模式 | 服务于“值需要被持久管理”的常规资源,不处理“值绝不能落盘”这一临时资源专属的生命周期(Open/Renew/Close)与测试方法(echoprovider 回显) |
| Vault Provider 等第三方 Provider 内部的临时凭据处理惯例(如动态 secret 引擎) | 各 Provider 各自摸索的凭据处理约定,无统一公开规范 | 分散在具体 Provider 代码库中,做法不一致;本技能提供跨 Provider 通用、对齐官方规范的标准实现模式与设计红线(如禁止记入日志) |
8. 用户评价
该技能于 2026-08-10 随仓库结构重组新增,目前在第三方平台尚无具名用户评价。
9. 其他补充
SKILL.md 原文建议配合 provider-resources 技能使用(Configure 阶段获取 client 的方式与常规资源一致),以及 provider-test-patterns 技能(提供 echoprovider 测试搭建、版本门控与多步测试模式的完整参考)、provider-docs 技能(用于生成 docs/ephemeral-resources/<name>.md 文档页)。
10. 安装使用方式
方式一(单独安装该技能):
npx skills add hashicorp/agent-skills/plugins/terraform/skills/provider-ephemeral-resources
方式二(Claude Code 插件市场,安装整个 Terraform 产品包):
claude plugin marketplace add hashicorp/agent-skills
claude plugin install terraform@hashicorp
方式三(Codex):将仓库的 .agents/plugins/marketplace.json 添加为仓库市场,再安装其中的 terraform 插件。
安装后无需重启;在 Terraform Provider 项目中设计需要暴露敏感值的资源类型、实现 Open/Renew/Close 生命周期方法,或为临时资源编写验收测试时,技能会按 SKILL.md 描述的场景自动触发。
11. 注意事项
- 服务对象是 Terraform Provider 开发者(用 Go 语言维护 Provider 本体),不是普通编写
.tf文件做基础设施部署的 Terraform 使用者。 - 临时资源是 Terraform 1.10+ 才支持的特性,使用方(下游用户)的 Terraform 版本低于该门槛时无法使用对应功能,技能的测试模式也据此做版本门控。
- 示例代码基于虚构的
examplecloudProvider,实际接入需替换为自己 Provider 的 client 类型与 Schema 字段;安装时请使用当前的plugins/terraform/skills/路径前缀,仓库已于 2026-08-10 完成一次路径结构重组。