{"id":"6da73329-232e-4973-8bad-7d1b852492fe","shortId":"6EqnSp","kind":"skill","title":"terraform-azurerm-set-diff-analyzer","tagline":"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, Firew","description":"# Terraform AzureRM Set Diff Analyzer\n\nA skill to identify \"false-positive diffs\" in Terraform plans caused by AzureRM Provider's Set-type attributes and distinguish them from actual changes.\n\n## When to Use\n\n- `terraform plan` shows many changes, but you only added/removed a single element\n- Application Gateway, Load Balancer, NSG, etc. show \"all elements changed\"\n- You want to automatically filter false-positive diffs in CI/CD\n\n## Background\n\nTerraform'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.\n\nThese \"false-positive diffs\" don't actually affect the resources, but they make reviewing terraform plan output difficult.\n\n## Prerequisites\n\n- Python 3.8+\n\nIf 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/).\n\n## Basic Usage\n\n```bash\n# 1. Generate plan JSON output\nterraform plan -out=plan.tfplan\nterraform show -json plan.tfplan > plan.json\n\n# 2. Analyze\npython scripts/analyze_plan.py plan.json\n```\n\n## Troubleshooting\n\n- **`python: command not found`**: Use `python3` instead, or install Python\n- **`ModuleNotFoundError`**: Script uses only standard library; ensure Python 3.8+\n\n## Detailed Documentation\n\n- [scripts/README.md](scripts/README.md) - All options, output formats, exit codes, CI/CD examples\n- [references/azurerm_set_attributes.md](references/azurerm_set_attributes.md) - Supported resources and attributes","tags":["terraform","azurerm","set","diff","analyzer","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot"],"capabilities":["skill","source-github","skill-terraform-azurerm-set-diff-analyzer","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/terraform-azurerm-set-diff-analyzer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (1,702 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:26.574Z","embedding":null,"createdAt":"2026-04-18T20:25:57.117Z","updatedAt":"2026-05-18T18:52:26.574Z","lastSeenAt":"2026-05-18T18:52:26.574Z","tsv":"'/downloads/).':211 '1':215 '2':229 '3.8':189,253 'actual':32,79,175 'ad':131 'added/removed':92 'affect':176 'analyz':6,7,54,230 'appear':137 'applic':45,96,162 'apt':200 'attribut':30,74,160,271 'automat':109 'azur':42 'azurerm':3,13,51,68,152 'background':117 'balanc':48,99,165 'bash':214 'basic':212 'brew':203 'caus':66 'chang':25,34,80,88,105,139 'ci/cd':116,264 'code':263 'command':236 'compar':122 'detail':254 'diff':5,21,53,62,114,172 'difficult':186 'distinguish':16,76 'document':255 'e.g':199 'element':95,104,134,136 'ensur':251 'etc':101 'exampl':265 'exit':262 'fals':19,60,112,170 'false-posit':18,59,111,169 'filter':110 'firew':49 'format':261 'found':238 'gateway':46,97,163 'general':143 'generat':216 'heavili':155 'identifi':58 'instal':194,201,204,243 'instead':241 'issu':145 'json':10,218,226 'key':128 'librari':250 'like':44,161 'load':47,98,164 'make':181 'manag':198 'mani':87 'modulenotfounderror':245 'notic':150 'nsg':100,167 'option':259 'order':23 'order-on':22 'output':11,40,185,219,260 'packag':197 'particular':149 'plan':9,39,65,85,184,217,221 'plan.json':228,233 'plan.tfplan':223,227 'posit':20,61,113,124,171 'prerequisit':187 'provid':14,69 'python':188,191,231,235,244,252 'python.org':208 'python3':202,205,240 'rather':125 'references/azurerm_set_attributes.md':266,267 'remov':133 'resourc':33,43,153,178,269 'review':37,182 'script':246 'scripts/analyze_plan.py':232 'scripts/readme.md':256,257 'set':4,28,52,72,120,158 'set-typ':27,71,157 'show':86,102,225 'singl':94 'skill':56 'skill-terraform-azurerm-set-diff-analyzer' 'source-github' 'standard':249 'support':268 'terraform':2,8,38,50,64,84,118,144,183,220,224 'terraform-azurerm-set-diff-analyz':1 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'troubleshoot':234 'type':29,73,121,159 'unavail':193 'usag':213 'use':35,83,156,239,247 'via':195 'want':107 'www.python.org':210 'www.python.org/downloads/).':209","prices":[{"id":"7d156041-79eb-4fc8-b831-548296e986f9","listingId":"6da73329-232e-4973-8bad-7d1b852492fe","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:57.117Z"}],"sources":[{"listingId":"6da73329-232e-4973-8bad-7d1b852492fe","source":"github","sourceId":"github/awesome-copilot/terraform-azurerm-set-diff-analyzer","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/terraform-azurerm-set-diff-analyzer","isPrimary":false,"firstSeenAt":"2026-04-18T21:51:26.127Z","lastSeenAt":"2026-05-18T18:52:26.574Z"},{"listingId":"6da73329-232e-4973-8bad-7d1b852492fe","source":"skills_sh","sourceId":"github/awesome-copilot/terraform-azurerm-set-diff-analyzer","sourceUrl":"https://skills.sh/github/awesome-copilot/terraform-azurerm-set-diff-analyzer","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:57.117Z","lastSeenAt":"2026-05-07T22:40:18.457Z"}],"details":{"listingId":"6da73329-232e-4973-8bad-7d1b852492fe","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"terraform-azurerm-set-diff-analyzer","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"2d366793d789de64c49ae3a00ba894db1778e3f4","skill_md_path":"skills/terraform-azurerm-set-diff-analyzer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/terraform-azurerm-set-diff-analyzer"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"terraform-azurerm-set-diff-analyzer","license":"MIT","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."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/terraform-azurerm-set-diff-analyzer"},"updatedAt":"2026-05-18T18:52:26.574Z"}}