CtrlK
BlogDocsLog inGet started
Tessl Logo

stream-react-native

Builds, integrates, migrates, audits Stream Chat, Video, and Feeds in React Native CLI and Expo apps. Use when scaffolding an RN/Expo app, adding Stream to an existing app, upgrading a Stream SDK (Chat v8->v9, Feeds v2->v3), migrating from Sendbird (@sendbird/chat, @sendbird/uikit-react-native), building AI assistants / LLM chat (streaming, stop generating) with @stream-io/chat-react-native-ai, answering RN/Expo how-to questions, or customizing Stream RN UI. Triggers on React Native, Expo, Expo Router, stream-chat-react-native, stream-chat-expo, @stream-io/video-react-native-sdk, @stream-io/feeds-react-native-sdk, ChatGPT clone, channel list, message list, MessageComposer, threads, attachment picker, audio messages, offline support, push notifications, video call, livestream, audio room, ringing, CallContent, ParticipantView, activity/timeline/notification feed, StreamFeeds, comments, reactions, follows, and theming. React Native and Expo only - not web React (use stream-react), not Moderation review UI.

71

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

77%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-engineered router: mandatory intent classification, explicit disambiguation, gated credentials, per-track phase tables with hard verification gates, and a genuinely useful probe script. The main defects are duplicated design-match detail that belongs solely in its reference file, and — more seriously — that the bundle omits nearly all top-level execution modules the body routes to, breaking progressive disclosure for every hands-on track.

Suggestions

Ship the top-level execution modules the body routes to (RULES.md, builder.md, sdk.md, credentials.md, migrate.md, sendbird-migration.md, ai-integration.md) or trim the body to only reference files that exist in the bundle.

Move the 'Front-loaded traps' detail out of SKILL.md and leave only a 2-3 line flag pointing to references/design-matching.md, where the body already says the full detail lives — this would remove ~15 lines of duplicated context loaded on every invocation.

Consolidate repeated gate rules ('run gate commands from an absolute cd and never piped', verification gate wording) into RULES.md or a single section referenced from the M4/S5 phases instead of restating them per track.

DimensionReasoningScore

Conciseness

The router body is mostly dense, actionable pointer content (classification tables, module map, phase tables) with little explanation of concepts Claude already knows. It is not a 5 because the 'Front-loaded traps' section (~10 lines of fine-grained design-match detail: 'messageComposer.wrapper', 'toggleAttachmentPicker', keyboard-offset rules) duplicates content the body itself says lives in references/design-matching.md, and a few rules are stated twice ('Run gate commands from an absolute cd and never piped' appears in both M4 and S5).

4 / 5

Actionability

The body provides copy-paste-ready artifacts: a complete read-only probe script, exact status-line outputs to produce, verbatim disambiguation questions to ask, exact version pins ('bump to >=4.5.1/>=0.10.2'), and named packages per product. It is not a 5 because several load-bearing steps are pointer-only and those pointers dead-end — the central execution modules the whole flow depends on (builder.md, sdk.md, credentials.md, migrate.md, sendbird-migration.md, RULES.md) are not present in the bundle, so a user following the file literally cannot execute Tracks A/B/D/M/S end-to-end from what ships here.

4 / 5

Workflow Clarity

Sequencing is explicit and gated: mandatory Step 0 classifier before any tool call, product classifier, credentials step gated before connection code, and per-track phase tables with hard verification gates (M4: 'tsc --noEmit -> Metro bundle -> native build -> simulator/device smoke', S5: ordered gates including 'zero @sendbird imports'). Failure paths are explicit ('stop and ask the user - never build... from memory') and the Sendbird-removal migration includes validation checkpoints, so it clearly matches anchor 5 rather than anchor 4's 'minor validation gaps'.

5 / 5

Progressive Disclosure

The router structure itself is well designed — a module map, one-level-deep reference links, and clearly signaled per-track files — and all references/*.md links resolve. But scored against the actual bundle, 7 of the most-referenced module files (RULES.md, builder.md, sdk.md, credentials.md, migrate.md, sendbird-migration.md, ai-integration.md) plus the cross-skill ../stream/sendbird-data-migration.md do not exist in the shipped bundle, so the primary navigation paths for every hands-on track dead-end. That is more than the 'minor organization gaps' of anchor 4, but better than anchor 2 since the skill is not monolithic and the references that do exist are clearly signaled and correctly placed.

3 / 5

Total

16

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An excellent description: third-person, dense with concrete capabilities and natural trigger terms, explicit 'Use when' guidance, and explicit scope boundaries that prevent conflicts with sibling Stream skills. The length is justified by trigger coverage rather than padding.

DimensionReasoningScore

Specificity

The description lists multiple concrete capabilities ('Builds, integrates, migrates, audits Stream Chat, Video, and Feeds in React Native CLI and Expo apps') plus specific migrations with version numbers ('Chat v8->v9, Feeds v2->v3'), named SDK packages, and the AI-assistant integration ('streaming, stop generating' with '@stream-io/chat-react-native-ai'). Coverage is comprehensive and in third person; it is not the neighboring anchor 4 because no meaningful capability area is left unnamed.

5 / 5

Completeness

It explicitly answers both questions: what ('Builds, integrates, migrates, audits Stream Chat, Video, and Feeds in React Native CLI and Expo apps') and when ('Use when scaffolding an RN/Expo app, adding Stream to an existing app, upgrading a Stream SDK...'). This matches anchor 5's clear what + when with concrete trigger phrases; the 'Use when' clause is fully explicit, so the anchor-3 cap does not apply.

5 / 5

Trigger Term Quality

Trigger coverage is exhaustive and natural: package names ('stream-chat-react-native', '@stream-io/video-react-native-sdk'), component names ('MessageComposer', 'CallContent', 'ParticipantView'), and plain user phrases ('video call', 'livestream', 'channel list', 'push notifications', 'offline support', 'ChatGPT clone', 'theming'). It matches anchor 5's 'comprehensive coverage of natural terms including synonyms' rather than anchor 4's 'a few natural terms missing'.

5 / 5

Distinctiveness Conflict Risk

Clear niche with explicit boundaries: 'React Native and Expo only - not web React (use stream-react), not Moderation review UI' actively disambiguates against the two most confusable sibling skills. Distinct product-specific triggers (Sendbird migration, ChatGPT clone, audio room) make wrong-skill triggering unlikely, matching anchor 5.

5 / 5

Total

20

/

20

Passed

Validation

81%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_version

'metadata.version' is missing

Warning

relative_links

Relative link issues: 33 missing, 1 suspicious

Warning

Total

13

/

16

Passed

Repository
GetStream/agent-skills
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.