[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F3FE8H3XEVNK0B1FKASM1F":3,"skill-same:01M6F3FE8H3XEVNK0B1FKASM1F":87},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":32,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":6,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":66,"install":67,"resources":80},"01M6F3FE8H3XEVNK0B1FKASM1F","arm-templates",null,"Deploy Azure resources with ARM templates and Bicep. Create modular deployments and manage dependencies. Use when deploying Azure-native IaC.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-arm-templates\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"arm templates","templates","manage","2026","when","with","relevant","helper","native","resources","scripts","critical","os","platform","main","community","security","deployments","agent-skills","iac","only","manage dependencies","use","access","devops-security","license","create","modular","azure","2026-11-10 10:12:30",false,"---\nname: arm-templates\ndescription: Deploy Azure resources with ARM templates and Bicep. Create modular deployments\n  and manage dependencies. Use when deploying Azure-native IaC.\ncategory: devops\nrisk: critical\nsource: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\nsource_repo: BagelHole\u002FDevOps-Security-Agent-Skills\nsource_type: community\ndate_added: '2026-09-20'\nlicense: MIT\nlicense_source: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE\ncompatibility: Requires the relevant OS\u002Fplatform tooling and privileged access where\n  noted. Docs-only; helper scripts and templates not bundled.\nmetadata:\n  author: devops-skills\n  version: '1.0'\n---\n\n# ARM Templates & Bicep\n\nDeploy Azure infrastructure with ARM templates and Bicep. Bicep is the recommended domain-specific language that compiles to ARM JSON, offering cleaner syntax, modules, and first-class tooling support.\n\nTemplates are separate illustrative fragments, not a complete resource graph. Module paths and parameter files named here are not bundled. Pin reviewed Bicep\u002Fprovider API\u002Fimage versions, verify resource IDs\u002Fsubscription\u002Fregion, and inspect What-If and replacement\u002Fdeletion impact before authorized deployment. Validation\u002Fbuild success does not prove deployability, networking isolation, quotas or safe changes. Deleting a deployment record does not roll back deployed resources.\n\n## Prerequisites\n\n```bash\n# Install Azure CLI\n# Prerequisite: organization-approved Azure CLI installed from a verified signed package.\naz version\n\n# Install Bicep CLI (bundled with Azure CLI 2.20+)\naz bicep install\naz bicep upgrade\n\n# Verify installation\naz bicep version\n\n# Login and set subscription\naz login\naz account set --subscription \"my-subscription-id\"\n```\n\n## Bicep Fundamentals\n\n### Resource Group Deployment with Virtual Network\n\n```bicep\n\u002F\u002F main.bicep\n@description('Azure region for all resources')\nparam location string = resourceGroup().location\n\n@description('Environment name used for resource naming')\n@allowed(['dev', 'staging', 'prod'])\nparam environment string = 'dev'\n\n@description('Base name for all resources')\nparam baseName string\n\nvar vnetName = '${baseName}-${environment}-vnet'\nvar nsgName = '${baseName}-${environment}-nsg'\n\nresource nsg 'Microsoft.Network\u002FnetworkSecurityGroups@2023-05-01' = {\n  name: nsgName\n  location: location\n  properties: {\n    securityRules: [\n      {\n        name: 'AllowHTTPS'\n        properties: {\n          priority: 100\n          direction: 'Inbound'\n          access: 'Allow'\n          protocol: 'Tcp'\n          sourcePortRange: '*'\n          destinationPortRange: '443'\n          sourceAddressPrefix: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n      {\n        name: 'DenyAllInbound'\n        properties: {\n          priority: 4096\n          direction: 'Inbound'\n          access: 'Deny'\n          protocol: '*'\n          sourcePortRange: '*'\n          destinationPortRange: '*'\n          sourceAddressPrefix: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n    ]\n  }\n}\n\nresource vnet 'Microsoft.Network\u002FvirtualNetworks@2023-05-01' = {\n  name: vnetName\n  location: location\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0\u002F16'\n      ]\n    }\n    subnets: [\n      {\n        name: 'web-subnet'\n        properties: {\n          addressPrefix: '10.0.1.0\u002F24'\n          networkSecurityGroup: {\n            id: nsg.id\n          }\n        }\n      }\n      {\n        name: 'app-subnet'\n        properties: {\n          addressPrefix: '10.0.2.0\u002F24'\n        }\n      }\n      {\n        name: 'data-subnet'\n        properties: {\n          addressPrefix: '10.0.3.0\u002F24'\n          privateEndpointNetworkPolicies: 'Enabled'\n        }\n      }\n    ]\n  }\n}\n\noutput vnetId string = vnet.id\noutput webSubnetId string = vnet.properties.subnets[0].id\noutput appSubnetId string = vnet.properties.subnets[1].id\n```\n\n### VM Deployment with Managed Identity\n\n```bicep\n\u002F\u002F vm.bicep\nparam location string = resourceGroup().location\nparam vmName string\nparam subnetId string\nparam adminUsername string = 'azureuser'\n\n@secure()\nparam adminPublicKey string\n\nresource nic 'Microsoft.Network\u002FnetworkInterfaces@2023-05-01' = {\n  name: '${vmName}-nic'\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          privateIPAllocationMethod: 'Dynamic'\n          subnet: {\n            id: subnetId\n          }\n        }\n      }\n    ]\n  }\n}\n\nresource vm 'Microsoft.Compute\u002FvirtualMachines@2023-07-01' = {\n  name: vmName\n  location: location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    hardwareProfile: {\n      vmSize: 'Standard_B2s'\n    }\n    osProfile: {\n      computerName: vmName\n      adminUsername: adminUsername\n      linuxConfiguration: {\n        disablePasswordAuthentication: true\n        ssh: {\n          publicKeys: [\n            {\n              path: '\u002Fhome\u002F${adminUsername}\u002F.ssh\u002Fauthorized_keys'\n              keyData: adminPublicKey\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: 'Canonical'\n        offer: '0001-com-ubuntu-server-jammy'\n        sku: '22_04-lts-gen2'\n        version: 'latest'\n      }\n      osDisk: {\n        createOption: 'FromImage'\n        managedDisk: {\n          storageAccountType: 'Premium_LRS'\n        }\n      }\n    }\n    networkProfile: {\n      networkInterfaces: [\n        {\n          id: nic.id\n        }\n      ]\n    }\n    diagnosticsProfile: {\n      bootDiagnostics: {\n        enabled: true\n      }\n    }\n  }\n}\n\noutput vmPrincipalId string = vm.identity.principalId\noutput vmId string = vm.id\n```\n\n## Bicep Modules\n\n### Module Definition\n\n```bicep\n\u002F\u002F modules\u002Fstorage.bicep\n@description('Storage account name (3-24 chars, lowercase alphanumeric)')\nparam storageAccountName string\n\nparam location string = resourceGroup().location\nparam sku string = 'Standard_LRS'\n\n@allowed(['Hot', 'Cool'])\nparam accessTier string = 'Hot'\n\nresource storageAccount 'Microsoft.Storage\u002FstorageAccounts@2023-01-01' = {\n  name: storageAccountName\n  location: location\n  sku: {\n    name: sku\n  }\n  kind: 'StorageV2'\n  properties: {\n    accessTier: accessTier\n    supportsHttpsTrafficOnly: true\n    minimumTlsVersion: 'TLS1_2'\n    allowBlobPublicAccess: false\n    networkAcls: {\n      defaultAction: 'Deny'\n      bypass: 'AzureServices'\n    }\n  }\n}\n\noutput storageAccountId string = storageAccount.id\noutput primaryBlobEndpoint string = storageAccount.properties.primaryEndpoints.blob\n```\n\n### Consuming Modules\n\n```bicep\n\u002F\u002F main.bicep\nparam location string = resourceGroup().location\nparam environment string = 'prod'\n\nmodule storage 'modules\u002Fstorage.bicep' = {\n  name: 'storage-deployment'\n  params: {\n    storageAccountName: 'myapp${environment}sa'\n    location: location\n    sku: environment == 'prod' ? 'Standard_GRS' : 'Standard_LRS'\n  }\n}\n\nmodule vnet 'modules\u002Fnetwork.bicep' = {\n  name: 'vnet-deployment'\n  params: {\n    location: location\n    environment: environment\n  }\n}\n\n\u002F\u002F Reference module outputs\noutput storageBlobEndpoint string = storage.outputs.primaryBlobEndpoint\n```\n\n## ARM JSON Template Structure\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fschema.management.azure.com\u002Fschemas\u002F2019-04-01\u002FdeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the storage account\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\"\n    }\n  },\n  \"variables\": {\n    \"storageSku\": \"Standard_LRS\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage\u002FstorageAccounts\",\n      \"apiVersion\": \"2023-01-01\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[variables('storageSku')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true,\n        \"minimumTlsVersion\": \"TLS1_2\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Storage\u002FstorageAccounts', parameters('storageAccountName'))]\"\n    }\n  }\n}\n```\n\n## Deployment Commands\n\n```bash\n# Validate a Bicep template before deployment\naz deployment group validate \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp'\n\n# Preview changes with What-If\naz deployment group what-if \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp'\n\n# Deploy Bicep to resource group\naz deployment group create \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp' \\\n  --name \"deploy-$(date +%Y%m%d-%H%M%S)\"\n\n# Deploy ARM JSON with parameter file\naz deployment group create \\\n  --resource-group mygroup \\\n  --template-file template.json \\\n  --parameters @parameters.prod.json\n\n# Subscription-level deployment (e.g., resource groups, policies)\naz deployment sub create \\\n  --location eastus \\\n  --template-file subscription-level.bicep \\\n  --parameters @params.json\n\n# Management group deployment\naz deployment mg create \\\n  --management-group-id my-mg \\\n  --location eastus \\\n  --template-file mg-policy.bicep\n\n# Export resource group to ARM JSON\naz group export --name mygroup --output json > exported-template.json\n\n# Decompile ARM JSON to Bicep\naz bicep decompile --file exported-template.json\n\n# Build Bicep to ARM JSON (for inspection)\naz bicep build --file main.bicep --outfile main.json\n\n# List deployments and their status\naz deployment group list \\\n  --resource-group mygroup \\\n  --output table\n\n# Delete a failed deployment\naz deployment group delete \\\n  --resource-group mygroup \\\n  --name my-failed-deployment\n```\n\n## Parameter Files\n\n```json\n\u002F\u002F parameters.prod.json\n{\n  \"$schema\": \"https:\u002F\u002Fschema.management.azure.com\u002Fschemas\u002F2019-04-01\u002FdeploymentParameters.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"environment\": { \"value\": \"prod\" },\n    \"baseName\": { \"value\": \"myapp\" },\n    \"adminPublicKey\": {\n      \"reference\": {\n        \"keyVault\": {\n          \"id\": \"\u002Fsubscriptions\u002F{sub-id}\u002FresourceGroups\u002F{rg}\u002Fproviders\u002FMicrosoft.KeyVault\u002Fvaults\u002F{vault}\"\n        },\n        \"secretName\": \"ssh-public-key\"\n      }\n    }\n  }\n}\n```\n\n\n## Contents\n\n- [Linked and Nested Templates](references\u002Fdetails.md)\n- [Troubleshooting](references\u002Fdetails.md)\n- [Related Skills](references\u002Fdetails.md)\n\n## When to Use\n\n- You need Azure-native Infrastructure as Code without third-party tooling.\n- Your organization standardizes on Azure and wants tight portal integration.\n- You need What-If analysis before deploying changes.\n- You are migrating existing ARM JSON templates to Bicep for maintainability.\n- You need deployment scopes at resource group, subscription, management group, or tenant level.\n\n## Limitations\n\n- Infrastructure commands can disrupt services: confirm target host\u002Fscope and have backups\u002Fsnapshots before mutating state.\n- Docs-only import: upstream scripts and templates not bundled.\n\n","# ARM Templates & Bicep\n\nDeploy Azure infrastructure with ARM templates and Bicep. Bicep is the recommended domain-specific language that compiles to ARM JSON, offering cleaner syntax, modules, and first-class tooling support.\n\nTemplates are separate illustrative fragments, not a complete resource graph. Module paths and parameter files named here are not bundled. Pin reviewed Bicep\u002Fprovider API\u002Fimage versions, verify resource IDs\u002Fsubscription\u002Fregion, and inspect What-If and replacement\u002Fdeletion impact before authorized deployment. Validation\u002Fbuild success does not prove deployability, networking isolation, quotas or safe changes. Deleting a deployment record does not roll back deployed resources.\n\n## Prerequisites\n\n```bash\n# Install Azure CLI\n# Prerequisite: organization-approved Azure CLI installed from a verified signed package.\naz version\n\n# Install Bicep CLI (bundled with Azure CLI 2.20+)\naz bicep install\naz bicep upgrade\n\n# Verify installation\naz bicep version\n\n# Login and set subscription\naz login\naz account set --subscription \"my-subscription-id\"\n```\n\n## Bicep Fundamentals\n\n### Resource Group Deployment with Virtual Network\n\n```bicep\n\u002F\u002F main.bicep\n@description('Azure region for all resources')\nparam location string = resourceGroup().location\n\n@description('Environment name used for resource naming')\n@allowed(['dev', 'staging', 'prod'])\nparam environment string = 'dev'\n\n@description('Base name for all resources')\nparam baseName string\n\nvar vnetName = '${baseName}-${environment}-vnet'\nvar nsgName = '${baseName}-${environment}-nsg'\n\nresource nsg 'Microsoft.Network\u002FnetworkSecurityGroups@2023-05-01' = {\n  name: nsgName\n  location: location\n  properties: {\n    securityRules: [\n      {\n        name: 'AllowHTTPS'\n        properties: {\n          priority: 100\n          direction: 'Inbound'\n          access: 'Allow'\n          protocol: 'Tcp'\n          sourcePortRange: '*'\n          destinationPortRange: '443'\n          sourceAddressPrefix: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n      {\n        name: 'DenyAllInbound'\n        properties: {\n          priority: 4096\n          direction: 'Inbound'\n          access: 'Deny'\n          protocol: '*'\n          sourcePortRange: '*'\n          destinationPortRange: '*'\n          sourceAddressPrefix: '*'\n          destinationAddressPrefix: '*'\n        }\n      }\n    ]\n  }\n}\n\nresource vnet 'Microsoft.Network\u002FvirtualNetworks@2023-05-01' = {\n  name: vnetName\n  location: location\n  properties: {\n    addressSpace: {\n      addressPrefixes: [\n        '10.0.0.0\u002F16'\n      ]\n    }\n    subnets: [\n      {\n        name: 'web-subnet'\n        properties: {\n          addressPrefix: '10.0.1.0\u002F24'\n          networkSecurityGroup: {\n            id: nsg.id\n          }\n        }\n      }\n      {\n        name: 'app-subnet'\n        properties: {\n          addressPrefix: '10.0.2.0\u002F24'\n        }\n      }\n      {\n        name: 'data-subnet'\n        properties: {\n          addressPrefix: '10.0.3.0\u002F24'\n          privateEndpointNetworkPolicies: 'Enabled'\n        }\n      }\n    ]\n  }\n}\n\noutput vnetId string = vnet.id\noutput webSubnetId string = vnet.properties.subnets[0].id\noutput appSubnetId string = vnet.properties.subnets[1].id\n```\n\n### VM Deployment with Managed Identity\n\n```bicep\n\u002F\u002F vm.bicep\nparam location string = resourceGroup().location\nparam vmName string\nparam subnetId string\nparam adminUsername string = 'azureuser'\n\n@secure()\nparam adminPublicKey string\n\nresource nic 'Microsoft.Network\u002FnetworkInterfaces@2023-05-01' = {\n  name: '${vmName}-nic'\n  location: location\n  properties: {\n    ipConfigurations: [\n      {\n        name: 'ipconfig1'\n        properties: {\n          privateIPAllocationMethod: 'Dynamic'\n          subnet: {\n            id: subnetId\n          }\n        }\n      }\n    ]\n  }\n}\n\nresource vm 'Microsoft.Compute\u002FvirtualMachines@2023-07-01' = {\n  name: vmName\n  location: location\n  identity: {\n    type: 'SystemAssigned'\n  }\n  properties: {\n    hardwareProfile: {\n      vmSize: 'Standard_B2s'\n    }\n    osProfile: {\n      computerName: vmName\n      adminUsername: adminUsername\n      linuxConfiguration: {\n        disablePasswordAuthentication: true\n        ssh: {\n          publicKeys: [\n            {\n              path: '\u002Fhome\u002F${adminUsername}\u002F.ssh\u002Fauthorized_keys'\n              keyData: adminPublicKey\n            }\n          ]\n        }\n      }\n    }\n    storageProfile: {\n      imageReference: {\n        publisher: 'Canonical'\n        offer: '0001-com-ubuntu-server-jammy'\n        sku: '22_04-lts-gen2'\n        version: 'latest'\n      }\n      osDisk: {\n        createOption: 'FromImage'\n        managedDisk: {\n          storageAccountType: 'Premium_LRS'\n        }\n      }\n    }\n    networkProfile: {\n      networkInterfaces: [\n        {\n          id: nic.id\n        }\n      ]\n    }\n    diagnosticsProfile: {\n      bootDiagnostics: {\n        enabled: true\n      }\n    }\n  }\n}\n\noutput vmPrincipalId string = vm.identity.principalId\noutput vmId string = vm.id\n```\n\n## Bicep Modules\n\n### Module Definition\n\n```bicep\n\u002F\u002F modules\u002Fstorage.bicep\n@description('Storage account name (3-24 chars, lowercase alphanumeric)')\nparam storageAccountName string\n\nparam location string = resourceGroup().location\nparam sku string = 'Standard_LRS'\n\n@allowed(['Hot', 'Cool'])\nparam accessTier string = 'Hot'\n\nresource storageAccount 'Microsoft.Storage\u002FstorageAccounts@2023-01-01' = {\n  name: storageAccountName\n  location: location\n  sku: {\n    name: sku\n  }\n  kind: 'StorageV2'\n  properties: {\n    accessTier: accessTier\n    supportsHttpsTrafficOnly: true\n    minimumTlsVersion: 'TLS1_2'\n    allowBlobPublicAccess: false\n    networkAcls: {\n      defaultAction: 'Deny'\n      bypass: 'AzureServices'\n    }\n  }\n}\n\noutput storageAccountId string = storageAccount.id\noutput primaryBlobEndpoint string = storageAccount.properties.primaryEndpoints.blob\n```\n\n### Consuming Modules\n\n```bicep\n\u002F\u002F main.bicep\nparam location string = resourceGroup().location\nparam environment string = 'prod'\n\nmodule storage 'modules\u002Fstorage.bicep' = {\n  name: 'storage-deployment'\n  params: {\n    storageAccountName: 'myapp${environment}sa'\n    location: location\n    sku: environment == 'prod' ? 'Standard_GRS' : 'Standard_LRS'\n  }\n}\n\nmodule vnet 'modules\u002Fnetwork.bicep' = {\n  name: 'vnet-deployment'\n  params: {\n    location: location\n    environment: environment\n  }\n}\n\n\u002F\u002F Reference module outputs\noutput storageBlobEndpoint string = storage.outputs.primaryBlobEndpoint\n```\n\n## ARM JSON Template Structure\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fschema.management.azure.com\u002Fschemas\u002F2019-04-01\u002FdeploymentTemplate.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"storageAccountName\": {\n      \"type\": \"string\",\n      \"metadata\": {\n        \"description\": \"Name of the storage account\"\n      }\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"[resourceGroup().location]\"\n    }\n  },\n  \"variables\": {\n    \"storageSku\": \"Standard_LRS\"\n  },\n  \"resources\": [\n    {\n      \"type\": \"Microsoft.Storage\u002FstorageAccounts\",\n      \"apiVersion\": \"2023-01-01\",\n      \"name\": \"[parameters('storageAccountName')]\",\n      \"location\": \"[parameters('location')]\",\n      \"sku\": {\n        \"name\": \"[variables('storageSku')]\"\n      },\n      \"kind\": \"StorageV2\",\n      \"properties\": {\n        \"supportsHttpsTrafficOnly\": true,\n        \"minimumTlsVersion\": \"TLS1_2\"\n      }\n    }\n  ],\n  \"outputs\": {\n    \"storageId\": {\n      \"type\": \"string\",\n      \"value\": \"[resourceId('Microsoft.Storage\u002FstorageAccounts', parameters('storageAccountName'))]\"\n    }\n  }\n}\n```\n\n## Deployment Commands\n\n```bash\n# Validate a Bicep template before deployment\naz deployment group validate \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp'\n\n# Preview changes with What-If\naz deployment group what-if \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp'\n\n# Deploy Bicep to resource group\naz deployment group create \\\n  --resource-group mygroup \\\n  --template-file main.bicep \\\n  --parameters environment='prod' baseName='myapp' \\\n  --name \"deploy-$(date +%Y%m%d-%H%M%S)\"\n\n# Deploy ARM JSON with parameter file\naz deployment group create \\\n  --resource-group mygroup \\\n  --template-file template.json \\\n  --parameters @parameters.prod.json\n\n# Subscription-level deployment (e.g., resource groups, policies)\naz deployment sub create \\\n  --location eastus \\\n  --template-file subscription-level.bicep \\\n  --parameters @params.json\n\n# Management group deployment\naz deployment mg create \\\n  --management-group-id my-mg \\\n  --location eastus \\\n  --template-file mg-policy.bicep\n\n# Export resource group to ARM JSON\naz group export --name mygroup --output json > exported-template.json\n\n# Decompile ARM JSON to Bicep\naz bicep decompile --file exported-template.json\n\n# Build Bicep to ARM JSON (for inspection)\naz bicep build --file main.bicep --outfile main.json\n\n# List deployments and their status\naz deployment group list \\\n  --resource-group mygroup \\\n  --output table\n\n# Delete a failed deployment\naz deployment group delete \\\n  --resource-group mygroup \\\n  --name my-failed-deployment\n```\n\n## Parameter Files\n\n```json\n\u002F\u002F parameters.prod.json\n{\n  \"$schema\": \"https:\u002F\u002Fschema.management.azure.com\u002Fschemas\u002F2019-04-01\u002FdeploymentParameters.json#\",\n  \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n    \"environment\": { \"value\": \"prod\" },\n    \"baseName\": { \"value\": \"myapp\" },\n    \"adminPublicKey\": {\n      \"reference\": {\n        \"keyVault\": {\n          \"id\": \"\u002Fsubscriptions\u002F{sub-id}\u002FresourceGroups\u002F{rg}\u002Fproviders\u002FMicrosoft.KeyVault\u002Fvaults\u002F{vault}\"\n        },\n        \"secretName\": \"ssh-public-key\"\n      }\n    }\n  }\n}\n```\n\n\n## Contents\n\n- [Linked and Nested Templates](references\u002Fdetails.md)\n- [Troubleshooting](references\u002Fdetails.md)\n- [Related Skills](references\u002Fdetails.md)\n\n## When to Use\n\n- You need Azure-native Infrastructure as Code without third-party tooling.\n- Your organization standardizes on Azure and wants tight portal integration.\n- You need What-If analysis before deploying changes.\n- You are migrating existing ARM JSON templates to Bicep for maintainability.\n- You need deployment scopes at resource group, subscription, management group, or tenant level.\n\n## Limitations\n\n- Infrastructure commands can disrupt services: confirm target host\u002Fscope and have backups\u002Fsnapshots before mutating state.\n- Docs-only import: upstream scripts and templates not bundled.\n\n",{"name":5,"risk":29,"source":52,"license":14,"category":53,"metadata":54,"date_added":57,"description":7,"source_repo":58,"source_type":33,"compatibility":59,"license_source":60},"https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills","devops",{"author":55,"version":56},"devops-skills","1.0","2026-09-20","BagelHole\u002FDevOps-Security-Agent-Skills","Requires the relevant OS\u002Fplatform tooling and privileged access where noted. Docs-only; helper scripts and templates not bundled.","https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-arm-templates",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-13 14:20:47",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add boisenoise\u002Fskills-collections --skill arm-templates",{"tool":73,"command":74},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill arm-templates",{"tool":76,"command":77},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill arm-templates","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-arm-templates\u002FSKILL.md",true,[81],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fdetails.md","REFERENCE","参考文档",2440,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-arm-templates\u002Freferences\u002Fdetails.md",[88,112,137,163,182,204],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":93,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":47},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[97,41,98,99,100,101,102,103,104,105,106,38,107,108,31,29,109,110,111,22,21],"web","web access","official","development","browser","search","data","Tools","read","fetch","youtube","free tools","free","cover","normal",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":116,"sourceHtmlUrl":117,"categories":118,"keywords":124,"publishedAt":47},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[114,125,126,127,99,100,43,104,128,129,130,131,40,132,133,29,134,23,135,136,21],"MCP","cli","github","Budget","credentials","team","catalog","call","discover","external tools","scoped","blob",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":141,"sourceHtmlUrl":142,"categories":143,"keywords":149,"publishedAt":47},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[139,127,99,43,150,151,152,153,154,155,29,156,157,158,23,159,160,161,162,136,114,21],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":167,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":47},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[171,172,173,127,99,43,174,175,150,176,128,177,178,179,154,29,180,181,136,114,21],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":186,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":47},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[190,191,127,192,99,44,43,193,194,195,196,197,29,198,199,200,201,202,203,136],"make","make ugc","research","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":208,"sourceHtmlUrl":209,"categories":210,"keywords":211,"publishedAt":47},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[212,213,214,127,99,43,215,216,153,217,218,29,219,220,221,222,223,224,225,136],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]