arm-to-terraform-migration
Convert Azure ARM templates to Terraform HCL configuration with full resource mapping and dependency preservation
Skill by Custom Terraform Assistant
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.
About
Use cases: devops, cloud
Reviews
Write a reviewNo 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
- 0.621score
figma
GuicedEE
Fetch Figma designs, assets, and screenshots through MCP; implement Figma URLs/node IDs in code or troubleshoot the Figma connection.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
security-best-practices
GuicedEE
Review or improve Python, JavaScript/TypeScript, or Go security only when explicitly requested; excludes general reviews and debugging.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
security-ownership-map
GuicedEE
Use Git history for explicitly requested security ownership, sensitive-code hotspots, or bus-factor analysis; excludes general maintainer lists.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
azure-access-and-exposure-audit
GuicedEE
Audit Azure network exposure and harden ACLs, or diagnose RBAC/PIM access, activation, and approval failures with PowerShell or bash.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
aggrid
GuicedEE
Implement, upgrade, or debug AG Grid in JavaScript/TypeScript frameworks using its MCP server.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
api-integration-specialist
GuicedEE
Integrate external REST/GraphQL APIs or webhooks, including authentication, retries, rate limits, and request/response mapping.
SkillAFreshness: A★ 5Claude Code +9 - 0.621score
playwright
GuicedEE
Automate real browsers from the terminal for navigation, forms, screenshots, extraction, and UI debugging using playwright-cli.
SkillAFreshness: A★ 5Claude Code +9 - 0.618score
security-compliance
GuicedEE
Assess security posture, threat models, and compliance evidence for SOC2, ISO27001, GDPR, or HIPAA requirements.
SkillAFreshness: A★ 5Claude Code +9 - 0.618score
code-reviewer
GuicedEE
Review PRs and patches for actionable correctness, API/UX, performance, security, and maintainability findings.
SkillAFreshness: A★ 5Claude Code +9 - 0.618score
gh-fix-ci
GuicedEE
Diagnose and fix failing GitHub Actions PR checks with gh.
SkillAFreshness: A★ 5Claude Code +9 - 0.618score
screenshot
GuicedEE
Capture desktop, window, or region screenshots when explicitly requested or when tool-specific capture is unavailable.
SkillAFreshness: A★ 5Claude Code +9 - 0.618score
senior-architect
GuicedEE
Design or review software architecture, API/data models, scalability tradeoffs, ADRs, and Mermaid diagrams.
SkillAFreshness: A★ 5Claude Code +9
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
- Repository
- github.com/GuicedEE/ai-rules
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Cite this page
arm-to-terraform-migration skill. Agent Mart. https://agentmart.dev/skills/guicedee-arm-to-terraform-migration (last updated 2026-10-24)