Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
getstream avatar

Stream Android

  • 364 installs
  • 17 repo stars
  • Updated August 4, 2026
  • getstream/agent-skills

stream-android is a Claude Code skill that embeds Stream chat, activity feeds, or video SDK features into Android apps with correct client setup, channels, and UI integration patterns for developers building real-time mo

About

stream-android is a Claude Code skill for integrating GetStream’s Android SDKs—chat, activity feeds, and video—into Kotlin or Java Android applications. The skill guides developers through Stream client initialization, channel and user configuration, and UI component integration so messaging or feed features ship with correct SDK patterns. Developers reach for stream-android when adding real-time chat, social activity feeds, or video calling to an Android app without re-reading Stream’s Android documentation from scratch. The skill targets mobile engineers building consumer or team collaboration apps that depend on Stream’s hosted real-time infrastructure.

  • Stream Android SDK setup and configuration
  • Channel, user, and token integration patterns
  • Chat or feed UI wiring on Android
  • Pairs with backend auth for Stream tokens

Stream Android by the numbers

  • 364 all-time installs (skills.sh)
  • Ranked #348 of 1,039 Mobile Development skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/getstream/agent-skills --skill stream-android

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs364
repo stars17
Last updatedAugust 4, 2026
Repositorygetstream/agent-skills

How do you integrate Stream chat SDK into Android?

Embed Stream chat, activity feeds, or video SDK features into an Android app with correct client setup, channels, and UI integration patterns.

Who is it for?

Android developers adding Stream-powered chat, activity feeds, or video features to Kotlin or Java mobile apps.

Skip if: iOS or web Stream integrations, or Android apps that do not use GetStream’s real-time SDKs.

When should I use this skill?

A developer asks to add Stream chat, feeds, or video to an Android app, configure Stream channels, or wire Stream UI components.

What you get

Stream Android client configuration, channel setup, and UI-integrated chat, feed, or video components.

  • Stream client initialization
  • Channel configuration
  • UI-integrated Stream components

Files

SKILL.mdMarkdownGitHub ↗

Stream Android - skill router + execution flow

Rules: Read [`RULES.md`](RULES.md) once per session - every non-negotiable rule is stated there, nowhere else.

This file is the single entrypoint: intent classification, local project detection, and module pointers for Stream work in Android apps.

---

Step 0: Intent classifier (mandatory first - never skip)

Before any tool call, decide the track from the user's input alone - no probes first.

Signals -> track

Signal in user inputTrack
Explicit product/framework token: Chat Compose, Chat XML, Video Android, Video Compose, Feeds Android, Feeds Compose, etc.C - Reference lookup
Words "docs" or "documentation" around Stream Android/Compose workC - Reference lookup
"How do I {X} in Compose/XML/Android?", "What does {SDK type/Composable/View/Fragment} do?"C - Reference lookup
"Build me a new Android app", "create a Compose app", "new Android app" + Stream productA - New app
"Add/integrate Stream into this app", "wire Chat/Video/Feeds into my Android project"B - Existing app
"Install Stream packages", "set up Stream in Android Studio", "wire auth/token flow" with no broader feature requestD - Bootstrap / setup
Bare /stream-android with no argsList the tracks briefly and wait

Disambiguation flow

If the request is ambiguous between build/integrate and reference lookup, ask one short question and wait:

Do you want me to wire this into the project, or just map the Android SDK pattern and files?

After classification

  • Tracks A, B, D -> run Step 0.5 (credentials) first, then Project signals once per session, then continue in `builder.md` and `sdk.md`. Do not probe the project before credentials.
  • Track C -> skip both steps if the product + UI layer are explicit. Only run Project signals on demand if the SDK or UI layer is ambiguous.

---

Step 0.5: Credentials, token, and seed data (tracks A, B, D only)

Order: intent classification -> Step 0.5 (this step) -> Project signals probe -> track work. Do this before running the Project signals shell command, even if a track table below lists "Detect" as phase 1. Run once per session for tracks A, B, and D. Skip for Track C.

Follow `credentials.md` to:

  • collect the Stream API key from the dashboard (or from the user)
  • generate a user token via the Stream CLI (or accept one from the user)
  • run any product-specific setup (Chat: optionally seed channels; Feeds: confirm feed groups; Video: nothing — calls are ephemeral)

Wire the API key from getstream env's output (e.g. BuildConfig.STREAM_API_KEY) and use the real user token in code snippets - never placeholder strings. If a track A/B/D task reaches code work and credentials haven't been collected yet, return to credentials.md before continuing.

---

Project signals (tracks A/B/D - once per session; Track C on demand only)

Read-only local probe. Use it to detect whether the user is in an Android Studio / Gradle project, a Kotlin module, or an empty directory.

bash -c 'echo "=== GRADLE ROOT ==="; find . -maxdepth 2 \( -name "settings.gradle.kts" -o -name "settings.gradle" -o -name "build.gradle.kts" -o -name "build.gradle" \) -print 2>/dev/null; echo "=== APP MODULES ==="; find . -maxdepth 3 -type f \( -name "build.gradle.kts" -o -name "build.gradle" \) -path "*/*/build.gradle*" -print 2>/dev/null; echo "=== VERSION CATALOG ==="; find . -maxdepth 3 -name "libs.versions.toml" -print 2>/dev/null; echo "=== MANIFESTS ==="; find . -maxdepth 4 -name "AndroidManifest.xml" -print 2>/dev/null; echo "=== EMPTY ==="; test -z "$(ls -A 2>/dev/null)" && echo "EMPTY_CWD" || echo "NON_EMPTY"'

