# Prepare > Invoked by the azure-app-onboard orchestrator at Phase 2 when prereq-output.json exists. Not directly user-routable. Source: https://skillsagentes.com/skills/microsoft/azure-skills/prepare Repository: https://github.com/microsoft/azure-skills Author: microsoft License: MIT Updated: hace 21 días Context cost: 29 tok installed, 1.6k tok once triggered, 18.2k tok with every bundled file Bundle: 13 files, 71 KB Permissions requested: none declared ## Install ```bash npx -y skills add microsoft/azure-skills --skill prepare --agent claude-code ``` ## What it does - Mapea los componentes de una aplicación a servicios de Azure, con estimación de coste y validación de cuota. - Lee `prereq-output.json` y `context.json` del directorio de sesión y escribe `prepare-plan.json`. - Es la fase 2 del pipeline de `azure-app-onboard` y devuelve el control al orquestador al terminar: tiene prohibido invocar scaffold o deploy por su cuenta. ## Use it when - Lo invoca el orquestador `azure-app-onboard` en la fase 2, cuando existe `prereq-output.json`. ## Don't bother when - Directamente por el usuario: el archivo dice que no es enrutable de forma directa. - Para optimizar gasto existente (`azure-cost`), estimar costes de VM (`azure-compute`) o arquitectura de landing zone empresarial. ## Before you install - Requiere `prereq-output.json` y `context.json` en `.copilot-azure/sessions/{id}/`. No tiene frontmatter propio: es un sub-skill del pipeline. ## Files - SKILL.md — 6 KB - references/deploy-strategy.md — 7 KB - references/mcp-tools.md — 6 KB - references/naming-patterns.md — 5 KB - references/prepare-schemas.ts — 7 KB - references/pricing-guide-services.md — 8 KB - references/pricing-guide.md — 4 KB - references/service-mapping.md — 8 KB - references/sku-matrix.md — 3 KB - references/sku-quota-validation.md — 9 KB - references/subagent-pricing.md — 2 KB - references/subagent-quota.md — 3 KB - references/validation-rubric.md — 2 KB ## SKILL.md Reproduced verbatim from microsoft/azure-skills under MIT. This section is the upstream document and is in English. # 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 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 | 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` | ## MCP Tools | Tool | Purpose | |------|----------| | `mcp_azure_mcp_pricing` / `azure-pricing` (router → `command: pricing_get`) | Cost estimation (inline — see Step 6). Fallback: dispatch [`subagent-pricing.md`](references/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 | ## Workflow | # | Step | Action | Reference | |---|------|--------|-----------| | 1 | **Read session state** | Load `prereq-output.json` + `context.json`. Resolve subscription | Cross-ref [subscription-resolution.md](../references/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](references/service-mapping.md) and [deploy-strategy.md](references/deploy-strategy.md)** | | 4 | **Select SKUs + WAF analysis** | Budget-aware SKU selection, inline WAF service guidance | ⛔ **You MUST read [sku-matrix.md](references/sku-matrix.md)** | | 5 | **Validate quotas + region capacity** | ⛔ Read [`subagent-quota.md`](references/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 `<<>>` / `<<>>` delimiters — do NOT summarize. Append the caller-provided inputs listed in [`subagent-quota.md`](references/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`](references/subagent-quota.md)** | | 6 | **Estimate costs** | ⛔ **You MUST read [pricing-guide.md](references/pricing-guide.md)** for methodology, then [pricing-guide-services.md](references/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`](references/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 `<<>>` / `<<>>` delimiters — do NOT summarize. Append data (services[], region, budget tier) AFTER the template block. Write results to `prepare-plan.json.costEstimate`. | [pricing-guide.md](references/pricing-guide.md) | | 7 | **Generate naming** | Centralized naming: suffix, prefix, all resource names | ⛔ **You MUST read [naming-patterns.md](references/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](references/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 | ### 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 | Error | Remediation | |-------|-------------| | Pricing API 400 | Verify `--sku` included. Free tiers: skip API | | MCP pricing unavailable | Dispatch [`subagent-pricing.md`](references/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 | --- Skills Agentes — https://skillsagentes.com/skills/microsoft/azure-skills/prepare