Use when writing and organizing Terraform infrastructure-as-code configurations for cloud resource provisioning.
View on GitHubTheBushidoCollective/han
jutsu-terraform
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-terraform/skills/terraform-configuration/SKILL.md -a claude-code --skill terraform-configurationInstallation paths:
.claude/skills/terraform-configuration/# Terraform Configuration
Writing and organizing Terraform infrastructure-as-code configurations.
## Basic Structure
```hcl
# Provider configuration
terraform {
required_version = ">= 1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
}
}
provider "aws" {
region = var.region
}
```
## Resources
```hcl
resource "aws_instance" "web" {
ami = var.ami_id
instance_type = var.instance_type
tags = {
Name = "web-server"
Environment = var.environment
}
lifecycle {
create_before_destroy = true
prevent_destroy = false
}
}
```
## Variables
```hcl
variable "environment" {
description = "Environment name"
type = string
default = "development"
validation {
condition = contains(["development", "staging", "production"], var.environment)
error_message = "Environment must be development, staging, or production."
}
}
variable "instance_count" {
description = "Number of instances"
type = number
default = 1
}
variable "tags" {
description = "Resource tags"
type = map(string)
default = {}
}
```
## Outputs
```hcl
output "instance_id" {
description = "ID of the EC2 instance"
value = aws_instance.web.id
}
output "public_ip" {
description = "Public IP address"
value = aws_instance.web.public_ip
sensitive = false
}
```
## Data Sources
```hcl
data "aws_ami" "amazon_linux" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
}
data "aws_vpc" "default" {
default = true
}
```
## Locals
```hcl
locals {
common_tags = {
Project = "myapp"
ManagedBy = "terraform"
Environment = var.environment
}
name_prefix = "${var.project}-${var.environment}"
}
resourc