CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

data-client-endpoint-setup

Set up @data-client/endpoint for custom async operations. Wraps existing async functions with Endpoint for use with Data Client hooks. Use after data-client-setup detects non-REST/GraphQL async patterns.

62

Quality

78%

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 ./.agents/skills/data-client-endpoint-setup/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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-structured guide with copy-paste-ready code for every common wrapping scenario and a genuinely useful progressive-disclosure setup (real reference files, Vue variant convention, skill chaining). Its weaknesses are repetition — multiple example blocks restate the identical wrapping boilerplate — and the absence of any validation checkpoint in the workflow.

Suggestions

Collapse the Firebase and Supabase sections into one representative vendor example and point to references/Endpoint.md for the rest; they restate the identical `new Endpoint(fetchFn, { schema, name })` boilerplate already shown in the Before/After section.

Trim the Endpoint Options section to the options that matter for wrapping (schema, name, sideEffect) and let the full options list live in references/Endpoint.md to reduce inline API duplication.

Add a brief verification step after wrapping (e.g., confirm the schema matches the function's return shape and that the endpoint resolves via useSuspense) to close the workflow's validation gap.

DimensionReasoningScore

Conciseness

The body is all code and commands with no concept re-explanation, but it is noticeably repetitive: the Before/After, Firebase, Supabase, IndexedDB, and WebSocket sections all restate the same `new Endpoint(fetchFn, { schema, name })` boilerplate, and Firebase/Supabase add little beyond the basic pattern. Fits anchor 3 (mostly efficient but could be tightened) rather than anchor 4, since whole example blocks could be cut or collapsed.

3 / 5

Actionability

Fully executable, copy-paste-ready TypeScript covering the common cases: before/after wrapping, full options object, custom key function, four vendor patterns, mutations with `sideEffect`, `extend()` variations, the explicit-name minification warning, and hook/controller usage (`useSuspense(getUser, id); ctrl.fetch(createUser, userData)`). Matches anchor 5; the only nit (missing imports in the two-line usage snippet) is minor.

5 / 5

Workflow Clarity

A clear linear sequence is present: Installation → When to Use → Detection (what to scan for) → Wrapping → options/patterns → usage with hooks → Next Steps chaining to the schema and react/vue skills. No validation checkpoint exists (e.g., typecheck or verify the endpoint resolves with the schema), but this is not a destructive or batch operation so no cap applies; fits anchor 4 (clear sequence, minor validation gaps) rather than 5.

4 / 5

Progressive Disclosure

The bundle structure is real and well-used: the body clearly signals "See [Endpoint](references/Endpoint.md) for full API documentation" and both referenced files exist, one level deep, plus a documented Vue convention ("read `<name>.vue.md` instead of `<name>.md`"). Not a 5 because the ~340-line body inlines a full Endpoint options rundown and four vendor patterns that partially belong in references, leaving the SKILL.md heavier than an overview.

4 / 5

Total

16

/

20

Passed

Description

71%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, third-person description that clearly states what the skill does and when to use it, with excellent distinctiveness within the data-client skill family. Its main weakness is trigger-term coverage: it relies on package-level jargon and omits the natural user-facing keywords (Firebase, Supabase, WebSocket, IndexedDB, async storage) that the body itself identifies as use cases.

Suggestions

Add natural trigger terms to the description, e.g. "Use when wrapping Firebase, Supabase, AWS SDK, WebSocket, or IndexedDB/AsyncStorage operations that don't fit REST or GraphQL" — these are the phrases the body's 'When to Use' section already lists.

Mention mutations/optimistic updates alongside data fetching so the 'what' covers the sideEffect use cases the skill guides.

Consider a user-oriented trigger phrase (e.g. "when the user mentions custom async data fetching") in addition to the skill-chain trigger "Use after data-client-setup detects...".

DimensionReasoningScore

Specificity

"Set up @data-client/endpoint for custom async operations. Wraps existing async functions with Endpoint for use with Data Client hooks" lists several concrete actions (setup, wrapping, hook usage) with only minor coverage gaps (mutations, polling, cache options unmentioned). It sits between anchor 3 (1-2 concrete actions) and anchor 5 (comprehensive coverage), noticeably above the midpoint.

4 / 5

Completeness

Both parts are explicitly present: the "what" ("Set up... Wraps existing async functions with Endpoint for use with Data Client hooks") and the "when" ("Use after data-client-setup detects non-REST/GraphQL async patterns"). Not a 5 because the "when" is skill-chain-oriented rather than concrete user trigger phrases; not a 3 because the "when" is explicit, not merely implied.

4 / 5

Trigger Term Quality

Relevant domain keywords are present ("@data-client/endpoint", "Endpoint", "Data Client hooks", "custom async operations", "non-REST/GraphQL async patterns") but natural user-facing variations are missing — the body covers Firebase, Supabase, WebSocket, and IndexedDB, none of which appear in the description. Fits anchor 3: some relevant keywords but missing common variations or synonyms.

3 / 5

Distinctiveness Conflict Risk

"non-REST/GraphQL async patterns" explicitly excludes the REST/GraphQL sibling skills and "Use after data-client-setup" pins its position in the skill chain, giving it a clear niche with distinct triggers and minimal conflict risk. The description is also specific to the @data-client/endpoint package, so it would not trigger for unrelated skills.

5 / 5

Total

16

/

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

reactive/data-client

Path

.agents/skills/data-client-endpoint-setup/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.