# tf-best-practices

Задаёт правила безопасности для генерируемого AWS Terraform и после записи проверяет каталог terraform/ на соответствие политике. Только чтение: файлы не правит.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 323 установки · ★ 3282
- Автор: aws
- Лицензия: Apache-2.0 · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/aws/agent-toolkit-for-aws/tree/HEAD/plugins/aws-startup-advisor/skills/tf-best-practices/SKILL.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/skills/tf-best-practices

## Что делает

Скилл работает в двух точках. Перед тем как агент начнёт писать `terraform/`, он загружает часть с правилами: что вообще допустимо выпускать в AWS-конфиге. После записи — запускает проверку и выдаёт вердикт. Вызывающий сам сообщает, в какой точке он находится.

Правила разбиты на три уровня. Первый проверяется статически: TLS на ALB, отсутствие публичных баз данных, шифрование RDS и ElastiCache, запрет wildcard в IAM. Второй уровень проверкой не ловится, но всё равно обязателен: `deletion_protection`, пароль мастера через Secrets Manager, приватные подсети, бэкапы. Третий включается, когда вызывающий объявляет `soc2`, `pci`, `hipaa` или `fedramp` — тогда добавляются VPC flow logs, логирование доступа к S3, ротация секретов и customer-managed KMS.

Проверка запускается скриптом `validate-terraform-policy.py` из каталога плагина, путь к `terraform/` передаёт вызывающий. Коды выхода простые: `0` — `POLICY_OK`, `1` — `POLICY_FAIL` с перечнем нарушений, `2` — ошибка. Скилл ничего не редактирует и не решает, завершена ли фаза: правки, цикл повторных попыток и запись состояния остаются на стороне вызывающего. Он дополняет `terraform fmt`, `init` и `validate`, а не заменяет их — это повод держать оба шага в пайплайне.

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

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add aws/agent-toolkit-for-aws --skill tf-best-practices -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add aws/agent-toolkit-for-aws --skill tf-best-practices -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add aws/agent-toolkit-for-aws --skill tf-best-practices -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install aws/agent-toolkit-for-aws tf-best-practices
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add aws/agent-toolkit-for-aws --skill tf-best-practices -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/aws/agent-toolkit-for-aws --path plugins/aws-startup-advisor/skills/tf-best-practices
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add aws/agent-toolkit-for-aws --skill tf-best-practices -a opencode
```

### Claude.ai

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

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/aws/agent-toolkit-for-aws/tree/HEAD/plugins/aws-startup-advisor/skills/tf-best-practices/SKILL.md

## Когда брать
- проверить сгенерированный AWS Terraform на дыры в безопасности до деплоя
- задать агенту единые правила выпуска конфигов перед записью `terraform/`
- получить машинно-читаемый вердикт для `validation-report.json`
- поймать публичный порт базы данных или wildcard в IAM
- включить требования compliance-фреймворка в генерацию

## Примеры запросов агенту
- Загрузи tf-best-practices перед тем, как писать terraform/, и следуй правилам безопасности
- terraform/ готов — прогони policy-гейт tf-best-practices и покажи вердикт
- Проверь сгенерированный terraform/ скиллом tf-best-practices, объявленные фреймворки: soc2

## Похожие
- [terraform-engineer](https://affpapa.org/nevibecode/skills/terraform-engineer.md) — скилл · 5400 установок
- [iac-terraform-data-engineering](https://affpapa.org/nevibecode/skills/iac-terraform-data-engineering.md) — скилл · 1800 установок
- [iac-data-engineering-terraform](https://affpapa.org/nevibecode/skills/iac-data-engineering-terraform.md) — скилл · 1800 установок
- [terraform-aws](https://affpapa.org/nevibecode/skills/terraform-aws.md) — скилл · 387 установок
- [aws-well-architected-review](https://affpapa.org/nevibecode/skills/aws-well-architected-review.md) — скилл · 84 установки
- [firewall-config](https://affpapa.org/nevibecode/skills/firewall-config.md) — скилл · 458 установок

Из того же набора: [aws/agent-toolkit-for-aws](https://affpapa.org/nevibecode/by/aws/agent-toolkit-for-aws.md) — 133 карточки

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