Azure Enterprise Infra Planner
MicrosoftOfficialCreated by Microsoft
- Skill
- Workflow
- Cloud and DevOps
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill guides users through a 7-phase pipeline to design and deploy Azure infrastructure. It processes workload descriptions to generate Bicep or Terraform code, supporting both greenfield deployments and additive updates to existing environments. The process includes research, planning, user approval, and automated validation using security and syntax checks before deployment.
What it does
- Extracts insights from workload descriptions to inform infrastructure planning.
- Researches Azure best practices and service-specific documentation.
- Generates infrastructure plans and corresponding Bicep or Terraform code.
- Validates generated IaC using syntax checks and security scanning tools.
- Supports additive deployments for existing environments without modifying referenced resources.
- Manages multi-resource topologies including networking, identity, and compliance configurations.
When to use it
- When planning Azure infrastructure from a workload or architecture description.
- When designing hub-spoke networks, landing zones, or multi-region topologies.
- When setting up networking components like VNets, firewalls, and private endpoints.
- When generating subscription-scope or multi-resource-group infrastructure code.
Advantages
- Follows a structured, gated pipeline to ensure plan approval and code validation.
- Integrates security scanning and syntax validation into the generation workflow.
- Provides support for referencing existing resources to avoid accidental recreation.
- Utilizes specific Azure schema data to ensure accurate resource definitions.
Usage examples
- “Plan Azure infrastructure for a hub-spoke network with firewalls.”
- The agent initiates the 7-phase pipeline, researching networking best practices and generating the corresponding IaC for the requested topology.
- “Architect an Azure landing zone.”
- The agent guides the user through requirements extraction and resource planning, resulting in a structured infrastructure plan and Bicep or Terraform files.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/azure-enterprise-infra-planner/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-enterprise-infra-planner.zip -d .agents/skills
Documentation by Microsoft
Azure Enterprise Infra Planner
When to Use This Skill
Activate this skill when user wants to:
Plan enterprise Azure infrastructure from a workload or architecture description
Architect a landing zone, hub-spoke network, or multi-region topology
Design networking infrastructure: VNets, subnets, firewalls, private endpoints, VPN gateways
Plan identity, RBAC, and compliance-driven infrastructure
Generate Bicep or Terraform for subscription-scope or multi-resource-group deployments
Plan disaster recovery, failover, or cross-region high-availability topologies
Quick Reference
| Property | Details |
|---|---|
| MCP tools | insights_get, get_azure_bestpractices_get, wellarchitectedframework_serviceguide_get, microsoft_docs_fetch, microsoft_docs_search, bicepschema_get |
| CLI commands | az deployment group create, az bicep build, az resource list, terraform init, terraform plan, terraform validate, terraform apply, checkov |
| Output schema | schema.md |
| Key references | workflow.md, waf-checklist.md, resources/, constraints/ |
Workflow (Start Here)
Follow the step-by-step instructions in workflow.md to execute the 7 phases of infrastructure planning and provisioning.
Architecture
The skill runs a 7-phase, gated pipeline. Input is triaged into one of two flows:
Greenfield — only new requirements; run the phases straight through.
Referenced (brownfield) — the user supplies something that already exists (a live resource / resource group / subscription, IaC or an infra plan, or a requirements doc). The same phases run, plus referenced-workload.md: existing resources are inventoried and referenced (never recreated), the new workload is wired into them, and Phase 7 deploys additively (incremental only — never modifying or destroying the referenced resources).
Every phase advances only after its gate passes. Phase 5 requires explicit user approval; Phase 6 is a
hardened, self-verifying gate — the generated IaC must be secure-by-default, pass local validation
(az bicep build / terraform validate) with zero errors, pass a checkov security scan with no
unresolved high/critical findings, and the skill must show the command output and emit a completion
self-check before advancing; Phase 7 requires an explicit, risk-acknowledged deploy confirmation.
flowchart TD
IN([Input]) --> TRIAGE{Existing infra<br/>referenced?}
TRIAGE -- "No (greenfield)" --> P1
TRIAGE -- "Yes (referenced)" --> RW[/referenced-workload.md:<br/>inventory + assign roles<br/>reference, never recreate/]
RW --> P1
subgraph PIPE [7-phase gated pipeline]
direction TB
P1[Phase 1 · Extract insights] --> P2[Phase 2 · Research best practices]
P2 --> P3[Phase 3 · Research resources]
P3 --> P4[Phase 4 · Generate plan]
P4 --> P5{Phase 5 · Verify<br/>user approves?}
P5 -- "no" --> P4
P5 -- "approved" --> P6[Phase 6 · Generate IaC]
P6 --> VAL{Validate<br/>az bicep build /<br/>terraform validate}
VAL -- "errors" --> P6
VAL -- "clean" --> P7{Phase 7 · Deploy<br/>risk-ack confirm?}
end
P7 -- "greenfield" --> DEP[az deployment / terraform apply]
P7 -- "referenced" --> DEPADD[Additive deploy · incremental only<br/>what-if preview · no destroy of<br/>referenced resources]
DEP --> OUT([Deployed])
DEPADD --> OUT
classDef gate fill:#fff3cd,stroke:#d39e00,color:#000;
classDef ref fill:#e2f0d9,stroke:#548235,color:#000;
class P5,VAL,P7,TRIAGE gate;
class RW,DEPADD ref;Artifacts (written under <project-root>/): .azure/insights.json (Phase 1),
.azure/infrastructure-plan.json (Phase 4, status draft→approved→deployed), and
infra/main.bicep + infra/modules/* or infra/main.tf + infra/modules/** (Phase 6).
MCP Tools
| Tool | Purpose |
|---|---|
insights_get | Retrieve insights about the user's existing Azure environment to guide planning decisions |
get_azure_bestpractices_get | Azure best practices for code generation, operations, and deployment |
wellarchitectedframework_serviceguide_get | WAF service guide for a specific Azure service |
microsoft_docs_search | Search Microsoft Learn for relevant documentation chunks |
microsoft_docs_fetch | Fetch full content of a Microsoft Learn page by URL |
bicepschema_get | Bicep schema definition for any Azure resource type (latest API version) |
Error Handling
| Error | Cause | Fix |
|---|---|---|
| MCP tool error or not available | Tool call timeout, connection error, or tool doesn't exist | Retry once; fall back to reference files and notify user if unresolved |
| Plan approval missing | meta.status is not approved | Stop and prompt user for approval before IaC generation or deployment |
| IaC validation failure | az bicep build or terraform validate returns errors | Fix the generated code and re-validate; notify user if unresolved |
| Pairing constraint violation | Incompatible SKU or resource combination | Fix in plan before proceeding to IaC generation |
| Infra plan or IaC files not found | Files written to wrong location or not created | Verify files exist at <project-root>/.azure/ and <project-root>/infra/; if missing, re-create the files by following workflow.md exactly |
Files
- ATTRIBUTION.mdAdded by AutoGineer1022 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md6.2 KiB
- references/bicep-generation.md5.1 KiB
- references/constraints/README.md1.2 KiB
- references/constraints/ai-ml.md3.2 KiB
- references/constraints/compute-apps.md7.8 KiB
- references/constraints/compute-infra.md4.5 KiB
- references/constraints/data-analytics.md6.3 KiB
- references/constraints/data-relational.md4.9 KiB
- references/constraints/messaging.md2.5 KiB
- references/constraints/monitoring.md1.7 KiB
- references/constraints/networking-connectivity.md6.1 KiB
- references/constraints/networking-core.md7.0 KiB
- references/constraints/networking-traffic.md4.6 KiB
- references/constraints/security.md2.4 KiB
- references/deployment.md3.7 KiB
- references/pairing-checks.md3.7 KiB
- references/phases/1-extract-insights.md2.6 KiB
- references/phases/2-research-best-practices.md2.8 KiB
- references/phases/3-research-resources.md3.3 KiB
- references/phases/4-generate-plan.md792 B
- references/phases/5-verify.md814 B
- references/phases/6-generate-iac.md2.5 KiB
- references/phases/7-deploy.md1.3 KiB
- references/referenced-workload.md7.3 KiB
- references/resources/README.md1.6 KiB
- references/resources/ai-ml.md2.1 KiB
- references/resources/compute-apps.md4.0 KiB
- references/resources/compute-infra.md2.8 KiB
- references/resources/data-analytics.md3.0 KiB
- references/resources/data-relational.md2.6 KiB
- references/resources/messaging.md2.0 KiB
- references/resources/monitoring.md1.5 KiB
- references/resources/networking-connectivity.md3.6 KiB
- references/resources/networking-core.md4.3 KiB
- references/resources/networking-traffic.md2.6 KiB
- references/resources/security.md1.5 KiB
- references/schema.md3.8 KiB
- references/terraform-generation.md4.4 KiB
- references/verification.md2.6 KiB
- references/waf-checklist.md1.9 KiB
- references/workflow.md4.9 KiB
references/constraints/networking-connectivity.md
Networking (Connectivity) Pairing Constraints
Azure Bastion
| Paired With | Constraint |
|---|---|
| VNet | Requires a subnet named exactly AzureBastionSubnet with minimum /26 prefix. |
| Developer SKU | Does NOT require AzureBastionSubnet or public IP. Deploys as shared infrastructure. Only connects to VMs in the same VNet. |
| Public IP | Requires Standard SKU public IP with Static allocation. |
| NSG | NSG on AzureBastionSubnet requires mandatory inbound (HTTPS 443 from Internet, GatewayManager 443) and outbound rules (see Bastion NSG docs). |
| VMs | Target VMs must be in the same VNet as Bastion (or peered VNets with Standard/Premium SKU). |
Azure Firewall
| Paired With | Constraint |
|---|---|
| VNet | Requires a subnet named exactly AzureFirewallSubnet with minimum /26 prefix. |
| Basic Tier | Additionally requires AzureFirewallManagementSubnet with /26 minimum and its own public IP. |
| Public IP | Requires Standard SKU public IP with Static allocation. |
| Firewall Policy | Cannot use both firewallPolicy.id and classic rule collections simultaneously. Policy tier must match or exceed firewall tier. |
| Zones | In zone-redundant mode, all associated public IPs must also be zone-redundant (Standard SKU). |
| Virtual WAN | AZFW_Hub SKU name must reference virtualHub.id instead of ipConfigurations. |
VPN Gateway
| Paired With | Constraint |
|---|---|
| VNet | Requires a subnet named exactly GatewaySubnet with minimum /27 prefix. Use /26+ for 16 ExpressRoute circuits or for ExpressRoute/VPN coexistence. |
| Public IP | Basic VPN SKU requires Basic public IP. VpnGw1+ requires Standard public IP. |
| Active-Active | Requires 2 public IPs and 2 IP configurations. Only supported with VpnGw1+. |
| Zone-Redundant | Must use AZ SKU variant (e.g., VpnGw1AZ). Requires Standard SKU public IPs. AZ SKU cannot be downgraded to non-AZ (one-way migration only). |
| ExpressRoute | Can coexist with VPN gateway on the same GatewaySubnet (requires /27 or larger). Not supported with Basic SKU. Route-based VPN required. |
| PolicyBased | Limited to 1 S2S tunnel, no P2S, no VNet-to-VNet. Use RouteBased for most scenarios. |
| Basic SKU | Basic VPN Gateway does not support BGP, IPv6, RADIUS authentication, IKEv2 P2S, or ExpressRoute coexistence. Max 10 S2S tunnels. |
| GatewaySubnet UDR | Do not apply UDR with 0.0.0.0/0 next hop on GatewaySubnet. ExpressRoute gateways require management controller access — this route breaks it. |
| GatewaySubnet BGP | BGP route propagation must remain enabled on GatewaySubnet. Disabling causes the gateway to become non-functional. |
| DNS Private Resolver | DNS Private Resolver in a VNet with an ExpressRoute gateway and wildcard forwarding rules can cause management connectivity problems. |
DNS Zone
| Paired With | Constraint |
|---|---|
| Domain Registrar | NS records from properties.nameServers must be configured at your domain registrar to delegate the domain to Azure DNS. |
| App Service | Create a CNAME record pointing to {app-name}.azurewebsites.net for custom domains. Add a TXT verification record. |
| Front Door | Create a CNAME record pointing to the Front Door endpoint. Add a _dnsauth TXT record for domain validation. |
| Application Gateway | Create an A record pointing to the Application Gateway public IP, or a CNAME to the public IP DNS name. |
| Traffic Manager | Create a CNAME record pointing to the Traffic Manager profile {name}.trafficmanager.net. |
| Child Zones | Delegate subdomains by creating NS records in the parent zone pointing to the child zone's Azure name servers. |
Private DNS Zone
| Paired With | Constraint |
|---|---|
| Virtual Network | Must create a virtualNetworkLinks child resource to link the DNS zone to each VNet that needs resolution. |
| Private Endpoint | Use a privateDnsZoneGroups child on the Private Endpoint to auto-register A records, or manually create A record sets. One DNS record per DNS name — multiple private endpoints in different regions need separate Private DNS Zones. |
| VNet Link (auto-registration) | Only one Private DNS Zone with registrationEnabled: true can be linked per VNet. Auto-registration creates DNS records for VMs in the VNet. |
| Hub-Spoke VNet | Link the Private DNS Zone to the hub VNet. Spoke VNets resolve via hub DNS forwarder or VNet link. |
| PostgreSQL Flexible Server | For Private Endpoint access, zone name is privatelink.postgres.database.azure.com. For VNet-integrated (private access) servers, the zone name is {name}.postgres.database.azure.com (not privatelink.*). Referenced via properties.network.privateDnsZoneArmResourceId. |
| MySQL Flexible Server | For Private Endpoint access, zone name is privatelink.mysql.database.azure.com. For VNet-integrated (private access) servers, the zone name is {name}.mysql.database.azure.com (not privatelink.*). Referenced via properties.network.privateDnsZoneResourceId. |
Private Endpoint
| Paired With | Constraint |
|---|---|
| Subnet | The subnet must not have NSG rules that block private endpoint traffic. Subnet must have privateEndpointNetworkPolicies set to Disabled (default) for network policies to be bypassed. |
| Private DNS Zone | Create a Microsoft.Network/privateDnsZones/virtualNetworkLinks to link the DNS zone to the VNet. Create an A record or use a private DNS zone group to auto-register DNS. |
| Private DNS Zone Group | Use privateEndpoint/privateDnsZoneGroups child resource to auto-register DNS records in the Private DNS Zone. |
| Key Vault | Group ID: vault. DNS zone: privatelink.vaultcore.azure.net. |
| Storage Account | Group IDs: blob, file, queue, table, web, dfs. Each requires its own PE and DNS zone. |
| SQL Server | Group ID: sqlServer. DNS zone: privatelink.database.windows.net. |
| Container Registry | Group ID: registry. DNS zone: privatelink.azurecr.io. |
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-skills/skills/azure-enterprise-infra-planner · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from .github/plugins/azure-skills/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- microsoft/azure-skills
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-enterprise-infra-planner.zip