skills/ai-studio-project-converter/SKILL.md
将 Google AI Studio 生成的 React 项目转换为本项目页面组件的流程规范;在处理 Import Map、样式迁移、依赖安装、环境变量与验收时使用。
npx skillsauth add lintendo/axhub-make ai-studio-project-converterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
将 Google AI Studio 生成的零配置 React 应用转换为本项目页面组件,保持视觉效果和功能,符合本项目开发规范。
node scripts/ai-studio-converter.mjs <ai-studio-project-dir> [output-name]
# 示例
node scripts/ai-studio-converter.mjs "temp/my-ai-studio-project" my-page
脚本会自动完成:
src/prototypes/[页面名]/.ai-studio-tasks.md).ai-studio-analysis.json)脚本会生成 .ai-studio-tasks.md 文件,包含:
按任务清单与本规范示例执行转换。
典型目录结构:
ai-studio-project/
├── assets/ # 静态资源(可选)
├── components/ # UI 组件
├── App.tsx # 主应用组件
├── index.tsx # React 挂载入口
├── index.html # HTML 模板(Import Map + Tailwind CDN)
├── constants.ts # 常量定义(可选)
├── types.ts # 类型定义(可选)
├── vite.config.ts # Vite 配置(可选)
└── metadata.json # 项目元数据(可选)
技术栈:
index.html:
<script src="https://cdn.tailwindcss.com"></script>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@19",
"lucide-react": "https://esm.sh/lucide-react"
}
}
</script>
<style>/* 可能包含自定义样式 */</style>
<link href="https://fonts.googleapis.com/..."> <!-- 可能包含外部字体 -->
默认先转换为普通 React 页面组件。只有在需求明确要求接入 Axhub / Axure 运行时能力时,才引入 forwardRef<AxureHandle, AxureProps>、useImperativeHandle 和 axure-types。
默认格式(推荐):
/**
* @name 页面名称
*
* 参考资料:
* - /rules/development-guide.md
* - /skills/default-resource-recommendations/SKILL.md
*/
import './style.css';
import React from 'react';
export default function PageName() {
// 组件逻辑
return (
// JSX 内容
);
}
仅在以下场景才接入 Axure API:
此时再参考 /rules/axure-api-guide.md,使用如下包装形式:
import React, { forwardRef, useImperativeHandle } from 'react';
import type { AxureProps, AxureHandle } from '../../common/axure-types';
const Component = forwardRef<AxureHandle, AxureProps>(function PageName(innerProps, ref) {
useImperativeHandle(ref, function () {
return {
getVar: function () { return undefined; },
fireAction: function () {},
eventList: [],
actionList: [],
varList: [],
configList: [],
dataList: []
};
}, []);
return (
// JSX 内容
);
});
export default Component;
AI Studio 原始代码:
// App.tsx
import { useState } from 'react';
import Header from './components/Header';
export default function App() {
const [count, setCount] = useState(0);
return <div><Header /></div>;
}
转换为本项目默认规范:
/**
* @name 页面名称
*
* 参考资料:
* - /rules/development-guide.md
* - /skills/default-resource-recommendations/SKILL.md
*/
import './style.css';
import React, { useState } from 'react';
import Header from './components/Header';
export default function PageName() {
const [count, setCount] = useState(0);
return <div><Header /></div>;
}
关键转换点:
@name 和参考资料)forwardRef<AxureHandle, AxureProps> 与 useImperativeHandle/rules/axure-api-guide.md从 index.html 提取样式信息,创建 style.css:
@import "tailwindcss";
/* 提取 <style> 标签中的自定义样式 */
/* 例如:自定义动画、字体、选择器样式等 */
/* 如果有外部字体,添加 @import */
@import url('https://fonts.googleapis.com/css2?family=...');
从 index.html 的 Import Map 提取依赖:
# 常见依赖:lucide-react, framer-motion 等
# 排除:react, react-dom(本项目已有)
pnpm add [识别到的依赖列表]
CDN 到 npm 包映射:
https://esm.sh/lucide-react → lucide-reacthttps://esm.sh/framer-motion → framer-motionhttps://esm.sh/@google/genai → @google/generative-ai将 process.env.* 转换为 import.meta.env.VITE_*:
vite.config.ts 中的 define 配置.env.local 示例必须移除:
index.html(提取信息后删除)index.tsx(本项目有自己的入口)metadata.json(可选保留作为参考)转换完成后运行验收脚本:
node scripts/check-app-ready.mjs /prototypes/[页面名]
验收要求:
# 根据报告中的依赖列表安装
pnpm add [依赖名称]
.ai-studio-analysis.json 中的 CDN 依赖映射style.css 包含 @import "tailwindcss"<style> 标签是否已提取process.env.* 改为 import.meta.env.VITE_*.env.local 文件/rules/development-guide.md/rules/debugging-guide.md/skills/default-resource-recommendations/SKILL.md脚本会自动扫描识别:
App.tsxindex.tsx(需移除)index.html(提取依赖和样式信息)components/**/*.tsxvite.config.ts(提取路径别名)constants.ts, types.ts(如果存在)assets/**运行验收脚本,根据结果修复问题。
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.