実際の製品を操作して、利用者が確認できる動作証拠を集め、検証計画に沿った受け入れレポートとして公開するスキルです。
- 変更後の製品動作を実地で検証したいとき
- 画面キャプチャなどの証拠を集めたいとき
- 検証計画とレポートを作成したいとき
複数のチャットサービスで動くボットの開発を支援し、メンションやコマンドへの応答、カード表示、フォーム、文章の逐次配信を扱います。
Use for multi-platform bots built with chat SDK: webhooks, mentions, slash commands, cards, modals and streaming.
実行スコア 未検証
インストール方法を見るchat SDKを使い、複数のチャットサービスに対応するボットの処理を共通のTypeScriptコードで組み立てます。Slack、Teams、Google Chat、Discord、GitHub、Linearなどのアダプターを通じて、メンション、スラッシュコマンド、メッセージ、リアクション、ボタン操作に応答できます。会話スレッドへの投稿や購読、状態の保存、Webhookの接続も扱います。カード形式の投稿にはボタンや選択欄を含められ、非同期で生成されるテキストをストリーミング配信する方法も示します。
複数のチャットサービスで同じボット機能を提供したいときや、会話内の操作に応じて応答するボットを開発するときに向いています。フォームやカードを使った承認などの操作、AIの応答を生成しながら届ける仕組みを組み込みたい場合にも役立ちます。
chatと各アダプターパッケージが必要です。実装前にnode_modules/chat/docs/の関連ドキュメントと型定義を確認します。モーダルはSlack向けとして記載されています。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。
点数には入れていません。 2026年10月26日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Unified TypeScript SDK for building chat bots across Slack, Teams, Google Chat, Discord, GitHub, and Linear. Write bot logic once, deploy everywhere.
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 guidesdocs/usage.mdx — event handlers, threads, messages, channelsdocs/streaming.mdx — AI streaming with AI SDKdocs/cards.mdx — JSX interactive cardsdocs/actions.mdx — button/dropdown handlersdocs/modals.mdx — form dialogs (Slack only)docs/adapters.mdx, docs/platform-adapters.mdx — adapter overview and platform-specific setupdocs/state-adapters.mdx — state adapter config (Redis, ioredis, memory)Also read the TypeScript types from node_modules/chat/dist/ to understand the full API surface.
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}`);
});
post(), subscribe(), startTyping()text, formatted (mdast AST), raw| 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 |
Pass any AsyncIterable<string> to thread.post(). Works with AI SDK's textStream:
import { ToolLoopAgent } from 'ai';
const agent = new ToolLoopAgent({ model: 'anthropic/claude-sonnet-5' });
bot.onNewMention(async (thread, message) => {
const result = await agent.stream({ prompt: message.text });
await thread.post(result.textStream);
});
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>,
);
chat and the @chat-adapter/* packages are an external SDK this repo
consumes (pinned via semver range in package.json), not something built or
versioned here — there's no Changesets/release flow to document for them.
| Package | Purpose |
|---|---|
chat | Core SDK |
@chat-adapter/discord | Discord |
@chat-adapter/slack | Slack |
@chat-adapter/telegram | Telegram |
@chat-adapter/state-ioredis | ioredis state |
@lobechat/chat-adapter-feishu | Lark/Feishu — built in-repo (packages/chat-adapter-feishu), not from @chat-adapter/ |
@lobechat/chat-adapter-imessage | iMessage via BlueBubbles — built in-repo |
@lobechat/chat-adapter-line | LINE Messaging API — built in-repo |
@lobechat/chat-adapter-qq | QQ Bot — built in-repo |
@lobechat/chat-adapter-wechat | WeChat (iLink) — built in-repo |
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).
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
実際の製品を操作して、利用者が確認できる動作証拠を集め、検証計画に沿った受け入れレポートとして公開するスキルです。
LobeHubにAIモデルプロバイダーを追加し、実行時連携からモデル表示、設定、ブランド表記、文書化、動作確認まで進めるスキルです。
ユーザー設定の初期値をサーバー側の環境変数で切り替えるため、型定義や設定の組み立て、ユーザーストアへの反映、環境変数の例と説明書きを追加する手順です。
エージェント実行中の各段階をフックで監視し、ツール呼び出しの模擬・制御や人の承認、圧縮、サブエージェント処理に介入する仕組みを扱います。
イベントを起点にエージェントのバックグラウンド処理を組み立て、ソース・シグナル・アクション・ポリシーの役割分担や非同期連携を実装するためのスキルです。
DiscordやSlackなどの実際のチャットアプリでボットにメッセージを送り、応答を画面で確認する受け入れテストを行うスキルです。