azure-deploy
Deploy applications to Azure App Service, Azure Functions, and Static Web Apps. USE THIS SKILL when users want to deploy, publish, host, or run their application on Azure. This skill detects application type (React, Vue, Angular, Next.js, Python, .NET, Java, etc.), recommends the optimal Azure service, provides local preview capabilities, and guides deployment. Trigger phrases include "deploy to Azure", "host on Azure", "publish to Azure", "run on Azure", "get this running in the cloud", "deploy my app", "Azure deployment", "set up Azure hosting", "deploy to App Service", "deploy to Functions", "deploy to Static Web Apps", "preview locally", "test before deploying", "what Azure service should I use", "help me deploy", etc. Also handles multi-service deployments with Azure Developer CLI (azd) and Infrastructure as Code when complexity is detected.
SKILL.md
| Name | azure-deploy |
| Description | Deploy applications to Azure App Service, Azure Functions, and Static Web Apps. USE THIS SKILL when users want to deploy, publish, host, or run their application on Azure. This skill detects application type (React, Vue, Angular, Next.js, Python, .NET, Java, etc.), recommends the optimal Azure service, provides local preview capabilities, and guides deployment. Trigger phrases include "deploy to Azure", "host on Azure", "publish to Azure", "run on Azure", "get this running in the cloud", "deploy my app", "Azure deployment", "set up Azure hosting", "deploy to App Service", "deploy to Functions", "deploy to Static Web Apps", "preview locally", "test before deploying", "what Azure service should I use", "help me deploy", etc. Also handles multi-service deployments with Azure Developer CLI (azd) and Infrastructure as Code when complexity is detected. |
name: azure-deploy description: Deploy applications to Azure App Service, Azure Functions, and Static Web Apps. USE THIS SKILL when users want to deploy, publish, host, or run their application on Azure. This skill detects application type (React, Vue, Angular, Next.js, Python, .NET, Java, etc.), recommends the optimal Azure service, provides local preview capabilities, and guides deployment. Trigger phrases include "deploy to Azure", "host on Azure", "publish to Azure", "run on Azure", "get this running in the cloud", "deploy my app", "Azure deployment", "set up Azure hosting", "deploy to App Service", "deploy to Functions", "deploy to Static Web Apps", "preview locally", "test before deploying", "what Azure service should I use", "help me deploy", etc. Also handles multi-service deployments with Azure Developer CLI (azd) and Infrastructure as Code when complexity is detected.
Azure Deploy Skill
Deploy applications to Azure with intelligent service selection, local preview, and guided deployment workflows.
Quick Start Decision Tree
User wants to deploy → Run detection workflow below
Phase 1: Application Detection
ALWAYS start by scanning the user's project to detect the application type.
Step 1.1: Check for Existing Azure Configuration
Look for these files first (HIGH confidence signals):
| File Found | Recommendation | Action |
|---|---|---|
azure.yaml | Already configured for azd | Use azd up to deploy |
function.json or host.json | Azure Functions project | Deploy as Functions |
staticwebapp.config.json | Static Web Apps project | Deploy as SWA |
If found, skip to the appropriate deployment section.
Step 1.2: Detect Application Framework
Scan for configuration files and dependencies:
Node.js / JavaScript / TypeScript:
package.json exists →
├── next.config.js/mjs/ts → Next.js
│ ├── Has `output: 'export'` → Static Web Apps (SSG)
│ └── Has API routes or no export config → App Service (SSR)
├── nuxt.config.ts/js → Nuxt
│ ├── Has `ssr: false` or `target: 'static'` → Static Web Apps
│ └── Otherwise → App Service (SSR)
├── angular.json → Angular → Static Web Apps
├── vite.config.* → Vite-based (React/Vue/Svelte) → Static Web Apps
├── gatsby-config.js → Gatsby → Static Web Apps
├── astro.config.mjs → Astro → Static Web Apps
├── nest-cli.json → NestJS → App Service
├── Has express/fastify/koa/hapi dependency → App Service
└── No framework, just static build → Static Web Apps
Python:
requirements.txt or pyproject.toml exists →
├── function_app.py exists → Azure Functions (v2 programming model)
├── Has flask dependency → App Service
├── Has django dependency → App Service
├── Has fastapi dependency → App Service
└── Has azure-functions dependency → Azure Functions
.NET:
*.csproj or *.sln exists →
├── <AzureFunctionsVersion> in csproj → Azure Functions
├── Blazor WebAssembly project → Static Web Apps
├── ASP.NET Core web app → App Service
└── .NET API project → App Service
Java:
pom.xml or build.gradle exists →
├── Has azure-functions-* dependency → Azure Functions
├── Has spring-boot dependency → App Service
└── Standard web app → App Service
Static Only:
index.html exists + no package.json/requirements.txt →
└── Pure static site → Static Web Apps
Step 1.3: Detect Multi-Service Architecture
Check for complexity indicators that suggest azd + IaC:
Multi-service triggers:
├── Monorepo structure (frontend/, backend/, api/, packages/, apps/)
├── docker-compose.yml with multiple services
├── Multiple package.json in different subdirectories
├── Database references in config (connection strings, .env files)
├── References to Redis, Service Bus, Event Hubs, Storage queues
├── User mentions "multiple environments", "staging", "production"
└── More than one deployable component detected
If multi-service detected → Recommend azd + Infrastructure as Code See Multi-Service Deployment Guide
Step 1.4: Confidence Assessment
After detection, assess confidence:
| Confidence | Criteria | Action |
|---|---|---|
| HIGH | Azure config file found (azure.yaml, function.json, staticwebapp.config.json) | Proceed with detected service |
| MEDIUM | Framework detected from dependencies | Explain recommendation, ask for confirmation |
| LOW | Ambiguous or no clear signals | Ask clarifying questions |
Clarifying questions for LOW confidence:
- "What type of application is this? (static website, API, full-stack, serverless functions)"
- "Does your app need server-side rendering or is it purely client-side?"
- "Will you need a database, caching, or other Azure services?"
Phase 2: Local Preview (No Azure Auth Required)
Before deploying, help users test locally.
Static Web Apps - Local Preview
# Install SWA CLI (one-time)
npm install -g @azure/static-web-apps-cli
# Start local emulator
swa start
# Or with specific paths
swa start ./dist --api-location ./api
# With a dev server proxy
swa start http://localhost:3000 --api-location ./api
Azure Functions - Local Preview
# Install Azure Functions Core Tools (one-time)
npm install -g azure-functions-core-tools@4
# Start local Functions runtime
func start
# With specific port
func start --port 7071
App Service Apps - Local Preview
Use the framework's built-in dev server:
# Node.js
npm run dev
# or
npm start
# Python Flask
flask run
# Python FastAPI
uvicorn main:app --reload
# .NET
dotnet run
# Java Spring Boot
./mvnw spring-boot:run
See Local Preview Guide for detailed setup instructions.
Phase 3: Prerequisites & Dependency Management
ALWAYS check and install missing dependencies before proceeding.
3.1 Azure Authentication (Auto-Login)
Check login status and automatically login if needed:
# Check if logged in, auto-login if not
if ! az account show &>/dev/null; then
echo "Not logged in to Azure. Starting login..."
az login
fi
# Verify and show current subscription
az account show --query "{name:name, id:id}" -o table
If the user has multiple subscriptions, help them select the correct one:
# List all subscriptions
az account list --query "[].{Name:name, ID:id, Default:isDefault}" -o table
# Set subscription
az account set --subscription "<name-or-id>"
3.2 Dependency Detection & Auto-Install
Run this check first and install any missing tools:
# Check all dependencies at once
check_deps() {
local missing=()
command -v az &>/dev/null || missing+=("azure-cli")
command -v func &>/dev/null || missing+=("azure-functions-core-tools")
command -v swa &>/dev/null || missing+=("@azure/static-web-apps-cli")
command -v azd &>/dev/null || missing+=("azd")
echo "${missing[@]}"
}
3.3 Install Missing Tools
Azure CLI (required for all deployments):
# macOS
brew install azure-cli
# Windows (PowerShell)
winget install Microsoft.AzureCLI
# Linux (Ubuntu/Debian)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Azure Functions Core Tools (for Functions projects):
# npm (all platforms)
npm install -g azure-functions-core-tools@4
# macOS
brew tap azure/functions && brew install azure-functions-core-tools@4
# Windows
winget install Microsoft.AzureFunctionsCoreTools
Static Web Apps CLI (for SWA projects):
npm install -g @azure/static-web-apps-cli
Azure Developer CLI (for multi-service/IaC):
# macOS
brew install azd
# Windows
winget install Microsoft.Azd
# Linux
curl -fsSL https://aka.ms/install-azd.sh | bash
3.4 Project Dependencies
Detect and install project-level dependencies:
# Node.js - install if node_modules missing
[ -f "package.json" ] && [ ! -d "node_modules" ] && npm install
# Python - create venv and install if missing
[ -f "requirements.txt" ] && [ ! -d ".venv" ] && python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
# .NET - restore packages
[ -f "*.csproj" ] && dotnet restore
# Java - install dependencies
[ -f "pom.xml" ] && mvn dependency:resolve
Phase 4: Single-Service Deployment (Azure CLI)
4.1 Static Web Apps Deployment
Create resource and deploy:
# Create resource group (if needed)
az group create --name <resource-group> --location <location>
# Create Static Web App
az staticwebapp create \
--name <app-name> \
--resource-group <resource-group> \
--location <location> \
--sku Free
# Get deployment token
az staticwebapp secrets list \
--name <app-name> \
--resource-group <resource-group> \
--query "properties.apiKey" -o tsv
# Deploy with SWA CLI
swa deploy ./dist \
--deployment-token <token> \
--env production
Plain HTML Site (Single File or No Build Step):
For plain HTML sites without a build process, SWA CLI requires content in a dedicated folder:
# Create output directory and copy files
mkdir -p dist && cp -r *.html *.css *.js *.png *.jpg *.svg dist/ 2>/dev/null || true
# Get deployment token
TOKEN=$(az staticwebapp secrets list \
--name <app-name> \
--resource-group <resource-group> \
--query "properties.apiKey" -o tsv)
# Deploy from dist folder
swa deploy ./dist --deployment-token "$TOKEN" --env production
# Clean up temp folder (optional)
rm -rf dist
Smart defaults:
- SKU:
Freefor dev/test,Standardfor production - Location: SWA has limited regions - use
centralus,eastus2,westus2,westeurope, oreastasia
See Static Web Apps Guide for detailed configuration.
4.2 Azure Functions Deployment
Create and deploy:
# Create resource group
az group create --name <resource-group> --location <location>
# Create storage account (required for Functions)
az storage account create \
--name <storage-name> \
--resource-group <resource-group> \
--location <location> \
--sku Standard_LRS
# Create Function App
az functionapp create \
--name <app-name> \
--resource-group <resource-group> \
--storage-account <storage-name> \
--consumption-plan-location <location> \
--runtime <node|python|dotnet|java> \
--runtime-version <version> \
--functions-version 4
# Deploy with func CLI
func azure functionapp publish <app-name>
Smart defaults:
- Plan: Consumption (pay-per-execution) for most cases
- Runtime version: Latest LTS for the detected language
See Azure Functions Guide for advanced scenarios.
4.3 App Service Deployment
Create and deploy:
# Create resource group
az group create --name <resource-group> --location <location>
# Create App Service plan
az appservice plan create \
--name <plan-name> \
--resource-group <resource-group> \
--location <location> \
--sku B1 \
--is-linux
# Create Web App
az webapp create \
--name <app-name> \
--resource-group <resource-group> \
--plan <plan-name> \
--runtime "<runtime>"
# Deploy code (zip deploy)
az webapp deploy \
--name <app-name> \
--resource-group <resource-group> \
--src-path <path-to-zip> \
--type zip
Runtime values by language:
- Node.js:
"NODE:18-lts","NODE:20-lts" - Python:
"PYTHON:3.11","PYTHON:3.12" - .NET:
"DOTNETCORE:8.0" - Java:
"JAVA:17-java17"
Smart defaults:
- Plan SKU:
B1for dev/test,P1v3for production - Always use Linux (
--is-linux) unless .NET Framework required
See App Service Guide for configuration options.
Phase 5: Multi-Service Deployment (azd + IaC)
When multiple services or infrastructure dependencies are detected, recommend Azure Developer CLI with Infrastructure as Code.
When to Use azd
- Multiple deployable components (frontend + API + functions)
- Needs database, cache, storage, or messaging services
- Requires consistent environments (dev, staging, production)
- Team collaboration with reproducible infrastructure
Initialize azd Project
# Initialize from scratch
azd init
# Or use a template
azd init --template <template-name>
Project Structure
project/
├── azure.yaml # azd configuration
├── infra/
│ ├── main.bicep # Main infrastructure
│ ├── main.parameters.json
│ └── modules/ # Reusable modules
├── src/
│ ├── web/ # Frontend
│ └── api/ # Backend
Deploy with azd
# Provision infrastructure + deploy code
azd up
# Or separately:
azd provision # Create infrastructure
azd deploy # Deploy application code
# Manage environments
azd env new staging
azd env select staging
azd up
See Multi-Service Guide for azure.yaml configuration. See Azure Verified Modules for Bicep module reference.
Troubleshooting Quick Reference
Common Issues
"Not logged in" errors:
az login
az account set --subscription "<name>"
"Resource group not found":
az group create --name <name> --location <location>
SWA deployment fails:
- Check build output directory is correct
- Verify deployment token is valid
- Ensure
staticwebapp.config.jsonis properly formatted
Functions deployment fails:
- Verify
host.jsonexists - Check runtime version matches function app configuration
- Ensure storage account is accessible
App Service deployment fails:
- Verify runtime matches application
- Check startup command if using custom entry point
- Review deployment logs:
az webapp log tail --name <app> --resource-group <rg>
See Troubleshooting Guide for detailed solutions.
Reference Files
Load these guides as needed for detailed information:
- 📦 App Service Guide - Full App Service deployment reference
- ⚡ Azure Functions Guide - Functions deployment and configuration
- 🌐 Static Web Apps Guide - SWA deployment and configuration
- 🖥️ Local Preview Guide - Local development setup
- 🏗️ Multi-Service Guide - azd and IaC patterns
- 📚 Azure Verified Modules - Bicep module reference
- 🔧 Troubleshooting Guide - Common issues and fixes
- 📋 Common Patterns - Shared commands (DRY reference)