CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

native-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, and Expo Router data loaders (useLoaderData).

Quality

72%

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

Fix and improve this skill with Tessl

tessl review fix ./plugins/AI-Agents-Safe-Coding-Skills-claude/skills/native-data-fetching/SKILL.md

The canonical home for this skill is native-data-fetching in administrakt0r/AI-Agents-Safe-Coding-Skills

SKILL.md
Quality
Evals
Security

Quality

Content

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

The body is highly actionable with executable, Expo-aware code patterns and a clear decision tree, but it spends most of its ~500 lines re-teaching generic React Query/fetch knowledge Claude already has, repeats routing info across three sections, and cites a references/expo-router-loaders.md file that is missing from the bundle. Trimming the generic tutorials into reference files and shipping the missing loaders reference would lift it substantially.

Suggestions

Cut the generic React Query setup/useQuery/useMutation, basic fetch, and AbortController tutorials down to one-line pointers (or move them to a reference file), keeping only the Expo-specific knowledge: expo/fetch preference, SecureStore token patterns, EXPO_PUBLIC_ build-time semantics, and the loaders reference — Claude already knows the generic library APIs.

Add the missing references/expo-router-loaders.md file to the bundle (it is cited in the References section, Decision Tree, and Example Invocations but does not exist), or remove the references entirely.

Fix the corrupted 'EXPO*PUBLIC*' mentions in the Example Invocations section (should be EXPO_PUBLIC_), align the code examples with the stated 'Avoid axios, prefer expo/fetch' preference, and remove the triplicated routing info (When to Use / Decision Tree / Example Invocations) in favor of the Decision Tree alone.

DimensionReasoningScore

Conciseness

The ~500-line body is dominated by generic material Claude already knows: full React Query setup/useQuery/useMutation tutorials, basic fetch GET/POST, AbortController cancellation, and a NetInfo hook — with only a fraction being genuinely Expo-specific knowledge (expo/fetch preference, SecureStore, EXPO_PUBLIC_ build-time semantics). The When-to-Use list, Decision Tree, and Example Invocations sections also repeat the same routing information three times, matching 'noticeably verbose; several unnecessary explanations or padded sections' rather than the isolated trimmable excess of a 3.

2 / 5

Actionability

Guidance is mostly executable: copy-paste-ready TSX for error handling (ApiError class), retry with exponential backoff, SecureStore token wrapper, token refresh with single-flight promise, onlineManager/NetInfo wiring, and an env-configured API client. Minor gaps hold it below 5: `isTokenExpired`/`refreshToken` are referenced but never defined, and 'Queue requests -> React Query persistence' names offline persistence without showing it (no asyncStoragePersister).

4 / 5

Workflow Clarity

The Decision Tree sequences every entry point (route-level loading, caching, auth, offline, env config) to a concrete recommended approach, giving clear routing. However, 'Debugging network failures' is promised in When to Use with no corresponding diagnostic steps, and there are no validation checkpoints — acceptable here since nothing is destructive/batch, so this is 'clear sequence with most checkpoints present; minor gaps' rather than a 5.

4 / 5

Progressive Disclosure

The reference that exists is well signaled: an annotated one-level-deep pointer ("references/expo-router-loaders.md — Route-level data loading with Expo Router loaders (web, SDK 55+)"), a decision tree that routes to it, and consistent path citations. But that file does not exist in the bundle (there is no references/ directory), so the pointer is broken rather than a 'minor organization gap', and the ~480-line inline bulk of generic React Query/fetch tutorials is exactly the 'content that should be separate is inline' pattern of the 3 anchor — sitting between anchors 3 and 4, the broken file pulls it down to 3.

3 / 5

Total

13

/

20

Passed

Description

80%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 well-formed description with explicit 'Use when' triggers, good natural keyword coverage, and a clear capability list. Its main weaknesses are over-claiming breadth ("ANY network request") without stating the Expo/React Native niche it actually serves, which raises conflict risk with generic networking skills in other stacks.

DimensionReasoningScore

Specificity

The description enumerates several specific concrete capabilities — "fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (useLoaderData)" — but these are topic/technology enumerations under a generic "Covers..." rather than the concrete verb-actions in the 5 anchor ("Extract text and tables... fill forms, merge documents"), and it never names the Expo/React Native stack it targets, a minor coverage gap.

4 / 5

Completeness

It explicitly answers both questions: "Use when implementing or debugging ANY network request, API call, or data fetching" gives concrete when-triggers, and "Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders" gives a clear what. This matches the 5 anchor's pattern of an explicit what-list followed by a concrete 'Use when' clause.

5 / 5

Trigger Term Quality

Strong natural keywords users would actually say: "network request", "API call", "data fetching", "error handling", "caching", "offline support", plus library names (React Query, SWR, useLoaderData). A few common natural phrasings are missing (e.g. "HTTP request", "REST API", "axios"), which keeps it below the comprehensive-synonym coverage of the 5 anchor.

4 / 5

Distinctiveness Conflict Risk

"ANY network request, API call, or data fetching" is a very broad trigger that would fire for networking work in any stack (backend HTTP clients, web apps, curl usage), creating real overlap risk with generic fetch/API skills. The named libraries (React Query, SWR, Expo Router) do add distinctiveness, but the stack is never stated, so it sits at 'somewhat specific but could still overlap with similar skills' rather than the clear niche of a 4 or 5.

3 / 5

Total

16

/

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

skill_md_line_count

SKILL.md is long (509 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

referenced_paths_exist

Referenced path issues: 2 missing

Warning

Total

13

/

16

Passed

Repository

administrakt0r/AI-Agents-Safe-Coding-Skills

Path

plugins/AI-Agents-Safe-Coding-Skills-claude/skills/native-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.