Receber por email
← Voltar para o catálogo

ai-elements-chatbot

This skill provides production-ready AI chat UI components built on shadcn/ui for conversational AI interfaces. Use when building ChatGPT-style chat interfaces with streaming responses, tool/function call displays, reasoning visualization, or source citations. Provides 30+ components including Message, Conversation, Response, CodeBlock, Reasoning, Tool, Actions, Sources optimized for Vercel AI SDK

15estrelas
Atualizado há 11 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add jackspace/ClaudeSkillz

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/ai-elements-chatbot/svg)](https://www.skillteca.com.br/skills/ai-elements-chatbot)
#ai

Alerta por categoria

Receba novas skills de Design e Frontend toda segunda

1 email curto, só com as skills novas de Design e Frontend. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

AI Elements Chatbot Components

Status: Production Ready Last Updated: 2025-11-07 Dependencies: tailwind-v4-shadcn (prerequisite), ai-sdk-ui (companion), nextjs (framework) Latest Versions: ai-elements@1.6.0, ai@5.0+, next@15+, react@19+

Quick Start (15 Minutes)

1. Verify Prerequisites

Before installing AI Elements, ensure these are already set up:

# Check Next.js version (needs 15+)
npx next --version

# Check AI SDK version (needs 5+)
npm list ai

# Check shadcn/ui is initialized
ls components/ui  # Should exist with button.tsx etc

Why this matters:

  • AI Elements is built ON TOP of shadcn/ui (won't work without it)
  • Requires Next.js App Router (Pages Router not supported)
  • AI SDK v5 has breaking changes from v4

Missing prerequisites? Use the tailwind-v4-shadcn skill first, then install AI SDK:

pnpm add ai@latest

2. Install AI Elements CLI

# Initialize AI Elements in your project
pnpm dlx ai-elements@latest init

# Add your first components
pnpm dlx ai-elements@latest add message conversation response prompt-input

CRITICAL:

  • Components are copied into components/ui/ai/ (NOT installed as npm package)
  • Full source code ownership (modify as needed)
  • Registry URL must be correct in components.json

3. Create Basic Chat Interface

// app/chat/page.tsx
'use client';

import { useChat } from 'ai/react';
import { Conversation } from '@/components/ui/ai/conversation';
import { Message } from '@/components/ui/ai/message';
import { MessageContent } from '@/components/ui/ai/message-content';
import { Response } from '@/components/ui/ai/response';
import { PromptInput } from '@/components/ui/ai/prompt-input';

export default function ChatPage() {
  const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
    api: '/api/chat'
  });

  return (
    <div className="flex h-screen flex-col">
      <Conversation className="flex-1">
        {messages.map((msg) => (
          <Message key={msg.id} role={msg.role}>
            <MessageContent>
              <Response markdown={msg.content} />
            </MessageContent>
          </Message>
        ))}
      </Conversation>

      <PromptInput
        value={input}
        onChange={handleInputChange}
        onSubmit={handleSubmit}
        disabled={isLoading}
      />
    </div>
  );
}

Done! You now have a working chat interface with:

  • ✅ Streaming markdown rendering
  • ✅ Auto-scrolling conversation
  • ✅ Auto-resizing input
  • ✅ Role-based message styling

The 5-Step Setup Process

Step 1: Install AI Elements CLI

pnpm dlx ai-elements@latest init

This:

  • Creates components/ui/ai/ directory
  • Updates components.json with AI Elements registry
  • Adds necessary dependencies to package.json

Key Points:

  • Run from project root (where package.json is)
  • Requires shadcn/ui already initialized
  • Will fail if components.json missing (run pnpm dlx shadcn@latest init first)

Step 2: Add Core Chat Components

# Essential components for basic chat
pnpm dlx ai-elements@latest add message message-content conversation response

# Optional: Input component
pnpm dlx ai-elements@latest add prompt-input actions suggestion

Component Purpose:

  • message: Container for single message (user/AI)
  • message-content: Wrapper for message parts
  • conversation: Auto-scrolling chat container
  • response: Markdown renderer (streaming-optimized)
  • prompt-input: Auto-resizing textarea with toolbar
  • actions: Copy/regenerate/edit buttons
  • suggestion: Quick prompt pills

