CtrlK
BlogDocsLog inGet started
Tessl Logo

onyx

Onyx state management patterns — useOnyx hook, action files, optimistic updates, collections, and offline-first architecture. Use when working with Onyx connections, writing action files, debugging state, or implementing API calls with optimistic data.

70

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

78%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-organized, highly actionable patterns reference with executable TypeScript, BAD/GOOD contrasts, and correct deferral of bulk API material to external URLs. Its main defects are a dangling reference to a nonexistent offline-patterns.md bundle file (promised twice, never delivered) and some duplicated code between the performance section and the quick reference. Workflow sequencing is sound but lacks validation checkpoints.

Suggestions

Create offline-patterns.md (e.g., in references/) with the promised A/B/C/D, loading-state, and finallyData code examples, or remove both references to it and inline the minimal examples — the current dangling link breaks navigation.

Deduplicate the useOnyx-with-selector snippet between the 'Use Selectors to Narrow Re-renders' section and 'Common Tasks Quick Reference' — keep it in one place and cross-reference the other.

Add a short validation note to the optimistic-update flow (e.g., how to verify pendingAction was cleared or how to surface the failureData errors state) so the pattern includes an explicit post-write checkpoint.

DimensionReasoningScore

Conciseness

The body is dense and project-specific (action-file rules, pendingAction lifecycle, set/merge batching race) with no padding of concepts Claude already knows, but the "Common Tasks Quick Reference" repeats code already shown (useOnyx with selector appears at both the Performance section and the quick reference), and the selector section uses three code blocks where two would carry the same contrast. This fits anchor 4 (efficient, minor trimmable instances) rather than anchor 5 (every token earns its place).

4 / 5

Actionability

Guidance is fully executable: copy-paste-ready TypeScript for merging state, subscribing with selectors, collection-member updates, mergeCollection, and API.write with the three data sets, plus explicit BAD/GOOD contrasts ("re-renders on any report change" vs. "re-renders only when this report changes") and hard rules ("Never call Onyx.merge, Onyx.set, Onyx.clear, or API.write directly from a component"). This matches anchor 5.

5 / 5

Workflow Clarity

The optimistic-update flow is clearly sequenced (optimisticData applied immediately → pendingAction cleared by successData/failureData → failureData reverts and adds errors) and pattern selection is delegated to a decision-flowchart reference, but the skill is a patterns reference rather than a procedure and includes no explicit validation/checkpoint steps (e.g., verifying state after a merge or handling a failed API write). That places it at anchor 4 (clear sequence, most checkpoints present, minor validation gaps) rather than anchor 5's explicit validate-fix-retry loops.

4 / 5

Progressive Disclosure

The structure is good and references are clearly signaled, but the body twice points to [offline-patterns.md](offline-patterns.md) ("For code examples of each pattern (A/B, loading state, finallyData), see offline-patterns.md") and that file does not exist anywhere in the skill bundle — no references/, scripts/, or assets/ directories are present. A dangling reference to a promised bundle file breaks navigation and means the pattern examples it advertises are unavailable, which is a larger defect than anchor 4's "minor organization gaps".

3 / 5

Total

16

/

20

Passed

Description

95%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, well-formed description: it names the niche domain with five concrete capability areas and pairs them with an explicit, naturally worded "Use when..." trigger clause covering connection work, action-file authoring, state debugging, and optimistic API calls. Written in appropriate third-person/imperative style with no fluff.

DimensionReasoningScore

Specificity

The description lists several specific concrete items — "useOnyx hook, action files, optimistic updates, collections, and offline-first architecture" — but these are topic nouns rather than the concrete actions of the anchor-5 examples ("Extract text and tables... fill forms, merge documents"), and "offline-first architecture" is an abstract concept. It exceeds anchor 3 (only 1-2 concrete actions) and sits noticeably above the midpoint, so 4.

4 / 5

Completeness

It explicitly answers both parts: what ("Onyx state management patterns — useOnyx hook, action files, optimistic updates, collections, and offline-first architecture") and when ("Use when working with Onyx connections, writing action files, debugging state, or implementing API calls with optimistic data"), with concrete trigger phrases — a direct match to the anchor-5 example pattern.

5 / 5

Trigger Term Quality

Natural user phrasings are comprehensively covered: "Onyx connections", "writing action files", "debugging state", "optimistic data", plus "state management", "useOnyx", and "offline-first" — the vocabulary a developer on this codebase would actually say. No natural synonyms are obviously missing for this domain, matching anchor 5.

5 / 5

Distinctiveness Conflict Risk

"Onyx" is a highly distinctive niche trigger (the react-native-onyx library), and the skill is anchored on it, giving a clear niche with distinct triggers and minimal conflict risk, matching anchor 5 rather than the "minor overlap risk with closely related skills" of anchor 4.

5 / 5

Total

19

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 2 missing

Warning

Total

15

/

16

Passed

Repository
Expensify/App
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.