Hold the result in conversation context. Don't re-run it unless the user changes directory or the project shape clearly changed.

Use the result to produce a one-line status, for example:

  • Compose app detected - app/build.gradle.kts - libs.versions.toml present - ready for Stream wiring
  • Multi-module Gradle project detected - preserve existing module layout
  • XML / View-based app detected - keep current UI layer unless the user asks to migrate
  • No Gradle project found - user needs to create the app in Android Studio first

---

Module map

TrackModule(s)
A - New app`builder.md` + `sdk.md` + relevant reference files
B - Existing app`builder.md` + `sdk.md` + relevant reference files
C - Reference lookup`sdk.md` + relevant reference files
D - Bootstrap / setup`builder.md` + `sdk.md`

---

Reference layout

Shared Android/Kotlin patterns live in [`sdk.md`](sdk.md).

Product and UI-layer specifics live under `references/` using a flat naming scheme that can grow with the full Stream Android surface:

  • Reference: references/<PRODUCT>-<UI_LAYER>.md
  • Blueprints: references/<PRODUCT>-<UI_LAYER>-blueprints.md

Current extracted modules:

  • Chat + Compose: `references/CHAT-COMPOSE.md` + `references/CHAT-COMPOSE-blueprints.md`
  • Chat + XML: `references/CHAT-XML.md` + `references/CHAT-XML-blueprints.md`
  • Video + Compose: `references/VIDEO-COMPOSE.md` + `references/VIDEO-COMPOSE-blueprints.md`
  • Feeds + Compose: `references/FEEDS-COMPOSE.md` + `references/FEEDS-COMPOSE-blueprints.md`
Feeds has no pre-built UI components. FEEDS-COMPOSE.md covers the headless data SDK (FeedsClient, FeedState, ActivityState); FEEDS-COMPOSE-blueprints.md is custom Composable scaffolding driven by those state flows. Load both for any Feeds request.

Future Android product coverage should stay in this naming family instead of creating more top-level skills.

If the requested product/UI layer file is not bundled yet, say so plainly, use sdk.md for the shared Android patterns, and only switch to live docs if the user asks.

---

Track A - New app

Full detail: `builder.md` - use the new-project path.

PhaseNameWhat you do
A1DetectAfter Step 0.5 (credentials), run Project signals. If there is no Android app yet, tell the user to create one in Android Studio first.
A2Choose laneConfirm product(s) and UI layer: Compose, XML/Views, or mixed.
A3Install + wireFollow `builder.md` + `sdk.md`, then load only the needed product references.
A4VerifyConfirm Gradle sync, ChatClient lifetime, auth, and first rendered screen.

---

Track B - Existing app

Full detail: `builder.md` - use the existing-project path.

PhaseNameWhat you do
B1DetectAfter Step 0.5 (credentials), run Project signals and inspect the existing app structure before editing.
B2PreserveKeep the current UI layer, dependency strategy (version catalog vs inline), and navigation setup unless the user asks for a migration.
B3IntegrateUse `sdk.md` for shared wiring, then load only the needed product reference files.
B4VerifyConfirm the requested Stream flow builds and renders inside the existing app.

---

Track C - Reference lookup

Load only the relevant files for the requested product and UI layer.

  • Shared lifecycle / auth / state patterns -> `sdk.md`
  • Chat Compose setup and gotchas -> `references/CHAT-COMPOSE.md`
  • Chat Compose screen structure -> `references/CHAT-COMPOSE-blueprints.md`
  • Chat XML setup and gotchas -> `references/CHAT-XML.md`
  • Chat XML screen structure -> `references/CHAT-XML-blueprints.md`
  • Video Compose setup and gotchas -> `references/VIDEO-COMPOSE.md`
  • Video Compose call/screen structure -> `references/VIDEO-COMPOSE-blueprints.md`
  • Feeds Compose SDK patterns -> `references/FEEDS-COMPOSE.md`
  • Feeds Compose blueprints -> `references/FEEDS-COMPOSE-blueprints.md`

If the user asks for a product/UI-layer combo that is not bundled (e.g. Video XML, Feeds XML), say that clearly instead of inventing API details.

---

Track D - Bootstrap / setup

Use when the user wants the install and wiring path more than a feature build:

  • run Step 0.5 (credentials) first
  • detect the project shape
  • choose Compose vs XML ownership
  • install Stream packages with the project's existing dependency strategy (version catalog or inline)
  • wire auth and ChatClient lifetime via `sdk.md`
  • stop before product-specific UI if the user only asked for setup

Related skills

FAQ

Which Stream SDKs does stream-android cover?

stream-android covers GetStream’s Android SDKs for chat, activity feeds, and video, guiding client setup, channel configuration, and UI integration patterns for each.

What platform does stream-android target?

stream-android targets Android applications built with Kotlin or Java, focusing on correct Stream SDK client initialization, channel wiring, and UI component integration.

Mobile Developmentfrontendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.