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://mp-staging.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/compute-apps.md
Compute (PaaS) Pairing Constraints
App Service
| Paired With | Constraint |
|---|---|
| App Service Plan | Must be in the same region. Linux apps need Linux plan (reserved: true). Windows apps need Windows plan. |
| Deployment Slots | Only available on Standard or higher plan tiers. Free and Basic do not support slots. |
| VNet Integration | Requires Basic or higher plan tier. Subnet must be delegated to Microsoft.Web/serverFarms. VNet integration subnet must be a different subnet than any Private Endpoint subnet. |
| Private Endpoints | Requires Basic or higher plan tier. Not available on Free or Shared tiers. |
| Custom Domain | Requires Shared (D1) or higher tier for custom domains. Free tier only supports *.azurewebsites.net. Managed certificates require Basic or higher. |
| Application Insights | Set APPLICATIONINSIGHTS_CONNECTION_STRING in app settings. |
| Key Vault References | Use @Microsoft.KeyVault(SecretUri=...) in app settings. Requires managed identity with Key Vault access. |
| Managed Identity | Enable identity.type: 'SystemAssigned' or 'UserAssigned' for passwordless auth to other Azure resources. |
App Service Plan
| Paired With | Constraint |
|---|---|
| Function App | Consumption (Y1) and Flex (FC1) plans cannot be shared with web apps. EP plans can host both functions and web apps. |
| Linux Apps | Linux plan (reserved: true) cannot host Windows apps and vice versa. |
| Zone Redundancy | Requires Premium v3 (P1v3+) or Isolated v2. Minimum 3 instances. |
| Deployment Slots | Slots share plan capacity. Standard+ tier required. Slots are not available on Free/Basic. |
| Auto-scale | Not available on Free/Shared/Basic. Standard+ required for manual scale, auto-scale. |
| VNet Integration | Requires Basic or higher. Subnet must be delegated to Microsoft.Web/serverFarms. Minimum subnet size /28 (or /26 for multi-plan subnet join). VNet integration subnet must be a different subnet than any Private Endpoint subnet. |
| Private Endpoints | Requires Basic tier or higher. Not available on Free or Shared tiers. |
| Isolated Compute | Dedicated single-tenant compute requires IsolatedV2 (I1v2+) tier. |
| Free/Shared Tiers | Free (F1) and Shared (D1) use shared compute with no VNet integration, no private endpoints, no deployment slots, no Always On, and no auto-scale. Managed Identity is available but limited. |
Container App
| Paired With | Constraint |
|---|---|
| Container Apps Environment | Must reference environmentId. Environment must exist in the same region. |
| VNet | VNet integration is configured on the Environment, not the individual app. Environment needs a dedicated subnet with minimum /23 prefix for Consumption-only environments or /27 for workload profiles environments. |
| Container Registry | Requires registry credentials in configuration.registries[] or managed identity-based pull. |
| Dapr | Enable via configuration.dapr.enabled: true. Dapr components are configured on the Environment. |
| CPU/Memory | CPU and memory must follow valid combinations: 0.25 cores/0.5Gi, 0.5/1Gi, 1/2Gi, 2/4Gi, 4/8Gi (consumption). |
| Scale Rules | KEDA-based scale rules reference secrets by name — secrets must be defined in configuration.secrets[]. |
Container Apps Environment
| Paired With | Constraint |
|---|---|
| Container App | Container Apps reference the environment via properties.environmentId. Apps and environment must be in the same region. |
| Log Analytics Workspace | Provide customerId and sharedKey in appLogsConfiguration. Workspace must exist before the environment. |
| VNet / Subnet | Subnet must have a minimum /23 prefix for Consumption-only environments or /27 for workload profiles environments. Subnet must be dedicated to the Container Apps Environment (no other resources). Workload Profiles: subnet must be delegated to Microsoft.App/environments. Consumption-only: subnet MUST NOT be delegated to any service. |
| Zone Redundancy | Requires VNet integration. Zone-redundant environments need a /23 subnet in a region with availability zones. |
| Internal Environment | When internal: true, no public endpoint is created. Requires custom DNS or Private DNS Zone and a VNet with connectivity to clients. |
| Workload Profiles | At least one Consumption profile must be defined when using workload profiles. Dedicated profiles require minimumCount and maximumCount. |
| Workload Profiles vs Consumption-only | UDR support, NAT Gateway egress, private endpoints, and remote gateway peering are only available with Workload Profiles environments — not Consumption-only. |
| Network Immutability | Network type (Workload Profiles vs Consumption-only) is immutable after creation. Cannot change between environment types. |
| IPv6 | IPv6 is not supported for either Workload Profiles or Consumption-only environments. |
| VNet Move | VNet-integrated environments cannot be moved to a different resource group or subscription while in use. |
Container Registry
| Paired With | Constraint |
|---|---|
| AKS | AKS needs acrPull role assignment on the registry. Use managed identity (attach via az aks update --attach-acr). |
| Container App | Reference in configuration.registries[]. Use managed identity or admin credentials. |
| ML Workspace | Referenced as containerRegistry property. Used for custom training/inference images. |
| Private Endpoint | Premium SKU required. Set publicNetworkAccess: 'Disabled'. |
| Geo-Replication | Premium SKU required. Configure via child replications resource. |
| CMK | Premium SKU required. Needs user-assigned identity with Key Vault access. |
Function App
| Paired With | Constraint |
|---|---|
| Storage Account | Must use StorageV2 or Storage kind. BlobStorage, BlockBlobStorage, FileStorage not supported (need Queue + Table). |
| Storage (Consumption) | Consumption plan cannot use VNet-secured storage. Only Premium/Dedicated support VNet-restricted storage. |
| Storage (ZRS) | Zone-redundant functions require Standard_ZRS storage SKU. |
| App Service Plan | Plan must be in the same region. Linux functions need Linux plan (reserved: true). |
| VNet Integration | Requires Premium (EP) or Dedicated plan. Consumption does not support VNet integration (use Flex Consumption). |
| Application Insights | Set APPINSIGHTS_INSTRUMENTATIONKEY or APPLICATIONINSIGHTS_CONNECTION_STRING in app settings. |
| Key Vault References | App settings can use @Microsoft.KeyVault(SecretUri=...) syntax. Requires managed identity with Key Vault access. |
Static Web App
| Paired With | Constraint |
|---|---|
| GitHub Repository | Provide repositoryUrl, branch, and repositoryToken. A GitHub Actions workflow is auto-created in the repo. |
| Azure DevOps | Set provider: 'DevOps'. Provide repositoryUrl and branch. Pipeline is configured separately. |
| Azure Functions (managed) | API location in buildProperties.apiLocation deploys a managed Functions backend. Limited to HTTP triggers, C#, JavaScript, Python, Java. |
| Linked Backend | Use linkedBackends child resource to connect an existing Function App, Container App, or App Service as the API backend. Standard SKU required. |
| Private Endpoint | Only available with Standard SKU. Set up a Private Endpoint to restrict access to the static web app. |
| Custom Domain | Custom domains are child resources. Require DNS CNAME or TXT validation. Free SSL certificates are auto-provisioned. |
| Enterprise-Grade CDN | Standard SKU only. Enables Azure Front Door integration for advanced caching and edge capabilities. |
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.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-enterprise-infra-planner.zip