mcpField
A
add-to-existing-project

add-to-existing-project

github.com/tambo-ai开发11.2k94 次安装3 周前更新
代码仓库

关于 add-to-existing-project

一项将 Tambo 集成到现有 React 项目的技能。它会检测技术栈,并引导安装依赖、配置 Provider 和注册现有组件,同时沿用项目既有模式。

主要功能

  1. 01检测框架和项目配置
  2. 02确认检测结果与用户偏好
  3. 03安装 Tambo 及所需依赖
  4. 04按项目模式配置 Provider
  5. 05注册现有组件

适用场景

  1. 01将 Tambo 集成到现有应用
  2. 02适配 Next.js 路由方式
  3. 03沿用既有规范接入 Tambo

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tambo-ai/tambo --skill add-to-existing-project

安装后在 Claude Code 中输入/add-to-existing-project确认已加载。

详细介绍

将 Tambo 添加到现有项目

检测技术栈并集成 Tambo,同时保留现有模式。

工作流

  1. 检测技术栈 - 分析 package.json 和项目结构
  2. 与用户确认 - 展示检测结果并询问偏好
  3. 安装依赖 - 添加 @tambo-ai/react 和同级依赖
  4. 创建 Provider 设置 - 适配现有模式
  5. 注册第一个组件 - 使用现有组件进行演示

步骤 1:检测技术栈

检查以下文件以了解项目:

# Key files to read
package.json           # Dependencies and scripts
tsconfig.json          # TypeScript config
next.config.*          # Next.js
vite.config.*          # Vite
tailwind.config.*      # Tailwind CSS
postcss.config.*       # PostCSS
src/index.* or app/    # Entry points
检测清单
技术检测方式
Next.js依赖中包含 next,且存在 next.config.*
VitedevDependencies 中包含 vite,且存在 vite.config.*
Create React App依赖中包含 react-scripts
TypeScript依赖中包含 typescript,且存在 tsconfig.json
Tailwind依赖中包含 tailwindcss,且存在配置文件
纯 CSS不使用 Tailwind,src/ 中存在 CSS 文件
Zod依赖中包含 zod
其他验证库deps 中包含 yup、joi、superstruct

步骤 2:与用户确认

展示检测结果并询问:

I detected your project uses:
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- Validation: No Zod (will need to add)
- TypeScript: Yes

Should I:
1. Install Tambo with these settings?
2. Use plain CSS instead of Tailwind for Tambo components?
3. Something else?

步骤 3:安装依赖

# Core (always required)
npm install @tambo-ai/react

# If no Zod installed
npm install zod

步骤 4:创建 Provider 设置

Next.js App Router
// app/providers.tsx
"use client";
import { TamboProvider } from "@tambo-ai/react";
import { components } from "@/lib/tambo";

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <TamboProvider
      apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY}
      components={components}
    >
      {children}
    </TamboProvider>
  );
}
// app/layout.tsx
import { Providers } from "./providers";

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <Providers>{children}</Providers>
      </body>
    </html>
  );
}
Next.js Pages Router
// pages/_app.tsx
import { TamboProvider } from "@tambo-ai/react";
import { components } from "@/lib/tambo";

export default function App({ Component, pageProps }) {
  return (
    <TamboProvider
      apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY}
      components={components}
    >
      <Component {...pageProps} />
    </TamboProvider>
  );
}
Vite / CRA
// src/main.tsx
import { TamboProvider } from "@tambo-ai/react";
import { components } from "./lib/tambo";
import App from "./App";

ReactDOM.createRoot(document.getElementById("root")!).render(
  <TamboProvider
    apiKey={import.meta.env.VITE_TAMBO_API_KEY}
    components={components}
  >
    <App />
  </TamboProvider>,
);

步骤 5:创建组件注册表

// lib/tambo.ts (or src/lib/tambo.ts)
import { TamboComponent } from "@tambo-ai/react";

export const components: TamboComponent[] = [
  // Components will be registered here
];

适配现有模式

没有 Tailwind?使用纯 CSS

如果项目使用纯 CSS 或 CSS 模块,可以采用其他方式为 Tambo 组件设置样式:

// Skip --yes flag to customize styling during add
npx tambo add message-thread-full
# Select "CSS Modules" or "Plain CSS" when prompted
已有验证库?

如果使用 Yup/Joi 而非 Zod,用户可以选择:

  1. 仅为 Tambo Schema 添加 Zod(推荐,改动很小)
  2. 转换 Schema(工作量较大,不推荐)
Monorepo?

从将使用 Tambo 的 package 中运行命令:

cd packages/web
npx tambo init --api-key=sk_...

环境变量

npx tambo init --api-key=sk_... 会自动创建 .env.local,并根据你的框架配置正确的环境变量。

如果需要手动设置(例如 Monorepo、文件系统只读),请添加相应变量:

框架变量
Next.jsNEXT_PUBLIC_TAMBO_API_KEY
ViteVITE_TAMBO_API_KEY
CRAREACT_APP_TAMBO_API_KEY

验证

设置完成后,创建一个简单的测试进行验证:

import { useTambo } from "@tambo-ai/react";

function TestComponent() {
  const { thread, isIdle } = useTambo();
  console.log("Tambo connected:", isIdle);
  return <div>Tambo is set up!</div>;
}

评论

支持 Markdown