Agent Skills by ALSEL
OpenAIソフトウェア開発⭐ リポ 4品質スコア 76/100

chat-sdk

Chat SDK(`chat` npmパッケージ)を使用して、複数プラットフォーム対応のチャットボットを構築できます。開発者が(1)Slack、Teams、Google Chat、Discord、GitHub、Linearのボットを構築したい、(2)Chat SDKを使ってメンション、メッセージ、リアクション、スラッシュコマンド、カード、モーダル、ストリーミングを処理したい、(3)チャットプラットフォーム用のWebhookハンドラーをセットアップしたい、(4)インタラクティブカードやAIレスポンスのストリーミングをチャットプラットフォームに送信したい、(5)新しいチャットプラットフォーム用のカスタムアダプターを構築したい場合に活用します。「chat sdk」「chat bot」「slack bot」「teams bot」「discord bot」「@chat-adapter」「custom adapter」「build adapter」、複数のチャットプラットフォームで動作するボット構築に関連するキーワードで検出されます。

description の原文を見る

Build multi-platform chat bots with Chat SDK (`chat` npm package). Use when developers want to (1) Build a Slack, Teams, Google Chat, Discord, GitHub, or Linear bot, (2) Use the Chat SDK to handle mentions, messages, reactions, slash commands, cards, modals, or streaming, (3) Set up webhook handlers for chat platforms, (4) Send interactive cards or stream AI responses to chat platforms, (5) Build a custom adapter for a new chat platform. Triggers on "chat sdk", "chat bot", "slack bot", "teams bot", "discord bot", "@chat-adapter", "custom adapter", "build adapter", building bots that work across multiple chat platforms.

SKILL.md 本文

Chat SDK

Slack、Teams、Google Chat、Discord、GitHub、Linear 全体でチャットボットを構築するための統一 TypeScript SDK です。ボットロジックを一度書いて、すべてにデプロイできます。

重要: バンドルされたドキュメントを必ず読んでください

chat パッケージには node_modules/chat/docs/ と TypeScript ソースタイプに完全なドキュメントが付属しています。コードを書く前に必ずこれらを読んでください:

node_modules/chat/docs/           # 完全なドキュメント (MDX ファイル)
node_modules/chat/dist/           # ビルド済みタイプ (.d.ts ファイル)

タスクに応じて読むべき重要なドキュメント:

  • docs/getting-started.mdx — セットアップガイド
  • docs/usage.mdx — イベントハンドラー、スレッド、メッセージ、チャネル
  • docs/streaming.mdx — AI SDK を使用した AI ストリーミング
  • docs/cards.mdx — JSX インタラクティブカード
  • docs/actions.mdx — ボタン/ドロップダウンハンドラー
  • docs/modals.mdx — フォームダイアログ (Slack のみ)
  • docs/adapters.mdx — プラットフォーム固有のアダプターセットアップ
  • docs/state.mdx — ステートアダプター設定 (Redis、ioredis、PostgreSQL、メモリ)

また、node_modules/chat/dist/ の TypeScript タイプを読んで、完全な API サーフェスを理解してください。

クイックスタート

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}`);
});

コアコンセプト

  • Chat — メインエントリーポイント。アダプターを調整し、イベントをルーティングします
  • Adapters — プラットフォーム固有 (Slack、Teams、GChat、Discord、GitHub、Linear)
  • State — プラガブルな永続化 (本番環境では Redis または PostgreSQL、開発環境ではメモリ)
  • Threadpost()schedule()subscribe()startTyping() を備えた会話スレッド
  • Messagetextformatted (mdast AST)、raw を含む正規化フォーマット
  • Channel — スレッドのコンテナ。リストと投稿をサポート

イベントハンドラー

ハンドラートリガー
onNewMentionボットが未購読スレッドで @メンションされた
onSubscribedMessage購読スレッド内のメッセージ
onNewMessage(regex)未購読スレッド内のパターンにマッチするメッセージ
onSlashCommand("/cmd")スラッシュコマンド呼び出し
onReaction(emojis)絵文字リアクションの追加/削除
onAction(actionId)ボタンクリックとドロップダウン選択
onAssistantThreadStartedSlack Assistants API スレッド開始
onAppHomeOpenedSlack App Home タブ開始

ストリーミング

任意の AsyncIterable<string>thread.post() に渡します。AI SDK の 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);
});

カード (JSX)

tsconfig で jsxImportSource: "chat" を設定してください。コンポーネント: CardCardTextButtonActionsFieldsFieldSelectSelectOptionImageDividerLinkButtonSectionRadioSelect

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>
);

パッケージ

パッケージ用途
chatコア SDK
@chat-adapter/slackSlack
@chat-adapter/teamsMicrosoft Teams
@chat-adapter/gchatGoogle Chat
@chat-adapter/discordDiscord
@chat-adapter/githubGitHub Issues
@chat-adapter/linearLinear Issues
@chat-adapter/state-redisRedis ステート (本番環境)
@chat-adapter/state-ioredisioredis ステート (代替)
@chat-adapter/state-pgPostgreSQL ステート (本番環境)
@chat-adapter/state-memoryインメモリステート (開発環境)

Changesets (リリースフロー)

このモノレポでは Changesets を使用してバージョン管理とチェンジログを行います。パッケージの動作を変更する PR にはすべて changeset を含める必要があります。

pnpm changeset
# → 影響を受けるパッケージを選択 (例: @chat-adapter/slack, chat)
# → バージョンタイプを選択: patch (修正)、minor (機能)、major (破壊的変更)
# → CHANGELOG の簡潔なサマリーを記述

これにより .changeset/ にファイルが作成されます — PR でコミットしてください。main にマージされると、Changesets GitHub Action が "Version Packages" PR を開きます。その PR をマージすると npm に公開されます。

カスタムアダプターの構築

コミュニティまたはベンダーアダプターを作成するには、chat から Adapter インターフェースを実装し、以下を読んでください:

  • docs/contributing/building.mdx — 完全なステップバイステップガイド (Matrix アダプターを例として使用)
  • docs/contributing/testing.mdx — アダプターのテスト
  • docs/contributing/publishing.mdx — npm 命名規則と公開

アダプターは handleWebhookparseMessagepostMessageeditMessagedeleteMessage、スレッド ID のエンコード/デコード、および FormatConverter (chat から BaseFormatConverter を拡張) を実装する必要があります。エラークラスとメッセージユーティリティには @chat-adapter/shared を使用してください。

Webhook セットアップ

各アダプターは bot.webhooks.{platform} 経由で webhook ハンドラーを公開します。これらを HTTP フレームワークのルート (Next.js API ルート、Hono、Express など) に接続してください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
Niapya
リポジトリ
Niapya/clawless
ライセンス
MIT
最終更新
2026/4/11

Source: https://github.com/Niapya/clawless / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: Niapya · Niapya/clawless · ライセンス: MIT