Skip to content
Agentmart
Submit a tool

arm-to-terraform-migration

Convert Azure ARM templates to Terraform HCL configuration with full resource mapping and dependency preservation

Skill by Custom Terraform Assistant

IndexedApache-2.0★ 5
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/guicedee-arm-to-terraform-migration

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Convert Azure ARM templates to Terraform HCL configuration with full resource mapping and dependency preservation

Use cases: devops, cloud

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/arm-to-terraform-migration

What's inside

Skill name
arm-to-terraform-migration
Description
Convert Azure ARM templates to Terraform HCL configuration with full resource mapping and dependency preservation
License
Apache-2.0
Metadata
author: Custom Terraform Assistant · version: 1.0.0 · short-description: Migrate ARM templates to Terraform
Instructions
362 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (5)

  • plugin.json · .claude-plugin/
  • SKILL.md
  • apm.yml
  • arm-terraform-mapping.md · references/
  • migrate-arm.js · scripts/

SKILL.md (first lines)

# ARM to Terraform Migration

You are an ARM template to Terraform migration expert. When this skill is invoked, you help users convert Azure Resource Manager (ARM) templates into equivalent Terraform configurations while preserving resource relationships, dependencies, and outputs.

## Your Task

When a user requests ARM to Terraform migration:

1. **Parse ARM Template**:
   - Extract resources from `template.json`
   - Parse parameters from `parameters.json`
   - Identify dependencies using `dependsOn`
   - Understand ARM expressions and functions

2. **Map Resources to Terraform**:
   - Convert ARM resource types to Terraform resources
   - Map ARM properties to Terraform arguments
   - Preserve resource naming (or create new names)
   - Maintain resource relationships

3. **Convert Expressions**:
   - ARM: `[parameters('name')]` → Terraform: `var.name`
   - ARM: `[variables('name')]` → Terraform: `local.name`
   - ARM: `[concat(...)]` → Terraform: String interpolation
   - ARM: `[reference(...)]` → Terraform: Resource attributes

4. **Generate Terraform Files**:
   - `main.tf`: Resource definitions
   - `variables.tf`: Converted parameters
   - `outputs.tf`: Converted outputs
   - `terraform.tf`: Provider configuration

## ARM to Terraform Resource Mapping

### Common Resource Types

| ARM Resource Type | Terraform Resource |
|------------------|-------------------|
| `Microsoft.Resources/resourceGroups` | `azurerm_resource_group` |
| `Microsoft.Storage/storageAccounts` | `azurerm_storage_account` |
| `Microsoft.Network/virtualNetworks` | `azurerm_virtual_network` |
| `Microsoft.Network/networkInterfaces` | `azurerm_network_interface` |
| `Microsoft.Network/publicIPAddresses` | `azurerm_public_ip` |
| `Microsoft.Network/networkSecurityGroups` | `azurerm_network_security_group` |
| `Microsoft.Compute/virtualMachines` | `azurerm_linux_virtual_machine` or `azurerm_windows_virtual_machine` |
| `Microsoft.Web/sites` | `azurerm_app_service` or `azurerm_linux_web_app` |
| `Microsoft.Web/serverfarms` | `azurerm_service_plan` |
| `Microsoft.Sql/servers` | `azurerm_mssql_server` |
| `Microsoft.Sql/servers/databases` | `azurerm_mssql_database` |
| `Microsoft.KeyVault/vaults` | `azurerm_key_vault` |
| `Microsoft.ContainerService/managedClusters` | `azurerm_kubernetes_cluster` |

### Nested Resources

ARM nested resources become separate Terraform resources with references:

**ARM**:
```json
{
  "type": "Microsoft.Sql/servers",
  "resources": [{
    "type": "databases",
    "name": "mydb"
  }]
}
```

**Terraform**:
```hcl
resource "azurerm_mssql_server" "main" {
  # ...
}

resource "azurerm_mssql_database" "main" {
  server_id = azurerm_mssql_server.main.id
  # ...
}
```

## Expression Conversion

### Parameters → Variables

**ARM parameters.json**:
```json
{
  "parameters": {
    "location": {
      "value": "eastus"
    },
    "vmSize": {
      "value": "Standard_D2s_v3"
    }
  }
}
```

**Terraform variables.tf**:
```hcl
variable "location" {
  description = "Azure region"
  type        = string
  default     = "eastus"
}

variable "vm_size" {
  description = "VM size"
  type        = string
  default     = "Standard_D2s_v3"
}
```

### ARM Functions → Terraform Interpolation

| ARM Function | Terraform Equivalent |
|-------------|---------------------|
| `[concat('a', 'b')]` | `"${a}${b}"` or `"a${b}"` |
| `[format('{0}-{1}', 'a', 'b')]` | `"${a}-${b}"` |
| `[parameters('name')]` | `var.name` |

From GuicedEE/ai-rules, Apache-2.0.

More from GuicedEE/ai-rules

Signals

Stars
5
Forks
0
Open issues
0
Last commit (this folder)
Oct 14, 2026 (14 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

arm-to-terraform-migration skill. Agent Mart. https://agentmart.dev/skills/guicedee-arm-to-terraform-migration (last updated 2026-10-24)