# iac-terraform-data-engineering

A skill for Claude and other AI agents that helps describe AWS data infrastructure in Terraform: S3 buckets, EC2 instances, IAM roles.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1800 installs · ★ 5
- Author: reason-machines
- License: LicenseRef-Unknown · policy=link-only · description only; the file stays with the author
- Source: https://github.com/reason-machines/data-skills/tree/HEAD/skills/iac-terraform-data-engineering/SKILL.md
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/skills/iac-terraform-data-engineering

## What it does

The skill ships Terraform templates for the usual data engineering jobs on AWS: storage in S3, compute on EC2, permissions through IAM. Inside you get example configs for `main.tf`, `variables.tf`, `outputs.tf` and the command set for init, validate, fmt, plan, apply and destroy. There is a section on state management too, covering a remote S3 backend with DynamoDB locking.

To use it you need an AWS account with admin rights, the Terraform CLI, the AWS CLI, and credentials set up through `aws configure`. The examples suggest giving an IAM user full access to S3, EC2 and IAM for learning, which is not what you want in production — least-privilege policies belong there. Worth checking what permissions you actually hand the agent before it applies anything.

Verification commands are included: `aws s3 ls`, `aws ec2 describe-instances`, `terraform show`. There is also a data lake pattern with several buckets and versioning for data lineage.

## Requirements
- Works with: Terraform, AWS

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill iac-terraform-data-engineering -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/iac-terraform-data-engineering/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/iac-terraform-data-engineering/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill iac-terraform-data-engineering -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/iac-terraform-data-engineering/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill iac-terraform-data-engineering -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/iac-terraform-data-engineering/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/data-skills iac-terraform-data-engineering
```

2. **Manually: put the files in place**
- File: `.github/skills/iac-terraform-data-engineering/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill iac-terraform-data-engineering -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/reason-machines/data-skills --path skills/iac-terraform-data-engineering
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/iac-terraform-data-engineering/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill iac-terraform-data-engineering -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/reason-machines/data-skills/tree/HEAD/skills/iac-terraform-data-engineering/SKILL.md

## When to use it
- describe S3 buckets and EC2 instances in Terraform
- set up IAM roles and policies for data access
- move Terraform state to a remote S3 backend
- verify what actually got created in AWS via CLI
- spin up and tear down infrastructure with one command

## Example prompts
- help me set up terraform for a data platform on AWS
- create S3 and EC2 configs with terraform
- how do I move terraform state to S3 with DynamoDB locking

## Similar
- [terraform-aws](https://affpapa.org/en/nevibecode/skills/terraform-aws.md) — skill · 387 installs
- [terraform-engineer](https://affpapa.org/en/nevibecode/agents/terraform-engineer.md) — subagent · 328 installs
- [setting-up-ec2-instance-profiles](https://affpapa.org/en/nevibecode/skills/setting-up-ec2-instance-profiles.md) — skill · 6200 installs
- [terraform-search-import](https://affpapa.org/en/nevibecode/skills/terraform-search-import.md) — skill · 4900 installs
- [terraform-infrastructure](https://affpapa.org/en/nevibecode/skills/terraform-infrastructure.md) — skill · 1200 installs
- [terraform-diagrams](https://affpapa.org/en/nevibecode/skills/terraform-diagrams.md) — skill · 745 installs

From the same set: [reason-machines/data-skills](https://affpapa.org/en/nevibecode/by/reason-machines/data-skills.md) — 22 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
