# provider-ephemeral-resources

Помогает писать в провайдере Terraform эфемерные ресурсы на Plugin Framework: секреты живут в памяти и не попадают в state или plan.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 917 установок · ★ 909
- Автор: hashicorp
- Лицензия: MPL-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/hashicorp/agent-skills/tree/HEAD/plugins/terraform/skills/provider-ephemeral-resources/SKILL.md
- Обновлён: 2026-10-05
- HTML: https://affpapa.org/nevibecode/skills/provider-ephemeral-resources

## Что делает

Скилл про эфемерные ресурсы Terraform (1.10+): это значения, которые не записываются ни в state, ни в plan. Нужны для токенов, сгенерированных паролей, короткоживущих сертификатов и расшифрованных данных — всего, что передаётся в конфигурацию, но на диск попадать не должно.

Внутри разобран весь цикл: обязательный метод `Open` получает или создаёт значение, необязательный `Renew` продлевает работу, когда время до `RenewAt` истекло, а `Close` отзывает лизы и удаляет временные учётки. Данные между вызовами ходят через `resp.Private` — там передают идентификатор лиза, по которому потом продлевают или отзывают. Отдельный раздел про регистрацию через `provider.ProviderWithEphemeralResources` и `EphemeralResources()`.

Скилл помогает выбрать между эфемерным ресурсом и data source: чувствительное значение, которое нужно только на этапе apply, идёт в эфемерный ресурс, а read-only при нечувствительных данных остаётся источником данных. Ещё один случай — учётка с коротким сроком жизни, её закрывает `Renew`. Учтите: `Renew` не выдаёт новое значение, только продлевает прежнее, поэтому если API подменяет сам токен, придётся строить `Open` на более долгом значении. Примеры кода на Go приведены целиком, с `tfsdk`-тегами и схемой.

## Требования
- Работает с: Terraform

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add hashicorp/agent-skills --skill provider-ephemeral-resources -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/provider-ephemeral-resources/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/provider-ephemeral-resources/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add hashicorp/agent-skills --skill provider-ephemeral-resources -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/provider-ephemeral-resources/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add hashicorp/agent-skills --skill provider-ephemeral-resources -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/provider-ephemeral-resources/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install hashicorp/agent-skills provider-ephemeral-resources
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/provider-ephemeral-resources/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add hashicorp/agent-skills --skill provider-ephemeral-resources -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/hashicorp/agent-skills --path plugins/terraform/skills/provider-ephemeral-resources
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/provider-ephemeral-resources/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add hashicorp/agent-skills --skill provider-ephemeral-resources -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/hashicorp/agent-skills/tree/HEAD/plugins/terraform/skills/provider-ephemeral-resources/SKILL.md

## Когда брать
- добавить в провайдер эфемерный ресурс и не уронить сборку
- отдать токен в блок провайдера или write-only атрибут, не записав его в state
- продлить истекающую учётку, пока Terraform ещё работает
- отозвать лиз при закрытии и не оставить висящих креденшелов
- решить, когда хватит data source, а когда нужен эфемерный ресурс

## Примеры запросов агенту
- Добавь эфемерный ресурс для выдачи токена по роли, с методами Open, Renew и Close
- Зарегистрируй новый эфемерный ресурс через EphemeralResources в провайдере
- Подскажи, как передать lease_id из Open в Renew через resp.Private

## Похожие
- [wizard](https://affpapa.org/nevibecode/skills/wizard.md) — скилл · 553369 установок
- [hyperframes-cli](https://affpapa.org/nevibecode/skills/heygen-com-hyperframes-cli.md) — скилл · 1300000 установок
- [setup-pre-commit](https://affpapa.org/nevibecode/skills/setup-pre-commit.md) — скилл · 489289 установок
- [using-git-worktrees](https://affpapa.org/nevibecode/skills/using-git-worktrees.md) — скилл · 217153 установки
- [finishing-a-development-branch](https://affpapa.org/nevibecode/skills/finishing-a-development-branch.md) — скилл · 214439 установок
- [orca-cli](https://affpapa.org/nevibecode/skills/orca-cli.md) — скилл · 353600 установок

Из того же набора: [hashicorp/agent-skills](https://affpapa.org/nevibecode/by/hashicorp/agent-skills.md) — 20 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
