Azure Architecture Autopilot
GitHubOfficialFirst committed by whoniiiiDistributed by GitHub
- Skill
- Workflow
- Cloud and DevOps
- MIT
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Azure Architecture Autopilot is a multi-phase agentic workflow designed to assist users in creating or modifying Azure infrastructure. It guides users through an interactive design process, generates architecture diagrams using an embedded engine, produces Bicep templates, and manages the deployment lifecycle. The skill integrates with Azure services and utilizes official Microsoft documentation to ensure configurations align with current service specifications.
What it does
- Designs new Azure infrastructure based on natural language requirements.
- Analyzes existing Azure resources to generate visual architecture diagrams.
- Refines infrastructure designs through interactive conversation.
- Generates and reviews Bicep templates for infrastructure as code.
- Executes deployment workflows including validation and what-if analysis.
- Detects user language to provide localized support and documentation.
When to use it
- When you need to design a new Azure environment or RAG architecture.
- When you want to visualize your current Azure resource configuration.
- When you need to generate or update Bicep templates for Azure deployments.
- When you require guidance on modifying existing Azure infrastructure to meet new requirements.
Advantages
- Automated diagram generation using an embedded engine with official Azure icons.
- Structured multi-phase workflow ensuring design confirmation before deployment.
- Integration with Microsoft documentation for dynamic service property lookups.
- Supports natural language interaction for complex infrastructure tasks.
- Includes built-in safety checks like what-if analysis prior to deployment.
Usage examples
- “Create a RAG architecture on Azure.”
- The agent will initiate the design phase, suggest a baseline architecture, generate a diagram, and guide you through the Bicep generation and deployment process.
- “Analyze my current Azure infrastructure and draw a diagram.”
- The agent will scan your existing resources, infer relationships, and produce an interactive HTML diagram of your current setup.
- “I want to strengthen security for my existing Azure resources.”
- The agent will analyze your current configuration and propose modifications to your infrastructure design to align with security patterns.
Install
1 of its files are not mirrored here, so install it from its source:
https://github.com/github/awesome-copilot/tree/797337f33f73e35d08d82f840e21c4b8c4932d88/skills/azure-architecture-autopilot
Documentation by whoniiii
Azure Architecture Builder
A pipeline that designs Azure infrastructure using natural language, or analyzes existing resources to visualize architecture and proceed through modification and deployment.
The diagram engine is embedded within the skill (scripts/ folder).
No pip install needed — it directly uses the bundled Python scripts
to generate interactive HTML diagrams with 605+ official Azure icons.
Ready to use immediately without network access or package installation.
Automatic User Language Detection
🚨 Detect the language of the user's first message and provide all subsequent responses in that language. This is the highest-priority principle.
If the user writes in Korean → respond in Korean
If the user writes in English → respond in English (ask_user, progress updates, reports, Bicep comments — all in English)
The instructions and examples in this document are written in English, and all user-facing output must match the user's language
⚠️ Do not copy examples from this document verbatim to the user. Use only the structure as reference, and adapt text to the user's language.
Tool Usage Guide (GHCP Environment)
| Feature | Tool Name | Notes |
|---|---|---|
| Fetch URL content | web_fetch | For MS Docs lookups, etc. |
| Web search | web_search | URL discovery |
| Ask user | ask_user | choices must be a string array |
| Sub-agents | task | explore/task/general-purpose |
| Shell command execution | powershell | Windows PowerShell |
All sub-agents (explore/task/general-purpose) cannot use
web_fetchorweb_search. Fact-checking that requires MS Docs lookups must be performed directly by the main agent.
External Tool Path Discovery
az, python, bicep, etc. are often not on PATH.
Discover once before starting a Phase and cache the result. Do not re-discover every time.
⚠️ Do not use
Get-Command python— risk of Windows Store alias. Direct filesystem discovery ($env:LOCALAPPDATA\Programs\Python) takes priority.
az CLI path:
$azCmd = $null
if (Get-Command az -ErrorAction SilentlyContinue) { $azCmd = 'az' }
if (-not $azCmd) {
$azExe = Get-ChildItem -Path "$env:ProgramFiles\Microsoft SDKs\Azure\CLI2\wbin", "$env:LOCALAPPDATA\Programs\Azure CLI\wbin" -Filter "az.cmd" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName
if ($azExe) { $azCmd = $azExe }
}Python path + embedded diagram engine: refer to the diagram generation section in references/phase1-advisor.md.
Progress Updates Required
Use blockquote + emoji + bold format:
> **⏳ [Action]** — [Reason]
> **✅ [Complete]** — [Result]
> **⚠️ [Warning]** — [Details]
> **❌ [Failed]** — [Cause]Parallel Preload Principle
While waiting for user input via ask_user, preload information needed for the next step in parallel.
| ask_user Question | Preload Simultaneously |
|---|---|
| Project name / scan scope | Reference files, MS Docs, Python path discovery, diagram module path verification |
| Model/SKU selection | MS Docs for next question choices |
| Architecture confirmation | az account show/list, az group list |
| Subscription selection | az group list |
Path Branching — Automatically Determined by User Request
Path A: New Design (New Build)
Trigger: "create", "set up", "deploy", "build", etc.
Phase 1 (references/phase1-advisor.md) — Interactive architecture design + diagram
↓
Phase 2 (references/bicep-generator.md) — Bicep code generation
↓
Phase 3 (references/bicep-reviewer.md) — Code review + compilation verification
↓
Phase 4 (references/phase4-deployer.md) — validate → what-if → deployPath B: Existing Analysis + Modification (Analyze & Modify)
Trigger: "analyze", "current resources", "scan", "draw a diagram", "show my infrastructure", etc.
Phase 0 (references/phase0-scanner.md) — Existing resource scan + diagram
↓
Modification conversation — "What would you like to change here?" (natural language modification request → follow-up questions)
↓
Phase 1 (references/phase1-advisor.md) — Confirm modifications + update diagram
↓
Phase 2~4 — Same as aboveWhen Path Determination Is Ambiguous
Ask the user directly:
ask_user({
question: "What would you like to do?",
choices: [
"Design a new Azure architecture (Recommended)",
"Analyze + modify existing Azure resources"
]
})Phase Transition Rules
Each Phase reads and follows the instructions in its corresponding
references/*.mdfileWhen transitioning between Phases, always inform the user about the next step
Do not skip Phases (especially the what-if between Phase 3 → Phase 4)
🚨 Required condition for Phase 1 → Phase 2 transition:
01_arch_diagram_draft.htmlmust have been generated using the embedded diagram engine and shown to the user. Do not proceed to Bicep generation without a diagram. Completing spec collection alone does not mean Phase 1 is done — Phase 1 includes diagram generation + user confirmation.Modification request after deployment → return to Phase 1, not Phase 0 (Delta Confirmation Rule)
Service Coverage & Fallback
Optimized Services
Microsoft Foundry, Azure OpenAI, AI Search, ADLS Gen2, Key Vault, Microsoft Fabric, Azure Data Factory, VNet/Private Endpoint, AML/AI Hub
Other Azure Services
All supported — MS Docs are automatically consulted to generate at the same quality standard. Do not send messages that cause user anxiety such as "out of scope" or "best-effort".
Stable vs Dynamic Information Handling
| Category | Handling Method | Examples |
|---|---|---|
| Stable | Reference files first | isHnsEnabled: true, PE triple set |
| Dynamic | Always fetch MS Docs | API version, model availability, SKU, region |
Quick Reference
| File | Role |
|---|---|
references/phase0-scanner.md | Existing resource scan + relationship inference + diagram |
references/phase1-advisor.md | Interactive architecture design + fact checking |
references/bicep-generator.md | Bicep code generation rules |
references/bicep-reviewer.md | Code review checklist |
references/phase4-deployer.md | validate → what-if → deploy |
references/service-gotchas.md | Required properties, PE mappings |
references/azure-dynamic-sources.md | MS Docs URL registry |
references/azure-common-patterns.md | PE/security/naming patterns |
references/ai-data.md | AI/Data service guide |
assets/06-architecture-diagram.png | Example generated architecture diagram |
assets/07-azure-portal-resources.png | Example Azure portal resource view |
assets/08-deployment-succeeded.png | Example successful deployment result |
Files
- .gitignore508 B
- ATTRIBUTION.mdAdded by AutoGineer889 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md7.5 KiB
- assets/06-architecture-diagram.png326.8 KiB
- assets/07-azure-portal-resources.png171.4 KiB
- assets/08-deployment-succeeded.png41.0 KiB
- references/ai-data.md7.1 KiB
- references/architecture-guidance-sources.md6.9 KiB
- references/azure-common-patterns.md4.2 KiB
- references/azure-dynamic-sources.md4.7 KiB
- references/bicep-generator.md19.9 KiB
- references/bicep-reviewer.md7.1 KiB
- references/phase0-scanner.md24.9 KiB
- references/phase1-advisor.md46.9 KiB
- references/phase4-deployer.md11.7 KiB
- references/service-gotchas.md6.4 KiB
- scripts/cli.pyScript5.7 KiB
- scripts/generator.pyScript137.2 KiB
- scripts/icons.py(opens on GitHub)Not mirrored: opens on GitHub2.0 MiB
references/phase4-deployer.md
Phase 4: Deployment Agent
This file contains detailed instructions for Phase 4. Read and follow this file when the user approves deployment after Phase 3 (code review) is complete.
🚨🚨🚨 Phase 4 Mandatory Execution Order — Never Skip Any Step 🚨🚨🚨
The following 5 steps must be executed strictly in order. No step may be omitted or skipped. Even if the user requests deployment with "deploy it", "go ahead", "do it", etc., always proceed from Step 1 in order.
Step 1: Verify prerequisites (az login, subscription, resource group)
↓
Step 2: What-if validation (az deployment group what-if) ← Must execute
↓
Step 3: Generate preview diagram (02_arch_diagram_preview.html) ← Must generate
↓
Step 4: Actual deployment after user final confirmation (az deployment group create)
↓
Step 5: Generate deployment result diagram (03_arch_diagram_result.html)Never do the following:
Execute
az deployment group createdirectly without What-ifSkip generating the preview diagram (
02_arch_diagram_preview.html)Proceed with deployment without showing What-if results to the user
Only provide
azcommands for the user to run manually
Step 1: Verify Prerequisites
# Verify az CLI installation and login
az account show 2>&1If not logged in, ask the user to run az login.
The agent must never enter or store credentials directly.
Create resource group:
az group create --name "<RG_NAME>" --location "<LOCATION>" # Location confirmed in Phase 1→ Proceed to next step after confirming success
Step 2: Validate → What-if Validation — 🚨 Mandatory
Do not skip this step. Always execute it no matter how urgently the user requests deployment.
Step 2-A: Run Validate First (Quick Pre-validation)
what-if can hang indefinitely without error messages when there are Azure policy violations, resource reference errors, etc.
To prevent this, always run validate first. Validate returns errors quickly.
# validate — Quickly catches policy violations, schema errors, parameter issues
az deployment group validate `
--resource-group "<RG_NAME>" `
--parameters main.bicepparamValidate succeeds → Proceed to Step 2-B (what-if)
Validate fails → Analyze error messages, fix Bicep, recompile, re-validate
Azure Policy violation (
RequestDisallowedByPolicy) → Reflect policy requirements in Bicep (e.g.,azureADOnlyAuthentication: true)Schema error → Fix API version/properties
Parameter error → Fix parameter file
Step 2-B: Run What-if
Run what-if after validate passes.
Choose parameter passing method:
If all
@secure()parameters have default values → Use.bicepparamIf
@secure()parameters require user input → Use--template-file+ JSON parameter file
# Method 1: Use .bicepparam (when all @secure() parameters have defaults)
az deployment group what-if `
--resource-group "<RG_NAME>" `
--parameters main.bicepparam
# Method 2: Use JSON parameter file (when @secure() parameters require user input)
az deployment group what-if `
--resource-group "<RG_NAME>" `
--template-file main.bicep `
--parameters main.parameters.json `
--parameters secureParam='value'→ Summarize the What-if results and present them to the user.
⏱️ What-if Execution Method and Timeout Handling:
What-if performs resource validation on the Azure server side, so it may take time depending on the service/region.
Always execute with initial_wait: 300 (5 minutes). If not completed within 5 minutes, it automatically times out.
# Always set initial_wait: 300 when calling the powershell tool
# mode: "sync", initial_wait: 300
az deployment group what-if `
--resource-group "<RG_NAME>" `
--parameters main.bicepparamCompleted within 5 minutes → Proceed normally (summarize results → preview diagram → deployment confirmation)
Not completed within 5 minutes (timeout) → Immediately stop with stop_powershell and offer choices to the user:
ask_user({
question: "What-if validation did not complete within 5 minutes. The Azure server response is delayed. How would you like to proceed?",
choices: [
"Retry (Recommended)",
"Skip What-if and deploy directly"
]
})If "Retry" is selected: Re-execute the same command with initial_wait: 300. Retry up to 2 times maximum.
If "Skip What-if and deploy directly" is selected:
Generate the preview diagram based on the Phase 1 draft
Inform the user of the risks:
⚠️ Deploying without What-if validation. Unexpected resource changes may occur. Please verify in the Azure Portal after deployment.
Never do the following:
Execute without setting
initial_wait, causing indefinite waitingLet the agent arbitrarily decide "what-if is optional" and skip it
Automatically switch to deployment without asking the user on timeout
Skip what-if for reasons like "deployment is faster"
Step 3: Preview Diagram Based on What-if Results — 🚨 Mandatory
Do not skip this step. Always generate the preview diagram when What-if succeeds.
Regenerate the diagram using the actual resources to be deployed (resource names, types, locations, counts) from the What-if results.
Keep the draft from Phase 1 (01_arch_diagram_draft.html) as-is, and generate the preview as 02_arch_diagram_preview.html.
The draft can be reopened at any time.
## Architecture to Be Deployed (Based on What-if)
[Interactive diagram link — 02_arch_diagram_preview.html]
(Design draft: 01_arch_diagram_draft.html)
Resources to be created (N items):
[What-if results summary table]
Deploy these resources? (Yes/No)Proceed to Step 4 when the user confirms. Do not proceed to deployment without the preview diagram.
Step 4: Actual Deployment
Execute only when the user has reviewed the preview diagram and What-if results and approved the deployment. Use the same parameter passing method used in What-if.
$deployName = "deploy-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
# Method 1: Use .bicepparam
az deployment group create `
--resource-group "<RG_NAME>" `
--parameters main.bicepparam `
--name $deployName `
2>&1 | Tee-Object -FilePath deployment.log
# Method 2: Use JSON parameter file
az deployment group create `
--resource-group "<RG_NAME>" `
--template-file main.bicep `
--parameters main.parameters.json `
--name $deployName `
2>&1 | Tee-Object -FilePath deployment.logPeriodically monitor progress during deployment:
az deployment group show `
--resource-group "<RG_NAME>" `
--name "<DEPLOYMENT_NAME>" `
--query "{status:properties.provisioningState, duration:properties.duration}" `
-o tableHandling Deployment Failures
When deployment fails, some resources may remain in a 'Failed' state. Redeploying in this state causes errors like AccountIsNotSucceeded.
⚠️ Resource deletion is a destructive command. Always explain the situation to the user and obtain approval before executing.
[Resource name] failed during deployment.
To redeploy, the failed resources must be deleted first.
Delete and redeploy? (Yes/No)Delete failed resources and redeploy once the user approves.
🔹 Handling Soft-deleted Resources (Prevent Redeployment Blocking):
When a resource group is deleted after a failed deployment, Cognitive Services (Foundry), Key Vault, etc. remain in a soft-delete state.
Redeploying with the same name causes FlagMustBeSetForRestore, Conflict errors.
Always check before redeployment:
# Check soft-deleted Cognitive Services
az cognitiveservices account list-deleted -o table
# Check soft-deleted Key Vault
az keyvault list-deleted -o tableResolution options (provide choices to the user):
ask_user({
question: "Soft-deleted resources from a previous deployment were found. How would you like to handle this?",
choices: [
"Purge and redeploy (Recommended) - Clean delete then create new",
"Redeploy in restore mode - Recover existing resources"
]
})Caution — Key Vault with enablePurgeProtection: true:
Cannot be purged (must wait until retention period expires)
Cannot recreate with the same name
Solution: Change the Key Vault name and redeploy (e.g., add timestamp to
uniqueString()seed)Explain the situation to the user and guide them on the name change
Step 5: Deployment Complete — Generate Diagram from Actual Resources and Report
Once deployment is complete, query the actually deployed resources and generate the final architecture diagram.
Step 1: Query Deployed Resources
az resource list --resource-group "<RG_NAME>" --output jsonStep 2: Generate Diagram from Actual Resources
Extract resource names, types, SKUs, and endpoints from the query results and generate the final diagram using the built-in diagram engine. Be careful with file names to avoid overwriting previous diagrams:
01_arch_diagram_draft.html— Design draft (keep)02_arch_diagram_preview.html— What-if preview (keep)03_arch_diagram_result.html— Deployment result final version
Populate the diagram's services JSON with actual deployed resource information:
name: Actual resource name (e.g.,foundry-duru57kxgqzxs)sku: Actual SKUdetails: Actual values such as endpoints, location, etc.
Step 3: Report
## Deployment Complete!
[Interactive architecture diagram — 03_arch_diagram_result.html]
(Design draft: 01_arch_diagram_draft.html | What-if preview: 02_arch_diagram_preview.html)
Created resources (N items):
[Dynamically extracted resource names, types, and endpoints from actual deployment results]
## Next Steps
1. Verify resources in Azure Portal
2. Check Private Endpoint connection status
3. Additional configuration guidance if needed
## Cleanup Command (If Needed)
az group delete --name <RG_NAME> --yes --no-waitHandling Architecture Change Requests After Deployment
When the user requests resource additions/changes/deletions after deployment is complete, do NOT go directly to Bicep/deployment. Always return to Phase 1 and update the architecture first.
Process:
Confirm user intent — Ask first whether they want to add to the existing deployed architecture:
Would you like to add a VM to the currently deployed architecture? Current configuration: [Deployed services summary]Return to Phase 1 — Apply Delta Confirmation Rule
Use the existing deployment result (
03_arch_diagram_result.html) as the current state baselineVerify required fields for new services (SKU, networking, region availability, etc.)
Confirm undecided items via ask_user
Fact-check (MS Docs fetch + cross-validation)
Generate Updated Architecture Diagram
Combine existing deployed resources + new resources into
04_arch_diagram_update_draft.htmlShow to the user and get confirmation:
## Updated Architecture [Interactive diagram — 04_arch_diagram_update_draft.html] (Previous deployment result: 03_arch_diagram_result.html) **Changes:** - Added: [New services list] - Removed: [Removed services list] (if any) Proceed with this configuration?After confirmation, proceed through Phase 2 → 3 → 4 in order
Incrementally add new resource modules to existing Bicep
Review → What-if → Deploy (incremental deployment)
Never do the following:
Jump directly to Bicep generation without updating the architecture diagram when a change is requested after deployment
Ignore the existing deployment state and create new resources in isolation
Proceed without confirming with the user whether to add to the existing architecture
Requirements and compatibility
Written for: GitHub Copilot
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.
Needs: Needs Python
Security
What our scanner noticed· Low risk
- Phrasing that asks for actions without confirmation
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
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
- First committed by
whoniiii
- Publisher
- GitHub (Official)
- Distributed by
- GitHub
- Source
- github/awesome-copilot · skills/azure-architecture-autopilot · commit 797337f
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- whoniiii, NehaGitHubAcc, Sertxito, stbenjam
AutoGineer is not affiliated with or endorsed by whoniiii or GitHub.
Get it from the source
1 of this skill’s files are not mirrored here, so there is no ZIP. Get the complete skill from its source: github/awesome-copilot