- Home
- Skills
- First Fluke
- Fullstack Starter
- Terraform Module Library
terraform-module-library_skill
- TypeScript
181
GitHub Stars
1
Bundled Files
2 months ago
Catalog Refreshed
4 months ago
First Indexed
Readme & install
Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.
Installation
Preview and clipboard use veilstrat where the catalogue uses aiagentskills.
npx veilstrat add skill first-fluke/fullstack-starter --skill terraform-module-library- SKILL.md2.5 KB
Overview
This skill provides expert guidance for creating, managing, and using Terraform modules to build reusable infrastructure components across AWS, GCP, and Azure. It focuses on module structure, versioning, variable/output conventions, and practical patterns for monorepos and private registries. Use it to standardize Terraform patterns and accelerate safe, maintainable infrastructure code.
How this skill works
The skill inspects module layout, variable and output definitions, version constraints, and example usage to ensure consistency and reusability. It highlights provider-specific recommendations (AWS, GCP, Azure), enforces version pinning, and checks for anti-patterns such as embedding backend/state logic or using terraform_remote_state inside modules. It also provides a review checklist and concrete examples for local and registry-based module consumption.
When to use it
- Creating a new reusable Terraform module for any cloud provider
- Refactoring standalone Terraform code into a standardized module
- Enforcing module conventions across a monorepo or team
- Implementing common infrastructure components (VPC, GKE/AKS/EKS, RDS/Cloud SQL)
- Preparing modules for private registry publishing
Best practices
- Keep a predictable module directory with main, variables, outputs, and examples for usage
- Pin Terraform and provider versions in a versions file to avoid drift
- Declare variable type, description, and validation blocks for clearer contracts
- Document all outputs and give them stable, descriptive names
- Avoid backend configuration and remote state links inside modules; manage state at the root
- Tag or label cloud resources consistently (Owner, Environment, Project)
Example use cases
- Create a reusable network module with standardized naming and subnets for dev/prod
- Refactor a project’s database setup into a module exposing endpoints and credentials safely
- Provide an examples/complete configuration for local testing within a monorepo
- Publish a module to a private registry with source paths and versioning
- Adopt provider-specific patterns like GCP resource naming and AWS tagging in shared modules
FAQ
No. Backends and remote state belong to root configurations or environments. Modules should be stateless building blocks to remain composable and reusable.
How should I enforce provider versions across modules?
Pin provider and Terraform versions in a central versions file for each module, and use a shared root-level constraint to keep teams aligned. Use automation to detect mismatches.