Azure Architecture Autopilot
github/awesome-copilot
Designs Azure infrastructure from a natural-language description, or diagrams an existing resource group, then refines the design through conversation and deploys it with Bicep.
Official agent skill
by Azure-Samples in Azure-Samples/get-started-with-ai-agents
Creates an azd environment, checks RBAC and model quota, provisions an AI agent app on Azure with azd up and health-checks the deployed app.
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Azure-Samples/get-started-with-ai-agents up --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/up .claude/skills/up && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .claude/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/upType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Azure-Samples/get-started-with-ai-agents up --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/up .agents/skills/up && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .agents/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Azure-Samples/get-started-with-ai-agents up --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/up .cursor/skills/up && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .cursor/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Azure-Samples/get-started-with-ai-agents.git --path .github/skills/up--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Azure-Samples/get-started-with-ai-agents up --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/up .gemini/skills/up && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .gemini/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Azure-Samples/get-started-with-ai-agents upInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/up .github/skills/up && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .github/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Azure-Samples/get-started-with-ai-agents up --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure-Samples/get-started-with-ai-agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/up .opencode/skills/up && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "up" agent skill from https://github.com/Azure-Samples/get-started-with-ai-agents/tree/main/.github/skills/up into .opencode/skills/up/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "up", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
upCreates an azd environment, checks RBAC and model quota, provisions an AI agent app on Azure with azd up and health-checks the deployed app.
The goal is to provision a fresh Azure environment end to end and confirm the app starts. The agent re-reads its own SKILL.md from disk first, then makes you pick an environment before anything else: it lists existing azd environments, notes the default, and suggests a new name by incrementing the highest numbered one it finds, for example agent1 to agent2, or generating a default name when none are numbered.
It then checks prerequisites such as RBAC and model quota, provisions the infrastructure with `azd up`, and health-checks the app. All commands run in the PowerShell tool. Quick ones like `az account show`, `az role assignment list`, `azd env new` and `azd env set` run synchronously with a 30-second wait, while `azd up` and `azd down` run asynchronously and are polled every 15 to 20 seconds so you see streaming output as it happens. Related short commands are chained into one call when no branching is needed. An example run is included as `up-example.md`.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 10eb421. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
azFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use az, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Azure AI Agent App Deployment loads about 4.7k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 2,016 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
, fall back to reading `.azure/<envName>/.env` and parsing the `SERVICE_API_URI` line.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Azure-Samples/get-started-with-ai-agents at commit 10eb421, republished under its MIT licence (© Azure-Samples). 2,016 words, ~4,655 tokens.
.claude/skills/up/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Provision a fresh Azure environment end-to-end and verify the app starts successfully.
When the skill is triggered, always re-read this SKILL.md file from disk before executing, in case it has been updated since the last run.
Then proceed to Step 1 (Choose environment name) immediately — the user must pick an environment before anything else.
All shell commands in this skill must be run using the powershell tool with
mode="sync". Use a short initial_wait (30 seconds) for quick commands like
az account show, az ad signed-in-user show, az role assignment list,
azd env list, azd env new, and azd env set.
Exception — azd up and azd down: These long-running commands must be run
with mode="async" and a short initial_wait (10 seconds) so the user can see
streaming progress output in real time (just like running in a terminal). After
launching, poll frequently using read_powershell with a short delay (15–20
seconds) — this is critical so the user sees output updates as they happen, similar
to watching the command in a terminal. Keep calling read_powershell in a loop
(each call in a new response turn) until the command completes or you receive a
completion notification. Do NOT use long delays like 120 seconds — that defeats the
purpose of streaming output.
Chain short related commands with && or ; into a single powershell call
when they have no branching logic between them.
First, check whether there is already a default azd environment:
$existingEnvs = azd env list -o json 2>$null | ConvertFrom-JsonFind the default environment (the entry where IsDefault is true or the DefaultEnvironment
field is set, depending on the azd version).
Regardless of whether a default environment exists, always prepare a suggested new name for use as a choice.
Scan $existingEnvs for names matching the pattern <prefix><number> (e.g., agent1,
test-env3, agent-qt-2). If found, take the one with the highest number and suggest
the next increment (e.g., agent2, test-env4, agent-qt-3).
If no numbered environments exist, generate a default name:
$suffix = -join ((0..9) + ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') | Get-Random -Count 6)
$suggestedName = "agent-qt-$suffix"If a default environment was found, present the user with choices:
<defaultEnvName> — re-provision/update the existing
environment (first choice, include the environment name in the label)<suggestedName> — use the suggested new name from 1bFor example:
Do you want to
azd upthe current environmentagent-qt-2, or create a new one?
If no default environment was found, present the user with choices:
<suggestedName> — use the name generated in 1bThe resource group will be rg-<envName>.
After resolving the environment name, check whether the selected environment already has
AZURE_EXISTING_AIPROJECT_RESOURCE_ID set:
$existingProject = azd env get-value AZURE_EXISTING_AIPROJECT_RESOURCE_ID --environment $envName 2>$nullIf the value is non-empty, the environment is pre-configured to use an existing AI project.
Print the short-path steps overview and jump directly to Step 9 (azd up):
Up Skill — Steps Overview (environment:
<envName>, existing AI project)
- ✅ Choose environment name 2–8. ⏭️ Skipped (existing AI project detected)
- Run
azd up- Retrieve the app endpoint
- Health-check the app
- Report results
If the value is empty or not set, print the full-path steps overview and continue to Step 2:
Up Skill — Steps Overview (environment:
<envName>)
- ✅ Choose environment name
- Resolve subscription
- Check RBAC permissions
- Resolve region
- Check agent model quota
- Ask about Azure AI Search
- Check embedding model quota (if AI Search enabled)
- Create the azd environment and set overrides
- Run
azd up- Retrieve the app endpoint
- Health-check the app
- Report results
Auto-detect the default Azure Subscription ID using this priority order (use the first one found):
AZURE_SUBSCRIPTION_IDazd config get defaults.subscription (may return empty)az account show --query id -o tsv (current Azure CLI login)Present the user with 2 choices:
az account show --query "{id:id, name:name}" -o json) as the default choiceIf no subscription was detected, skip choice 1 and ask the user to provide one directly.
Show the resolved subscription to the user for confirmation before proceeding.
Verify the user has sufficient permissions to create role assignments on the subscription, which is required for provisioning. The user needs Owner or User Access Administrator — either assigned directly or inherited through a group membership.
$principalId = az ad signed-in-user show --query id -o tsv
$subScope = "/subscriptions/<subscriptionId>"
$roles = az role assignment list --assignee $principalId --scope $subScope --query "[].roleDefinitionName" -o json | ConvertFrom-JsonCheck if $roles contains Owner or User Access Administrator.
The user may hold the required role through a group membership. Query the user's group memberships and check whether any of those groups have the required roles on the subscription.
$groupIds = az ad signed-in-user get-member-of --query "[].id" -o json | ConvertFrom-JsonIf $groupIds is non-empty, check role assignments for each group on the subscription:
$groupRoles = @()
foreach ($gid in $groupIds) {
$gr = az role assignment list --assignee $gid --scope $subScope --query "[].roleDefinitionName" -o json 2>$null | ConvertFrom-Json
if ($gr) { $groupRoles += $gr }
}Check if $groupRoles contains Owner or User Access Administrator.
azd up will fail because the deployment creates Microsoft.Authorization/roleAssignmentsCheck environment variable AZURE_LOCATION first. If not set,
ask the user — must be one of: eastus, eastus2, swedencentral, westus, westus3.
Default to eastus if the user has no preference.
Show the resolved region to the user for confirmation before proceeding.
Before provisioning, verify the default agent model has sufficient quota in the selected region.
Default model: gpt-5-mini | SKU: GlobalStandard | Required capacity: 80
$usage = az cognitiveservices usage list --location <region> --subscription <subscriptionId> -o json | ConvertFrom-Json
$modelList = az cognitiveservices model list --location <region> --subscription <subscriptionId> -o json | ConvertFrom-JsonCache both $usage and $modelList — they are reused in Step 7 for embedding checks.
$defaultUsageName = "OpenAI.GlobalStandard.gpt-5-mini"
$entry = $usage | Where-Object { $_.name.value -eq $defaultUsageName }If the entry exists, compute available = limit - currentValue.
available >= 80, the default model has enough quota — skip to Step 6.available < 80, quota is insufficient — continue to 5c.Report the finding to the user (e.g., "gpt-5-mini has 40/80 quota available — insufficient").
From the quota usage list, find all GPT entries with Global or GlobalStandard SKUs
that have sufficient available quota:
$gptEntries = $usage | Where-Object {
$_.name.value -match '^OpenAI\.(Global|GlobalStandard)\.gpt-' -and
($_.limit - $_.currentValue) -ge 80
}For each candidate, cross-reference with $modelList to confirm the model is actually
deployable (exists with format OpenAI and is not retired). Discard any candidate not
confirmed by the model list.
Use this preference order (higher is better):
gpt-5.2gpt-5.2-minigpt-5.1gpt-5.1-minigpt-5gpt-5-minigpt-4.1gpt-4.1-minigpt-4ogpt-4o-miniWithin the same model name, prefer GlobalStandard over Global.
Present the top candidate to the user with:
Global or GlobalStandard)Ask for confirmation before proceeding.
For the selected model, look up the version from the model list:
$match = $modelList | Where-Object {
$_.model.name -eq '<selectedModel>' -and
$_.model.format -eq 'OpenAI'
}If multiple versions exist, prefer the newest Generally Available version. If only preview versions exist, warn the user before proceeding.
Store the resolved agent model name, SKU, and version for use in Step 8.
If no GPT model in Global or GlobalStandard has sufficient quota (≥ 80) in the
selected region, stop and report the issue. Suggest the user try a different region or
request a quota increase.
Ask the user whether they want to enable Azure AI Search for this deployment. Azure AI Search adds vector search and RAG capabilities but requires an embedding model and an additional Azure Search resource.
USE_AZURE_AI_SEARCH_SERVICE=false in the template).Only run this step if the user opted into Azure AI Search in Step 6.
Default model: text-embedding-3-small | SKU: Standard | Required capacity: 50
Reuse the $usage and $modelList cached from Step 5a.
$embedUsageName = "OpenAI.Standard.text-embedding-3-small"
$embedEntry = $usage | Where-Object { $_.name.value -eq $embedUsageName }If the entry exists, compute available = limit - currentValue.
available >= 50, the default embedding model has enough quota — skip to Step 8.available < 50 — continue to 7b.Report the finding to the user.
From the quota usage list, find all embedding entries with sufficient quota:
$embedEntries = $usage | Where-Object {
$_.name.value -match '^OpenAI\.(Global|GlobalStandard|Standard)\.text-embedding-' -and
($_.limit - $_.currentValue) -ge 50
}Cross-reference with $modelList to confirm each candidate is deployable.
Use this preference order (higher is better):
text-embedding-3-largetext-embedding-3-smalltext-embedding-ada-002Within the same model name, prefer Standard over GlobalStandard over Global.
Present the top candidate to the user with model name, SKU, and available quota. Ask for confirmation before proceeding.
For the selected model, look up the version from $modelList:
$embedMatch = $modelList | Where-Object {
$_.model.name -eq '<selectedEmbedModel>' -and
$_.model.format -eq 'OpenAI'
}Prefer the newest Generally Available version.
Store the resolved embedding model name, SKU, version, and dimensions for use in Step 8.
Note: If using text-embedding-3-large, set dimensions to 1536.
If using text-embedding-3-small, set dimensions to 1536.
If using text-embedding-ada-002, set dimensions to 1536.
If no embedding model has sufficient quota (≥ 50) in the selected region, warn the
user that AI Search cannot be enabled. Offer to proceed without AI Search (set
USE_AZURE_AI_SEARCH_SERVICE=false) or stop.
If the user chose an existing environment in Step 1c, skip creation — the environment already exists. Proceed to 8b.
If the user chose a new environment name, create it:
azd env new $envName --no-promptIf this fails, stop and report the error.
azd env set AZURE_SUBSCRIPTION_ID <subscriptionId> --environment $envName --no-prompt
azd env set AZURE_LOCATION <region> --environment $envName --no-promptUse the values collected in Steps 2 and 4.
If Step 5 determined an alternative agent model, apply the agent model overrides:
azd env set AZURE_AI_AGENT_MODEL_NAME "<selectedAgentModel>" --environment $envName --no-prompt
azd env set AZURE_AI_AGENT_DEPLOYMENT_SKU "<selectedAgentSku>" --environment $envName --no-prompt
azd env set AZURE_AI_AGENT_MODEL_VERSION "<selectedAgentVersion>" --environment $envName --no-prompt
azd env set AZURE_AI_AGENT_MODEL_FORMAT "OpenAI" --environment $envName --no-prompt
azd env set AZURE_AI_AGENT_DEPLOYMENT_CAPACITY "80" --environment $envName --no-promptIf the user enabled AI Search (Step 6), set:
azd env set USE_AZURE_AI_SEARCH_SERVICE "true" --environment $envName --no-promptIf Step 7 determined an alternative embedding model, apply the embedding model overrides:
azd env set AZURE_AI_EMBED_MODEL_NAME "<selectedEmbedModel>" --environment $envName --no-prompt
azd env set AZURE_AI_EMBED_DEPLOYMENT_NAME "<selectedEmbedModel>" --environment $envName --no-prompt
azd env set AZURE_AI_EMBED_DEPLOYMENT_SKU "<selectedEmbedSku>" --environment $envName --no-prompt
azd env set AZURE_AI_EMBED_MODEL_VERSION "<selectedEmbedVersion>" --environment $envName --no-prompt
azd env set AZURE_AI_EMBED_DIMENSIONS "<dimensions>" --environment $envName --no-promptazd upThis provisions infrastructure and deploys the app. It typically takes 10–15 minutes.
Run with mode="async" so the user sees live streaming output:
azd up --environment $envName --no-promptAfter launching, poll with short delays — call read_powershell with a 15–20 second
delay on each turn, and show the user whatever new output appeared. Repeat in a loop
(one read_powershell per response turn) until the command completes. This gives the
user a near-real-time view of provisioning progress. Do NOT use 120-second delays.
azd up fails, report the error and offer to run azd down --environment $envName --force --purge --no-prompt (also mode="async") to clean up.azd up succeeds, proceed to the health check.After azd up succeeds, get the deployed app URL:
$serviceUri = azd env get-value SERVICE_API_URI --environment $envNameIf that returns empty, fall back to reading .azure/<envName>/.env and parsing the SERVICE_API_URI line.
Try up to 5 times (15 seconds apart) to reach the app:
$healthy = $false
for ($i = 1; $i -le 5; $i++) {
try {
$resp = Invoke-WebRequest -Uri $serviceUri -UseBasicParsing -TimeoutSec 30 -ErrorAction Stop
if ($resp.StatusCode -ge 200 -and $resp.StatusCode -lt 400) {
$healthy = $true
Write-Host "Attempt $i - HTTP $($resp.StatusCode) - App is running!"
break
}
} catch {
Write-Host "Attempt $i - $($_.Exception.Message)"
}
if ($i -lt 5) { Start-Sleep -Seconds 15 }
}Print a summary with:
| Field | Value |
|---|---|
| Subscription | <subscriptionId> |
| Environment | $envName |
| Resource Group | rg-$envName |
| Region | <region> |
| Agent Model | <agentModel> (<agentSku>) |
| AI Search | Enabled / Disabled |
| Embedding Model | <embedModel> (<embedSku>) or N/A |
| App URL | $serviceUri |
| Status | ✅ PASS or ❌ FAIL |
azd up succeeded AND health check returned HTTP 2xx/3xx.azd up failed or the app did not respond after 5 retries.If the test failed, ask the user whether to tear down with:
azd down --environment $envName --force --purge --no-promptIf the test passed, congratulate and remind them the environment is still running (costs apply) and offer to tear it down.
© Azure-Samples, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .github/skills/up of Azure-Samples/get-started-with-ai-agents.
Open the folder on GitHubat commit 10eb421
Azure AI Agent App Deployment next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Azure AI Agent App Deployment this skillAzure-Samples/get-started-with-ai-agents | 374 | — | ~4.7k | Automated safety check: Notes | MIT | |
| Azure Architecture Autopilotgithub/awesome-copilot | 40k | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Azure Bicep Skilltimothywarner-org/claude-code | 224 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Update Help PlaceholdersPSBicep/PSBicep | 152 | — | ~299 | Automated safety check: Pass | MIT | |
| Azsdk Common Live And Recorded TestsAzure/azure-sdk-tools | 134 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Azv Azure To BicepAzure/AZVerify | 101 | — | ~5.4k | Automated safety check: Warn | MIT |
github/awesome-copilot
Designs Azure infrastructure from a natural-language description, or diagrams an existing resource group, then refines the design through conversation and deploys it with Bicep.
timothywarner-org/claude-code
A skill your agent uses when authoring, reviewing, or refactoring Azure Bicep code.
PSBicep/PSBicep
Update placeholders in PSBicep help markdown files. An agent skill from PSBicep/PSBicep.
Azure/azure-sdk-tools
Deploy test resources and run Azure SDK tests in live, record, or playback mode.
Azure/AZVerify
Reverse-engineer a live Azure scope (resource group or filtered subscription) into deployment-ready, modular Bicep templates with parameter files.
microsoft/skills
Build AI applications using Azure AI Projects SDK for JavaScript (@azure/ai-projects).
Categories
Creates an azd environment, checks RBAC and model quota, provisions an AI agent app on Azure with azd up and health-checks the deployed app. The goal is to provision a fresh Azure environment end to end and confirm the app starts.md from disk first, then makes you pick an environment before anything else: it lists existing azd environments, notes the default, and suggests a new name by incrementing the highest numbered one it finds, for example agent1 to agent2, or generating a default name when none are numbered.
Azure AI Agent App Deployment fits situations like: deploying the AI agent sample app to a new Azure environment; choosing or creating an azd environment name; checking RBAC and model quota before provisioning; verifying that the deployed agent app responds.
Run `npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a claude-code`. Or copy the skill folder (.github/skills/up in Azure-Samples/get-started-with-ai-agents) into .claude/skills/up in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a codex`. Or copy the skill folder (.github/skills/up in Azure-Samples/get-started-with-ai-agents) into .agents/skills/up in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Azure-Samples/get-started-with-ai-agents --skill up -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/up, .gemini/skills/up, .github/skills/up and .opencode/skills/up in your project.
Going by SKILL.md and its folder, Azure AI Agent App Deployment needs the command-line tools its instructions call (az). Our summary lists: The az and azd command-line tools, signed in to Azure; Role assignment rights and model quota in the target subscription; PowerShell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Azure AI Agent App Deployment is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Azure AI Agent App Deployment: Azure Architecture Autopilot (github/awesome-copilot, 40k stars), Azure Bicep Skill (timothywarner-org/claude-code, 224 stars), Update Help Placeholders (PSBicep/PSBicep, 152 stars) and Azsdk Common Live And Recorded Tests (Azure/azure-sdk-tools, 134 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Azure-Samples (a GitHub organization, an official publisher) maintains it in Azure-Samples/get-started-with-ai-agents, which has 374 GitHub stars. The repository was last updated on August 11, 2026.
Source: Azure-Samples/get-started-with-ai-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.