[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FDB4QS2DRGGCXMAMWC9AXW":3,"skill-same:01M6FDB4QS2DRGGCXMAMWC9AXW":53},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6FDB4QS2DRGGCXMAMWC9AXW","deploy-model",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmicrosoft\u002Fskills\u002Fdeploy-model\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[23,24,25],"deploy","deploy model","model","2026-11-10 10:12:30",false,"# Deploy Model\n\nUnified entry point for all Azure OpenAI model deployment workflows. Analyzes user intent and routes to the appropriate deployment mode.\n\n## Quick Reference\n\n| Mode | When to Use | Sub-Skill |\n|------|-------------|-----------|\n| **Preset** | Quick deployment, no customization needed | [preset\u002FSKILL.md](preset\u002FSKILL.md) |\n| **Customize** | Full control: version, SKU, capacity, RAI policy | [customize\u002FSKILL.md](customize\u002FSKILL.md) |\n| **Capacity Discovery** | Find where you can deploy with specific capacity | [capacity\u002FSKILL.md](capacity\u002FSKILL.md) |\n\n## Intent Detection\n\nAnalyze the user's prompt and route to the correct mode:\n\n```\nUser Prompt\n    │\n    ├─ Simple deployment (no modifiers)\n    │  \"deploy gpt-4o\", \"set up a model\"\n    │  └─> PRESET mode\n    │\n    ├─ Customization keywords present\n    │  \"custom settings\", \"choose version\", \"select SKU\",\n    │  \"set capacity to X\", \"configure content filter\",\n    │  \"PTU deployment\", \"with specific quota\"\n    │  └─> CUSTOMIZE mode\n    │\n    ├─ Capacity\u002Favailability query\n    │  \"find where I can deploy\", \"check capacity\",\n    │  \"which region has X capacity\", \"best region for 10K TPM\",\n    │  \"where is this model available\"\n    │  └─> CAPACITY DISCOVERY mode\n    │\n    └─ Ambiguous (has capacity target + deploy intent)\n       \"deploy gpt-4o with 10K capacity to best region\"\n       └─> CAPACITY DISCOVERY first → then PRESET or CUSTOMIZE\n```\n\n### Routing Rules\n\n| Signal in Prompt | Route To | Reason |\n|------------------|----------|--------|\n| Just model name, no options | **Preset** | User wants quick deployment |\n| \"custom\", \"configure\", \"choose\", \"select\" | **Customize** | User wants control |\n| \"find\", \"check\", \"where\", \"which region\", \"available\" | **Capacity** | User wants discovery |\n| Specific capacity number + \"best region\" | **Capacity → Preset** | Discover then deploy quickly |\n| Specific capacity number + \"custom\" keywords | **Capacity → Customize** | Discover then deploy with options |\n| \"PTU\", \"provisioned throughput\" | **Customize** | PTU requires SKU selection |\n| \"optimal region\", \"best region\" (no capacity target) | **Preset** | Region optimization is preset's specialty |\n\n### Multi-Mode Chaining\n\nSome prompts require two modes in sequence:\n\n**Pattern: Capacity → Deploy**\nWhen a user specifies a capacity requirement AND wants deployment:\n1. Run **Capacity Discovery** to find regions\u002Fprojects with sufficient quota\n2. Present findings to user\n3. Ask: \"Would you like to deploy with **quick defaults** or **customize settings**?\"\n4. Route to **Preset** or **Customize** based on answer\n\n> ? **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\".\n\n## Project Selection (All Modes)\n\nBefore any deployment, resolve which project to deploy to. This applies to **all** modes (preset, customize, and after capacity discovery).\n\n### Resolution Order\n\n1. **Check `PROJECT_RESOURCE_ID` env var** — if set, use it as the default\n2. **Check user prompt** — if user named a specific project or region, use that\n3. **If neither** — query the user's projects and suggest the current one\n\n### Confirmation Step (Required)\n\n**Always confirm the target before deploying.** Show the user what will be used and give them a chance to change it:\n\n```\nDeploying to:\n  Project:  \u003Cproject-name>\n  Region:   \u003Cregion>\n  Resource: \u003Cresource-group>\n\nIs this correct? Or choose a different project:\n  1. ✅ Yes, deploy here (default)\n  2. ? Show me other projects in this region\n  3. ? Choose a different region\n```\n\nIf user picks option 2, show top 5 projects in that region:\n\n```\nProjects in \u003Cregion>:\n  1. project-alpha (rg-alpha)\n  2. project-beta (rg-beta)\n  3. project-gamma (rg-gamma)\n  ...\n```\n\n> ⚠️ **Never deploy without showing the user which project will be used.** This prevents accidental deployments to the wrong resource.\n\n## Pre-Deployment Validation (All Modes)\n\nBefore presenting any deployment options (SKU, capacity), always validate both of these:\n\n1. **Model supports the SKU** — query the model catalog to confirm the selected model+version supports the target SKU:\n   ```bash\n   az cognitiveservices model list --location \u003Cregion> --subscription \u003Csub-id> -o json\n   ```\n   Filter for the model, extract `.model.skus[].name` to get supported SKUs.\n\n2. **Subscription has available quota** — check that the user's subscription has unallocated quota for the SKU+model combination:\n   ```bash\n   az cognitiveservices usage list --location \u003Cregion> --subscription \u003Csub-id> -o json\n   ```\n   Match by usage name pattern `OpenAI.\u003CSKU>.\u003Cmodel-name>` (e.g., `OpenAI.GlobalStandard.gpt-4o`). Compute `available = limit - currentValue`.\n\n> ⚠️ **Warning:** Only present options that pass both checks. Do NOT show hardcoded SKU lists — always query dynamically. SKUs with 0 available quota should be shown as ❌ informational items, not selectable options.\n\n> ? **Quota management:** For quota increase requests, usage monitoring, and troubleshooting quota errors, defer to the [quota skill](..\u002F..\u002Fquota\u002Fquota.md) instead of duplicating that guidance inline.\n\n## Prerequisites\n\nAll deployment modes require:\n- Azure CLI installed and authenticated (`az login`)\n- Active Azure subscription with deployment permissions\n- Azure AI Foundry project resource ID (or agent will help discover it via `PROJECT_RESOURCE_ID` env var)\n\n## Sub-Skills\n\n- **[preset\u002FSKILL.md](preset\u002FSKILL.md)** — Quick deployment to optimal region with sensible defaults\n- **[customize\u002FSKILL.md](customize\u002FSKILL.md)** — Interactive guided flow with full configuration control\n- **[capacity\u002FSKILL.md](capacity\u002FSKILL.md)** — Discover available capacity across regions and projects\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fmicrosoft\u002Fskills\u002Fdeploy-model",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill deploy-model",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill deploy-model",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill deploy-model","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmicrosoft\u002Fskills\u002Fdeploy-model\u002FSKILL.md",true,[],[54,65,75,84,90,97],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":62,"publishedAt":26},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[25,63,64],"model hierarchy","model hierarchy skill",{"skillNo":66,"name":67,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":71,"publishedAt":26},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[70],{"categoryNo":60,"categoryName":61,"taxonomyType":20,"taxonomyTypeDesc":21},[72,73,74],"MCP","zoom","zoom mcp",{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":26},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[81,82,83,73],"sdk","zoom apps sdk","apps",{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":26},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[86],{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":26},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[95],{"categoryNo":60,"categoryName":61,"taxonomyType":20,"taxonomyTypeDesc":21},[92],{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":26},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[99]]