Step 3: Add Advanced Components (Optional)

# For tool calling
pnpm dlx ai-elements@latest add tool

# For reasoning display (Claude/o1 style)
pnpm dlx ai-elements@latest add reasoning

# For source citations (Perplexity style)
pnpm dlx ai-elements@latest add sources inline-citation

# For code highlighting
pnpm dlx ai-elements@latest add code-block

# For conversation branching
pnpm dlx ai-elements@latest add branch

# For task lists
pnpm dlx ai-elements@latest add task

# For AI-generated images
pnpm dlx ai-elements@latest add image

# For web previews (Claude artifacts style)
pnpm dlx ai-elements@latest add web-preview

# For loading states
pnpm dlx ai-elements@latest add loader

When to add each:

  • tool: Building AI assistants with function calling
  • reasoning: Showing AI's thinking process (like Claude or o1)
  • sources: Adding citations and references (like Perplexity)
  • code-block: Chat includes code snippets
  • branch: Multi-turn conversations with variations
  • task: AI generates task lists with file references
  • image: AI generates images (DALL-E, Stable Diffusion)
  • web-preview: AI generates HTML/websites (Claude artifacts)
  • loader: Show loading states during streaming

Step 4: Create API Route

Create /app/api/chat/route.ts:

import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';

export async function POST(req: Request) {
  const { messages } = await req.json();

  const result = streamText({
    model: openai('gpt-4o'),
    messages,
  });

  return result.toDataStreamResponse();
}

Key Points:

  • Must use AI SDK v5 streamText() (not v4 OpenAIStream())
  • Returns toDataStreamResponse() for streaming
  • Client auto-receives updates via useChat() hook

Step 5: Verify Installation

# Check components installed
ls components/ui/ai/

# Expected output:
# message.tsx, message-content.tsx, conversation.tsx, response.tsx, prompt-input.tsx, ...

# Start dev server
pnpm dev

# Test chat interface at http://localhost:3000/chat

Verification Checklist:

  • [ ] All components in components/ui/ai/
  • [ ] components.json has AI Elements registry
  • [ ] No TypeScript errors
  • [ ] Chat interface renders
  • [ ] Streaming works (type message → get response)
  • [ ] Auto-scroll works during streaming

Critical Rules

Always Do

✅ Initialize shadcn/ui BEFORE AI Elements - AI Elements requires shadcn/ui as foundation ✅ Use AI SDK v5 - v4 is incompatible (breaking changes) ✅ Use Next.js App Router - Pages Router not supported ✅ Wrap with 'use client' - All AI Elements components are client-side ✅ Pass raw markdown to Response component - Not pre-rendered HTML ✅ Use Conversation component as container - Handles auto-scroll and virtualization ✅ Conditionally show voice input - Only works in Chrome/Edge (not Firefox/Safari) ✅ Merge consecutive reasoning blocks - Prevent duplication in long responses

Never Do

❌ Install AI Elements as npm package - It's a CLI tool that copies components ❌ Use with AI SDK v4 - Will fail with type errors and data format issues ❌ Forget 'use client' directive - Components use React hooks (client-only) ❌ Mix with other component libraries - Built for shadcn/ui only (Tailwind classes) ❌ Manually write component code - Use CLI to ensure correct patterns ❌ Skip prerequisites check - Will fail silently with confusing errors ❌ Use in Pages Router - Requires App Router features ❌ Assume voice input works everywhere - Web Speech API is Chrome/Edge only

Known Issues Prevention

This skill prevents 8 documented issues:

Issue #1: PromptInputSpeechButton Not Working (Firefox/Safari)

Error: Voice input button doesn't respond or throws SpeechRecognition is not defined Source: https://github.com/vercel/ai-elements/issues/210 Why It Happens: Web Speech API only supported in Chromium browsers (Chrome, Edge) Prevention:

// Conditionally show voice button
const isSpeechSupported = typeof window !== 'undefined' &&
  ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window);

<PromptInput
  enableSpeech={isSpeechSupported}
  // Fallback: Implement server-side STT (Whisper, Google Speech)
/>

Issue #2: PromptInput Not Respons

Compartilhar X LinkedIn