Adapter Catalog
@chat-adapter/catalog is a static catalog of every adapter listed on chat-sdk.dev: official, vendor-official, and community. It imports no adapter packages, so you can use it from websites, setup screens, build scripts, or onboarding flows without pulling in Slack, Teams, Redis, or other platform SDKs. The Adapters page and create-chat-sdk both read from it.
The chat/adapters subpath is deprecated. It re-exports the original official and vendor-official API from @chat-adapter/catalog, so existing imports keep working. Import from @chat-adapter/catalog in new code.
Install
pnpm add @chat-adapter/catalogList adapters
List adapters and check what each one supports:
listAdapters() returns official and vendor-official adapters in the order the Adapters page lists them, followed by community adapters. Pass group or type to filter the list.
Read setup requirements
Official and vendor-official entries also describe setup. Use the env helpers when you need to show setup instructions or inject secrets for one adapter:
Community entries carry listing metadata and capabilities only, so listEnvVars() and getSecretEnvVars() return an empty array for them.
Capabilities
Each entry's features field records which Chat SDK capabilities the adapter supports. These are the same values the feature tables on each adapter page show. A value is either a status ("yes", "no", or "partial") or an object with a status and a short label, such as { status: "yes", label: "Native" }. Omitted keys mean "no".
getFeatureSupport(adapterOrSlug, key) always returns the object form. PLATFORM_FEATURE_CATEGORIES and STATE_FEATURE_CATEGORIES list every capability key with a display label, grouped the way the docs tables group them. getFeatureCategories(type) returns the categories for "platform" or "state".
Environment specs
Each official and vendor-official entry includes an env spec:
requiredlists variables needed regardless of auth mode.credentialModesgroups mutually exclusive ways to authenticate, such as a bot token or OAuth client credentials.optionallists tuning variables that are safe to omit.configlists constructor options that do not have an environment-variable equivalent.
Types
Official and vendor-official entries are CatalogAdapter objects, and community entries are CommunityAdapter objects. CatalogEntry is the union of the two. Both share these fields:
| Prop | Type | Description |
|---|---|---|
slug? | string | Stable catalog slug. Matches the key in `ADAPTERS` or `COMMUNITY_ADAPTERS`. |
name? | string | Display name. |
description? | string | One-line summary of what the adapter connects to. |
packageName? | string | npm package that provides the adapter implementation. |
type? | "platform" | "state" | Whether the adapter connects to a platform or stores Chat SDK state. |
group? | "official" | "vendor-official" | "community" | Who maintains the adapter. `CatalogAdapter` entries are official or vendor-official. |
author? | string | Maintainer of a vendor-official or community adapter. |
readme? | string | GitHub URL of the adapter's README. |
features? | AdapterFeatures | Capability support keyed by capability. Omitted keys mean `"no"`. |
icon? | string | Logo identifier used by chat-sdk.dev. |
CatalogAdapter adds the fields setup tools need:
| Prop | Type | Description |
|---|---|---|
factoryExport? | string | Named factory export from `packageName`, such as `createSlackAdapter`. |
importPath? | string | Module specifier to import the factory from when it ships on a subpath of `packageName`. Defaults to `packageName`. |
peerDeps? | readonly string[] | Runtime packages the adapter expects the consuming app to provide or install alongside it. |
env? | AdapterEnvSpec | Environment variables and constructor-only configuration. |
AdapterEnvSpec describes the env field:
| Prop | Type | Description |
|---|---|---|
required? | readonly EnvVar[] | Variables needed regardless of credential mode. |
credentialModes? | readonly EnvGroup[] | Mutually exclusive credential groups. A caller usually satisfies exactly one group. |
optional? | readonly EnvVar[] | Optional environment variables that tune behavior. |
config? | readonly string[] | Constructor options that have no environment-variable equivalent. |
notes? | string | Additional caveats that do not fit the structured fields. |
EnvGroup describes one credential mode:
| Prop | Type | Description |
|---|---|---|
label? | string | Human-readable name for this credential mode. |
vars? | readonly EnvVar[] | Variables that together satisfy this mode. |
EnvVar describes one environment variable:
| Prop | Type | Description |
|---|---|---|
key? | string | Canonical environment variable name. |
description? | string | Short description of what the value configures. |
secret? | boolean | Whether the value should be masked in logs and setup UIs. |
aliases? | readonly string[] | Alternative variable names accepted for the same value. |
Helpers
listAdapters({ group, type })returns every entry, including community adapters, with optional filters.getCatalogEntry(slug)returns any entry, including community adapters, orundefinedfor unknown slugs.getAdapter(slug)returns one official or vendor-official entry, orundefinedfor other slugs.isAdapterSlug(slug)narrows a string toAdapterSlug, the official and vendor-official slugs.listPlatformAdapters()andlistStateAdapters()return official and vendor-official entries sorted by slug.getFeatureSupport(adapterOrSlug, key)returns{ status, label? }for one capability.listEnvVars(slug)flattens required, credential-mode, and optional env vars, de-duplicated by key.getSecretEnvVars(slug)returns the subset oflistEnvVars(slug)marked as secrets.
Example: build a setup checklist
This script combines the catalog helpers into a setup checklist for a set of adapters, which is the core of what create-chat-sdk does. Given the adapter slugs a user picked and the capabilities the bot depends on, it prints an install command, a .env.example template, and a warning for each platform adapter that doesn't fully support a required capability.
For Slack, Microsoft Teams, and Redis, the install command includes each adapter's peer dependencies, such as @slack/web-api and redis, and the script warns that Microsoft Teams streaming is partial.
listEnvVars() returns every variable an adapter reads, including optional ones and the variables for every credential mode. To show only what a user must set, read adapter.env.required, let the user choose one entry from adapter.env.credentialModes, and list adapter.env.optional separately.
Read more
Platform Adapters
Platform adapters connect your bot to messaging platforms such as Slack, Teams, and Google Chat.
State Adapters
State adapters store thread subscriptions, distributed locks, and cached data for your bot.
CLI
Scaffold a Chat SDK bot app with a single command.
Publishing your adapter
Package, version, and publish your community Chat SDK adapter to npm.