[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F52ZPWF3VT7FG6NTF9RYGW":3,"skill-same:01M6F52ZPWF3VT7FG6NTF9RYGW":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6F52ZPWF3VT7FG6NTF9RYGW","terraform-azurerm-set-diff-analyzer",null,"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.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fgithub\u002Fawesome-copilot\u002Fterraform-azurerm-set-diff-analyzer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"terraform","SET","terraform azurerm set diff analyzer","diff","with","diffs","output","load balancer","resources","false","type","provider","resource changes","only","use","analyze","plan","firewall","gateway","azure","2026-11-10 10:12:30",false,"---\nname: terraform-azurerm-set-diff-analyzer\ndescription: 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.\nlicense: MIT\n---\n\n# 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\u002Fremoved 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\u002FCD\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:\u002F\u002Fwww.python.org\u002Fdownloads\u002F).\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\u002Fanalyze_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\u002FREADME.md](scripts\u002FREADME.md) - All options, output formats, exit codes, CI\u002FCD examples\n- [references\u002Fazurerm_set_attributes.md](references\u002Fazurerm_set_attributes.md) - Supported resources and attributes\n\n","# 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\u002Fremoved 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\u002FCD\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:\u002F\u002Fwww.python.org\u002Fdownloads\u002F).\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\u002Fanalyze_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\u002FREADME.md](scripts\u002FREADME.md) - All options, output formats, exit codes, CI\u002FCD examples\n- [references\u002Fazurerm_set_attributes.md](references\u002Fazurerm_set_attributes.md) - Supported resources and attributes\n\n",{"name":5,"license":15,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fgithub\u002Fawesome-copilot\u002Fterraform-azurerm-set-diff-analyzer",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill terraform-azurerm-set-diff-analyzer",{"tool":64,"command":65},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill terraform-azurerm-set-diff-analyzer",{"tool":67,"command":68},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill terraform-azurerm-set-diff-analyzer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fgithub\u002Fawesome-copilot\u002Fterraform-azurerm-set-diff-analyzer\u002FSKILL.md",true,[],[73,85,95,104,110,117],{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[82,83,84],"model","model hierarchy","model hierarchy skill",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[90],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},[92,93,94],"MCP","zoom","zoom mcp",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[101,102,103,93],"sdk","zoom apps sdk","apps",{"skillNo":105,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[106],{"skillNo":111,"name":112,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":116,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[115],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},[112],{"skillNo":118,"name":119,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[119]]