Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
antdv-next avatar

Use X Chat

  • 5 installs
  • 71 repo stars
  • Updated August 4, 2026
  • antdv-next/x

use-x-chat is a Claude Code skill for using the useXChat Vue 3 composable from @antdv-next/x-sdk to manage AI chat message state, requests, and errors.

About

This skill explains how to use the useXChat Vue 3 composable from @antdv-next/x-sdk to build AI chat applications. A developer uses it to manage message state, control requests, and handle errors after wiring a custom Chat Provider. It shows three-step integration from provider setup to Bubble.List and Sender UI, and warns that messages is a Ref accessed via .value.

  • Explains the useXChat Vue 3 composable for chat state and message management
  • Covers custom Provider integration, request control, and error handling
  • Notes messages is a Ref requiring .value access

Use X Chat by the numbers

  • 5 all-time installs (skills.sh)
  • Ranked #1,791 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

use-x-chat capabilities & compatibility

Capabilities
chat state · ai chat ui · request control
Use cases
frontend
From the docs

What use-x-chat says it does

Use the `useXChat` Hook to build professional AI conversation applications
SKILL.md
`messages` type is `Ref<MessageInfo<MessageType>[]>`, not direct `MessageType`. Access via `messages.value`.
SKILL.md
npx skills add https://github.com/antdv-next/x --skill use-x-chat

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs5
repo stars71
Last updatedAugust 4, 2026
Repositoryantdv-next/x

What it does

Manage Vue 3 AI chat state, requests, and errors with the useXChat composable.

Who is it for?

Managing chat state and message flow in a Vue 3 AI chat app with @antdv-next/x

Skip if: Adapting an API shape or rendering markdown, which other x-* skills cover

When should I use this skill?

You have a custom Chat Provider and need to manage chat state in Vue 3

What you get

A Vue chat UI driven by useXChat with placeholder and fallback handling

  • Vue chat component using useXChat

By the numbers

  • Three-step integration from provider to UI

Files

SKILL.mdMarkdownGitHub ↗

🎯 Skill Positioning

Core Positioning: Use the useXChat Hook to build professional AI conversation applications Prerequisites: Already have a custom Chat Provider (refer to x-chat-provider skill)

Table of Contents

🚀 Quick Start

1. Dependency Management

🎯 Automatic Dependency Handling

📋 System Requirements

  • @antdv-next/x-sdk: latest version (automatically installed)
  • @antdv-next/x: latest version (UI components, automatically installed)

⚠️ Version Issue Auto-fix

If version mismatch is detected, the skill will automatically:

  • ✅ Prompt current version status
  • ✅ Provide fix suggestions
  • ✅ Use relative paths to ensure compatibility
🎯 Built-in Version Check

The use-x-chat skill has built-in version checking functionality, automatically checking version compatibility on startup:

🔍 Auto-check Function The skill will automatically check if the @antdv-next/x-sdk version meets requirements on startup:

📋 Check Contents:

  • ✅ Currently installed version
  • ✅ Whether it meets minimum requirements
  • ✅ Automatically provide fix suggestions
  • ✅ Friendly error prompts

🛠️ Version Issue Fix If version mismatch is detected, the skill will provide specific fix commands:

# Auto-prompted fix commands
npm install @antdv-next/x-sdk@latest

2. Three-step Integration

Step 1: Prepare Provider

This part is handled by the x-chat-provider skill

import { MyChatProvider } from "./MyChatProvider";
import { XRequest } from "@antdv-next/x-sdk";

// Recommended to use XRequest as the default request method
const provider = new MyChatProvider({
  // Default use XRequest, no need for custom fetch
  request: XRequest("https://your-api.com/chat"),
  // When requestPlaceholder is set, placeholder message will be displayed before request starts
  requestPlaceholder: {
    content: "Thinking...",
    role: "assistant",
    timestamp: Date.now(),
  },
  // When requestFallback is set, fallback message will be displayed when request fails
  requestFallback: (_, { error, errorInfo, messageInfo }) => {
    if (error.name === "AbortError") {
      return {
        content: messageInfo?.message?.content || "Reply cancelled",
        role: "assistant" as const,
        timestamp: Date.now(),
      };
    }
    return {
      content:
        errorInfo?.error?.message || "Network error, please try again later",
      role: "assistant" as const,
      timestamp: Date.now(),
    };
  },
});

