Loading...
Loading...
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".
npx skill4agent add microsoft/azure-skills azure-app-onboard-prereqOrchestrator relationship: Called byat Step 3, or standalone for code readiness checks. When called by orchestrator, return control toazure-app-onboardafter writing artifacts — do NOT invoke downstream phases directly.azure-app-onboard
.copilot-azure/sessions/{session-id}/context.jsoncomponents[]repo{}detectedInfra[]prereq-output.jsonprereq-schemas.tsPrereqOutputBuildRequirements| Signal | Redirect |
|---|---|
| Validate infrastructure (Bicep/TF/azure.yaml) | azure-validate |
| Generate IaC | azure-prepare |
| End-to-end idea-to-production | azure-app-onboard |
Run | azure-deploy |
⛔ ABSOLUTE PROHIBITION —,npm install,npm test,npx jest, and ALL install/build/test commands are NEVER allowed. Under NO circumstances may you runpytest,npm install,npm test,npx jest,pip install,pytest,dotnet build,dotnet restore,dotnet test,go mod download, or ANY package-manager install, build, or test command during the prereq phase. Do NOT run test suites to verify code — check for test config files statically instead. The prereq phase is read-only evaluation + static-only verification. ONLY exception — two sanctioned contexts, both consent-gated: (a) code the agent modified during migration/remediation (see remediation-protocol.md step 6), or (b) code the agent wrote from scratch on the zero-code path (see zero-code-path.md). In either case, install/build/test runs ONLY via the user-confirmed build-validation gate (build-check.md Step 3), after the user answers that specific per-command consent prompt. General prior consent never counts.cargo build
ask_user| Tool | Purpose |
|---|---|
| Validate detected stack patterns against Azure best practices |
| Check/install required CLI tools (az, azd, func) |
context.json.copilot-azure/sessions/active-session.jsonNew-Item -ItemType Directory -Path ".copilot-azure/sessions/{uuid}" -Forcecontext.jsonactive-session.jsoncreateaz account show{id, name, tenantId}context.json.azurerepo{}detectedInfra[]detectedServices[]context.jsonIf no project files, no Dockerfile, AND no index.html → ⛔ read zero-code-path.md.
⛔ Cloud SDK early gate. Grep for. If functional deps found → read cloud-sdk-migration.md, thenaws-sdk|@aws-sdk|boto3|google-cloud|@google-cloud|firebase: "Redirect to Azure Cloud Migrate" (setask_user) · "Continue evaluation anyway" (finish readiness eval + SDK→Azure mapping, then STOP at Step 8 — no plan until the deps are swapped) · "Cancel".routeToSkill: "azure-cloud-migrate"
| Sub-step | Action | Reference |
|---|---|---|
| 3.1 | Build check | ⛔ You MUST read build-check.md |
| 3.2 | Completeness check | ⛔ You MUST read completeness-check.md |
| 3.3 | Deployability check | ⛔ You MUST read deployability-check.md |
| 3.3a | Component mapping (conditional) | Read component-mapping.md ONLY IF >1 project manifest found (monorepo) |
buildRequirementscontext.jsonfixPhase: "prereq"fixPhase: "prereq"completedPhases"prereq"currentPhase: null⛔ Write. RunlastScanCommitand store the full 40-character SHA asgit rev-parse HEAD. Required — staleness guard in Step 1 compares to HEAD on resume to detect changes.context.json.repo.lastScanCommit
Routing fields: All routing writesandrouteToSkilltorouteReason.context.json
Post-remediation context: If Step 6 ran, lead the routing prompt with: "Remediation complete — {N} issues fixed, your app is now {overallHealth}."
⛔ Evaluate rows top to bottom — first match wins.
| # | Condition | Action |
|---|---|---|
| 1 | | |
| 2 | | Present the cloud-SDK → Azure swap mapping as 🔶 blockers, then |
| 3 | Orchestrator + no | Tell the user: "✅ Your app has been evaluated and is ready — let's plan your Azure deployment." Then invoke |
| 4 | Direct + ready/readyWithCaveats + no Azure infra | |
| 5 | Direct + ready/readyWithCaveats + existing Azure infra | |
| 6 | Direct + blocked | Report blocker summary + "Fix and re-run." |
| Artifact | Location | Consumer |
|---|---|---|
| Session context | | All downstream phases |
| Prereq output | | prepare phase (via |
| Readiness report | | User (offline reference) |