关于 migrate-googleai
将 Google AI Studio 原型迁移为 Domo App Platform 静态 Custom App 的技能,规定构建、子路径托管、路由、密钥处理和发布要求。
主要功能
- 01配置 Vite 输出到 dist/
- 02设置适用于子路径的相对资源路径
- 03提供静态托管路由方案
- 04规范客户端密钥处理
- 05明确 Domo 发布流程
适用场景
- 01将 AI Studio 应用迁移到 Domo
- 02修复嵌套路径下的资源加载
- 03调整路由以适配静态部署
- 04移除对 AI Studio 环境变量的依赖
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ stahura/ domo-ai-vibe-rules --skill migrate-googleai安装后在 Claude Code 中输入/migrate-googleai确认已加载。
详细介绍
规则:将 Google AI Studio 原型迁移为 Domo App Platform 自定义应用(静态 dist 部署)
你正在将一个始于 Google AI Studio(通常面向 Cloud Run / 预览)的项目,转换为通过 Domo CLI 以静态资源方式部署的 Domo App Platform 自定义应用。 所需的部署约定是:
npm run build必须生成一个自包含的dist/文件夹cd dist && domo publish必须可用(Domo 从子路径提供应用,而不是从站点根目录)- 应用必须能正确加载资源,并且在刷新/导航时不会出错
识别 AI Studio 来源
如果出现以下任意情况,就将该项目视为“AI Studio 来源”:
- README 提到 Google AI Studio / Gemini API / “Build” 模式 / Cloud Run
- cloudbuild.yaml、Dockerfile 或 Cloud Run 部署说明
- 使用
process.env.GEMINI_API_KEY或描述为“由 AI Studio 提供”的占位符 - 通过服务器/容器而非静态托管运行的结构
如果检测到,请应用以下步骤。
主要目标
让该项目成为一个常规前端,使其:
- 可通过
npm run dev在本地运行 - 可通过
npm run build将生产文件生成到dist/ - 可从非根子路径托管(Domo App Platform)
- 渲染 UI 不需要任何服务器运行时
第 1 步 — 确保存在标准构建流水线
打开 package.json,并确保脚本存在且适用于所选工具链:
-
如果是 Vite:
dev:vitebuild:vite buildpreview:vite preview- 确认输出为
dist/
-
如果是 CRA:
build默认输出到build/(不符合我们的约定)- 要么: A) 迁移到 Vite(App Platform 的首选),或者 B) 相应地更新 Domo 发布文档/命令(仅在用户明确想要 CRA 时)
如果不确定,默认使用 Vite。
验收标准:
npm install成功npm run build生成包含index.html和assets/*的dist/
第 2 步 — 修复 base,使资源在 Domo(子路径托管)中可用
Domo App Platform 不会将你的应用托管在 /。它位于嵌套路径下。
因此资源路径必须为相对路径或显式指定。
-
如果是 Vite:将 base 设置为相对路径
- 在
vite.config.*中:base: './'
- 在
-
如果是其他打包工具:确保等效的“public path”为相对路径。
验收标准:
- 从嵌套路径打开构建后的
dist/index.html时,仍能加载 JS/CSS 资源(无 404)。 - 没有硬编码的绝对资源路径,如
/assets/...,除非你确定宿主根目录。
第 3 步 — 使路由在静态托管下稳健可靠
如果应用使用 React Router(或任何客户端路由器):
- 在 App Platform 上优先使用 HashRouter,除非你确定平台提供 SPA 重写。
- 如果切换到 HashRouter 侵入性太大,请说明:除非 Domo 配置了重写规则,否则在深层路由上刷新会 404。
默认操作:
- 如果存在路由器且未知是否有重写控制:切换到
HashRouter。
验收标准:
- 构建后的应用无需服务器重写即可导航和刷新。
第 4 步 — 环境变量与密钥:移除仅适用于 AI Studio 的假设
AI Studio 可以在其托管运行期间“神奇地”提供占位符(例如 Gemini API 密钥)。 在 Domo App Platform 中,浏览器无法安全地保存密钥。
规则:
- 不要在客户端代码中发布任何原始 API 密钥。
- 如果 UI 需要 Gemini/LLM 调用:
- 如果可用/允许,优先通过 domo.js 使用 Domo AI API,或者
- 通过后端(例如 Domo Code Engine)代理,在服务端注入密钥。
- 将
process.env.*模式替换为工具链原生环境变量用法:- Vite:
import.meta.env.VITE_*
- Vite:
- 添加
.env.example,记录所需变量(仅非密钥)。
验收标准:
- 没有提交的密钥。
- 不会因缺少 AI Studio 环境变量注入而导致运行时崩溃。
第 5 步 — Domo 部署约定
确保最终开发者工作流为:
npm run buildcd distdomo publish
如果 App Platform 项目需要 Domo 清单/配置文件(例如 manifest.json),请确保它位于 Domo 期望的位置,或在构建期间复制到 dist/ 中。
如果平台期望清单位于根目录但发布 dist/,请实现以下之一:
- 作为构建的一部分,将所需配置/清单复制到
dist/中(postbuild 脚本) - 或者如果用户既定的标准不同,则调整发布策略
默认:
- 添加
postbuild脚本,将所需应用平台文件复制到dist/中(如果它们缺失)。
验收标准:
dist/包含发布和运行所需的一切。- 在
dist/内运行domo publish无需手动复制文件即可成功。
输出要求(你作为助手必须交付的内容)
应用更改后,提供:
- 已更改文件的简短列表
- 在本地运行的确切命令
- 一份“完成检查清单”,确认:
- 构建生成
dist/ - 资源在子路径下加载
- 路由正常工作(hash 路由或已记录的 rewrite 需求)
- 客户端中没有密钥
- 构建生成
要果断;实施更改,而不是提出后续问题,除非因缺少文件而受阻。