CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

expo-data-fetching

Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, loading/empty/error screen states, and Expo Router data loaders (`useLoaderData`).

Quality

87%

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

81%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 highly actionable, well-routed reference with executable code throughout and a clean decision tree, supported by real one-level-deep bundle references. Its main cost is token weight: several sections duplicate generic fetch/React Query knowledge Claude already has, and the main file carries detail that belongs in references.

Suggestions

Trim or collapse the "Basic Fetch Usage" and React Query setup sections to a few lines each — Claude already knows standard fetch and TanStack Query boilerplate; keep only the Expo-specific deviations (expo/fetch preference, paused-fetchStatus handling).

Move the token-refresh concurrency pattern and the env-var TypeScript declaration block into a reference file, keeping a one-line pointer in the main body.

Add natural trigger synonyms (HTTP, REST, axios migration) to the description's trigger clause to round out keyword coverage.

DimensionReasoningScore

Conciseness

Sections like "Basic Fetch Usage" (plain fetch GET/POST), standard React Query provider setup, and generic exponential-backoff retry re-teach patterns Claude already knows, while the Expo-specific material (four states, hydration gating, EXPO_PUBLIC_ build-time inlining) genuinely earns its tokens — fitting mostly-efficient-with-some-unnecessary-explanation rather than the minor-trims anchor.

3 / 5

Actionability

Nearly all examples are copy-paste executable and cover the common cases — complete useQuery/useMutation components, an ApiError class with retry wrapper, a SecureStore auth wrapper, and a typed apiClient — with only the token-refresh snippet's undefined helpers (isTokenExpired, refreshToken) as an exception.

5 / 5

Workflow Clarity

The Decision Tree unambiguously routes every covered scenario (loaders vs basic fetch vs caching vs auth vs offline vs env config) with no gaps, and the skill involves no destructive or batch operations that would require validation checkpoints.

5 / 5

Progressive Disclosure

Both referenced files (references/expo-router-loaders.md, references/offline-and-cancellation.md) exist, are listed with one-line descriptions, linked from sections 5/7 and the decision tree, and are one level deep — but the ~470-line body inlines detailed material (env-var TypeScript declarations, token-refresh machinery) that could live in references, fitting good-structure-with-minor-gaps rather than a clear overview.

4 / 5

Total

17

/

20

Passed

Description

88%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.

A strong description that explicitly states both what it covers and when to use it, with comprehensive and concrete capability enumeration. Its only weaknesses are a few missing natural trigger synonyms and slight overlap risk from the aggressive "ANY networking" breadth.

DimensionReasoningScore

Specificity

"Covers fetch API, React Query, SWR, error handling, caching, offline support, loading/empty/error screen states, and Expo Router data loaders" lists eight concrete capability areas with no notable gaps, matching the comprehensive-coverage anchor rather than the minor-gaps anchor below it.

5 / 5

Completeness

"Use when implementing or debugging ANY network request, API call, or data fetching" explicitly answers when with concrete triggers, and "Covers fetch API, React Query, SWR..." explicitly answers what, matching the both-explicit anchor rather than the could-be-more-specific one.

5 / 5

Trigger Term Quality

"network request", "API call", and "data fetching" are natural user phrases, but common synonyms users say (HTTP, REST, axios, GraphQL) are absent, so it fits good-coverage-with-a-few-missing-terms rather than comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

"Expo Router data loaders (`useLoaderData`)" anchors the skill to Expo, but the broad "ANY network request" trigger would overlap with a generic fetch/React Query skill if one existed, fitting mostly-distinct-minor-overlap rather than a clear niche with minimal conflict.

4 / 5

Total

18

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

expo/skills

Path

plugins/expo/skills/expo-data-fetching/SKILL.md

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.