Install
$ agentstack add skill-makigjuro-cloudstack-ai-plugins-add-terraform-module ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Add Terraform Module
Scaffold a new Terraform module following project conventions.
Arguments
{module-name}— Name of the module (required, e.g.,redis,service-bus,postgresql){description}— What this module provisions (optional)
Configuration
Read cloudstack.json from the project root at the start of execution. Extract:
TF_PATH=infrastructure.terraformPath(default:infra/terraform/modules)TG_PATH=infrastructure.terragruntPath(default:infra/terragrunt)IAC_WRAPPER=infrastructure.iacWrapper(default:none)CLOUD=infrastructure.cloud(default:azure)
If cloudstack.json does not exist, auto-detect by scanning the project structure.
Process
- Read existing modules in
{TF_PATH}/to follow established patterns.
- Create the module directory:
{TF_PATH}/{module-name}/
├── variables.tf
├── main.tf
├── outputs.tf
- variables.tf — Always include these standard variables:
variable "environment" {
description = "Environment name (e.g. dev, staging, prod)"
type = string
}
variable "location" {
description = "Cloud region (e.g. westeurope, us-east-1)"
type = string
}
variable "project" {
description = "Project prefix for resource naming"
type = string
}
variable "tags" {
description = "Common tags applied to all resources"
type = map(string)
default = {}
}
Add module-specific variables after the standard ones.
- main.tf — Follow the naming convention from existing modules. Derive a location short code from the region (e.g.,
westeurope->weu,us-east-1->use1):
locals {
location_short = # derive from var.location or use a lookup map
name = "${var.project}-{resource-abbrev}-${var.environment}-${local.location_short}"
}
Scan existing modules to discover the project's established naming convention and location short mapping. Use that pattern.
- outputs.tf — Export
name,id, and any connection strings or keys needed by downstream modules.
- IaC Wrapper Wiring (conditional on
IAC_WRAPPER):
If IAC_WRAPPER = terragrunt: Create Terragrunt wiring for the dev environment:
`` {TG_PATH}/dev/{module-name}/ └── terragrunt.hcl ``
With content: ```hcl include "root" { path = findinparent_folders() }
terraform { source = "../../../terraform/modules/{module-name}" }
dependency "resourcegroup" { configpath = "../resource-group" }
inputs = { resourcegroupname = dependency.resource_group.outputs.name } ```
Adjust the source path to be the correct relative path from {TG_PATH}/dev/{module-name}/ to {TF_PATH}/{module-name}. Add additional dependencies based on what the module needs.
If IAC_WRAPPER = none: Skip wrapper wiring. Note that the user can run terraform plan directly from the module directory.
Output
After scaffolding, report:
## Scaffolded: {module-name} Terraform module
Files created:
- `{TF_PATH}/{module-name}/variables.tf`
- `{TF_PATH}/{module-name}/main.tf`
- `{TF_PATH}/{module-name}/outputs.tf`
- `{TG_PATH}/dev/{module-name}/terragrunt.hcl` (if IAC_WRAPPER = terragrunt)
Next: Add resource definitions in `main.tf`, then run `/infra-lint` to validate.
Error Handling
- Module directory already exists: Warn the user and ask whether to overwrite or extend.
- Terraform not installed: Suggest installing with
brew install terraform. - IaC wrapper root config not found: If using Terragrunt, check that
{TG_PATH}/terragrunt.hclexists as the root config.
After Scaffolding
Remind to:
- Add module-specific resource definitions in
main.tf - Add any needed dependencies in the wrapper config (if applicable)
- Run
/infra-lintto validate
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: makigjuro
- Source: makigjuro/cloudstack-ai-plugins
- License: MIT
- Homepage: https://github.com/makigjuro/cloudstack-ai-plugins#quick-start
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.