$npx -y skills add microsoft/azure-skills --skill deploy-modelUnified Azure OpenAI model deployment skill with intelligent intent-based routing. Handles quick preset deployments, fully customized deployments (version/SKU/capacity/RAI policy), and capacity discovery across regions and projects. USE FOR: deploy model, deploy gpt, create deplo
| 1 | # Deploy Model |
| 2 | |
| 3 | > **Scope — read this first.** This skill creates model deployments **out-of-band** via Azure CLI / MCP / portal. For azd-managed Foundry projects (those scaffolded from `azd-ai-starter-basic` or via `azd ai agent init`), declare deployments in `azure.yaml services.ai-project.deployments[]` instead — `azd ai agent init` writes the entry from the sample manifest and `azd provision` creates the deployment through Bicep. See [foundry-agent/create/create-hosted.md](../../foundry-agent/create/create-hosted.md) for the Golden Path. Use this skill only for: (a) Foundry projects not managed by an azd project, (b) ad-hoc deployments outside the azd lifecycle. |
| 4 | |
| 5 | Unified entry point for all Azure OpenAI model deployment workflows. Analyzes user intent and routes to the appropriate deployment mode. |
| 6 | |
| 7 | ## Quick Reference |
| 8 | |
| 9 | | Mode | When to Use | Sub-Skill | |
| 10 | |------|-------------|-----------| |
| 11 | | **Preset** | Quick deployment, no customization needed | [preset/SKILL.md](preset/SKILL.md) | |
| 12 | | **Customize** | Full control: version, SKU, capacity, RAI policy | [customize/SKILL.md](customize/SKILL.md) | |
| 13 | | **Capacity Discovery** | Find where you can deploy with specific capacity | [capacity/SKILL.md](capacity/SKILL.md) | |
| 14 | |
| 15 | ## Intent Detection |
| 16 | |
| 17 | Analyze the user's prompt and route to the correct mode: |
| 18 | |
| 19 | ``` |
| 20 | User Prompt |
| 21 | │ |
| 22 | ├─ Simple deployment (no modifiers) |
| 23 | │ "deploy gpt-4o", "set up a model" |
| 24 | │ └─> PRESET mode |
| 25 | │ |
| 26 | ├─ Customization keywords present |
| 27 | │ "custom settings", "choose version", "select SKU", |
| 28 | │ "set capacity to X", "configure content filter", |
| 29 | │ "PTU deployment", "with specific quota" |
| 30 | │ └─> CUSTOMIZE mode |
| 31 | │ |
| 32 | ├─ Capacity/availability query |
| 33 | │ "find where I can deploy", "check capacity", |
| 34 | │ "which region has X capacity", "best region for 10K TPM", |
| 35 | │ "where is this model available" |
| 36 | │ └─> CAPACITY DISCOVERY mode |
| 37 | │ |
| 38 | └─ Ambiguous (has capacity target + deploy intent) |
| 39 | "deploy gpt-4o with 10K capacity to best region" |
| 40 | └─> CAPACITY DISCOVERY first → then PRESET or CUSTOMIZE |
| 41 | ``` |
| 42 | |
| 43 | ### Routing Rules |
| 44 | |
| 45 | | Signal in Prompt | Route To | Reason | |
| 46 | |------------------|----------|--------| |
| 47 | | Just model name, no options | **Preset** | User wants quick deployment | |
| 48 | | "custom", "configure", "choose", "select" | **Customize** | User wants control | |
| 49 | | "find", "check", "where", "which region", "available" | **Capacity** | User wants discovery | |
| 50 | | Specific capacity number + "best region" | **Capacity → Preset** | Discover then deploy quickly | |
| 51 | | Specific capacity number + "custom" keywords | **Capacity → Customize** | Discover then deploy with options | |
| 52 | | "PTU", "provisioned throughput" | **Customize** | PTU requires SKU selection | |
| 53 | | "optimal region", "best region" (no capacity target) | **Preset** | Region optimization is preset's specialty | |
| 54 | |
| 55 | ### Multi-Mode Chaining |
| 56 | |
| 57 | Some prompts require two modes in sequence: |
| 58 | |
| 59 | **Pattern: Capacity → Deploy** |
| 60 | When a user specifies a capacity requirement AND wants deployment: |
| 61 | 1. Run **Capacity Discovery** to find regions/projects with sufficient quota |
| 62 | 2. Present findings to user |
| 63 | 3. Ask: "Would you like to deploy with **quick defaults** or **customize settings**?" |
| 64 | 4. Route to **Preset** or **Customize** based on answer |
| 65 | |
| 66 | > 💡 **Tip:** If unsure which mode the user wants, default to **Preset** (quick deployment). Users who want customization will typically use explicit keywords like "custom", "configure", or "with specific settings". |
| 67 | |
| 68 | ## Project Selection (All Modes) |
| 69 | |
| 70 | Before any deployment, resolve which project to deploy to. This applies to **all** modes (preset, customize, and after capacity discovery). |
| 71 | |
| 72 | ### Resolution Order |
| 73 | |
| 74 | 1. **Check `PROJECT_RESOURCE_ID` env var** — if set, use it as the default |
| 75 | 2. **Check user prompt** — if user named a specific project or region, use that |
| 76 | 3. **If neither** — query the user's projects and suggest the current one |
| 77 | |
| 78 | ### Confirmation Step (Required) |
| 79 | |
| 80 | **Always confirm the target before deploying.** Show the user what will be used and give them a chance to change it: |
| 81 | |
| 82 | ``` |
| 83 | Deploying to: |
| 84 | Project: <project-name> |
| 85 | Region: <region> |
| 86 | Resource: <resource-group> |
| 87 | |
| 88 | Is this correct? Or choose a different project: |
| 89 | 1. ✅ Yes, deploy here (default) |
| 90 | 2. 📋 |