Prepare — Architecture Planning & Cost Estimation

SkillCloud & infra

Invoked by the azure-app-onboard orchestrator at Phase 2 when prereq-output.json exists. Not directly user-routable.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Prepare — Architecture Planning & Cost Estimation skill

About this capability

Official agent plugin providing skills and MCP server configurations for Azure scenarios.

What this skill tells your AI

The instructions your AI receives, as published by microsoft/azure-skills in skills/azure-app-onboard/prepare/SKILL.md and read by ahel’s review.

Quick Reference

PropertyValue
Best forMapping app components to Azure services with cost estimation and quota validation
Inputsprereq-output.json + context.json from .copilot-azure/sessions/{id}/
Outputsprepare-plan.json written to session directory
Parentazure-app-onboard

When to Use This Skill

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.

When NOT to Use

ScenarioUse Instead
Code readiness or prereq scanningazure-app-onboard Step 3 (prereq)
IaC generation from a completed planazure-app-onboard Step 7 (scaffold)
Deploying resources to Azureazure-app-onboard Step 9 (deploy)
Optimizing existing Azure spendazure-cost
Estimating VM-specific costsazure-compute
Enterprise landing zone architectureazure-enterprise-infra-planner

MCP Tools

ToolPurpose
mcp_azure_mcp_pricing / azure-pricing (router → command: pricing_get)Cost estimation (inline — see Step 6). Fallback: dispatch subagent-pricing.md
mcp_azure_mcp_policySubscription policy constraints
az restQuota validation (via sub-agent — see Step 5)
mcp_azure_mcp_cloudarchitectcloudarchitect_designWAF-aligned architecture design
mcp_azure_mcp_wellarchitectedframeworkPer-service WAF guidance
mcp_azure_mcp_advisoradvisor_recommendation_listOptimization recommendations

Workflow

#StepActionReference
1Read session stateLoad prereq-output.json + context.json. Resolve subscriptionCross-ref subscription-resolution.md if needed
2Query policy constraintsInline MCP: fetch policy + advisor recommendationsmcp_azure_mcp_policy + mcp_azure_mcp_advisor
3Map components to servicesPer-component Azure service selection, Dockerfile routing, deploy-as-isYou MUST read service-mapping.md and deploy-strategy.md
4Select SKUs + WAF analysisBudget-aware SKU selection, inline WAF service guidanceYou MUST read sku-matrix.md
5Validate 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
6Estimate costsYou 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
7Generate namingCentralized naming: suffix, prefix, all resource namesYou MUST read naming-patterns.md
8Determine IaC formatExisting non-Azure .tfask_user Bicep vs TF, write to overrides[].iacFormat. No .tf → default Bicep.(inline)
9Write prepare-plan.jsonPer PreparePlan schema. Include postDeployRecommendations, deploymentVariablesYou MUST read prepare-schemas.ts for PreparePlan schema
10Return summaryStructured summary for orchestrator approval gate(inline — 1 line)
11Validate plan4-dimension check: Goal Alignment, WAF Alignment, Dependency Completeness, Deployment Viability. Fix inline on failure, document tradeoffs in assumptions[].All must pass before writing

Step 5 — Post-Quota Validation

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 ALL services[].region in prepare-plan.json. Do not leave stale values.

Error Handling

ErrorRemediation
Pricing API 400Verify --sku included. Free tiers: skip API
MCP pricing unavailableDispatch subagent-pricing.md as task fallback (uses direct HTTP to prices.azure.com)
Prereq output missingTrigger prereq backfill
Quota check failsFall back to best-effort estimate + disclaimer
Override conflictsRe-run from Step 3 with new constraints

Signals

GitHub stars
1k
Forks
245
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages (in references/deploy-strategy.md)

Automated review, not a security audit. Ruleset v1+k2.

Others that do the same job

Advanced
Catalog kind
skill
Gateway key
prepare-microsoft
Source
github.com/microsoft/azure-skills