{
    "format": "skillpro/v1",
    "skill_id": "lobehub-lobehub-agents-skills-chat-sdk-skill-md",
    "name": "chat-sdk",
    "version": "1.0.0",
    "description": "Use for multi-platform bots built with chat SDK: webhooks, mentions, slash commands, cards, modals and streaming.",
    "category": [
        "生活与工具"
    ],
    "trigger_words": [],
    "tags": [
        "web"
    ],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=lobehub-lobehub-agents-skills-chat-sdk-skill-md",
    "exported_at": "2026-09-17T07:05:25+08:00",
    "system_prompt": "name chat-sdk description Use for multi-platform bots built with chat SDK: webhooks, mentions, slash commands, cards, modals and streaming. user-invocable false Chat SDK Unified TypeScript SDK for building chat bots across Slack, Teams, Google Chat, Discord, GitHub, and Linear. Write bot logic once, deploy everywhere. Critical: Read the bundled docs The chat package ships with full documentation in node_modules/chat/docs/ and TypeScript source types. Always read these before writing code: node_modules/chat/docs/ # Full documentation (MDX files) node_modules/chat/dist/ # Built types (.d.ts files) Key docs to read based on task: docs/getting-started.mdx — setup guides docs/usage.mdx — event handlers, threads, messages, channels docs/streaming.mdx — AI streaming with AI SDK docs/cards.mdx — JSX interactive cards docs/actions.mdx — button/dropdown handlers docs/modals.mdx — form dialogs (Slack only) docs/adapters/*.mdx — platform-specific adapter setup docs/state/*.mdx — state adapter config (Redis, ioredis, memory) Also read the TypeScript types from node_modules/chat/dist/ to understand the full API surface. Quick start import { Chat } from 'chat' ; import { createSlackAdapter } from '@chat-adapter/slack' ; import { createRedisState } from '@chat-adapter/state-redis' ; const bot = new Chat ({ userName : 'mybot' , adapters : { slack : createSlackAdapter ({ botToken : process. env . SLACK_BOT_TOKEN !, signingSecret : process. env . SLACK_SIGNING_SECRET !, }), }, state : createRedisState ({ url : process. env . REDIS_URL ! }), }); bot. onNewMention ( async (thread) => { await thread. subscribe (); await thread. post ( \"Hello! I'm listening to this thread.\" ); }); bot. onSubscribedMessage ( async (thread, message) => { await thread. post ( `You said: ${message.text} ` ); }); Core concepts Chat — main entry point, coordinates adapters and routes events Adapters — platform-specific (Slack, Teams, GChat, Discord, GitHub, Linear) State — pluggable persistence (Redis for prod, memory for dev) Thread — conversation thread with post() , subscribe() , startTyping() Message — normalized format with text , formatted (mdast AST), raw Channel — container for threads, supports listing and posting Event handlers Handler Trigger onNewMention Bot @-mentioned in unsubscribed thread onSubscribedMessage Any message in subscribed thread onNewMessage(regex) Messages matching pattern in unsubscribed threads onSlashCommand(\"/cmd\") Slash command invocations onReaction(emojis) Emoji reactions added/removed onAction(actionId) Button clicks and dropdown selections onAssistantThreadStarted Slack Assistants API thread opened onAppHomeOpened Slack App Home tab opened Streaming Pass any AsyncIterable<string> to thread.post() . Works with AI SDK's textStream : import { ToolLoopAgent } from 'ai' ; const agent = new ToolLoopAgent ({ model : 'anthropic/claude-4.5-sonnet' }); bot. onNewMention ( async (thread, message) => { const result = await agent. stream ({ prompt : message. text }); await thread. post (result. textStream ); }); Cards (JSX) Set jsxImportSource: \"chat\" in tsconfig. Components: Card , CardText , Button , Actions , Fields , Field , Select , SelectOption , Image , Divider , LinkButton , Section , RadioSelect . await thread. post ( < Card title = \"Order #1234\" > < CardText > Your order has been received! </ CardText > < Actions > < Button id = \"approve\" style = \"primary\" > Approve </ Button > < Button id = \"reject\" style = \"danger\" > Reject </ Button > </ Actions > </ Card > , ); Packages Package Purpose chat Core SDK @chat-adapter/slack Slack @chat-adapter/teams Microsoft Teams @chat-adapter/gchat Google Chat @chat-adapter/discord Discord @chat-adapter/github GitHub Issues @chat-adapter/linear Linear Issues @chat-adapter/state-redis Redis state (production) @chat-adapter/state-ioredis ioredis state (alternative) @chat-adapter/state-memory In-memory state (development) Changesets (Release Flow) This monorepo uses Changesets for versioning and changelogs. Every PR that changes a package's behavior must include a changeset. pnpm changeset # → select affected package(s) (e.g. @chat-adapter/slack, chat) # → choose bump type: patch (fixes), minor (features), major (breaking) # → write a short summary for the CHANGELOG This creates a file in .changeset/ — commit it with the PR. When merged to main , the Changesets GitHub Action opens a \"Version Packages\" PR to bump versions and update CHANGELOGs. Merging that PR publishes to npm. Webhook setup Each adapter exposes a webhook handler via bot.webhooks.{platform} . Wire these to your HTTP framework's routes (e.g. Next.js API routes, Hono, Express).",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用chat-sdk帮我处理问题",
            "output": "好的，我是chat-sdk。Use for multi-platform bots built with chat SDK: webhooks, mentions, slash commands, cards, modals and streaming. 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是chat-sdk，专注于生活与工具领域。Use for multi-platform bots built with chat SDK: webhooks, mentions, slash commands, cards, modals and streaming."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    },
    "scripts": {
        "python": "# chat-sdk - Python extension\n# Add custom Python logic here\ndef process(input_data):\n    return input_data\n",
        "javascript": "// chat-sdk - JavaScript extension\n// Add custom JS logic here\nfunction process(inputData) {\n    return inputData;\n}\n"
    },
    "tools": {
        "mcp_servers": [],
        "api_endpoints": []
    },
    "dependencies": {
        "python": [],
        "node": []
    },
    "hooks": {
        "on_load": "echo \"Skill loaded: chat-sdk\"",
        "on_call": "",
        "on_error": "echo \"Skill error: please check logs\""
    }
}