Azure Enterprise Infra Planner
When to invoke
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 |
Output template
## Infrastructure plan result
**Status:** planned | generated | blocked
**Summary:** <one sentence covering scope and outcome>
### Details
Topology, identity and network design, and generated Bicep or Terraform.
### Validation
- <check performed>: <result and evidence>
Quality gate
1---2name: azure-enterprise-infra-planner-33description: Architect and provision enterprise Azure infrastructure from workload descriptions for cloud architects and platform engineers, covering networking, identity, security, compliance, and multi-resource topologies with Well-Architected alignment, and generating Bicep or Terraform directly without azd. Use when the user asks to plan Azure infrastructure, architect a landing zone, design a hub-spoke network, plan a multi-region disaster recovery topology, set up virtual networks, firewalls, and private endpoints, run a subscription-scope Bicep deployment, or configure Azure Backup for VM workloads.4license: MIT5---67<!-- Generated from harness/github-copilot/plugins/azure-cloud-development/skills/azure-enterprise-infra-planner/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->89# Azure Enterprise Infra Planner1011## When to invoke1213Activate this skill when user wants to:14- Plan enterprise Azure infrastructure from a workload or architecture description15- Architect a landing zone, hub-spoke network, or multi-region topology16- Design networking infrastructure: VNets, subnets, firewalls, private endpoints, VPN gateways17- Plan identity, RBAC, and compliance-driven infrastructure18- Generate Bicep or Terraform for subscription-scope or multi-resource-group deployments19- Plan disaster recovery, failover, or cross-region high-availability topologies2021## Quick Reference2223| Property | Details |24|---|---|25| MCP tools | `insights_get`, `get_azure_bestpractices_get`, `wellarchitectedframework_serviceguide_get`, `microsoft_docs_fetch`, `microsoft_docs_search`, `bicepschema_get` |26| CLI commands | `az deployment group create`, `az bicep build`, `az resource list`, `terraform init`, `terraform plan`, `terraform validate`, `terraform apply`, `checkov` |27| Output schema | [schema.md](references/schema.md) |28| Key references | [workflow.md](references/workflow.md), [waf-checklist.md](references/waf-checklist.md), [resources/](references/resources/README.md), [constraints/](references/constraints/README.md) |2930## Workflow (Start Here)3132Follow the step-by-step instructions in [workflow.md](references/workflow.md) to execute the 7 phases of infrastructure planning and provisioning.3334## Architecture3536The skill runs a **7-phase, gated pipeline**. Input is triaged into one of two flows:3738- **Greenfield** — only new requirements; run the phases straight through.39- **Referenced (brownfield)** — the user supplies something that already exists (a live resource /40 resource group / subscription, IaC or an infra plan, or a requirements doc). The same phases run, plus41 [referenced-workload.md](references/referenced-workload.md): existing resources are inventoried and42 referenced (never recreated), the new workload is wired into them, and **Phase 7 deploys additively**43 (incremental only — never modifying or destroying the referenced resources).4445Every phase advances only after its gate passes. Phase 5 requires explicit user approval; **Phase 6 is a46hardened, self-verifying gate** — the generated IaC must be secure-by-default, pass local validation47(`az bicep build` / `terraform validate`) with zero errors, pass a `checkov` security scan with no48unresolved high/critical findings, and the skill must **show the command output** and emit a completion49self-check before advancing; Phase 7 requires an explicit, risk-acknowledged deploy confirmation.5051```mermaid52flowchart TD53 IN([Input]) --> TRIAGE{Existing infra<br/>referenced?}54 TRIAGE -- "No (greenfield)" --> P155 TRIAGE -- "Yes (referenced)" --> RW[/referenced-workload.md:<br/>inventory + assign roles<br/>reference, never recreate/]56 RW --> P15758 subgraph PIPE [7-phase gated pipeline]59 direction TB60 P1[Phase 1 · Extract insights] --> P2[Phase 2 · Research best practices]61 P2 --> P3[Phase 3 · Research resources]62 P3 --> P4[Phase 4 · Generate plan]63 P4 --> P5{Phase 5 · Verify<br/>user approves?}64 P5 -- "no" --> P465 P5 -- "approved" --> P6[Phase 6 · Generate IaC]66 P6 --> VAL{Validate<br/>az bicep build /<br/>terraform validate}67 VAL -- "errors" --> P668 VAL -- "clean" --> P7{Phase 7 · Deploy<br/>risk-ack confirm?}69 end7071 P7 -- "greenfield" --> DEP[az deployment / terraform apply]72 P7 -- "referenced" --> DEPADD[Additive deploy · incremental only<br/>what-if preview · no destroy of<br/>referenced resources]73 DEP --> OUT([Deployed])74 DEPADD --> OUT7576 classDef gate fill:#fff3cd,stroke:#d39e00,color:#000;77 classDef ref fill:#e2f0d9,stroke:#548235,color:#000;78 class P5,VAL,P7,TRIAGE gate;79 class RW,DEPADD ref;80```8182**Artifacts** (written under `<project-root>/`): `.azure/insights.json` (Phase 1),83`.azure/infrastructure-plan.json` (Phase 4, status `draft`→`approved`→`deployed`), and84`infra/main.bicep` + `infra/modules/*` or `infra/main.tf` + `infra/modules/**` (Phase 6).8586## MCP Tools8788| Tool | Purpose |89|------|---------|90| `insights_get` | Retrieve insights about the user's existing Azure environment to guide planning decisions |91| `get_azure_bestpractices_get` | Azure best practices for code generation, operations, and deployment |92| `wellarchitectedframework_serviceguide_get` | WAF service guide for a specific Azure service |93| `microsoft_docs_search` | Search Microsoft Learn for relevant documentation chunks |94| `microsoft_docs_fetch` | Fetch full content of a Microsoft Learn page by URL |95| `bicepschema_get` | Bicep schema definition for any Azure resource type (latest API version) |9697## Error Handling9899| Error | Cause | Fix |100|---|---|---|101| 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 |102| Plan approval missing | `meta.status` is not `approved` | Stop and prompt user for approval before IaC generation or deployment |103| IaC validation failure | `az bicep build` or `terraform validate` returns errors | Fix the generated code and re-validate; notify user if unresolved |104| Pairing constraint violation | Incompatible SKU or resource combination | Fix in plan before proceeding to IaC generation |105| 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](references/workflow.md) exactly |106107## Output template108109```markdown110## Infrastructure plan result111112**Status:** planned | generated | blocked113**Summary:** <one sentence covering scope and outcome>114115### Details116Topology, identity and network design, and generated Bicep or Terraform.117118### Validation119- <check performed>: <result and evidence>120```121122## Quality gate123124- [ ] The design states its Well-Architected trade-offs.125- [ ] Generated infrastructure code passes a lint or validation pass.126- [ ] The output follows `## Output template` exactly.127- [ ] Every reported check was performed and its evidence is shown.128- [ ] Irreversible Azure actions were confirmed with the user first.