mcpbeat

Python Appservice Deploy

microsoft/python-appservice-deploy

Deploy Python (Flask/Django/FastAPI) code to Azure App Service Linux. WHEN: \"Flask App Service\", \"Django App Service\", \"FastAPI App Service\", \"deploy Python to App Service\". DO NOT USE FOR: Container Apps, Functions, non-Python, Terraform/Bicep/IaC, full infra — use azure-prepare.

11k tokens
context cost
the whole folder, loaded on every use
13
files
ships runnable scripts
1
copies elsewhere
how many repositories repackaged it
6 d ago
last touched
this folder, not the whole repository

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/skills --skill python-appservice-deploy

What comes with it

39 961 bytes besides the instruction
references/create-app.md
references/deploy-azcli.md
references/deploy-azd.md
references/detect.md
references/errors.md
references/post-deploy-message.md
references/startup-commands.md
references/transient-retry.md
scripts/generate-app-name.ps1
scripts/generate-app-name.sh
scripts/retry-az-create.ps1
scripts/retry-az-create.sh

The instruction itself

4 sections, as written by the author

Python on Azure App Service — Code Deploy

Deploys Python (Flask, Django, FastAPI, generic) code to Azure App Service Linux (P0v3, Python 3.14). Creates RG + Plan + Web App if missing. Hand off to azure-prepare for VNet, Key Vault, databases, or IaC.

MCP tools used: mcp_azure_mcp_subscription_list, mcp_azure_mcp_group_list, mcp_azure_mcp_appservice, mcp_azure_mcp_azd (when azure.yaml is present).

Workflow

  • Resolve context — smart defaults, minimal prompts. Only the app name is interactive; RG (<app>-rg), Plan (<app>-plan), region (current az default or eastus2), subscription are derived. create-app.md §1.
  • Detect framework (advisory, never blocks). detect.md.
  • Choose pathazure.yaml host: appservice → deploy-azd.md; else deploy-azcli.md.
  • Ensure RG → Plan (P0v3 --is-linux) → Web App (--runtime "PYTHON:3.14") exist. On transient ARM errors, follow transient-retry.md. create-app.md.
  • Set startup — Flask/Django: none (Oryx auto-detects). FastAPI: always python -m uvicorn main:app --host 0.0.0.0. Other: warn. startup-commands.md.
  • Set SCM_DO_BUILD_DURING_DEPLOYMENT=true.
  • Deployazd deploy or az webapp deploy --type zip --track-status false.
  • STOP. Print the post-deploy message (post-deploy-message.md) and end the turn.

Hard rules

  • NO POST-DEPLOY VERIFICATION — after deploy returns, do not run az webapp log tail, curl, Invoke-WebRequest, or any health probe. App Service needs 2–3 min to warm; a quiet log or early 5xx is not failure.
  • SHELL SAFETY — for --runtime always use "PYTHON:3.14" (colon). Never "PYTHON|3.14" (pipe is a shell operator).
  • NEVER az webapp up — deprecated. Use Step 7 commands.
  • URL FORMAT — present endpoints as https://... URLs.

Error Handling

See errors.md for the full symptom → cause → fix matrix. Quick triage: missing plan/app → re-run Step 4; container ping timeout on 8000 → fix startup (Step 5); ModuleNotFoundError after deploy → ensure Step 6 ran, redeploy.

Repackaged in 1 other repositories

same content, different owner
microsoft/azure-skills open on GitHub →

How to use it

Copy the folder

Take microsoft/python-appservice-deploy from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.