Terraform Stacks
HashiCorpOfficialPublished by HashiCorp
- Skill
- Tool integration
- Cloud and DevOps
- MPL-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Terraform Stacks provides a declarative orchestration layer above traditional Terraform modules, enabling the management of complex infrastructure across multiple environments, regions, and cloud accounts. It introduces a specialized HCL-based configuration language using .tfcomponent.hcl and .tfdeploy.hcl files to define components, providers, and deployment instances. This skill covers the full lifecycle of Stacks, including configuration, dependency management, provider configuration, and deployment monitoring via the CLI or HCP Terraform API.
What it does
- Defines infrastructure units as components referencing local, registry, or Git-based modules.
- Orchestrates multi-region and multi-environment deployments within a single Stack.
- Manages provider configurations with support for for_each and workload identity authentication.
- Links multiple Stacks together using published outputs and upstream inputs.
- Automates deployment workflows and monitoring through HCP Terraform integration.
- Provides patterns for safe component removal and deferred changes.
When to use it
- When you need to manage complex, multi-component infrastructure at scale.
- When you require consistent infrastructure deployments across multiple environments or regions.
- When you want to move beyond individual Terraform modules to a higher-level orchestration layer.
- When implementing OIDC-based workload identity for secure, temporary cloud credentials.
- When you need to link separate infrastructure stacks together in a dependency chain.
Advantages
- Simplifies management of large-scale infrastructure by grouping related components.
- Reduces reliance on long-lived static credentials through native workload identity support.
- Provides clear separation between component definitions and deployment-specific inputs.
- Enables automated deployment pipelines with built-in dependency inference.
- Supports advanced patterns like multi-region deployments and cross-stack output sharing.
Usage examples
- “How do I define a component in a Terraform Stack that uses a module from the public registry?”
- The agent provides a component block example using the source argument with the registry path, specifying inputs and mapping providers.
- “What is the best way to handle AWS credentials in a Stack without using static keys?”
- The agent explains the workload identity pattern, showing how to configure an identity_token block and use assume_role_with_web_identity in the provider config.
- “How can I monitor the status of a deployment run programmatically?”
- The agent provides the API endpoints for retrieving deployment group summaries and run status, including the necessary headers for authentication.
- “How do I remove a component from an existing Stack?”
- The agent details the use of the removed block, explaining that it requires the component's providers to be defined to safely process the removal.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/hashicorp/terraform-stacks/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip terraform-stacks.zip -d .agents/skills
Documentation by HashiCorp
Terraform Stacks
Terraform Stacks simplify infrastructure provisioning and management at scale by providing a configuration layer above traditional Terraform modules. Stacks enable declarative orchestration of multiple components across environments, regions, and cloud accounts.
Core Concepts
Stack: A complete unit of infrastructure composed of components and deployments that can be managed together.
Component: An abstraction around a Terraform module that defines infrastructure pieces. Each component specifies a source module, inputs, and providers.
Deployment: An instance of all components in a stack with specific input values. Use deployments for different environments (dev/staging/prod), regions, or cloud accounts.
Stack Language: A separate HCL-based language (not regular Terraform HCL) with distinct blocks and file extensions.
File Structure
Terraform Stacks use specific file extensions:
Component configuration:
.tfcomponent.hclDeployment configuration:
.tfdeploy.hclProvider lock file:
.terraform.lock.hcl(generated by CLI)
All configuration files must be at the root level of the Stack repository. HCP Terraform processes all files in dependency order.
Recommended File Organization
my-stack/
├── .terraform-version # The required Terraform version for this Stack
├── variables.tfcomponent.hcl # Variable declarations
├── providers.tfcomponent.hcl # Provider configurations
├── components.tfcomponent.hcl # Component definitions
├── outputs.tfcomponent.hcl # Stack outputs
├── deployments.tfdeploy.hcl # Deployment definitions
├── .terraform.lock.hcl # Provider lock file (generated)
└── modules/ # Local modules (optional - only if using local modules)
├── s3/
└── compute/Note: The modules/ directory is only required when using local module sources. Components can reference modules from:
Local file paths:
./modules/vpcPublic registry:
terraform-aws-modules/vpc/awsPrivate registry:
app.terraform.io/<org-name>/vpc/awsGit:
git::https://github.com/org/repo.git//path?ref=v1.0.0
HCP Terraform processes all .tfcomponent.hcl and .tfdeploy.hcl files in dependency order.
Required Terraform version (.terraform-version)
Use Terraform v1.13.x or later to access the Stacks CLI plugin and to run terraform stacks CLI commands. Begin by adding a .terraform-version file to your Stack's root directory to specify the Terraform version required for your Stack. For example, the following file specifies Terraform v1.14.5:
1.14.5Component Configuration (.tfcomponent.hcl)
Variable Block
Declare input variables for the Stack configuration. Variables must define a type field and do not support the validation argument.
variable "aws_region" {
type = string
description = "AWS region for deployments"
default = "us-west-1"
}
variable "identity_token" {
type = string
description = "OIDC identity token"
ephemeral = true # Does not persist to state file
}
variable "instance_count" {
type = number
nullable = false
}Important: Use ephemeral = true for credentials and tokens (identity tokens, API keys, passwords) to prevent them from persisting in state files. Use stable for longer-lived values like license keys that need to persist across runs.
Required Providers Block
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.5.0"
}
}Provider Block
Provider blocks differ from traditional Terraform:
Support
for_eachmeta-argumentDefine aliases in the block header (not as an argument)
Accept configuration through a
configblock
Single Provider Configuration:
provider "aws" "this" {
config {
region = var.aws_region
assume_role_with_web_identity {
role_arn = var.role_arn
web_identity_token = var.identity_token
}
}
}Multiple Provider Configurations with for_each:
provider "aws" "configurations" {
for_each = var.regions
config {
region = each.value
assume_role_with_web_identity {
role_arn = var.role_arn
web_identity_token = var.identity_token
}
}
}Authentication Best Practice: Use workload identity (OIDC) as the preferred authentication method for Stacks. This approach:
Avoids long-lived static credentials
Provides temporary, scoped credentials per deployment run
Integrates with cloud provider IAM (AWS IAM Roles, Azure Managed Identities, GCP Service Accounts)
Eliminates need for platform-managed environment variables
Configure workload identity using identity_token blocks and assume_role_with_web_identity in provider configuration. For detailed setup instructions for AWS, Azure, and GCP, see: https://developer.hashicorp.com/terraform/cloud-docs/dynamic-provider-credentials
Component Block
Each Stack requires at least one component block. Add a component for each module to include in the Stack. Components reference modules from local paths, registries, or Git.
component "vpc" {
source = "app.terraform.io/my-org/vpc/aws" # Local, registry, or Git URL
version = "2.1.0" # For registry modules
inputs = {
cidr_block = var.vpc_cidr
name_prefix = var.name_prefix
}
providers = {
aws = provider.aws.this
}
}See references/component-blocks.md for examples of dependencies, for_each, public registry modules, Git sources, and more.
Key Points:
Reference outputs:
component.<name>.<output>orcomponent.<name>[key].<output>for for_eachDependencies inferred automatically from component references
Aggregate with for expressions:
[for x in component.s3 : x.bucket_name]For components with
for_each, reference specific instances:component.<name>[each.value].<output>Provider references are normal values:
provider.<type>.<alias>orprovider.<type>.<alias>[each.value]
Output Block
Outputs require a type argument and do not support preconditions:
output "vpc_id" {
type = string
description = "VPC ID"
value = component.vpc.vpc_id
}
output "endpoint_urls" {
type = map(string)
value = {
for region, comp in component.api : region => comp.endpoint_url
}
sensitive = false
}Locals Block
Locals blocks work the same in both .tfcomponent.hcl and .tfdeploy.hcl files:
locals {
common_tags = {
Environment = var.environment
ManagedBy = "Terraform Stacks"
Project = var.project_name
}
region_config = {
for region in var.regions : region => {
name_suffix = "${var.environment}-${region}"
}
}
}Removed Block
Use to safely remove components from a Stack. HCP Terraform requires the component's providers to remove it.
removed {
from = component.old_component
source = "./modules/old-module"
providers = {
aws = provider.aws.this
}
}Deployment Configuration (.tfdeploy.hcl)
Identity Token Block
Generate JWT tokens for OIDC authentication with cloud providers:
identity_token "aws" {
audience = ["aws.workload.identity"]
}
identity_token "azure" {
audience = ["api://AzureADTokenExchange"]
}Reference tokens in deployments using identity_token.<name>.jwt
Store Block
Access HCP Terraform variable sets within Stack deployments:
store "varset" "aws_credentials" {
id = "varset-ABC123" # Alternatively use: name = "varset_name"
source = "tfc-cloud-shared"
category = "terraform" # Alternatively use: category = "env" for environment variables
}
deployment "production" {
inputs = {
aws_access_key = store.varset.aws_credentials.AWS_ACCESS_KEY_ID
}
}Use to centralize credentials and share variables across Stacks. See references/deployment-blocks.md for details.
Deployment Block
Define deployment instances (minimum 1, maximum 20 per Stack):
deployment "production" {
inputs = {
aws_region = "us-west-1"
instance_count = 3
role_arn = local.role_arn
identity_token = identity_token.aws.jwt
}
}
# Create multiple deployments for different environments
deployment "development" {
inputs = {
aws_region = "us-east-1"
instance_count = 1
name_suffix = "dev"
role_arn = local.role_arn
identity_token = identity_token.aws.jwt
}
}To destroy a deployment: Set destroy = true, upload configuration, approve destroy run, then remove the deployment block. See references/deployment-blocks.md for details.
Deployment Group Block
Group deployments together for shared settings (HCP Terraform Premium tier feature). Free/standard tiers use default groups named {deployment-name}_default.
deployment_group "canary" {
auto_approve_checks = [deployment_auto_approve.safe_changes]
}
deployment "dev" {
inputs = { /* ... */ }
deployment_group = deployment_group.canary
}Multiple deployments can reference the same group. See references/deployment-blocks.md for details.
Deployment Auto-Approve Block
Define rules to automatically approve deployment plans (HCP Terraform Premium tier feature):
deployment_auto_approve "safe_changes" {
deployment_group = deployment_group.canary
check {
condition = context.plan.changes.remove == 0
reason = "Cannot auto-approve plans with resource deletions"
}
}Available context variables: context.plan.applyable, context.plan.changes.add/change/remove/total, context.success
Note: orchestrate blocks are deprecated. Use deployment_group and deployment_auto_approve instead.
See references/deployment-blocks.md for all context variables and patterns.
Publish Output and Upstream Input Blocks
Link Stacks together by publishing outputs from one Stack and consuming them in another:
# In network Stack - publish outputs
publish_output "vpc_id_network" {
type = string
value = deployment.network.vpc_id
}
# In application Stack - consume outputs
upstream_input "network_stack" {
type = "stack"
source = "app.terraform.io/my-org/my-project/networking-stack"
}
deployment "app" {
inputs = {
vpc_id = upstream_input.network_stack.vpc_id_network
}
}See references/linked-stacks.md for complete documentation and examples.
Terraform Stacks CLI
Note: Terraform Stacks is Generally Available (GA) as of Terraform CLI v1.13+. Stacks now count toward Resources Under Management (RUM) for HCP Terraform billing.
Initialize and Validate
terraform stacks init # Download providers, modules, generate lock file
terraform stacks providers-lock # Regenerate lock file (add platforms if needed)
terraform stacks validate # Check syntax without uploadingDeployment Workflow
Important: No plan or apply commands. Upload configuration triggers deployment runs automatically.
# 1. Upload configuration (triggers deployment runs)
terraform stacks configuration upload
# 2. Monitor deployments
terraform stacks deployment-run list # List runs (non-interactive)
terraform stacks deployment-group watch -deployment-group=... # Stream status updates
# 3. Approve deployments (if auto-approve not configured)
terraform stacks deployment-run approve-all-plans -deployment-run-id=...
terraform stacks deployment-group approve-all-plans -deployment-group=...
terraform stacks deployment-run cancel -deployment-run-id=... # Cancel if neededConfiguration Management
terraform stacks configuration list # List configuration versions
terraform stacks configuration fetch -configuration-id=... # Download configuration
terraform stacks configuration watch # Monitor upload statusOther Commands
terraform stacks create # Create new Stack (interactive)
terraform stacks fmt # Format Stack files
terraform stacks list # Show all Stacks
terraform stacks version # Display version
terraform stacks deployment-group rerun -deployment-group=... # Rerun deploymentMonitoring Deployments with HCP Terraform API
For programmatic monitoring in automation, CI/CD, or non-interactive environments (like AI agents), use the HCP Terraform API instead of CLI watch commands. The API provides endpoints for:
Configuration status and validation
Deployment group summaries
Deployment run status
Deployment step details (plan/apply)
Error diagnostics with file locations and code snippets
Stack outputs via artifacts endpoint
Key points:
CLI watch commands stream indefinitely and don't work in automation
Use artifacts endpoint to retrieve Stack outputs:
GET /api/v2/stack-deployment-steps/{step-id}/artifacts?name=apply-descriptionDiagnostics endpoint requires
stack_deployment_step_idquery parameterArtifacts endpoint returns HTTP 307 redirect (use
curl -L)
For complete API workflow, authentication, polling best practices, and example scripts, see references/api-monitoring.md.
Common Patterns
Component Dependencies: Dependencies are automatically inferred when one component references another's output (e.g., subnet_ids = component.vpc.private_subnet_ids).
Multi-Region Deployment: Use for_each on providers and components to deploy across multiple regions. Each region gets its own provider configuration and component instances.
Deferred Changes: Stacks support deferred changes to handle dependencies where values are only known after apply. This enables complex multi-component deployments where some resources depend on runtime values from other components (cluster endpoints, generated passwords, etc.).
For complete examples including multi-region deployments, component dependencies, deferred changes patterns, and linked Stacks, see references/examples.md.
Best Practices
Component Granularity: Create components for logical infrastructure units that share a lifecycle
Module Compatibility:
Modules used with Stacks cannot include provider blocks (configure providers in Stack configuration)
Test public registry modules before using in production Stacks - some modules may have compatibility issues
Consider using raw resources for critical infrastructure if module compatibility is uncertain
Example: Some terraform-aws-modules versions have been found to have compatibility issues with Stacks (e.g., ALB and ECS modules)
State Isolation: Each deployment has its own isolated state
Input Variables: Use variables for values that differ across deployments; use locals for shared values
Provider Lock Files: Always generate and commit
.terraform.lock.hclto version controlNaming Conventions: Use descriptive names for components and deployments
Deployment Groups: You can organize deployments into deployment groups. Deployment groups enable auto-approval rules, logical organization, and provide a foundation for scaling. Deployment groups are an HCP Terraform Premium tier feature
Testing: Test Stack configurations in dev/staging deployments before production
Troubleshooting
Circular Dependencies: Refactor to break circular references or use intermediate components.
Deployment Destruction: Cannot destroy from UI. Set destroy = true in deployment block, upload configuration, and HCP Terraform creates a destroy run.
Empty Diagnostics: Add required stack_deployment_step_id query parameter to diagnostics API requests.
Module Compatibility: Test public registry modules before production use. Some modules may have compatibility issues with Stacks.
References
For detailed documentation, see:
references/component-blocks.md- Complete component block reference with all arguments and syntaxreferences/deployment-blocks.md- Complete deployment block reference with all configuration optionsreferences/linked-stacks.md- Publish outputs and upstream inputs for linking Stacks togetherreferences/examples.md- Complete working examples for multi-region and component dependenciesreferences/api-monitoring.md- Full API workflow for programmatic monitoring and automationreferences/troubleshooting.md- Detailed troubleshooting guide for common issues and solutions
Files
- ATTRIBUTION.mdAdded by AutoGineer900 B
- LICENSELicence file added by AutoGineer16.3 KiB
- SKILL.md16.9 KiB
- references/api-monitoring.md16.2 KiB
- references/component-blocks.md9.9 KiB
- references/deployment-blocks.md8.7 KiB
- references/examples.md30.0 KiB
- references/linked-stacks.md4.2 KiB
- references/troubleshooting.md16.3 KiB
references/component-blocks.md
Component Configuration Block Reference
Complete reference for all blocks available in Terraform Stack component configuration files (.tfcomponent.hcl).
Table of Contents
Variable Block
Required Providers Block
Provider Block
Component Block
Output Block
Locals Block
Removed Block
Variable Block
Declares input variables for Stack configuration.
Syntax
variable "variable_name" {
type = <type>
description = "<description>"
default = <value>
sensitive = <bool>
nullable = <bool>
ephemeral = <bool>
}Arguments
type (required): Data type (string, number, bool, list, map, object, set, tuple, any)
description (optional): Variable description
default (optional): Default value
sensitive (optional, default false): Mark as sensitive to redact from logs
nullable (optional, default true): Whether null is allowed
ephemeral (optional, default false): Do not persist to state file
Differences from Traditional Terraform
type is required (not optional)
validation argument is not supported
Examples
variable "aws_region" {
type = string
description = "AWS region for infrastructure"
default = "us-west-1"
}
variable "identity_token" {
type = string
description = "OIDC identity token"
ephemeral = true
}
variable "subnet_config" {
type = object({
cidr_block = string
availability_zone = string
map_public_ip = bool
})
}For complete variable examples in context, see examples.md.
Required Providers Block
Declares provider dependencies.
Syntax
required_providers {
<provider_name> = {
source = "<source>"
version = "<version_constraint>"
}
}Arguments
source (required): Provider source address (e.g., "hashicorp/aws")
version (optional): Version constraint (e.g., "~> 5.0")
Examples
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.7.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.5.0"
}
azurerm = {
source = "hashicorp/azurerm"
version = ">= 3.0"
}
}Provider Block
Configures provider instances.
Syntax
provider "<provider_type>" "<alias>" {
for_each = <map_or_set> # Optional
config {
<provider_arguments>
}
}Arguments
provider_type (label 1, required): Provider type (e.g., "aws", "azurerm")
alias (label 2, required): Unique identifier for this provider configuration
for_each (optional): Create multiple provider instances from a map or set
config (required): Nested block containing provider-specific configuration
Key Differences from Traditional Terraform
Alias is defined in block header, not as an argument
Configuration goes in a nested
configblockSupports
for_eachmeta-argumentProvider configurations are treated as first-class values
Example
provider "aws" "main" {
config {
region = var.aws_region
assume_role_with_web_identity {
role_arn = var.role_arn
web_identity_token = var.identity_token
}
}
}For complete provider examples including for_each and multi-cloud patterns, see examples.md.
Component Block
Defines infrastructure components to include in the Stack.
Syntax
component "<component_name>" {
for_each = <map_or_set> # Optional
source = "<module_source>"
inputs = {
<input_name> = <value>
}
providers = {
<provider_local_name> = provider.<type>.<alias>[<key>]
}
}Arguments
component_name (label, required): Unique identifier for this component
for_each (optional): Create multiple component instances
source (required): Module source (see Source Argument below)
version (optional): Version constraint for registry-based sources only
inputs (required): Map of input variables for the module
providers (required): Map of provider configurations
Source Argument
The source argument accepts the same module sources as traditional Terraform configurations.
Local File Path:
source = "./modules/vpc"
source = "../shared-modules/networking"Public Terraform Registry:
source = "terraform-aws-modules/vpc/aws"
source = "hashicorp/consul/aws"Format: <NAMESPACE>/<NAME>/<PROVIDER>
Private HCP Terraform Registry:
source = "app.terraform.io/my-org/vpc/aws"
source = "app.terraform.io/example-corp/networking/azurerm"Format: <HOSTNAME>/<ORGANIZATION>/<MODULE_NAME>/<PROVIDER_NAME>
HCP Terraform (SaaS): Use hostname
app.terraform.ioTerraform Enterprise: Use your instance hostname (e.g.,
terraform.mycompany.com)Generic hostname: Use
localterraform.comfor deployments spanning multiple Terraform Enterprise instances
Git Repository:
source = "git::https://github.com/org/repo.git//modules/vpc?ref=v1.0.0"
source = "git::ssh://[email protected]/org/repo.git//modules/vpc?ref=main"HTTP/HTTPS Archive:
source = "https://example.com/modules/vpc-module.tar.gz"Version Argument
The version argument is supported only for registry-based sources (public and private registries). Local file paths and Git sources do not support the version argument.
component "vpc" {
source = "app.terraform.io/my-org/vpc/aws"
version = "~> 2.0" # Semantic versioning constraint
inputs = {
cidr_block = var.vpc_cidr
}
providers = {
aws = provider.aws.main
}
}Note: Modules sourced from local file paths always share the same version as their caller and cannot have independent version constraints.
Component References
Access component outputs using: component.<name>.<output>
For components with for_each: component.<name>[<key>].<output>
Examples
Basic Component:
component "vpc" {
source = "app.terraform.io/my-org/vpc/aws"
version = "2.1.0"
inputs = {
cidr_block = var.vpc_cidr
name_prefix = var.name_prefix
}
providers = {
aws = provider.aws.main
}
}Component with Dependencies:
component "database" {
source = "./modules/rds"
inputs = {
vpc_id = component.vpc.vpc_id
subnet_ids = component.vpc.private_subnet_ids
security_group_ids = [component.security.database_sg_id]
engine_version = var.db_engine_version
}
providers = {
aws = provider.aws.main
}
}For complete component examples including for_each, multi-region, public registry, and multi-provider patterns, see examples.md.
Output Block
Exposes values from Stack configuration.
Syntax
output "<output_name>" {
type = <type>
description = "<description>"
value = <expression>
sensitive = <bool>
ephemeral = <bool>
}Arguments
output_name (label, required): Unique identifier for this output
type (required): Data type of the output
description (optional): Output description
value (required): Expression to output
sensitive (optional, default false): Mark as sensitive
ephemeral (optional, default false): Ephemeral value
Differences from Traditional Terraform
type is required
precondition block is not supported
Examples
output "vpc_id" {
type = string
description = "VPC ID"
value = component.vpc.vpc_id
}
output "instance_details" {
type = object({
id = string
public_ip = string
private_ip = string
})
description = "EC2 instance details"
value = {
id = component.compute.instance_id
public_ip = component.compute.public_ip
private_ip = component.compute.private_ip
}
}For complete output examples including sensitive outputs and for expressions, see examples.md.
Locals Block
Defines local values for reuse within the Stack configuration.
Syntax
locals {
<name> = <expression>
}Example
locals {
common_tags = {
Environment = var.environment
ManagedBy = "Terraform Stacks"
Project = var.project_name
}
name_prefix = "${var.project_name}-${var.environment}"
region_config = {
for region in var.regions : region => {
name_suffix = region
instance_count = var.environment == "prod" ? 3 : 1
}
}
}Removed Block
Declares components to be removed from the Stack.
Syntax
removed {
from = component.<component_name>
source = "<original_module_source>"
providers = {
<provider_name> = provider.<type>.<alias>
}
}Arguments
from (required): Reference to the component being removed
source (required): Original module source
providers (required): Provider configurations needed for removal
Important Notes
Required for safe component removal
Must include all providers the component used
Do not remove providers before removing components that use them
Examples
removed {
from = component.old_component
source = "./modules/deprecated-module"
providers = {
aws = provider.aws.main
}
}
removed {
from = component.legacy_regional
source = "registry.terraform.io/example/legacy/aws"
providers = {
aws = provider.aws.main
random = provider.random.main
}
}Provider References in Component Blocks
Single Provider
providers = {
aws = provider.aws.main
}Multiple Providers
providers = {
aws = provider.aws.main
random = provider.random.main
tls = provider.tls.main
}Provider from for_each
providers = {
aws = provider.aws.regional[each.value]
}Aliased Providers in Module
If module requires specific provider aliases:
providers = {
aws.source = provider.aws.us_east
aws.dest = provider.aws.eu_west
}Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key, Needs a command-line tool
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- HashiCorp
- Publisher
- HashiCorp (Official)
- Source
- hashicorp/agent-skills · plugins/terraform/skills/terraform-stacks · commit 5e30fa5
- Licence
- Mozilla Public License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by HashiCorp or HashiCorp.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download terraform-stacks.zip