GitHub Copilot CLI 和 Claude Code 的 Power Pages 插件提供了 AI 辅助工作流,用于在 Power Pages 上创建、部署和管理新式单页应用程序(SPA)站点。 插件无需手动搭建项目、编写样板 API 代码和配置权限,以自然语言描述所需内容,插件将处理实现。
该插件通过对话技能(从搭建新站点到部署新站点、设置 Dataverse 数据模型和配置身份验证)支持完整的站点开发生命周期。
Important
- 生成式 AI 编码代理(如 GitHub Copilot CLI 或 Claude Code)使用此插件的技能和工作流来完成特定于Power Pages的任务。
- AI 编码代理生成的代码和配置可能不准确。 在批准或部署内容之前,请查看、测试和验证所有生成的内容。 在 批准代理建议之前 ,请始终审查代理建议。
Prerequisites
在开始之前,请验证你是否具有所需的软件和权限。
软件要求
| 组件 | 最低版本 | 详细信息 |
|---|---|---|
| Node.js | 18.0 或更高版本 | 下载 Node.js |
| Power Platform CLI (PAC CLI) | 2.6.3 或更高版本(服务器逻辑需要) | 安装 PAC CLI |
| Azure CLI | Latest | 安装 Azure CLI |
| GitHub Copilot CLI 或 Claude Code | Latest | GitHub Copilot CLI 或 Claude Code |
| Visual Studio Code 和 Power Platform Tools 扩展程序(可选) | Latest | 下载 VS Code 并 安装 Power Platform 工具 |
还需要:
- 启用 Power Pages 的 Power Platform 环境。
- 连接到目标环境的经过身份验证的 PAC CLI 会话。 如果尚未连接,请运行
pac auth create。 - 需通过 Azure CLI 会话登录至同一租户。 运行
az login --allow-no-subscriptions以进行身份验证。
验证身份验证:
使用 pac auth list 命令验证是否已进行身份验证。
pac auth list # Should show authenticated profile
如果未进行身份验证,请运行以下命令:
pac auth create --environment <Instance url> # Authenticate to Power Platform
Tip
若要获取实例 URL,请转到 Power Pages 主页,选择右上角的 “设置” 图标,然后选择“ 会话详细信息”。
安装插件
从市场安装 Power Pages 插件。 如果使用 GitHub Copilot CLI,请参阅 Copilot CLI 扩展文档,了解等效的安装步骤。 以下命令使用 Claude Code 语法。
快速安装(建议)
运行安装程序以设置启用自动更新的所有插件:
Windows (PowerShell):
iwr https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js -OutFile install.js; node install.js; del install.js
macOS/Linux/Windows (cmd):
curl -fsSL https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js | node
安装程序自动:
- 如果尚未安装,则安装
pacCLI。 - 检测可用的工具,例如 Claude Code 和 GitHub Copilot CLI。
- 注册插件市场并安装所有列出的插件。
- 启用自动更新,以便插件保持最新状态。
安装后,重启 Claude Code 或 GitHub Copilot CLI,以在代理会话中以斜杠命令的形式访问插件的技能。
从市场安装
在终端中打开 Claude Code。
添加 微软市场:
/plugin marketplace add microsoft/power-platform-skills安装 Power Pages 插件:
/plugin install power-pages@power-platform-skills
安装插件后,请重启 Claude Code 或 GitHub Copilot CLI,以在代理会话中以斜杠命令的形式访问插件的技能。
Tip
若要自动接收市场和技能的更新,请启用自动更新。 使用/plugin命令,转到市场平台,选择市场平台,然后打开自动更新。
技能概述
该插件提供涵盖 Power Pages 网站完整生命周期的技能。 以对话方式调用各项技能:可使用斜杠命令或描述操作需求。
| 技能 | 命令 | 它的作用是什么 |
|---|---|---|
| 创建网站 | /create-site |
搭建网站基架,应用设计方向,并生成页面和组件 |
| 部署站点 | /deploy-site |
生成项目,并使用 PAC CLI 将其上传到Power Pages |
| 激活网站 | /activate-site |
配置网站记录并分配公共链接 |
| 设置数据模型 | /setup-datamodel |
创建 Dataverse 数据表、字段和关系 |
| 添加示例数据(可选) | /add-sample-data |
使用真实测试记录填充 Dataverse 表 |
| 集成 Web API | /integrate-webapi |
生成类型化的 API 客户端代码、服务和表权限 |
| 添加 AI 摘要 | /add-ai-webapi |
将生成式 AI 摘要 API(搜索摘要和数据摘要)集成到页面中。 生成一个带类型定义的摘要服务,包含防伪造令牌处理、框架特定的封装、硬编码的调用位置以及匹配的 Summarization 网站设置 |
| 设置身份验证 | /setup-auth |
添加登录、注销和基于角色的访问控制。 支持 Microsoft Entra ID、Microsoft Entra 外部 ID、OpenID Connect、SAML 2.0、WS-Federation 联合身份验证、Microsoft 帐户、Facebook、Google 以及本地用户名和密码身份验证,包括多提供程序配置 |
| 创建 Web 角色 | /create-webroles |
为用户访问管理生成 Web 角色 YAML 文件 |
| 添加服务器逻辑 | /add-server-logic |
生成安全的服务器端 JavaScript 终结点,用于验证、外部 API 调用、机密管理和数据操作 |
| 添加云流 | /add-cloud-flow |
将现有的 Power Automate 云端流集成到您的站点中,用于审批工作流、通知和定时自动化 |
| 集成后端 | /integrate-backend |
分析原型,确定每个功能的正确方法(Web API、服务器逻辑或云流),并协调完整的生成序列 |
| 添加 SEO | /add-seo |
生成 robots.txt、sitemap.xml 和元标签 |
| 执行安全审查 | /security-review |
协调集中的安全技能,并将每个发现合并到单个 HTML 报表中。 涵盖代码、依赖项、已部署站点扫描、浏览器标头、Web 应用程序防火墙、表权限和身份验证配置 |
| 扫描源代码 | /scan-code |
对本地源文件运行静态分析和依赖项扫描;跨代码模式、易受攻击的包、硬编码的机密和许可证问题提供发现 |
| 扫描部署的站点 | /scan-site |
针对实时站点启动服务器端安全扫描、按严重性提取最新报表和对结果进行分组 |
| 管理浏览器安全标头 | /manage-headers |
检查和配置站点发送到浏览器的 HTTP 安全标头 - 内容安全策略、帧和点击劫持保护、跨域共享、Cookie 行为和相关网站设置 |
| 管理 Web 应用程序防火墙 | /manage-firewall |
检查和配置生产站点上的 Web 应用程序防火墙(WAF):启用保护、添加或删除 IP 块、国家/地区块、路径块和速率限制 |
| 审计表权限 | /audit-permissions |
审核针对站点代码和 Dataverse 元数据的现有表权限;使用建议的修补程序生成按严重性分组的 HTML 报表 |
| 规划部署 | /plan-alm |
检测项目状态、收集促销策略、呈现视觉计划,并按正确的顺序协调其他应用程序生命周期管理(ALM)技能 |
| 作者解决方案 | /setup-solution |
创建发布者和解决方案、添加Power Pages组件、对网站设置进行分类,并建议环境变量和Azure 密钥保管库机密 |
| 设置管道主机 | /ensure-pipelines-host |
预配或检测供 Power Platform Pipelines 使用的宿主环境 |
| 设置管道 | /setup-pipeline |
在 Dataverse 中注册管道定义,并将升级阶段绑定到目标环境 |
| 通过管道部署 | /deploy-pipeline |
为目标阶段触发管道部署,并支持按阶段覆盖环境变量 |
| 强制链接环境 | /force-link-environment |
当主机冲突阻碍部署时,将目标环境重新分配给新的 Power Platform Pipelines 主机 |
| 导出解决方案 | /export-solution |
将解决方案导出为托管或非托管 ZIP 文件,并在导出前执行完整性检查 |
| 导入解决方案 | /import-solution |
在目标环境中导入解决方案 ZIP 文件,可采用分阶段或直接方式 |
| 测试网站 | /test-site |
使用基于浏览器的测试验证已部署的站点:页面爬网、基于角色的访问检查和 Web API 验证 |
| 诊断部署 | /diagnose-deployment |
根据已知错误的目录匹配部署失败并建议修复 |
典型工作流
常见的端到端工作流遵循以下顺序:
- /create-site :基架、设计和生成页面
- /deploy-site:上传到Power Pages环境
- /activate-site :设置公共 URL
- /setup-datamodel :创建 Dataverse 表
- /add-sample-data :使用测试记录填充表
- /integrate-webapi :生成 API 客户端代码并配置权限
- /create-webroles:定义访问角色
- /setup-auth :添加登录、注销和基于角色的 UI
- /add-server-logic:添加安全的服务器端终结点
- /add-cloud-flow:集成现有的 Power Automate 工作流
- /add-seo :搜索引擎优化
- /deploy-site :实时推送最终更改
- /security-review :在进入生产环境之前运行端到端安全评审
- /plan-alm:将您的站点提升到测试和生产环境
Tip
- 无需按此确切顺序进行操作。 每个技能都会检查自己的先决条件,并告知你是否缺少某些内容。 例如,如果站点首先需要身份验证,则可以先运行
/setup-auth/integrate-webapi。 - 如果不确定每个功能使用哪种方法,请单独运行
/integrate-backend而不是步骤 4 到 10。 它分析原型,确定每个功能是否需要 Web API、服务器逻辑或云流,并按正确的顺序协调技能。 - 若要添加 AI 生成的搜索摘要和记录摘要,请在
/integrate-webapi之后运行/add-ai-webapi。 它重用由/integrate-webapi配置的表权限和站点设置,因此请在 Web API 集成就绪后再运行它。
构建您的 Power Pages 网站
本演练介绍使用插件构建 Power Pages 网站的完整生命周期,从基架到部署。 每个步骤都会描述你所说的内容以及插件对这些内容的响应。
步骤 1:创建网站
以自然语言描述所需的网站:其用途、需要哪些页面以及任何设计首选项,如配色方案、布局样式或字体。 运行 /create-site 或只需描述你的站点,插件即可识别意图。
如果未指定框架,插件会要求你选取一个(React、Vue、Angular 或 Astro),然后:
- 从模板搭建项目基架,并应用网站名称、颜色和设计令牌。
- 安装依赖项,启动开发服务器,并打开实时浏览器预览。
- 根据您的请求,构建每个页面、组件和路由,并包含相关图像。
- 在重要里程碑创建 Git 提交,提供内置回滚历史记录。
步骤 2:部署站点
运行 /deploy-site 以将网站上传到 Power Pages。 插件:
- 验证是否已安装 PAC CLI,并且身份验证会话处于活动状态。
- 在继续之前,请先与您确认目标环境。
- 运行生产版本并上传已编译的输出。
- 创建部署成果物目录(如果尚不存在)。
注释
如果环境阻止某些文件附件,插件将检测问题并提供解决问题的说明。
步骤 3:激活网站
运行 /activate-site 以使站点可公开访问。 插件:
- 根据网站名称建议子域,并允许对其进行自定义。
- 通过 Power Platform API 配置网站记录。
- 持续轮询直至站点上线,并返回公共 URL。
此时,你有一个位于公共 URL 的工作站点。 其余步骤将添加数据、身份验证和 SEO。 跳过不应用于网站的任何步骤。
步骤 4:设置数据模型
运行 /setup-datamodel 以创建站点所需的 Dataverse 表。 如果已有 ER 关系图或特定架构,请直接提供它,而不是让代理分析代码。
该插件生成 一个数据模型架构师 代理,该代理:
- 分析网站代码以确定页面和组件所需的数据。
- 查询 Dataverse 环境以查找现有表以避免重复。
- 建议使用表、列、数据类型和关系的数据模型,并将其可视化为 ER 关系图。
审查并批准该提案。 在确认之前,插件不会创建任何内容。 审批后,该插件通过 API 调用创建表和列,并保存步骤 5 和 6 使用的清单文件。
步骤 5:添加示例数据(可选)
运行 /add-sample-data 来使用测试记录填充你的表格。 此步骤需要步骤 4 中的数据模型。
该插件执行以下作:
- 读取清单文件以解析表、列及关联关系。
- 为每个列类型生成上下文适当的值,例如真实电子邮件、合理日期和格式化货币金额。
- 按依赖项顺序(子表之前父表)插入记录,并在批量插入期间自动刷新身份验证令牌。
步骤 6:与 Dataverse Web API 集成
运行 /integrate-webapi 以将模拟数据替换为实时 Dataverse 查询。 此步骤需要步骤 4 中的数据模型。
该插件执行以下作:
- 扫描代码库,查找使用模拟数据、占位符网络请求或硬编码数组的组件。 它将这些组件映射到 Dataverse 表。
- 为每张表生成 Web API 集成智能体,该表可生成:
- 具有防伪造令牌管理和重试逻辑的共享 API 客户端。
- TypeScript 实体类型和域映射器。
- CRUD 服务层。
- 特定于框架的模式,例如 React 挂钩、Vue 可组合组件或 Angular 服务。
- 生成 一个权限架构师 代理,该代理建议表权限和站点设置。
审核和批准权限设置建议。 在确认之前,该插件不会创建任何配置文件。
添加 AI 生成的摘要(可选)
在 Web API 集成的基础上运行 /add-ai-webapi 以分层生成 AI 摘要。 该技能将两个预览版摘要 API 连接到您的记录详细信息页面和列表页面:
- 搜索摘要 API:返回包含引文的搜索结果的 AI 精简摘要。
- 数据摘要 API:返回 Dataverse 表的每条记录摘要或列表级见解。
此步骤基于步骤 4 中的数据模型和步骤 6 中的 Web API 集成。 该插件执行以下作:
- 扫描您的代码以查找摘要集成点,并确认目标页面、表以及应使用的 API。
- 将任何缺失的 Web API 前提条件(表权限、列列表和 Web 角色)交由
/integrate-webapi和/create-webroles处理,以便权限具有单一可信来源。 - 生成一个 AI Web API Integration 代理,该代理会创建类型化的摘要服务(
aiSummaryService.ts),并包含防伪令牌处理机制、针对特定框架的封装(React Hook、Vue 组合式函数或 Angular 服务),以及目标页面上已连接好的调用点。 - 生成一个AI Web API 设置架构师代理,用于创建提示词和内容限制的
Summarization站点设置。
你审阅并批准这些建议。 在确认之前,插件不会生成代码或创建设置。
注释
汇总 API 目前处于预览阶段,且依赖于已启用的管理和站点级控制。 如果在部署后未显示摘要,请确认该功能是通过相关站点设置和管理员控制启用的。 有关详细信息,请参阅 Data 汇总 API 概述和 Power Pages 使用生成 AI 进行搜索。
步骤 7:创建 Web 角色
运行 /create-webroles 以定义用户访问角色。 插件:
- 查询环境中的现有 Web 角色,以避免重复。
- 生成具有唯一标识符的角色定义。
- 强制每个站点最多具有一个匿名角色和一个经过身份验证的角色。
步骤 8:设置身份验证
运行 /setup-auth 以向站点添加登录、注销和基于角色的访问控制。 该插件支持以下标识提供者,你可以同时配置一个提供程序或多个提供程序。
| 提供者 | 最适用于 |
|---|---|
| Microsoft Entra 外部 ID(建议用于面向客户的站点) | 具有自助注册的公共站点和客户门户。 |
| Microsoft Entra ID | 内部员工门户或企业到企业(B2B)合作伙伴网站。 Power Pages自动配置站点的父租户,因此无需输入租户信息。 |
| Microsoft、Facebook、Google | 面向消费者受众的社交登录。 |
| 本地身份验证 | 用户名和密码登录。 不建议使用,并且仅会在您明确要求时才进行配置。 |
有关受支持提供程序的详细信息(包括协议和配置注意事项),请参阅 Power Pages 中的身份验证概述。
插件:
- 分析网站(用途、页面、受众),并提出合理的默认值。 例如,插件会建议面向客户的站点使用支持开放注册的 Microsoft Entra 外部 ID,或者为内部门户使用仅限邀请注册的 Microsoft Entra ID。 你接受建议或选取自己的提供商。
- 针对每个身份提供商,引导您完成身份提供商管理中心中的每个先决条件步骤,例如创建租户、注册应用、创建用户流以及获取客户端 ID 和重定向 URI。 该插件会验证粘贴回聊天中的每个值,并计算站点的确切重定向 URI,以便粘贴到应用注册中的值与写入站点设置的值匹配。
- 询问用户配置文件数据应如何从标识提供者流入 Dataverse 联系人记录(声明映射)、是在每个登录还是仅首次登录时同步,以及是否通过电子邮件自动将外部登录链接到现有联系人。
- 生成身份验证服务、类型声明、基于角色的授权实用程序(
hasRole、RequireAuth、RequireRole)、一个可防止 SPA 会话静默过期的会话保持活动钩子,以及一个与您的网站布局集成的登录/注销 UI 组件。 该插件始终遵循你所用框架的惯用模式,例如 React Hooks、Vue 组合式函数、Angular 服务或 Astro 组件。 - 配置了多个提供程序时,会生成一个以所选布局呈现的
/login页面:水平排列、垂直堆叠、主聚焦布局或选项卡式布局。 - 针对每个提供商、注册模式、声明映射和可选功能,将匹配的站点设置写入
.powerpages-site/site-settings/下。
当打开这些功能时,该插件还会配置以下可选功能:
-
条款和条件:用户在完成登录前必须接受的
/termsSPA 页面,以及相应的站点设置和内容片段。 -
User 个人资料页面:
/user-profileSPA 页,登录用户通过 Power Pages Web API 编辑其联系信息。 - 联合登出:适用于共享设备或受监管场景,当用户退出网站时,还会同时在身份提供商处将其登出。
Tip
若要将第二个标识提供者添加到现有站点,请再次运行 /setup-auth 。 该插件会检测已配置的内容,并提供添加新提供商的选项,同时不会覆盖现有配置。 此方法适用于增量方案,例如从Microsoft Entra 外部 ID开始,稍后添加 Google 进行社交登录。
注释
客户端授权(RequireAuth、RequireRole、hasRole)仅用于提升用户体验。 它控制用户看到的内容。 由 /integrate-webapi 配置的服务器端表权限可强制实施真正的安全性。
步骤 9:添加服务器逻辑
运行 /add-server-logic 以向站点添加安全的服务器端终结点。 如果站点需要无法在浏览器中运行的逻辑,例如外部 API 调用、服务器端验证、机密管理或跨实体数据操作,请使用 服务器逻辑 。
Important
服务器逻辑支持需要 PAC CLI 2.6.3 或更高版本。 使用 快速安装脚本 更新到最新版本。
用纯语言描述所需的内容,以及插件:
- 生成一个 服务器逻辑架构师 代理,用于分析用例并对其复杂性进行分类。
- 提供端点设计、安全配置以及所需的表权限供您审核。
- 批准后,在
/_api/serverlogics/<name>生成服务器端 JavaScript 终结点。 - 创建一个类型化的客户端服务,以便从您的组件中调用该端点。
- 更新组件以调用新服务。
- 配置终结点的 Web 角色指派和表权限。
审查并批准该提案。 在确认之前,不会生成任何代码。
常见用例:
- 连接到外部服务。 在不公开凭据的情况下调用 REST API、Azure Functions或第三方服务。 (教程:与外部服务交互)
- 执行安全数据操作。 使用一致的服务器端验证查询、更新或删除 Dataverse 记录。 (教程:与 Dataverse 表交互)
- 运行自定义逻辑。 在将结果返回到客户端之前,跨表聚合数据、强制实施业务规则或计算派生值。
- 在服务器端管理机密数据。 将凭据和 API 密钥存储在服务器上,从不存储在客户端代码中。 (教程:与 Microsoft Graph 和 SharePoint 交互)
注释
每个用例运行 /add-server-logic 一次。 例如,如果站点需要清单验证终结点和全局搜索终结点,请运行技能两次。
步骤 10:集成云流
运行 /add-cloud-flow,将现有Power Automate云流集成到站点中。 此技能将Power Pages站点连接到已在Power Automate中创建的流。 它不会创建新的云流。
插件:
- 将现有的云端流注册到您的站点。
- 生成客户端代码以从您的页面启动流程。
- 处理异步工作流状态和回调模式。
- 配置页面与流之间的数据交换。
将 /add-cloud-flow 用于审批工作流、电子邮件通知、计划作业和事件驱动的自动化处理,这些任务通过 Power Automate 处理比通过服务器端终结点更为高效。
替代方法:使用 /integrate-backend 规划完整的服务层
如果不确定哪些功能需要 Web API、服务器逻辑或云流,请运行 /integrate-backend 而不是手动运行步骤 4 到 10。 此技能充当协调器:
- 分析原型以识别需要服务层的所有功能。
- 将每项功能分类为正确的方法:标准 CRUD 的 Web API、服务器端验证的服务器逻辑和外部 API,或用于审批工作流和自动化的云流。
- 建议具备所有技能、依赖项和配置的顺序执行方案。
- 在您批准后,按正确顺序协调各项技能。
该计划是永久性的、可恢复的和可编辑的。 在完成查看生成代码或测试站点的任何步骤后暂停,然后再次运行 /integrate-backend 以从上次暂停的位置继续。
步骤 11:添加 SEO
运行 /add-seo 来优化您的网站以适应搜索引擎。 插件:
- 从框架的路由器配置中发现路由。
- 为所有发现的路由生成搜索引擎指令和站点地图。
- 添加元标签:视口、字符集、描述、开放图谱、Twitter 卡片及网站图标引用。
步骤 12:部署最终站点
如果执行任何可选步骤,请再次运行 /deploy-site 以实时推送更改。 该插件运行生产版本并将站点以及所有部署项目(表权限、站点设置、Web 角色、服务器逻辑文件)上传到Power Pages环境。
步骤 13:执行安全审查
运行 /security-review 以在进入生产环境之前对站点执行端到端安全评审。 该技能协调集中的安全技能,并将每个发现合并到单个 HTML 报表中 docs/security-review-<timestamp>.html。
该插件会用通俗易懂的语言询问一个关于你目标的问题,并选择与之匹配的一组针对性技能:
| 目标 | 检查内容 |
|---|---|
| 代码和配置 | 源代码、依赖项、表权限和身份验证配置。 仅适用于本地文件 - 无需部署。 |
| 发布就绪情况 (建议) | 发布前的完整评审。 运行每个重点技能:代码和依赖项、部署站点扫描、浏览器安全标头、Web 应用程序防火墙、表权限和身份验证。 |
| 已部署的站点 | 仅扫描已部署的实时站点。 可用于持续监视已发布站点。 |
确认后,插件并行运行匹配的聚焦技能,并将其发现写入单个报表:
-
/scan-code:对本地源文件运行静态分析(opengrep)和依赖扫描(trivy)。 识别代码模式、存在漏洞的软件包、硬编码的机密信息和许可证问题。 如果两者中任一工具未安装,该技能会提供人工代码审查作为后备方案。 -
/scan-site:针对实时站点启动服务器端安全扫描并提取最新报表。 扫描持续时间取决于站点大小 - 小型站点在几分钟内完成,大型站点可能需要几个小时。 结果按严重性分组。 需要一个已部署的站点。 -
/manage-headers:检查在.powerpages-site/site-settings/下配置的 HTTP 安全标头,包括内容安全策略、X-Frame-Options、CORS、Cookie 的 SameSite 属性及相关设置。 标识缺失值或弱值,并建议使用建议的默认值。 -
/manage-firewall:检查生产站点的 Web 应用程序防火墙(WAF),包括托管规则状态和自定义规则(IP 块、国家/地区块、路径块、速率限制)。 仅在受支持区域中的生产站点上可用;该技能可检测并报告资格条件问题。 -
/audit-permissions:根据网站代码和 Dataverse 元数据审核现有表权限。 指出缺失的权限、权限过大的角色、未使用的权限以及 YAML 架构问题。
汇总报告会按部分对发现结果进行归类,在默认浏览器中打开,并包含通俗易懂的修复指导。 随后,在聊天中,插件会引导你逐步完成修复——选择一个发现项后,插件会以交互方式调用与之对应的专用技能来应用更改。
注释
安全评审永远不会自动应用更改。 在合并运行期间,每个重点技能均以只读审查模式运行。 若要应用修补程序,插件在选取操作后以交互方式调用匹配技能。
Tip
你也可以单独运行任何特定技能:
- 在开发期间运行
/scan-code以提前捕获代码级问题。 - 运行
/manage-headers以修复特定的内容安全策略错误或设置 CORS。 - 运行
/manage-firewall以在登录页上添加速率限制,或按国家/地区阻止流量。 - 更改表权限以验证它们是否仍与站点代码匹配后运行
/audit-permissions。 - 使用已部署站点目标重新运行
/security-review,以在一段时间内监控生产站点。
验证您的网站
完成技能后,验证 Power Pages 网站是否正常工作。
- 转到 Power Pages。
- 在 “活动站点 ”列表中找到您的网站。
- 使用 “预览 ”选项在桌面上预览网站。
- 测试此功能。
在不同环境中推广您的网站
在您的站点能够在开发环境中正常运行后,使用应用程序生命周期管理(ALM)功能将其部署到测试和生产环境中。 该插件将站点打包为 Power Platform 解决方案,标识因环境而异的值,并通过 Power Platform Pipelines 或手动导出和导入部署解决方案。
若要使用 ALM 技能,还需要至少一个目标 Power Platform 环境(测试、生产或两者兼有)。 若要对机密使用可选的Azure 密钥保管库流,还需要有权在Azure订阅中创建密钥保管库。
规划部署
运行 /plan-alm 以启动。
/plan-alm 是 ALM 的入口点并协调其他 ALM 技能,因此通常不会直接运行它们。 插件:
- 检测项目、解决方案和目标环境的当前状态。
- 询问您的推广策略(Power Platform Pipelines 或手动导出和导入)、目标阶段以及需应用的任何约束条件。
- 在
docs/alm-plan.html生成一个可视化计划,显示它打算采取的每一步操作。 - 在运行任何下游技能之前,等待你的批准。
该计划会持久保存到磁盘,因此每个下游技能都会从同一个已持久化的计划中读取并向其写入。 如果某个阶段失败,请再次运行 /plan-alm ,并从停止位置恢复。
编写解决方案
运行 /setup-solution 以将站点打包为 Power Platform 解决方案。 插件:
- 创建发布者和解决方案,然后添加你的 Power Pages 组件:站点、Web 角色、服务器逻辑端点、云流注册和 OAuth 提供程序设置。
- 通过敏感度对每个站点设置进行分类,并为不同环境的值建议 环境变量 。
- 提供预配 Azure 密钥保管库 并在其中存储凭据类值(例如连接字符串和 API 密钥)的功能。
- 如果站点已存在解决方案,则以同步模式运行,以便在不创建新解决方案的情况下协调组件。
审查并批准该提案。 在确认之前,插件不会创建任何配置。
Tip
如果解决方案太大或纠缠在一起无法可靠地部署,插件建议拆分并建议在何处拆分它。 请在更改生效前确认分割。
通过 Power Platform Pipelines 部署
如果选择 Power Platform Pipelines 作为促销策略,插件将运行以下技能:
-
/ensure-pipelines-host预配或检测 Power Platform Pipelines 的主机环境。 技能选择租户可用的最低成本选项:免费平台主机、现有环境中的 Pipelines 应用或自定义主机。 -
/setup-pipeline在 Dataverse 中注册管道定义,配置所选阶段,并将每个阶段绑定到目标环境。 -
/deploy-pipeline触发某个阶段的部署,通过deploymentSettings.json应用各阶段的环境变量覆盖,并在部署分类账中跟踪状态。
如果部署因目标环境已链接到另一个 Power Platform Pipelines 主机而失败,则该插件可以运行 /force-link-environment 来重新分配该目标环境。 该操作需要您的明确同意,且可撤销。
使用手动导出和导入进行部署
如果选择手动路径,插件将运行:
-
/export-solution将解决方案导出为托管或非托管 ZIP,并在导出前执行完整性检查。 -
/import-solution在目标环境中导入 ZIP 包,可先暂存以验证依赖项,也可直接导入。
激活和验证已部署的站点
在目标环境中成功部署后,插件:
- 运行
/activate-site以在目标环境中预配公共 URL。 - 运行
/test-site以验证部署。 该插件使用浏览器抓取代表性页面,执行基于角色的访问检查,验证/_api/调用,并从/_api/serverlogics/端点捕获响应结构。 该技能将结果报告为PASS、WARNINGS或FAIL,并附有从计划链接的每项检查详情。
如果步骤失败,插件将运行 /diagnose-deployment。 该技能会将失败情况与已知部署错误目录进行比对,例如过时的清单文件、缺失的依赖项、主机冲突、被阻止的 JavaScript 或过期的身份验证,并提出具体的修复方案。 插件永远不会在未经你同意的情况下应用修补程序。
注释
每个 ALM 技能都会读取并写入磁盘上的工件:解决方案清单、计划数据、管道台账、部署台账和测试结果。 该编排过程可恢复且可审计。 若要查看在任一步骤中发生了什么,请检查构件。
技巧与最佳做法
生成 Power Pages 网站时,以下提示可帮助你充分利用插件和 AI 编码代理。
在首次运行时监视终端输出中缺少的工具
该插件提供技能和工作流,但 AI 编码代理(GitHub Copilot CLI 或 Claude Code)在计算机上执行实际命令。 首次使用这些工具时,请密切观察终端输出。 AI 编码代理在后台运行命令和脚本,其中一些命令依赖于计算机上可能未安装的工具。 如果步骤失败,终端输出通常会显示找不到的工具或命令。
如果看到类似 command not found 或 is not recognized出现错误,请安装缺少的工具并重新触发工作流。 AI 编码代理会在工具可用后从中断的地方继续。
在批准之前查看代理建议
AI 编码代理在进行更改之前提供建议,例如来自数据模型架构师和权限架构师的建议。 AI 编码代理生成的代码和配置可能不准确,因此在批准或部署之前,请查看、测试和验证每个建议以及所有生成的代码。
- 数据模型建议:检查表名称、列类型和关系是否符合业务需求。 调整建议比在插入数据后重命名列更容易。
- 权限建议:验证每个角色是否具有每个表的正确访问级别(创建、读取、更新、删除)。 过于宽松的表权限是常见的安全风险。
- 生成的代码:在部署之前通读生成的代码并在本地测试站点。 AI 生成的代码可以包含错误或安全问题。
将错误连同上下文直接粘贴
当出现错误时,无论是构建错误、部署失败还是浏览器中的运行时异常,请复制完整的错误输出。 粘贴它,并附上你正在执行的操作的简要说明。 提供的上下文越多,修复速度就越快。
示例:构建错误
I ran npm run build and got this error. Fix it.
error TS2339: Property 'jobTitle' does not exist on type 'JobPosting'.
src/components/JobCard.tsx:24:31
24 <Text>{posting.jobTitle}</Text>
Tip
包括文件名、运行的命令以及预期会发生的情况。 插件使用此上下文来查找问题并应用有针对性的修补程序,而不是猜测。
使用完整请求 URL 共享 Web API 错误
部署后的一个常见问题是,当某列未启用 API 访问权限时,会在 Power Pages Web API 中出现 403 错误。 遇到此错误时,粘贴 完整的 API URL 和 完整的 JSON 错误响应。 错误消息会准确地告知需要修复的表和列,插件可以为您更新表权限 YAML 和站点设置。
示例:列未启用 Web API 访问权限 (403)
I'm getting a 403 error when the documents page loads. Here's the API call and the response. Fix the issue so this API works.
URL:
https://my-site.powerappsportals.com/_api/crd50_documents?$select=crd50_documentid,crd50_name,crd50_documentcategory,crd50_filetype,crd50_filesize,crd50_updateddate,crd50_description,_crd50_propertyid_value
Response:
{
"error": {
"code": "90040101",
"message": "Attribute _crd50_propertyid_value in table crd50_document is not enabled for Web Api.",
"innererror": {
"code": "90040101",
"message": "Attribute _crd50_propertyid_value in table crd50_document is not enabled for Web Api.",
"type": "AttributePermissionIsMissing"
}
}
}
此错误 (AttributePermissionIsMissing) 表示 Dataverse 表中存在查找列 _crd50_propertyid_value ,但不列在 Web API 的表权限配置中。 该插件通过将缺少的列添加到表权限 YAML 中 .powerpages-site/table-permissions/ 并重新部署来解决此错误。
注释
Power Pages Web API 要求在表权限中显式列出 API 调用返回的每个列。
查找属性(带有前缀 _ 和后缀 _value)可能容易被忽视,因为它们的 API 名称与 Dataverse 中列的逻辑名称不同。 每当看到 AttributePermissionIsMissing 时,务必始终将该列添加到表权限中。 不要更改 API 查询。
具体了解所需内容
模糊的请求会产生模糊的结果。 确切地告知插件所需的内容,包括布局首选项、数据字段和行为。
| 替代 | 试用 |
|---|---|
| “为作业创建页面” | 创建一个职位列表页面,顶部放置有搜索栏,提供位置和部门的筛选选项,并以卡片网格显示每个职位的标题、公司、工资范围和发布日期。 |
| “修复样式” | “作业卡垂直堆叠在桌面上。 在屏幕宽度超过768px的设备上,使它们以三列网格显示,间距为16px。 |
| “添加一些数据” | 在四个部门(工程、营销、销售、人力资源)中添加 20 个示例职位,其实际职位名称、工资范围介于 6 万至 18 万美元之间,并在过去 30 天内发布。 |
| “设置 API” | “将 JobListings 组件连接到 cr_jobposting Dataverse 表。 将硬编码的数组替换为实际 API 调用,该调用提取标题、部门、工资和发布日期” |
| “添加登录名” | “设置支持开放注册的 Microsoft Entra 外部 ID 登录,并将 Google 作为第二个提供商。 在登录页上将其显示为水平行。 |
使用屏幕截图解决视觉问题
当网站在浏览器中看起来不正确时,请拍摄屏幕截图并将其直接粘贴到对话中或提供文件路径。 视觉上下文有助于识别难以在文本中描述的布局、间距和样式问题。
The header overlaps the hero section on mobile. Here's a screenshot:
[paste screenshot or provide path to screenshot file]
Fix the header so it doesn't overlap. It should be a fixed header with the content starting below it.
分阶段迭代操作
而不是在一个提示中描述整个站点,而是以增量方式生成。 从结构和布局开始,然后一次添加一个功能。 通过此方法,您可以在每个步骤中审视并修正方向。
Step 1: /create-site → Get the basic scaffold and layout right
Step 2: "Add a hero section to the home page with a search bar"
Step 3: "Add a job listings page with filter and sort"
Step 4: "Add a job detail page that shows full description"
Step 5: /setup-datamodel → Create tables now that you know the data shape
Step 6: /integrate-webapi → Wire up real data
Tip
执行每个步骤后,检查浏览器预览。 如果有什么不对,修好它,再继续前进。 修复一个组件中的问题比在整个站点上解开问题更容易。
在批准之前请求解释
如果您对建议的更改不确定,特别是涉及权限、数据模型修改或身份验证配置时,请在批准之前让插件解释其计划执行的内容及其原因。
Before you create the table permissions, explain what access each role will have and why. I want to understand the security implications.
独立运行技能模块以恢复故障
如果技能中途失败,则无需重新开始。 每个技能独立运行,并可以从中断的地方继续进行。 例如,如果 /integrate-webapi 在第三张表上失败,您可以重新运行它,它会检测到已完成的工作。
/integrate-webapi failed while processing the cr_applications table. Here's the error: [paste error]. Resume the integration from where it stopped.