关于 webflow-mcp:cloud-apps
webflow-mcp:cloud-apps 是指导 Agent 使用 Webflow Cloud MCP 工具管理云应用的技能,涵盖 GitHub 源应用、环境和部署的创建与排查。它强调确认目标环境、依据可观察证据操作,并将部分本地构建和变量写入任务交给 webflow-cli:cloud。
主要功能
- 01创建和检查 GitHub 源应用
- 02查看环境、域名、部署和日志
- 03根据证据诊断部署与运行问题
- 04核对环境变量名称和保密属性
- 05将本地部署与变量写入交给 CLI 技能
适用场景
- 01创建 GitHub 仓库连接的 Cloud 应用
- 02检查部署状态并排查失败原因
- 03确认环境配置中所需变量是否存在
MCP 相关
该技能指导 Agent 通过 Webflow MCP 连接调用 Cloud Apps 工具,并要求先读取实时指南;它将本地来源应用、部署及环境变量值写入任务转交给 webflow-cli:cloud。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ webflow/ webflow-skills --skill webflow-mcp:cloud-apps安装后在 Claude Code 中输入/webflow-mcp:cloud-apps确认已加载。
详细介绍
Webflow Cloud Apps
使用 data_apps_tool 创建源自 GitHub 的应用、回答运维问题,以及管理 Webflow Cloud 应用的环境。从用户期望的结果着手,只收集必要的证据,并区分观察结果与结论。
如果任务需要通过 CLI 或本地源创建或部署应用,或创建或更新环境变量,请使用 webflow-cli:cloud 技能。客户端构建输出不会发送到 Webflow,也无法通过 MCP 恢复。
Instructions
1. 确定范围
使用用户请求或现有任务上下文中已建立的 Webflow MCP 连接。如果只有一个连接处于活动状态,则直接使用,无需询问用户选择或重新确认区域。如果有多个连接处于活动状态,且目标仍不明确,则在执行依赖目标的操作前,请用户澄清。不要为了找回缺失资源或解决访问错误而切换区域。
在将现有 MCP 应用或环境交由 CLI 执行配置写入或部署之前,请比较两者配置的区域。如果区域不同,不要假定其中任一区域正确,也不要静默地重新指定任一工具的目标。根据明确的任务上下文确定预期目标;若仍无法解决冲突,请询问用户。冲突解决前,暂停依赖此目标的变更操作。
确定目标区域后,请验证 CLI 能够读取确切的 MCP 应用 ID 和环境 ID,并在后续变更操作中明确指定该区域和这些 ID。仅凭登录状态或区域标签不足以完成验证。如果验证失败,请报告失败,但不要推断原因,并暂停依赖此目标的变更操作。继续处理目标已确定的独立工作。
- 在调用任何其他 Webflow MCP 工具之前,先调用
webflow_guide_tool。实时指南和操作架构是当前参数和响应的权威依据。 - 除明确交由 CLI 处理环境变量值外,所有 Webflow 操作都使用 Webflow MCP 工具。切勿直接调用 Webflow API。
- 每次工具调用都必须包含必需的
context参数。使用第三人称撰写 15-25 个词。 - 根据任务所需的功能选择工具:
- 使用
data_apps_tool创建源自 GitHub 的应用;检查应用、环境、域名、部署记录、日志和变量元数据;管理 GitHub 源和环境;以及将 GitHub 部署任务加入队列。 - 使用
data_variable_tool处理 Designer 颜色、尺寸、字体和 CSS 变量。 - 对于 CLI/本地源应用、本地构建与部署,或创建和更新环境变量值,请使用
webflow-cli:cloud。
- 使用
- 如果
data_apps_tool不可用,请说明未启用 Cloud Apps MCP 功能。不要通过直接 API 请求绕过此限制。
绝不要要求用户在聊天中粘贴环境变量值或机密。创建或更新时,交由 webflow-cli:cloud 处理,并要求通过隐藏提示、标准输入或受保护的文件提供值。绝不要将机密作为位置参数传递。
2. 确定目标
按以下顺序发现标识符:
list_apps -> app_id
list_environments(app_id) -> env_id
list_deployments(app_id, env_id) -> deployment_id
应用名称仅在同一站点内唯一,因此应使用 site_id + name 解析指定名称的应用。如果匹配到多个资源,请展示用于区分它们的元数据,并要求用户在进行任何变更前选定一个。筛选、分页、游标和操作批处理方式以实时指南为准。
3. 遵循相应的用户故事
创建 GitHub 源应用
- 确定应用名称、规范的 GitHub 仓库 URL、分支、可选描述,以及该应用是独立应用还是附加到现有网站。
- 对于附加到网站的应用,解析网站 ID。独立应用省略
site_id。 - 预览前应用挂载约定:
- 独立应用始终挂载在
/;省略mount或使用/。 - 附加到网站的应用默认挂载在
/app,不接受/;覆盖默认值时,必须指定有效的非根挂载路径。
- 独立应用始终挂载在
- 说明创建独立应用需要工作区范围的用户令牌。Webflow 会推导 GitHub 安装信息并验证仓库访问权限;不要请求安装 ID。
- 使用默认试运行调用
create_app。展示仓库、分支、附加关系、适用时的网站、挂载路径和初始部署尝试。 - 必须获得确认。确认后、执行前,立即记录开始时间并生成一个稳定的
idempotency_key;使用dry_run: false执行,然后记录完成时间。仅在精确重试此创建操作时复用该键。 - 将创建和初始部署视为独立结果。即使
deployStatus为skipped或failed,返回应用也表示创建成功。若状态为triggered,检查环境和部署;若为skipped,检查分支或推送提交;若为failed,保留应用,并单独检查或重试部署。 - 如果应用或结果无法读取,重试前先核对:
- 对于附加到网站的应用,使用
site_id + name收集候选项;对于独立应用,按名称收集候选项。 - 两种情况下,都将每个候选项的名称、
sourceUrl和createdAt与请求的仓库及记录的执行时间范围进行比对。 - 仅当恰好有一个候选项匹配时,才继续查询环境和部署。创建的应用仍存在歧义时,不要重试。
- 对于附加到网站的应用,使用
- 绝不要因部署失败而自动删除已创建的应用。不要将初始部署仪表板链接视为环境的公开 URL。
我正在查看哪个应用和环境?
- 使用
list_apps查找应用,并使用get_app获取其元数据,包括sourceUrl和siteAttached。 - 使用
list_environments报告分支、挂载路径、publicUrl和最新部署状态。如果publicUrl为 null,则说明没有可供用户访问的环境地址;不要自行构造地址。 - 用户询问应用可从何处访问时,使用
get_app_domains。 - 说明自定义域名结果不包含默认的
*.webflow.io主机名。附加到常规 Webflow 网站的应用,其域名可能属于父级网站,并由同级应用共享。
部署了什么?运行是否正常?
- 使用
list_environments获取环境的最新部署状态。 - 使用
list_deployments按时间从新到旧列出部署,然后对选定的部署使用get_deployment获取详细时间线和版本元数据。 - 将
starting、building和deploying视为活动状态。其他状态应如实报告,不要猜测其含义。 - 阶段失败时,会设置
buildFailedAt或deployFailedAt,而对应的完成时间戳仍为 null。仅凭完成时间戳为 null,不能证明该阶段仍在运行。 - 报告可观察到的信息:选定的应用和环境、部署状态、返回的版本或提交元数据、阶段时间戳,以及证据缺口。
部署为什么失败?
- 使用
get_deployment获取部署信息,根据其状态和时间戳确定失败阶段。 - 仅当
logsAvailable为 true 时调用get_build_logs。先使用较窄的since时间范围或q过滤条件,然后仅在需要时扩大范围。 - 需要完整结果时,持续翻页,直到
nextCursor为 null。 - 将
logsAvailable视为日志保留和检索信号,而非每个阶段都生成了日志条目的证明。 - 将空结果视为“没有符合条件且可检索的服务端日志”,而非构建成功或未产生错误的证明。
- 用户机器上生成的构建输出不属于 MCP。仅当用户表示部署是通过 CLI 构建时,才提及这一点;对于本地构建失败,请指引用户查看生成该输出的 CLI。
- 报告失败阶段、相关时间戳、最少但有用的证据、推断出的原因以及任何不确定性。不要只是复述原始日志。
正在运行的应用为什么失败?
- 确定确切的环境,并调用
get_runtime_logs。 - 在检索较大的时间范围前,先用
since和q缩小范围。如果结论取决于日志是否存在,请完整翻页。 - 运行时日志可能因保留期限而不可用。将空结果视为没有可检索的日志,并说明这一限制。
- 有帮助时,将运行时证据与最新部署记录关联起来,但不要仅凭时间上的先后关系就断定存在因果关系。
- 报告观察到的错误模式、受影响的时间段、可能的原因、证据和限制。
是否存在必需的配置?
- 从权威来源确定必需的键集合:用户提供的键列表、项目配置架构或文档中的要求,或用户明确指定为完整配置的参考环境。
- 如果来源是包含值的受保护文件,请在本地进行确定性键名提取,并且只输出键名。切勿通过模型可见的读取来打开来源,也不要在聊天或工具输出中包含其值。
- 对每个必需键,从用户、项目架构或文档中的要求,或明确指定为保密性权威依据的参考环境中获取权威的保密性标记。
.env文件或纯键列表只能确定键名;切勿根据键名推断其保密性。 - 确定环境,调用
list_variables,并将其键和保密性元数据与已确定的要求进行比较。这只能证明已配置的内容,不能证明必需的内容。断定某个键缺失前,必须完成所有分页。 - 只报告键和元数据。机密条目的
isSecret为 true,且不含值;机密值缺失是预期情况。 - 如果必需键集合或任何保密性标记尚未确定,请在执行 CLI 修改或依赖这些配置的部署前停止,除非用户明确确认无需任何配置。
- 对于缺失或分类错误的键,请转到
webflow-cli:cloud,不要在聊天中索要值。写入后,使用list_variables验证必需键及其保密性。如果写入部分失败,请报告失败的键,但不要报告其值,并在部署前停止;保留成功写入的键和环境。
为什么此环境提供了错误的分支或路由?
- 解析确切的环境,并报告其当前分支、挂载点、
publicUrl和最新部署状态。如果publicUrl为 null,不要构造地址。 - 将当前分支和挂载点与用户预期的映射进行比较。如果请求仅用于诊断,则报告不匹配后停止。
- 如果更正会更改挂载点,请调用
get_app并使用siteAttached:只有当其值为 false 时,/才有效;已附加站点的应用必须使用非根挂载点。不要根据siteId推断是否已附加站点。 - 对于更正,请准确展示更改前后的映射。说明
update_environment会立即生效、没有试运行,也不会部署代码。 - 要求提供
confirm,调用一次update_environment,并报告返回的环境、publicUrl和mountRefreshStatus。 - 如果结果无法读取或不确定,请查找原始
env_id。如果使用预期的新分支作为筛选条件,则仅当返回环境的 ID 等于原始env_id时才接受,然后将其分支和挂载点与请求的值进行比较。ID 不同,或无法唯一匹配到原始目标,都属于模糊情况:不要继续操作或重试。分支更改后,绝不要再使用旧分支筛选条件。 - 挂载刷新失败或状态未知,并不意味着环境更新已回滚。请报告路由状态不确定,不要仅因刷新失败而重试。
- 如果分支已更改且用户希望部署该分支的代码,请将
trigger_deployment视为单独的、经过预览和确认的变更操作。
为分支创建隔离环境并部署
- 解析现有应用,调用
get_app,并在预览变更操作前使用siteAttached验证拟定的挂载点。 - 分页检查
list_environments,确认请求的分支或挂载点是否已被使用。 - 展示拟定的分支和挂载点。说明
create_environment会立即生效、没有试运行,并且只会创建映射,不会部署代码。 - 生成一个稳定的
idempotency_key,要求提供confirm,并调用create_environment。仅在完全相同的重试中复用该键。 - 报告返回的环境、
publicUrl和mountRefreshStatus。如果结果不确定,请搜索预期分支,并比较环境 ID、分支和挂载点;使用返回的 ID 区分并发创建。在已创建的环境仍有歧义时,不要重试。 - 刷新失败意味着创建已成功,但路由可能尚未完成。不要重试创建,也不要自动删除环境。
- 在部署此新环境之前,必须先通过“是否已提供必需配置?”这一关卡。只有在确认已满足要求且已核实保密性,或用户明确说明不需要任何配置后,才能继续。然后使用下方的部署工作流进行预览、确认、归属标记和监控。
能否从分支 HEAD 重试、回滚或重新构建此部署?
使用 mutation 的默认试运行作为能力检查。不要根据缺失的日志、应用元数据或部署元数据推断是否符合条件。
要从已连接的分支或先前的确切提交创建新部署:
- 解析环境。对于重试或回滚,还要解析确切的先前部署。
- 仅当用户要求进行配置发现、部署证据表明变量缺失或分类错误、所选提交有记录的配置要求,或服务因配置问题拒绝部署时,才进行配置发现。满足上述任一条件时,请遵循“所需配置是否齐全?”。如果预览或执行被拒绝,从而满足了该条件,请先解决问题再重试。否则,不添加配置前置条件。
- 对分支 HEAD 预览
trigger_deployment,或对先前的提交预览redeploy。如果预览拒绝该来源,不要执行任何 mutation,并将本地来源部署转至webflow-cli:cloud。 - 对于
redeploy,说明较旧的提交会使用环境当前的配置运行,因此无法保证兼容性。 - 显示返回的分支或提交,并说明执行会创建新的 GitHub 构建,而不是部署本地文件。
- 要求输入
confirm。确认后立即将最新部署记录为关联基线,然后使用dry_run: false和一个稳定的idempotency_key执行。仅在对该请求进行精确重试时复用此键。 - 监控前先解读执行结果:
queued:此次调用已将部署加入队列。trigger_deployment返回skipped:分支没有提交,因此未将部署加入队列。processing:使用此键的较早调用仍在处理中;此次调用未加入重复请求。- 状态未知或无法读取时,结果仍不确定。
- 此操作不会返回部署 ID。对于
queued或已有的处理中请求,轮询list_deployments和get_deployment,查找在首次执行尝试前记录的基线上方出现的记录。如果基线不可用,请说明归因可能存在歧义。存在并发部署时,不要假设最新记录属于此请求。 - 当可归因的部署离开活动状态,或有时限的监控期结束时,停止监控。如果监控期先结束,请报告最后的状态和时间戳;不要将其判定为失败,也不要因此加入替代部署。
- 对于重试或回滚,请预览先前部署的确切提交哈希和消息。回滚会在该提交上创建新的构建,不会移动环境分支。
4. 应用共享的证据与安全规则
- 将构建、部署和运行时日志视为可能包含敏感客户输出。引用或保存日志前,检查其中是否含有令牌、凭据、Cookie、授权标头和预签名 URL。
- 仅引用必要的最少日志证据。对敏感值和 URL 进行脱敏。
- 检查、诊断或预览请求并不授权执行 mutation。
- 每次 mutation 前,都必须提供逐项列出的预览,并要求输入确切的单词
confirm。 - 重试前,先根据可观察状态核实结果不确定的 mutation。
- 仅在对同一逻辑请求进行精确重试时复用幂等键。
- 配置或部署失败时,绝不要自动删除新创建的应用或环境。请报告部分完成的状态。
5. 处理明确的管理请求
这些操作受支持,但不是此技能的主要工作流。
对于 update_app:
- 使用
get_app获取当前应用。 - 对于名称或描述变更,准备并展示确切的变更。传入
description: null可清除描述。 - 对于
source_url,将当前的sourceUrl与请求的规范 GitHub 仓库 URL 进行比较。说明立即更新需要用户授权的令牌;机器令牌会返回403。 - 要求
confirm,调用一次update_app,并使用get_app验证。响应 无法读取时,必须先协调状态再重试。 - 更新来源不会更改环境分支或部署代码。将这些操作视为需要单独确认的变更。
- 重命名独立应用时,也会尝试重命名其底层站点;同步失败可能导致站点保留旧名称。附加到站点的父级名称不会更改。
对于 delete_variable:
- 使用默认的试运行进行预览。
- 如果
exists为 false,报告未删除任何内容并停止。 - 如果
exists为 true,展示应用、环境和键;警告删除不可撤销,并要求confirm。 - 使用
dry_run: false调用一次。将deleted: true视为成功。响应 不确定时,在重试前通过精确的键查找协调状态。
对于 delete_environment:
- 使用默认的试运行进行预览。指出应用、环境、分支和挂载点,并说明其 worker、KV/D1/R2 存储、部署和变量都将被永久删除。
- 说明删除不可撤销,且应用的最后一个环境无法删除。要求
confirm。 - 使用
dry_run: false调用一次。将deleted: true视为成功。 mountRefreshStatus失败或为 null,表示删除已成功,但路由清理失败或状态 不确定。报告此情况,绝不重试删除。- 响应不确定时,持续分页,直到找到原始
env_id或列表结束。不要使用值 可能已更改的分支筛选条件。
对于 delete_app:
- 使用默认的试运行进行预览,并报告
deletionMode。 - 说明
archive会取消发布应用并将其从控制面板移除,而hard_delete会永久删除应用及其所有环境,且无法撤销。 - 要求
confirm,然后使用dry_run: false调用一次。 - 将
deleted: true视为成功。重试前,通过get_app或应用精确的站点和 名称查找来协调不确定状态。
6. 处理错误并报告
- 环境分支或挂载点重复:报告冲突的环境;不要静默更新或删除它。
- CLI 变量写入不完整:报告失败的键,不包含其值,并在部署前停止。不要回滚已成功写入的键,也不要删除环境。
GITHUB_APP_NOT_INSTALLED或GITHUB_REPO_NOT_CONNECTED:提供返回的installUrl,并且只在用户完成连接后重试。- 不受支持的部署预览属于能力边界,不是绕过 MCP 并直接调用 API 的理由。
仅在适用时,才纳入以下最终报告字段:所选应用;已解析的环境;检查过的证据; 观察到的状态;有依据的原因;限制;已执行的变更;部分状态;以及受阻时用户 需要采取的下一步操作。
示例
创建附加到站点的 GitHub 应用
用户:“从 https://github.com/acme/search 的 main 分支创建
search-app,并将其挂载到我的营销站点的 /search 路径。”
解析站点,使用其站点 ID 和非根挂载点预览 create_app,并使用 GitHub
来源创建工作流。分别报告应用创建结果和自动初始部署结果。
诊断失败的部署
用户:“最新的生产部署为什么失败了?”
对最新的生产部署使用部署诊断工作流。仅在日志可用时检索日志,并将空结果 报告为证据不可用,而非成功。
修正环境映射
用户:“Production 正在 /app 提供预览分支的服务。请将其改回 / 上的
main。”
使用环境映射工作流,并针对 siteAttached 验证 /。
将部署请求视为单独的变更。
配置并部署分支环境
用户:“为 feature/search 创建一个 /preview 环境并部署。
它需要 .env.preview 中的变量。”
使用新建环境工作流,然后先通过强制配置门槛,再进行部署。若后续步骤失败,请保留该环境。
指南
- 从用户的操作问题出发,而非从操作清单出发。
- 优先采用可观察到的证据,而非假设应用的构建方式。
- 使用变更预览和返回的错误检查功能是否可用。
- 对于本地源代码应用和部署,以及变量值,使用 CLI。
- 切勿使用
data_apps_tool设置 Designer 变量。 - 切勿泄露变量、日志、错误或 URL 中的机密。
- 未获得准确预览和明确的
confirm,切勿执行变更。 - 若某项变更的结果尚不确定,先核实可观察到的状态,再重试。
- 将代码仓库、环境、配置和部署变更分开处理。
- 保留部分创建的资源,除非用户明确要求删除。