stream (router + CLI)

/stream is the router, and it also has the getstream CLI built in. When you invoke it, the agent reads your prompt, classifies the intent, and either dispatches the work to the right sub-skill (building, docs) or handles it directly (data queries, app configuration, onboarding).

If you already know which specialist you need, call it directly: /stream-react build me a chat app is more direct than routing through /stream. The rules every skill follows apply either way.

Which skill do I want?

You wantUse
To scaffold a new web app or wire Stream into one/stream-react
To answer "how do I do X with the SDK?"/stream-docs
To look up an API or version-specific behaviour/stream-docs
To query your live Stream data in plain English/stream (CLI built in)
To configure an app, moderation or blocklists/stream (CLI built in)
To build on iOS, SwiftUI or UIKit/stream-swift
To build on Android or Jetpack Compose/stream-android
To build a React Native or Expo app/stream-react-native
To build a Flutter app/stream-flutter
To use the framework-agnostic builder/stream-builder

Web React and Next.js work routes to /stream-react, the default web pack. /stream-builder is the framework-agnostic builder and is only chosen when you name it explicitly.

Router, or call a skill directly?

Prefer calling a specialist directly when you know which one you need. Each is self-contained: it drives the getstream CLI itself, so calling it directly does everything routing through /stream would. /stream-react, for example, runs getstream init to authenticate and write credentials before it builds, then calls the CLI again to configure the app — it never needs /stream first. The native packs use the CLI the same way, and also accept a pasted API key and token.

Reach for /stream when:

  • You don't know which pack fits the task. It classifies the request and dispatches.
  • The task is a data query, app config, or onboarding. The router runs those itself through the built-in CLI, there's no separate skill to call.
  • The pack you need isn't installed yet. Typing an uninstalled /stream-<name> fails with "Unknown skill" before anything can run, so describe the task to /stream instead. It installs the right pack, and you can invoke it directly next time.

Routing precedence

The classifier is deterministic, no probes or network calls. When your input contains a platform signal (react native, expo, swift, ios, android, flutter, and so on), the matching platform pack wins over the web default. The web /stream-react pack is the default only when no platform signal is present.

The CLI is built in

Data queries, app configuration and onboarding are handled by the router itself, through the getstream CLI, so there's no separate CLI skill to install. You ask a question in plain English and the router translates it into a getstream command and answers from the output.

CommandWhen the router reaches for it
getstream initOnboard a project: authenticate, pick or create an org and app, write credentials. Start here.
getstream api <Endpoint>Query data or run a one-off API operation.
getstream envWrite the app's API key (and secret, for server targets) into the project's env file.
getstream token <user>Mint a token for a user (dev auth, seeding).
getstream loginAuthenticate (--guest for a throwaway account).
getstream skills <name>Install a Stream agent skill on demand.

The router reads the CLI's own output to understand what happened; it never guesses endpoint names or body shapes. It defaults to read-only and confirms with you before any operation that creates, changes or deletes data.

If the getstream binary isn't installed, the router asks you to install it from getstream.io and waits. It never fetches or runs an install script on your behalf. See Security and trust.

Example prompts

/stream build me a Next.js app with Chat and Video, wired end-to-end

The router sends this to /stream-react.

/stream how do I generate a user token in Node.js

The router sends this to /stream-docs.

/stream show me the most-flagged channels in the last week

The router handles this itself with the built-in CLI.

/stream add a video call to my Expo app

The platform signal (expo) wins, so the router installs and dispatches to /stream-react-native.

Bare invocation

Invoke /stream with no arguments and it prints a short menu of the specialists, split into Core and Platform SDKs, then waits for you to pick one or describe your task. Describing the task always works, even for a pack that isn't installed yet, because the router installs the right one automatically.

Rules every skill follows

The same rules apply on every call, whether routed through /stream or invoked directly. See Rules every skill follows for the full list and the reasoning behind each one.