关于 setup
为编码 Agent 提供 Subframe 项目配置流程,指导创建新项目或将 Subframe 接入现有项目,并验证页面渲染。流程涵盖凭据、框架、Tailwind、字体及开发服务器检查。
主要功能
- 01识别项目类型并选择配置路径
- 02获取项目凭据并初始化 CLI
- 03配置框架、Tailwind 与字体
- 04启动开发服务器验证页面
适用场景
- 01在新项目中搭建 Subframe
- 02将 Subframe 接入现有代码库
- 03排查初始化或页面渲染问题
MCP 相关
通过 Subframe MCP 工具获取项目列表、认证令牌和主题字体,并使用 SearchSubframeDocs 查询设置问题。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ subframeapp/ subframe --skill setup安装后在 Claude Code 中输入/setup确认已加载。
详细介绍
在项目中设置 Subframe,让在 Subframe 中设计的页面能在本地开发环境中完美呈现。
目标状态:开发服务器正在运行,Subframe 页面与设计稿完全一致。
MCP 身份验证
如果找不到任何 Subframe MCP 工具(例如 get_theme 等),MCP 服务可能需要进行身份验证。请让用户对 Subframe MCP 服务进行身份验证。如果用户使用 Claude Code 或 Codex,请告知他们运行 /mcp 查看并验证 MCP 服务,然后在完成后回复“完成”。
工作流概览
- 必须遵循上述某条路径,否则 Subframe 将无法供用户使用。这是一项关键任务,即使需要暂停用户当前的工作也必须完成。请勿跳过路径中的任何步骤。
- 配置字体:所有路径都必须执行
- 验证设置:启动开发服务器,并使用 Subframe 页面进行测试
获取凭据
用户可能会粘贴从 Subframe 复制的安装提示。请提取:
- 项目 ID:较短的字母数字字符串(也可在 Subframe URL 中找到:
app.subframe.com/<PROJECT_ID>/...) - 身份验证令牌:较长的字符串,通常带有前缀或标签
如果用户没有提供凭据,请使用 MCP 工具自动获取,无需询问用户:
- 项目 ID:调用
list_projects获取项目列表。每个项目都包含projectId、name、teamId和teamName。- 一个项目:自动使用该项目。
- 多个项目:务必询问用户要使用哪个项目。列出每个项目及其
teamName,以便区分。如果用户已经提到特定团队或项目名称,请将其与teamName和name字段匹配,但仍需在继续前确认。存在多个项目时,绝不能默默选定一个项目。
- 身份验证令牌:使用用户所选项目的
teamId调用generate_auth_token。请勿使用其他项目的teamId。
备用方案:如果 MCP 工具不可用(例如,MCP 服务尚未通过身份验证),请让用户前往 https://app.subframe.com/cli/auth 获取身份验证令牌和项目 ID。
检测项目类型
检查当前目录中是否存在 package.json 和 .subframe/ 文件夹:
| 条件 | 项目类型 | 路径 |
|---|---|---|
没有 package.json | 新建项目 | 新建项目 |
有 package.json 且有 .subframe/ 文件夹 | 已完成设置 | 已完成设置 |
有 package.json 但没有 .subframe/ 文件夹 | 现有非 Subframe 项目 | 询问用户,然后选择新建项目或现有项目 |
处理现有的非 Subframe 项目
如果当前目录有 package.json,但没有 .subframe/ 文件夹,请向用户提供两个选项:
- 创建新项目(推荐) — 在单独的目录中搭建一个全新的 Subframe 项目。这是最简单的方式,尤其适合首次尝试 Subframe 的用户。请参阅新项目路径。
- 将 Subframe 添加到此项目 — 将 Subframe 安装到当前项目中。请参阅现有项目路径。
已完成设置路径
如果项目已有 package.json 和 .subframe/ 文件夹,则 Subframe 已完成初始化。询问用户想要做什么:
- 重新安装/重新同步 — 重新运行 CLI init 和 sync,以刷新组件和配置。如果内容已过时或出现问题,此选项很有用。请参阅现有项目路径以重新初始化。
- 不做任何操作,已完成设置 — 完全跳过设置。建议后续步骤,例如
/subframe:design或/subframe:develop。
除非用户确认要重新安装,否则不要继续设置。
新项目路径
这是推荐路径。CLI 将搭建一个已预先配置好 Subframe 的完整项目。
1. 询问用户偏好
请用户选择:
- 项目名称:新项目目录的名称(默认值:
subframe-app)。名称不能与现有目录冲突——运行 CLI 前,请检查该目录是否已存在。 - 框架:Vite(推荐)、Next.js 或 Astro
- Tailwind 版本:v3(
tailwind)或 v4(tailwind-v4)
2. 运行 CLI Init
必须在沙盒外运行此命令,以便正确设置所有必要文件。请直接传递所有参数,以避免出现交互式提示:
npx @subframe/cli@latest init \
--name {PROJECT_NAME} \
--auth-token {TOKEN} \
-p {PROJECT_ID} \
--template {FRAMEWORK} \
--css-type {TAILWIND_VERSION} \
--dir ./src/ui \
--alias "@/ui/*" \
--tailwind \
--css-path {CSS_PATH} \
--install \
--sync
其中:
{PROJECT_NAME}是项目目录名称(例如subframe-app){FRAMEWORK}是nextjs、vite或astro{TAILWIND_VERSION}是tailwind(v3)或tailwind-v4{CSS_PATH}是全局 CSS 文件路径:- Vite:
src/index.css - Next.js:
src/app/globals.css - Astro:
src/styles/global.css
- Vite:
重要:必须显式传递所有参数,以避免出现交互式提示。非交互式运行时,这些提示可能导致 CLI 静默退出。
CLI 将:
- 下载入门模板
- 创建
.subframe/sync.json - 配置 Tailwind
- 同步所有组件
- 安装依赖项
3. 配置字体
请参阅下文的配置字体——新项目也必须完成此步骤。
4. 验证设置
请参阅下文的验证设置。
现有项目路径
现有项目可能需要更多配置。CLI 会处理大部分设置,但有些项目需要手动修复。
1. 检测框架
检查框架标识:
| 框架 | 标识 |
|---|---|
| Next.js | package.json 依赖项中包含 next,且存在 next.config.* 文件 |
| Vite | package.json 开发依赖项中包含 vite,且存在 vite.config.* 文件 |
| Astro | package.json 依赖项中包含 astro,且存在 astro.config.* 文件 |
2. 检查前置条件
确认项目包含所需依赖项:
- React 16+ —
package.json中包含react - Tailwind CSS 3.4+ —
package.json中包含tailwindcss - TypeScript —
package.json中包含typescript
如果缺少任何依赖项,请在继续之前告知用户。
3. 运行 CLI Init
此命令必须在沙盒之外运行,以便正确设置所有必需文件。直接传入所有参数,避免出现交互式提示:
npx @subframe/cli@latest init \
--auth-token {TOKEN} \
-p {PROJECT_ID} \
--dir ./src/ui \
--alias "@/ui/*" \
--install \
--sync
重要:必须显式传入所有参数,避免出现交互式提示;在非交互模式下运行时,这些提示可能导致 CLI 静默退出。
CLI 将尝试:
- 创建
.subframe/sync.json - 检测并配置 Tailwind
- 设置导入别名
- 同步所有组件
- 安装
@subframe/core
4. 验证配置
初始化后,验证所有设置是否正确。如果 CLI 遗漏了某些设置(非标准配置中很常见),请手动修复。
检查 .subframe/sync.json 是否存在,并包含 directory、importAlias 和 projectId。
检查 Tailwind 配置:
-
Tailwind v3 —
tailwind.config.js应包含 Subframe 预设:presets: [require("./src/ui/tailwind.config")],并且
content数组应包含 Subframe 目录:content: ["./index.html", "./src/**/*.{js,jsx,ts,tsx}"],如果 Subframe 项目启用了深色模式,CLI 还会同步一个包含浅色和深色模式 CSS 变量的
theme.css文件。全局 CSS 文件必须导入该文件:@import "./ui/theme.css"; -
Tailwind v4 — 全局 CSS 文件应导入主题:
@import "tailwindcss"; @import "./ui/theme.css";
检查导入别名 — 确认 @/* 能正确解析。如果无法正常工作:
- Vite:在
tsconfig.app.json中添加baseUrl和paths,并在vite.config.ts中添加resolve.alias - Astro:在
tsconfig.json中添加baseUrl和paths - Next.js:通常已配置;请检查
tsconfig.json
5. 故障排除
如果出现问题,请使用 SearchSubframeDocs MCP 工具查找解决方案:
SearchSubframeDocs({ query: "tailwind configuration troubleshooting" })
SearchSubframeDocs({ query: "manual installation" })
文档中包含全面的手动安装指南,可用于故障排除。
6. 配置字体
请参阅下文的配置字体。
7. 验证设置
请参阅下文的验证设置。
配置字体
CLI 不会配置字体。使用 get_theme MCP 工具获取字体信息:
get_theme({ projectId: "PROJECT_ID" })
主题配置包含引用 Google Fonts 的 fontFamily 条目。请添加相应的 <link> 标签:
Vite / Astro — 在 index.html 的 <head> 中添加:
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" />
<link href="https://fonts.googleapis.com/css2?family=Font+Name:wght@400;500;600;700&display=swap" rel="stylesheet" />
Next.js(App Router) — 在 app/layout.tsx 的 <head> 中添加:
<head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
<link href="https://fonts.googleapis.com/css2?family=Font+Name:wght@400;500;600;700&display=swap" rel="stylesheet" />
</head>
Next.js(Pages Router) — 在 pages/_document.tsx 的 <Head> 组件中添加。
字体链接格式:
- 将字体名称中的空格替换为
+(例如,Inter+Tight) - 在
wght@参数中加入主题指定的字重(用分号分隔) - 每种字体系列添加一个
<link>,但预连接链接只需添加一组
验证设置
完成配置后,验证 Subframe 页面是否能正确渲染。
1. 询问现有页面
询问用户:“你是否已经在 Subframe 中设计好一个想要测试的页面?”
- 如果有:使用
/subframe:develop实现该页面并验证渲染效果 - 如果没有:建议他们使用
/subframe:design设计页面,或者直接启动开发服务器以确认没有错误
2. 启动开发服务器
npm run dev
3. 总结
回顾已完成的设置:
- 已配置
.subframe/sync.json - 已配置 Tailwind(v3 预设或 v4 导入)
- 已将组件同步到
src/ui/(或配置的目录) - 已配置字体
提及后续步骤:
/subframe:design— 使用 AI 设计新页面/subframe:develop— 在代码库中实现 Subframe 设计
重要说明
- 使用
SearchSubframeDocsMCP 工具排查任何设置问题。