All skills
microsoft avatar

/azure-app-onboard-prereq

@ae5e585
by microsoftmicrosoft/skills3.1k stars
351

Assess whether source code is ready to deploy to Azure — the check BEFORE infrastructure work. Evaluates build health, app completeness, dependencies and local services, stack compatibility, and deployment feasibility. Answers questions about what your app needs before it can be deployed — frameworks, dependencies, and configuration. Checks whether dependencies are compatible and identifies deployment blockers and unsupported frameworks. WHEN: "evaluate my repo", "is my app ready to deploy", "what does my app need to deploy", "what do I need before deploying", "does my app need", "can I ship this to Azure", "scan my repo for issues", "is this app deployable", "check if my app is ready for Azure", "do I need a Dockerfile", "what's blocking my deployment", "are there any blockers", "are my dependencies compatible", "does Azure support my framework", "what needs to change before deploying", "check my app configuration".

Use this Skill: https://skilld.dev/gh/microsoft/skills/azure-app-onboard-prereq

This session only. Nothing lands on disk.

referencescomponent-mapping.md

≈1.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Component-to-Azure mapping and existing infrastructure detection. Part of the deployability check.

Step 1: Component Mapping Feasibility

Determine if each detected component maps to a known Azure service.

Component Type Mappable Azure Services
SPA / Static Site Static Web Apps, Blob + CDN
SSR Web App Container Apps, App Service
REST / GraphQL API Container Apps, App Service, Functions
Background Worker Container Apps, Functions
Scheduled Task Functions (Timer Trigger)
Event Processor Functions, Container Apps
CLI Tool Not directly deployable — flag
Outcome Verdict
All components map to Azure services ✅ PASS
Some components need clarification ⚠️ WARN
Unknown component type, can't map ⚠️ WARN — ask user for context
Component is fundamentally incompatible ❌ FAIL

Step 2: Existing Infrastructure Check

Check if the repo already has Azure infrastructure or deployment config.

Found Implication
azure.yaml AZD project — may only need update
infra/*.bicep Bicep IaC exists
infra/*.tf or *.tf Terraform IaC exists — classify provider (see below)
Dockerfile Containerization ready
.github/workflows/ CI/CD configured
azure-pipelines.yml Azure DevOps CI/CD
docker-compose.yml Multi-container setup — parse for service dependencies
None of the above Greenfield — full prep needed

Record what exists; this feeds into recipe selection during azure-prepare.

Terraform Provider Classification

When .tf files are detected, read versions.tf, provider.tf, or main.tf to identify required_providers. Classify and write to context.json.detectedInfraProvider.terraform:

required_providers contains Classification Scaffold behavior
hashicorp/azurerm only "azure" Halt — existing Azure IaC
hashicorp/google or hashicorp/google-beta (no azurerm) "gcp" Generate Azure TF alongside
hashicorp/aws (no azurerm) "aws" Generate Azure TF alongside
Multiple cloud providers including azurerm "multi" Halt — Azure IaC already present
Multiple cloud providers without azurerm "multi" Generate Azure TF alongside
No provider block found or only non-cloud providers "unknown" Halt — ask user to clarify

Also check for azure.yaml coexistence: if BOTH azure.yaml AND non-Azure .tf exist → azure.yaml takes priority → route to azure-deploy, not AppOnboard scaffold.

Compose Service Dependency Extraction

When docker-compose.yml or compose.yml is found, parse services: for infrastructure dependencies. Map known images to detectedServices[] entries (DetectedService in session-schemas.ts):

Image pattern type Version source
postgres:* postgresql Image tag (e.g., postgres:16 → "16")
redis:* / redis/redis-stack:* redis Image tag
*kafka* (bitnami, confluent, etc.) kafka Image tag
elasticsearch:* / opensearchproject/* elasticsearch Image tag
mariadb:* mariadb Image tag
mongo:* mongodb Image tag
rabbitmq:* rabbitmq Image tag
minio/* minio Image tag
mysql:* mysql Image tag

Set source: "compose" on each. If no tag or latest, omit version. Skip the app's own service entries (services with build: context pointing to the repo).

Compose Hostname Detection

After extracting compose services, grep app source code and config files for compose service names used as hostnames. Compose DNS names (e.g., postgres, redis, api) resolve inside Docker networks but NOT on Azure PaaS.

Detection: For each extracted service name, search app config files (.env, config.*, application.*, settings.*) and source code for patterns like host=<service_name>, <service_name>:<port>, ://<service_name>:, or <service_name>. used as a hostname. Common examples: host=postgres, redis://redis:6379, PGHOST=db.

Verdict: ⚠️ WARN — id: W-COMPOSE-HOSTNAME. "App references Docker Compose service name {name} as a hostname. On Azure, use the managed service endpoint (set via environment variable) instead." Include in postDeployRecommendations[]: { "title": "Replace compose hostnames with Azure endpoints", "reason": "Compose DNS names don't resolve on Azure PaaS", "effort": "low", "services": ["{mapped Azure service}"] }.

Source: SKILL.md on GitHub

1 warning1mo3 checks · Risk SAFE
  • Gen Agent Trust Hub1mo

    This skill is an Azure deployment readiness evaluator authored by Microsoft. It performs static analysis of repositories to identify deployment blockers and can offer to fix them or generate starter code. While the skill has capabilities to execute build commands and modify files, these actions are strictly protected by user consent gates and are limited to the skill's intended purpose of onboarding applications to Azure.

  • Socket1mo

    No alerts

  • Snyk1mo

    Risk: MEDIUM · 1 issue

Signed by skilld at ae5e585. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated last month
metadata
{
  "author": "Microsoft",
  "version": "1.2.2"
}

README badge

README badge for microsoft/skills/azure-app-onboard-prereq