Kipt

Your prompts and skills, one keystroke away.

Explore

Python App Service deploy skill: Flask, Django and FastAPI to Azure

The python-appservice-deploy skill has coding agents deploy Flask, Django or FastAPI code to Azure App Service on Linux. How to install and use it.

By the Kipt team · Updated 28 October 2026

Source: microsoft/azure-skills · Maintainer: Microsoft · License: MIT · Checked: 28 October 2026

What is the Python App Service deploy skill?

The python-appservice-deploy skill is Microsoft's code-push recipe for Python web apps on Azure App Service. It tells a coding agent how to take a Flask, Django or FastAPI project in your working folder, create the Azure resources it needs if they are missing, and deploy it to App Service on Linux with one question to you: the app name.

Its description reads: "Deploy Python (Flask/Django/FastAPI) code to Azure App Service Linux." It also says what it is not for: "Container Apps, Functions, non-Python, Terraform/Bicep/IaC, full infra", which it sends to azure-prepare.

The skill ships in microsoft/azure-skills, the Azure Skills Plugin, which the README says is synced automatically from microsoft/GitHub-Copilot-for-Azure. The SKILL.md frontmatter gives version 1.1.1 and author Microsoft.

As of 28 October 2026, its skills.sh page listed about 231,400 installs (snapshot, 28 October 2026).

What does it do?

The SKILL.md is under 3 KB and lays out an eight-step workflow. Eight reference files and two helper scripts, each in a Bash and a PowerShell version, hold the detail.

Step What the agent does
1. Resolve context Asks only for the app name; derives <app>-rg, <app>-plan, the region (your az default or eastus2) and the subscription
2. Detect framework Reads requirements.txt or pyproject.toml for flask, django or fastapi; never blocks on an unknown result
3. Choose a path Uses azd deploy if azure.yaml has host: appservice, otherwise the Azure CLI
4. Create resources Runs a show-or-create pair for the resource group, a Linux P0v3 plan and a web app on PYTHON:3.14
5. Set startup None for Flask or Django; a uvicorn command for FastAPI; a warning for anything else
6. Enable build Sets SCM_DO_BUILD_DURING_DEPLOYMENT=true so dependencies install on the server
7. Deploy Zips the project and runs az webapp deploy --type zip --track-status false, or azd deploy
8. Stop Prints the URL and log commands, then ends the turn

Smart defaults. Before creating anything, the agent prints a summary of the names, region, SKU and runtime it will use, and proceeds unless you reply "stop". If you leave the name blank, scripts/generate-app-name.sh turns the folder name into a valid App Service name with an 8-character random suffix.

Startup rules that match the platform. Microsoft's Python on App Service configuration guide says the container looks for a Django wsgi.py or a Flask app.py or application.py and starts Gunicorn, and falls back to a default app otherwise. FastAPI isn't in that list, and the skill doesn't rely on auto-detection for it: it always sets python -m uvicorn main:app --host 0.0.0.0. The skill notes that "uvicorn defaults to 127.0.0.1, which causes App Service container-ping timeouts."

Server-side builds. The same Microsoft guide says to set SCM_DO_BUILD_DURING_DEPLOYMENT to true "before deploying a source archive with az webapp deploy." The Bash zip command excludes .git, virtual environments, __pycache__, .env and node_modules, which keeps local secrets and non-portable venvs out of the upload. The PowerShell version skips the same folders but not .env, so check for one before you deploy from Windows.

Retries for flaky Azure calls. scripts/retry-az-create.sh retries create commands up to two more times on connection resets, 429s and 502 to 504 errors, with 5 and 15 second waits. It never retries real errors such as AuthorizationFailed, SkuNotAvailable or QuotaExceeded.

Shell safety. The skill always passes the runtime as PYTHON:3.14 with a colon, because, in the SKILL.md's words, "pipe is a shell operator". Azure still reports it in pipe form, as PYTHON|3.14, which the skill says is normal.

How do you install the Python App Service deploy skill?

The repo README documents several routes.

Skill only. The command on skills.sh copies just this folder:

npx skills add https://github.com/microsoft/azure-skills --skill python-appservice-deploy

Claude Code: the Azure Skills Plugin. Run inside Claude Code:

/plugin install azure@claude-plugins-official

Or run /plugin and search for "azure". The plugin adds the Azure MCP Server, and the skill lists Azure MCP tools for subscriptions, resource groups, App Service and azd. See Claude Code plugins.

GitHub Copilot CLI:

/plugin marketplace add microsoft/azure-skills
/plugin install azure@azure-skills

Codex, Cursor and Gemini CLI. For Codex, the README says to run codex plugin marketplace add microsoft/azure-skills, then install azure from /plugins. For Cursor, use the Cursor Marketplace or Settings, then Plugins. For Gemini CLI, run gemini extensions install https://github.com/microsoft/azure-skills. See Codex skills and Cursor skills.

Prerequisites, per the README: an Azure account or subscription, Node.js 18 or later on your PATH, the Azure CLI signed in with az login, and the Azure Developer CLI signed in with azd auth login if you plan to use deployment workflows.

How do you use it?

Open the agent in your project folder and ask for a deploy. The skill is model-invoked; its trigger phrases include "Flask App Service", "Django App Service", "FastAPI App Service" and "deploy Python to App Service".

Example prompts (suggestions):

  • Deploy this Flask app to Azure App Service.
  • Deploy this FastAPI project to App Service. The app object is in app/main.py.
  • Deploy this Django site to App Service in westus3 under the resource group my-team-rg.
  • Push this Python API to App Service on a B1 plan for testing.
  • My App Service app shows ModuleNotFoundError after deploy. What did I miss?

Expect a short defaults summary, a few az commands, and a final message with the https://<app>.azurewebsites.net URL, a note to wait 2 to 3 minutes, and the commands to turn on and tail logs yourself.

Tips and limits

From the repo, Microsoft Learn and skills.sh, not from testing:

  • It creates billable resources. The default plan is P0v3, one of the Premium V3 sizes. If you only want a test site, ask for a cheaper SKU; the skill respects it but notes P0v3 is its default. Check App Service pricing for your region.
  • Success means "upload accepted". With --track-status false, the deploy command returns once the zip is accepted, not when the build finishes. If the site never starts, the skill points to az webapp log deployment list and show for the build logs.
  • No az webapp up. The skill bans it as deprecated, and the Azure CLI reference marks az webapp up as Deprecated.
  • Django settings are on you. The startup file reminds you to add <app>.azurewebsites.net to ALLOWED_HOSTS. Microsoft's guide also suggests reading WEBSITE_HOSTNAME and keeping SECRET_KEY and DEBUG in app settings.
  • Generic apps need a startup command. For plain WSGI or ASGI apps the code deploys, but the agent leaves the startup command to you and prints Gunicorn and uvicorn examples.
  • Audits. On skills.sh, Gen Agent Trust Hub rated the skill Pass (Safe), Socket Pass and Snyk Pass (low risk), all on 29 July 2026.

The MIT License lets you copy and change the skill as long as you keep Microsoft's copyright and license notices.

Save it in your Kipt library

An edited copy helps if your team has fixed rules the stock skill can't guess, such as a default region, a cheaper dev SKU or a naming scheme. In Kipt, open Skills and paste the skill's GitHub folder link into the import box, or drop the folder or a .zip. The copy carries the skill files only, not the plugin's MCP setup. Skills in your private GitHub repo install into Claude Code or Codex with one command:

npx skills add https://github.com/<you>/<repo>.git --all -g

Kipt is not affiliated with Microsoft.

Similar skills

Questions

What is the python-appservice-deploy skill?

python-appservice-deploy is an Agent Skill in Microsoft's microsoft/azure-skills repo. It tells a coding agent how to push Python web app code (Flask, Django, FastAPI or a generic app) to Azure App Service on Linux, creating the resource group, plan and web app first if they don't exist.

How do I install the python-appservice-deploy skill?

Run npx skills add https://github.com/microsoft/azure-skills --skill python-appservice-deploy to copy just this skill. In Claude Code you can instead install the Azure Skills Plugin with /plugin install azure@claude-plugins-official, which bundles it with the other Azure skills and the Azure MCP Server.

Which App Service plan and Python version does it use?

By default it creates a Linux App Service plan on the P0v3 SKU and a web app with the PYTHON:3.14 runtime. If 3.14 isn't available in your region it falls back to 3.13, then 3.12, and it respects a different SKU if you ask for one.

Does it set a startup command for FastAPI?

Yes. For FastAPI it always sets python -m uvicorn main:app --host 0.0.0.0, swapping in your real entry point if it differs. For Flask and Django it sets none, because App Service detects those apps and starts them with Gunicorn.

Why doesn't the agent check that the site is up after deploying?

The skill forbids it. Its hard rules say not to run log tail, curl or any health probe after the deploy returns, because App Service needs 2 to 3 minutes to warm up and an early 5xx is not a failure. The agent prints the URL and log commands and stops.

When should I use azure-prepare instead?

Use azure-prepare when you need more than a code push: VNet integration, Key Vault references, a database, Bicep or Terraform, or a target other than App Service such as Container Apps or Functions. The skill's description and troubleshooting file both hand those cases off.

More in Skill directory

All guides

Keep your prompts and skills in one place, in your own GitHub. Install every skill with one command.

Get started

Kipt is an independent product, not affiliated with or endorsed by Anthropic, OpenAI, Cursor or GitHub. Claude, ChatGPT, Codex, Cursor and GitHub are trademarks of their owners.