azure-app-onboard-prereq

azure-app-onboard-prereq

热门

评估源代码是否准备好部署到 Azure — 在基础设施工作之前的检查。评估构建健康度、应用完整性、依赖项和本地服务、技术栈兼容性以及部署可行性。回答关于你的应用在部署前需要什么的问题 — 框架、依赖项和配置。检查依赖项是否兼容,并识别部署阻塞因素和不支持的框架。触发时机:"评估我的仓库"、"我的应用准备好部署了吗"、"我的应用部署需要什么"、"部署前我需要什么"、"我的应用需要"、"我能把这个部署到 Azure 吗"、"扫描我的仓库查找问题"、"这个应用可部署吗"、"检查我的应用是否准备好部署到 Azure"、"我需要 Dockerfile 吗"、"什么阻碍了我的部署"、"有阻塞因素吗"、"我的依赖项兼容吗"、"Azure 支持我的框架吗"、"部署前需要更改什么"、"检查我的应用配置"。

1328Star
220Fork
更新于 2026/7/26
SKILL.md
readonly只读
name
azure-app-onboard-prereq
description

评估源代码是否准备好部署到 Azure — 在基础设施工作之前的检查。评估构建健康度、应用完整性、依赖项和本地服务、技术栈兼容性以及部署可行性。回答关于你的应用在部署前需要什么的问题 — 框架、依赖项和配置。检查依赖项是否兼容,并识别部署阻塞因素和不支持的框架。触发时机:\"评估我的仓库\"、\"我的应用准备好部署了吗\"、\"我的应用部署需要什么\"、\"部署前我需要什么\"、\"我的应用需要\"、\"我能把这个部署到 Azure 吗\"、\"扫描我的仓库查找问题\"、\"这个应用可部署吗\"、\"检查我的应用是否准备好部署到 Azure\"、\"我需要 Dockerfile 吗\"、\"什么阻碍了我的部署\"、\"有阻塞因素吗\"、\"我的依赖项兼容吗\"、\"Azure 支持我的框架吗\"、\"部署前需要更改什么\"、\"检查我的应用配置\"。

Azure App Onboard Prereq — 仓库评估

在基础设施规划之前,评估用户仓库的构建健康度、应用完整性和 Azure 部署可行性。生成每个组件的判定结果(通过/警告/失败),供下游阶段使用。

编排器关系: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. 评估不使用子代理。 三轴评估内联进行。例外: 零代码路径脚手架(第 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 步:修复(条件性)

如果存在任何 ❌ 失败判定、🔧 建议修复或 ⚠️ 警告且带有 fixPhase: "prereq",你必须阅读 remediation-protocol.md 包含修复循环、静态验证、重新评估要求、修复后产物更新以及构建验证同意门控。如果所有判定都是 ✅ 通过或 ⚠️ 警告且没有 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 直接 + 就绪/有注意事项就绪 + 无 Azure 基础设施 ask_user:"部署到 Azure(完整管道)" → 调用 azure-app-onboard / "现在不"
5 直接 + 就绪/有注意事项就绪 + 现有 Azure 基础设施 ask_user:"重新开始" → 调用 azure-app-onboard / "使用现有基础设施" → 调用 azure-prepare / "现在不"
6 直接 + 阻塞 报告阻塞摘要 + "修复并重新运行。"

严重性层级(🛑🔶❌🔧⚠️✅)在 readiness-gate.md 中定义。

输出

产物 位置 消费者
会话上下文 context.jsoncomponents[]repo{}detectedInfra[]detectedServices[] 所有下游阶段
Prereq 输出 prereq-output.json 准备阶段(通过 azure-app-onboard
就绪报告 .copilot-azure/sessions/{uuid}/readiness-report.md 用户(离线参考)