Deploy small or production web apps to Azure App Service with Azure Container Registry, GitHub Actions OIDC, Key Vault-backed runtime settings, and optional Cloudflare custom domains. Use when asked to publish, deploy, create a Web App, add CI/CD, wire an Azure-hosted app, or point a domain/subdomain at an Azure Web App.
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Deploy small or production web apps to Azure App Service with Azure Container Registry, GitHub Actions OIDC, Key Vault-backed runtime settings, and optional Cloudflare custom domains. Use when asked to publish, deploy, create a Web App, add CI/CD, wire an Azure-hosted app, or point a domain/subdomain at an Azure Web App.
Azure Web App Deploy
Overview
Use this skill to help an agent deploy a web app through the house Azure pattern:
container image -> ACR -> Azure App Service -> optional Cloudflare hostname.
This is not a one-shot wizard. Work with the user in phases, ask for missing
choices, and use the scripts as independent noninteractive helpers.
Interaction Model
Ask the user for decisions that are not safely inferable.
Do not invent a public domain name without user approval.
Prefer a deployable default only when the repo or user has already provided a clear target.
Keep scripts agent-first: JSON output, --no-input, dry-run/planning before state changes.
Keep runtime secrets out of GitHub. Use Azure Key Vault references in App Service settings.
Decisions To Gather
Before applying changes, know or confirm:
GitHub repo, default branch, and deploy environment name.
App name, resource group, App Service Plan, ACR name/login server, and image repository.
Whether the app needs runtime secrets, especially LLM settings.
Key Vault name and secret names for runtime settings.
Health/status endpoints for deployment verification.
Optional domain, DNS provider, Cloudflare zone, and whether the hostname should be proxied.
Workflow
Inspect the repo:
python3 scripts/inspect_webapp_deploy.py --repo-dir <repo> --no-input
Render a plan:
python3 scripts/render_plan.py --repo-dir <repo> --github-repo <owner/repo> ...
Make repo changes:
Add or verify a Dockerfile.
Add or verify a GitHub Actions deploy workflow.
For Next.js, prefer standalone output for container deploys.
Configure GitHub/Azure:
GitHub repo/environment variables for Azure OIDC identifiers.
Azure federated credential matching the workflow subject.
Azure Web App on the chosen App Service Plan.
System-assigned identity, AcrPull, and Key Vault read role if needed.
Deploy and watch the workflow.
Configure optional Cloudflare hostname only after user confirms the domain.
For Cloudflare-backed custom hostnames, use the staged flow in
references/cloudflare-domain.md: DNS-only first, Azure verification, SNI
binding, then proxied CNAME.
Guardrails
Do not use publish profiles for new deployments unless OIDC is unavailable and the user accepts that tradeoff.
Do not add broad GitHub secrets for runtime app config.
Do not make private LLM or backend services public just to make deploys work.
Do not leave the Azure app pointing at a nonexistent image without calling it out.
Record durable deployment decisions in the repo after setup.