smithery/armanzeroeight
terraform-module-scaffolder
Scaffolds new Terraform modules with standardized structure including main.tf, variables.tf, outputs.tf, versions.tf, and README.md.
Use judgment
Installs
0
Stars
—
Security
No audit
Freshness
Unknown
Updated
—
Installation
Project
Global
Entire repo
Entire repo (global)
$
npx skills add smithery/armanzeroeight --skill terraform-module-scaffolder
Copy
SKILL.md
Terraform Module Scaffolder
This skill helps create well-structured Terraform modules following best practices and conventions.
When to Use
Use this skill when:
Creating a new Terraform module from scratch
Setting up standardized module structure
Need templates for common AWS/Azure/GCP resources
Want to ensure module follows Terraform conventions
Module Structure
Generate modules with this standard structure:
module-name/
├── main.tf # Primary resource definitions
├── variables.tf # Input variables
├── outputs.tf # Output values
├── versions.tf # Provider and Terraform version constraints
├── README.md # Module documentation
└── examples/ # Usage examples (optional)
└── basic/
└── main.tf
Instructions
1. Gather Requirements
Ask the user:
What is the module name?
What cloud provider (AWS, Azure, GCP, multi-cloud)?
What resources should the module create?
Any specific requirements or constraints?
2. Create Core Files
main.tf - Include:
Resource definitions with clear naming
Local values for computed attributes
Data sources if needed
variables.tf - Include:
Required variables first, then optional
Clear descriptions for each variable
Sensible defaults where appropriate
Type constraints (string, number, bool, list, map, object)
Validation rules for critical inputs
outputs.tf - Include:
Resource IDs and ARNs
Connection information (endpoints, URLs)
Computed attributes that other modules might need
Clear descriptions for each output
versions.tf - Include:
Terraform version constraint (use ~> for minor version)
Provider version constraints
Required providers block
README.md - Include:
Module description and purpose
Usage example
Requirements section
Inputs table (can be auto-generated later)
Outputs table (can be auto-generated later)
3. Apply Best Practices
Use consistent naming: resource_type-purpose (e.g., s3-logs, vpc-main)
Add tags to all taggable resources with variables for custom tags
Use terraform fmt formatting
Include lifecycle blocks where appropriate
Add depends_on only when implicit dependencies don't work
Use count or for_each for conditional resources
4. Add Example Usage
Create examples/basic/main.tf showing minimal working example:
module "example" {
source = "../.."
# Required variables
name = "example"
# Optional variables with common values
tags = {
Environment = "dev"
ManagedBy = "terraform"
}
}
Validation Checklist
Before completing, verify: