azure-app-onboard-prereq

azure-app-onboard-prereq

熱門

評估原始碼是否準備好部署到 Azure — 在基礎設施工作之前的檢查。評估建置健康度、應用程式完整性、相依性與本機服務、技術堆疊相容性,以及部署可行性。回答關於應用程式在部署前需要什麼的問題 — 框架、相依性和設定。檢查相依性是否相容,並識別部署阻礙與不支援的框架。適用時機:「評估我的儲存庫」、「我的應用程式準備好部署了嗎」、「我的應用程式需要什麼才能部署」、「部署前我需要什麼」、「我的應用程式需要」、「我可以把這個送到 Azure 嗎」、「掃描我的儲存庫找問題」、「這個應用程式可部署嗎」、「檢查我的應用程式是否準備好上 Azure」、「我需要 Dockerfile 嗎」、「什麼阻礙了我的部署」、「有任何阻礙嗎」、「我的相依性相容嗎」、「Azure 支援我的框架嗎」、「部署前需要改變什麼」、「檢查我的應用程式設定」。

1328星標
220分支
更新於 2026/7/26
SKILL.md
readonlyread-only
name
azure-app-onboard-prereq
description

"評估原始碼是否準備好部署到 Azure — 在基礎設施工作之前的檢查。評估建置健康度、應用程式完整性、相依性與本機服務、技術堆疊相容性,以及部署可行性。回答關於應用程式在部署前需要什麼的問題 — 框架、相依性和設定。檢查相依性是否相容,並識別部署阻礙與不支援的框架。適用時機:「評估我的儲存庫」、「我的應用程式準備好部署了嗎」、「我的應用程式需要什麼才能部署」、「部署前我需要什麼」、「我的應用程式需要」、「我可以把這個送到 Azure 嗎」、「掃描我的儲存庫找問題」、「這個應用程式可部署嗎」、「檢查我的應用程式是否準備好上 Azure」、「我需要 Dockerfile 嗎」、「什麼阻礙了我的部署」、「有任何阻礙嗎」、「我的相依性相容嗎」、「Azure 支援我的框架嗎」、「部署前需要改變什麼」、「檢查我的應用程式設定」。」

Azure App Onboard Prereq — 儲存庫評估

在使用者的儲存庫中評估建置健康度、應用程式完整性,以及 Azure 部署可行性 — 在基礎設施規劃之前。產生每個元件的判定結果(PASS/WARN/FAIL),供後續階段使用。

協調器關係:azure-app-onboard 在步驟 3 呼叫,或獨立執行以進行程式碼就緒檢查。當由協調器呼叫時,在寫入成品後將控制權交回 azure-app-onboard — 不要直接呼叫後續階段。

AppOnboard 管線中的第 1 階段(共 4 階段)。工作階段:.copilot-azure/sessions/{session-id}/。讀取 context.json。寫入 components[]repo{}detectedInfra[]。產生 prereq-output.json。結構描述:prereq-schemas.tsPrereqOutputBuildRequirements。支援直接進入。

何時不使用

訊號 重新導向
驗證基礎設施(Bicep/TF/azure.yaml) azure-validate
產生 IaC azure-prepare
端到端從構想到生產 azure-app-onboard
執行 azd up 或部署 azure-deploy

規則

絕對禁止 — npm installnpm testnpx jestpytest 以及所有安裝/建置/測試指令一律不允許。
在任何情況下,您都不得在 prereq 階段執行 npm installnpm testnpx jestpip installpytestdotnet builddotnet restoredotnet testgo mod downloadcargo build 或任何套件管理員的安裝、建置或測試指令。不要執行測試套件來驗證程式碼 — 請改為靜態檢查測試設定檔。Prereq 階段是唯讀評估 + 僅靜態驗證。
唯一例外 — 兩種經同意控管的授權情境: (a) 代理程式在遷移/修正期間修改的程式碼(請參閱 remediation-protocol.md 步驟 6),或 (b) 代理程式在零程式碼路徑上從頭撰寫的程式碼(請參閱 zero-code-path.md)。在任一情況下,安裝/建置/測試僅能透過使用者確認的建置驗證閘道(build-check.md 步驟 3)執行,且在使用者回答該特定指令的同意提示之後。一般事先同意不計。

  1. 完整管線(步驟 1–8),無例外。 所有提示 → 直接到步驟 1。將特定問題作為發現結果的一部分(步驟 5)回答,而不是在此之前。
  2. 評估不使用子代理程式。 三軸評估為內嵌。例外: 零程式碼路徑的 scaffolding(步驟 2)。
  3. 程式碼/破壞性修改需要 ask_user。在結果之前最多 3 個問題。直接進入:不要重複協調器的意圖問題。

MCP 工具

工具 用途
mcp_azure_mcp_get_azure_bestpractices 根據 Azure 最佳做法驗證偵測到的技術堆疊模式
mcp_azure_mcp_extension_cli_install 檢查/安裝所需的 CLI 工具(az、azd、func)

工作流程

步驟 1:工作階段檢查

協調器進入: 工作階段存在 — 讀取 context.json,繼續步驟 2。

直接進入: 檢查 .copilot-azure/sessions/active-session.json

  • 存在 → ⛔ 閱讀 session-protocol.md 以了解恢復/重新開始的閘道。在使用者回答之前不要繼續。
  • 遺失 → 建立工作階段:產生 UUID,New-Item -ItemType Directory -Path ".copilot-azure/sessions/{uuid}" -Force,透過 create 工具寫入 context.json + active-session.json

