terraform-azurerm-set-diff-analyzer — GitHub Copilot skill
Analyzes Terraform plan JSON for AzureRM to separate Set ordering noise from real resource changes. Use it when plan reviews show a noisy diff.
npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzerWhat terraform-azurerm-set-diff-analyzer does
This skill reads Terraform plan JSON for the AzureRM Provider and separates order-only Set diffs from actual resource edits. It helps review Application Gateway, Load Balancer, Firewall, Front Door, and NSG plans where adding or removing one item can make an entire set look changed.
Create plan.tfplan, export it to plan.json, then run python scripts/analyze_plan.py plan.json. The script requires Python 3.8+ and uses the standard library. Install it for teams reviewing AzureRM plans in CI/CD; if Set attributes rarely cause noise in your plans, a separate analyzer is unnecessary.
What it helps with
- separate Set ordering changes from resource edits
- review a noisy Application Gateway diff
- inspect Load Balancer and NSG plan changes
- filter false-positive diffs in CI/CD
Example prompts for the agent
- Analyze `plan.json` and identify false-positive diffs caused by Set ordering.
- Which AzureRM changes in this plan are actual resource changes?
- Generate plan JSON with `terraform show -json plan.tfplan > plan.json` and analyze it.
How to install terraform-azurerm-set-diff-analyzer
1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer2GitHub CLI
gh skill install github/awesome-copilot terraform-azurerm-set-diff-analyzer3Manually: put the files in place
.github/skills/terraform-azurerm-set-diff-analyzer/SKILL.md1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer -a claude-code2Manually: put the files in place
~/.claude/skills/terraform-azurerm-set-diff-analyzer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/terraform-azurerm-set-diff-analyzer/
Manually: put the files in place
.agents/skills/terraform-azurerm-set-diff-analyzer/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/terraform-azurerm-set-diff-analyzer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
Platform CLI
gemini skills install https://github.com/github/awesome-copilot --path skills/terraform-azurerm-set-diff-analyzerManually: put the files in place
.devin/skills/terraform-azurerm-set-diff-analyzer/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set554
The whole set →Similar
Questions about terraform-azurerm-set-diff-analyzer
How do I install terraform-azurerm-set-diff-analyzer in GitHub Copilot?
Run npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer. You can also use gh skill install github/awesome-copilot terraform-azurerm-set-diff-analyzer.
What does terraform-azurerm-set-diff-analyzer do?
It reads Terraform plan JSON for AzureRM and identifies diffs caused by Set element ordering versus changes that alter a resource.
What is required to analyze a plan?
You need a plan JSON file and Python 3.8+. Run the script with python scripts/analyze_plan.py plan.json; it uses the Python standard library.
Source text
SKILL.md · MIT
--- name: terraform-azurerm-set-diff-analyzer description: Analyze Terraform plan JSON output for AzureRM Provider to distinguish between false-positive diffs (order-only changes in Set-type attributes) and actual resource changes. Use when reviewing terraform plan output for Azure resources like Application Gateway, Load Balancer, Firewall, Front Door, NSG, and other resources with Set-type attributes that cause spurious diffs due to internal ordering changes. license: MIT --- # Terraform AzureRM Set Diff Analyzer A skill to identify "false-positive diffs" in Terraform plans caused by AzureRM Provider's Set-type attributes and distinguish them from actual changes. ## When to Use - `terraform plan` shows many changes, but you only added/removed a single element - Application Gateway, Load Balancer, NSG, etc. show "all elements changed" - You want to automatically filter false-positive diffs in CI/CD ## Background Terraform's Set type compares by position rather than by key, so when adding or removing elements, all elements appear as "changed". This is a general Terraform issue, but it's particularly noticeable with AzureRM resources that heavily use Set-type attributes like Application Gateway, Load Balancer, and NSG. These "false-positive diffs" don't actually affect the resources, but they make reviewing terraform plan output difficult. ## Prerequisites - Python 3.8+ If Python is unavailable, install via your package manager (e.g., `apt install python3`, `brew install python3`) or from [python.org](https://www.python.org/downloads/). ## Basic Usage ```bash # 1. Generate plan JSON output terraform plan -out=plan.tfplan terraform show -json plan.tfplan > plan.json # 2. Analyze python scripts/analyze_plan.py plan.json ``` ## Troubleshooting - **`python: command not found`**: Use `python3` instead, or install Python - **`ModuleNotFoundError`**: Script uses only standard library; ensure Python 3.8+ ## Detailed Documentation - [scripts/README.md](scripts/README.md) - All options, output formats, exit codes, CI/CD examples - [references/azurerm_set_attributes.md](references/azurerm_set_attributes.md) - Supported resources and attributes
© github · MIT · github/awesome-copilot