skills/azure-app-onboard/prepare/SKILL.md
# Prepare — Architecture Planning & Cost Estimation ## Quick Reference | Property | Value | |----------|-------| | Best for | Mapping app components to Azure services with cost estimation and quota validation | | Inputs | `prereq-output.json` + `context.json` from `.copilot-azure/sessions/{id}/` | | Outputs | `prepare-plan.json` written to session directory | | Parent | [azure-app-onboard](../SKILL.md) | ## When to Use This Skill Invoked by the `azure-app-onboard` orchestrator at Phase 2 whe
npx skillsauth add microsoft/azure-skills skills/azure-app-onboard/prepareInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Best for | Mapping app components to Azure services with cost estimation and quota validation |
| Inputs | prereq-output.json + context.json from .copilot-azure/sessions/{id}/ |
| Outputs | prepare-plan.json written to session directory |
| Parent | azure-app-onboard |
Invoked by the azure-app-onboard orchestrator at Phase 2 when prereq-output.json exists. Not directly user-routable.
Return to orchestrator: When complete, return control to
azure-app-onboard. Do NOT directly invoke scaffold or deploy.
| Scenario | Use Instead |
|----------|-------------|
| Code readiness or prereq scanning | azure-app-onboard Step 3 (prereq) |
| IaC generation from a completed plan | azure-app-onboard Step 7 (scaffold) |
| Deploying resources to Azure | azure-app-onboard Step 9 (deploy) |
| Optimizing existing Azure spend | azure-cost |
| Estimating VM-specific costs | azure-compute |
| Enterprise landing zone architecture | azure-enterprise-infra-planner |
| Tool | Purpose |
|------|----------|
| mcp_azure_mcp_pricing / azure-pricing (router → command: pricing_get) | Cost estimation (inline — see Step 6). Fallback: dispatch subagent-pricing.md |
| mcp_azure_mcp_policy | Subscription policy constraints |
| az rest | Quota validation (via sub-agent — see Step 5) |
| mcp_azure_mcp_cloudarchitect → cloudarchitect_design | WAF-aligned architecture design |
| mcp_azure_mcp_wellarchitectedframework | Per-service WAF guidance |
| mcp_azure_mcp_advisor → advisor_recommendation_list | Optimization recommendations |
| # | Step | Action | Reference |
|---|------|--------|-----------|
| 1 | Read session state | Load prereq-output.json + context.json. Resolve subscription | Cross-ref subscription-resolution.md if needed |
| 2 | Query policy constraints | Inline MCP: fetch policy + advisor recommendations | mcp_azure_mcp_policy + mcp_azure_mcp_advisor |
| 3 | Map components to services | Per-component Azure service selection, Dockerfile routing, deploy-as-is | ⛔ You MUST read service-mapping.md and deploy-strategy.md |
| 4 | Select SKUs + WAF analysis | Budget-aware SKU selection, inline WAF service guidance | ⛔ You MUST read sku-matrix.md |
| 5 | Validate quotas + region capacity | ⛔ Read subagent-quota.md → dispatch as task (NEXT action MUST be task, ⛔ agent_type: "task" — NEVER "general-purpose"). Copy the COMPLETE and UNMODIFIED template text into the task prompt between <<<TEMPLATE_START>>> / <<<TEMPLATE_END>>> delimiters — do NOT summarize. Append the caller-provided inputs listed in subagent-quota.md's Input table AFTER the template block. ⛔ After dispatching, proceed to Step 6 (cost estimation) while the subagent runs. Do NOT run quota checks yourself — the subagent handles it. Collect subagent results before Step 9 (write plan). | ⛔ You MUST read subagent-quota.md |
| 6 | Estimate costs | ⛔ You MUST read pricing-guide.md for methodology, then pricing-guide-services.md for per-service filters. Call the pricing router (mcp_azure_mcp_pricing/azure-pricing) with command: "pricing_get" + a parameters{} object inline per paid service. If MCP unavailable or fails → ⛔ Read subagent-pricing.md → dispatch as task (NEXT action MUST be task, ⛔ agent_type: "task" — NEVER "general-purpose"). Copy the COMPLETE and UNMODIFIED template text into the task prompt between <<<TEMPLATE_START>>> / <<<TEMPLATE_END>>> delimiters — do NOT summarize. Append data (services[], region, budget tier) AFTER the template block. Write results to prepare-plan.json.costEstimate. | pricing-guide.md |
| 7 | Generate naming | Centralized naming: suffix, prefix, all resource names | ⛔ You MUST read naming-patterns.md |
| 8 | Determine IaC format | Existing non-Azure .tf → ask_user Bicep vs TF, write to overrides[].iacFormat. No .tf → default Bicep. | (inline) |
| 9 | Write prepare-plan.json | Per PreparePlan schema. Include postDeployRecommendations, deploymentVariables | ⛔ You MUST read prepare-schemas.ts for PreparePlan schema |
| 10 | Return summary | Structured summary for orchestrator approval gate | (inline — 1 line) |
| 11 | Validate plan | 4-dimension check: Goal Alignment, WAF Alignment, Dependency Completeness, Deployment Viability. Fix inline on failure, document tradeoffs in assumptions[]. | All must pass before writing |
⛔ NEVER present a region without checking quota first. Skipping quota validation causes cascading deploy failures and extended healing loops. ⛔ If plan includes PostgreSQL/MySQL, verify
offerRestrictionsVerified: true— if false/missing, region is blocked. Do NOT proceed to scaffold with unchecked DB services. ⛔ Free ≠ unlimited. Every compute SKU — including F1, Consumption, and Serverless tiers — has a per-subscription, per-region quota. Do NOT skip quota checks because a SKU is free. ⛔ After region fallback, update ALLservices[].regioninprepare-plan.json. Do not leave stale values.
| Error | Remediation |
|-------|-------------|
| Pricing API 400 | Verify --sku included. Free tiers: skip API |
| MCP pricing unavailable | Dispatch subagent-pricing.md as task fallback (uses direct HTTP to prices.azure.com) |
| Prereq output missing | Trigger prereq backfill |
| Quota check fails | Fall back to best-effort estimate + disclaimer |
| Override conflicts | Re-run from Step 3 with new constraints |
development
# Azure App Onboard Scaffold — IaC Generation + Self-Review Generate deployment-ready infrastructure code from an architecture plan, verify it with adversarial self-review, and bridge to validation — all without deploying. ## Quick Reference | Property | Value | |----------|-------| | Parent | [azure-app-onboard](../SKILL.md) | | Best for | Turning `prepare-plan.json` service list into Bicep templates with secure-by-default patterns | | Inputs | `prepare-plan.json` (services, naming, quotas),
testing
# Deploy — IaC Execution & Health Verification ## Quick Reference | Property | Value | |----------|-------| | Best for | Executing validated IaC against Azure, health-checking deployed resources | | Inputs | `prepare-plan.json` + `scaffold-manifest.json` from `.copilot-azure/sessions/{id}/` | | Outputs | `deploy-result.json` written to session directory | | Parent | [azure-app-onboard](../SKILL.md) | ## When to Use This Skill Invoked by the `azure-app-onboard` orchestrator at Phase 4 when `s
tools
End-to-end orchestrator: from a business idea, app idea, or existing app to running Azure deployment with cost estimates and pre-deploy approval. Analyzes your app, auto-detects the right Azure services, scaffolds infrastructure code, and deploys — tailored to your app, not a template. Handles moving existing apps to Azure without rewriting or with minimal changes. WHEN: bring your app to Azure, plan my app, cost to run, is my code ready to deploy, deploy my app to the cloud, deploy all my services, what Azure services do I need, plan my Azure deployment, deploy my new app to Azure, one-click deploy, I have an app and want it on Azure, migrate my app to Azure, help me get started, build an app, no code yet, starter project. DO NOT USE FOR: running azd up (use azure-deploy), optimizing existing costs (use azure-cost), code readiness checks only (use azure-app-onboard-prereq).
development
Assess whether source code is ready to deploy to Azure — the check BEFORE infrastructure work. Evaluates build health, app completeness, dependencies and local services, stack compatibility, and deployment feasibility. Answers questions about what your app needs before it can be deployed — frameworks, dependencies, and configuration. Checks whether dependencies are compatible and identifies deployment blockers and unsupported frameworks. WHEN: "evaluate my repo", "is my app ready to deploy", "what does my app need to deploy", "what do I need before deploying", "does my app need", "can I ship this to Azure", "scan my repo for issues", "is this app deployable", "check if my app is ready for Azure", "do I need a Dockerfile", "what's blocking my deployment", "are there any blockers", "are my dependencies compatible", "does Azure support my framework", "what needs to change before deploying", "check my app configuration".