Step 2: Basic Usage

import { defineComponent } from "vue";
import { useXChat } from "@antdv-next/x-sdk";

const ChatComponent = defineComponent(() => {
  const { messages, onRequest, isRequesting } = useXChat({ provider });

  return () => (
    <div>
      {messages.value.map(msg => (
        <div key={msg.id}>
          {msg.message.role}: {msg.message.content}
        </div>
      ))}
      <button onClick={() => onRequest({ query: "Hello" })}>Send</button>
    </div>
  );
});

Step 3: UI Integration

import { defineComponent } from "vue";
import { Bubble, Sender } from "@antdv-next/x";
import { useXChat } from "@antdv-next/x-sdk";

const ChatUI = defineComponent(() => {
  const { messages, onRequest, isRequesting, abort } = useXChat({ provider });

  return () => (
    <div style={{ height: "600px" }}>
      <Bubble.List items={messages.value} />
      <Sender
        loading={isRequesting.value}
        onSubmit={content => onRequest({ query: content })}
        onCancel={abort}
      />
    </div>
  );
});

🧩 Core Concepts

Technology Stack Architecture

graph TD
    A[useXChat Hook] --> B[Chat Provider]
    B --> C[XRequest]
    A --> D[Antdv Next X UI]
    D --> E[Bubble Component]
    D --> F[Sender Component]

Data Model

⚠️ Important Reminder: messages type is Ref<MessageInfo<MessageType>[]>, not direct MessageType. Access via messages.value.
interface MessageInfo<Message> {
  id: number | string; // Message unique identifier
  message: Message; // Actual message content
  status: MessageStatus; // Sending status
  extraInfo?: AnyObject; // Extended information
}

// Message status enum
type MessageStatus =
  | "local"
  | "loading"
  | "updating"
  | "success"
  | "error"
  | "abort";

🔧 Core Function Details

💡 Tip: API may update with versions, it is recommended to check official documentation for the latest information

Core functionality reference content CORE.md

📋 Prerequisites and Dependencies

⚠️ Important Dependencies

use-x-chat must depend on one of the following skills:

Dependency TypeSkillDescriptionRequired
Core Dependencyx-chat-providerProvides custom Provider instance, default uses XRequest, must be used with use-x-chatRequired
OrBuilt-in ProviderOpenAI/DeepSeek and other built-in Providers, default uses XRequestRequired
Recommended Dependencyx-requestConfigure request parameters and authentication, as the default request methodRecommended

🎯 Usage Scenario Comparison Table

Usage ScenarioRequired Skill CombinationUsage Order
Private API Adaptationx-chat-provider → use-x-chatCreate Provider first, then use
Standard API Usageuse-x-chat (built-in Provider)Direct use
Authentication Configuration Neededx-request → use-x-chatConfigure request first, then use
Complete Customizationx-chat-provider → x-request → use-x-chatComplete workflow

🚨 Development Rules

Before using use-x-chat, must confirm:

  • [ ] Has Provider source (choose one of the following):
  • [ ] Has created custom Provider with x-chat-provider
  • [ ] Decided to use built-in Provider (OpenAI/DeepSeek)
  • [ ] @antdv-next/x-sdk is installed
  • [ ] Understand MessageInfo data structure
  • [ ] UI components are ready

Test Case Rules

  • If the user does not explicitly need test cases, do not add test files
  • Only create test cases when the user explicitly requests them

Code Quality Rules

  • After completion, must check types: Run tsc --noEmit to ensure no type errors
  • Keep code clean: Remove all unused variables and imports

🔗 Reference Resources

📚 Core Reference Documentation

  • API.md - Complete API reference documentation
  • EXAMPLES.md - All practical example code

🌐 SDK Official Documentation

💻 Example Code

Related skills

FAQ

How do I access messages from useXChat?

messages is typed Ref<MessageInfo<MessageType>[]>, not direct MessageType, so access it via messages.value.

What is the prerequisite for useXChat?

You must already have a custom Chat Provider, which is handled by the x-chat-provider skill.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.