然後:az account show → 將 {id, name, tenantId} 合併到 context.json.azure。⛔ 在任何掃描之前,工作階段必須存在於磁碟上。

步驟 2:掃描工作區

掃描專案檔案。偵測元件、repo{}detectedInfra[]detectedServices[]。分類 Terraform 提供者。檢查 CLI 可用性。技術堆疊偵測衝突:使用者明確陳述優先(寫入 context.json,標記為覆寫);僅掃描 → 與使用者確認;多個堆疊 → 顯示所有並詢問(請參閱 component-mapping.md);無程式碼 → zero-code-path.md

如果沒有專案檔案、沒有 Dockerfile,且沒有 index.html → ⛔ 閱讀 zero-code-path.md

Cloud SDK 早期閘道。 搜尋 aws-sdk|@aws-sdk|boto3|google-cloud|@google-cloud|firebase。如果找到功能性相依性 → 閱讀 cloud-sdk-migration.md,然後 ask_user「重新導向至 Azure Cloud Migrate」(設定 routeToSkill: "azure-cloud-migrate")· 「無論如何繼續評估」(完成就緒評估 + SDK→Azure 對應,然後在步驟 8 停止 — 在相依性被替換之前不制定計畫)· 「取消」

步驟 3:每個元件的評估

子步驟 動作 參考資料
3.1 建置檢查 您必須閱讀 build-check.md
3.2 完整性檢查 您必須閱讀 completeness-check.md
3.3 可部署性檢查 您必須閱讀 deployability-check.md
3.3a 元件對應(條件式) 僅當找到 >1 個專案資訊清單(monorepo)時,才閱讀 component-mapping.md

評估後為每個元件填入 buildRequirements。判定結果傳播、層級規則和 f1Viable 彙總在 readiness-gate.md 和個別檢查參考資料中。

步驟 4:寫入成品 + 就緒閘道

⛔ 確認 context.json 存在於磁碟上。閱讀 readiness-gate.md(判定結果、層級、批次後批准、快速通道),然後閱讀 prereq-artifacts.md(寫入程序、結構描述)。

步驟 5:呈現發現結果

根據 readiness-gate.md § 呈現發現結果 — 在繼續之前,按嚴重性分組顯示判定結果。

步驟 6:修正(條件式)

如果存在任何 ❌ FAIL 判定結果、🔧 建議修正或 ⚠️ WARN 且 fixPhase: "prereq",您必須閱讀 remediation-protocol.md。包含修正迴圈、靜態驗證、重新評估要求、修正後成品更新,以及建置驗證同意閘道。如果所有判定結果都是 ✅ PASS 或 ⚠️ WARN 且沒有 fixPhase: "prereq",則跳到步驟 7。

步驟 7:寫入最終狀態

completedPhases 已包含 "prereq" + currentPhase: null(來自步驟 4)。然後:

寫入 lastScanCommit 執行 git rev-parse HEAD 並將完整的 40 字元 SHA 儲存為 context.json.repo.lastScanCommit。必要 — 步驟 1 中的過時防護會在恢復時與 HEAD 比較以偵測變更。

步驟 8:路由

強制 — 不要跳過此步驟。

路由欄位: 所有路由都會將 routeToSkillrouteReason 寫入 context.json

修正後上下文: 如果步驟 6 已執行,請以「修正完成 — {N} 個問題已修復,您的應用程式現在是 {overallHealth}。」開頭引導路由提示。

從上到下評估列 — 第一個符合者獲勝。

# 條件 動作
1 routeToSkill 已設定(任何進入點) ask_user:「重新導向至 {routeToSkill}」/「現在不要」。⛔ 管線停止 — 不要繼續進行架構規劃。
2 cloudSdkFindings[] 非空(使用者選擇「無論如何繼續評估」) 將 cloud-SDK → Azure 交換對應呈現為 🔶 阻礙,然後使用以下確切提示 ask_user「🔶 Cloud SDK 遷移必要 — 這些相依性必須在應用程式可以部署到 Azure 之前進行交換。(重新導向至 azure-cloud-migrate / 停止 — 手動交換並重新執行)」 — 重新導向設定 routeToSkill: "azure-cloud-migrate",停止則中斷。⛔ 管線停止 — 不要繼續進行架構規劃,也不要提供「繼續準備」選項;在相依性被交換之前,應用程式無法部署。
3 協調器 + 無 routeToSkill 告訴使用者:「✅ 您的應用程式已評估完畢並準備就緒 — 讓我們規劃您的 Azure 部署。」然後呼叫 azure-app-onboard。⛔ 不要停止,不要等待使用者輸入,不要敘述內部交接。使用者在範圍分類時已同意完整管線。
4 直接 + ready/readyWithCaveats + 無現有 Azure 基礎設施 ask_user:「部署到 Azure(完整管線)」→ 呼叫 azure-app-onboard /「現在不要」
5 直接 + ready/readyWithCaveats + 有現有 Azure 基礎設施 ask_user:「重新開始」→ 呼叫 azure-app-onboard /「使用現有基礎設施」→ 呼叫 azure-prepare /「現在不要」
6 直接 + blocked 報告阻礙摘要 +「修復後重新執行。」

嚴重性層級(🛑🔶❌🔧⚠️✅)定義於 readiness-gate.md

輸出

成品 位置 消費者
工作階段上下文 context.jsoncomponents[]repo{}detectedInfra[]detectedServices[] 所有後續階段
Prereq 輸出 prereq-output.json prepare 階段(透過 azure-app-onboard
就緒報告 .copilot-azure/sessions/{uuid}/readiness-report.md 使用者(離線參考)