CtrlK
BlogDocsLog inGet started
Tessl Logo

you-might-not-need-a-callback

Analyze and fix useCallback anti-patterns in your code

57

Quality

66%

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/you-might-not-need-a-callback/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

80%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 an exemplary lean detection guide: a single memorable decision rule, a concrete anti-pattern checklist, explicit do-not-flag guardrails against false positives, and a correct-pattern snippet. Its main weaknesses are the missing validation loop for the default-on, potentially batch fix mode and thin guidance on what applied fixes should look like.

Suggestions

Add a validation checkpoint to the Steps, e.g. "After applying fixes, run the typecheck/tests for the scope and grep for any remaining references to the removed callback before finishing" — this would lift workflow_clarity past the batch-operation cap of 3.

Show one concrete before/after fix example (e.g. unwrapping an unobserved useCallback) so the fix step is as executable as the detection step.

Merge anti-patterns 1 and 3, since native-element handlers are already covered by pattern 1's "no observer" case, removing the only duplicated content.

DimensionReasoningScore

Conciseness

The body is lean and assumes Claude's competence: it never explains what useCallback or React.memo are, jumps straight to the decision rule ("useCallback is only useful when something observes the reference"), a terse observer checklist, seven named anti-patterns, and a single compact correct-pattern snippet. Every section earns its place; the only near-redundancy (native element handlers appear in patterns 1 and 3) is minor and does not pad the text. Matches anchor 5 ("Lean and efficient; every token earns its place").

5 / 5

Actionability

Detection guidance is concrete and executable: named patterns with code-shaped examples ("<button onClick={fn}>", "a dep is a plain object/array created inline"), an explicit do-not-flag list, and a copy-paste-ready correct ref-pattern snippet. It falls short of anchor 5 because the fix side is underspecified — step 3 says only "apply the fixes" without showing what a fix looks like (e.g. the before/after of unwrapping a useCallback or moving to useMemo).

4 / 5

Workflow Clarity

The three steps (read reference, analyze scope, apply or propose fixes) form a clear sequence, but the skill defaults to fix=true and its scope can be "whole codebase" — a batch code-modification workflow with no validation checkpoint (e.g. re-check for remaining observers, run typecheck/tests) before or after applying fixes. Per the guidelines, batch operations without validation cap workflow clarity at 3; the cap also matches anchor 3 ("sequence present but checkpoints missing").

3 / 5

Progressive Disclosure

The skill is a single-purpose, ~54-line body with no bundle files (no references/, scripts/, or assets/ directories exist), and it is organized into well-labeled sections (References, the rule, anti-patterns, correct patterns, Steps) with its one external reference (react.dev) clearly signaled under a References heading. Per the scoring notes, a sub-50-line skill with no need for external references scores 5 with well-organized sections, which this matches.

5 / 5

Total

17

/

20

Passed

Description

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

The description has a clear, distinctive niche and names its two core actions, but it lacks any "when to use" trigger guidance, omits common synonym keywords, and uses second-person imperative voice. It is functional but below the standard of the rubric's good examples, which pair a concrete what with an explicit when.

Suggestions

Add an explicit trigger clause, e.g. "Use when the user mentions useCallback, memoization, stale closures, or React hook performance issues."

Switch to third-person voice ("Analyzes and fixes useCallback anti-patterns in React code") to avoid the second-person penalty and widen keyword coverage (React, hooks, memoization).

Enumerate one or two concrete capabilities (e.g. "detects unobserved callbacks, unstable dependency arrays, and stale closures") to lift specificity from 1-2 generic actions to several specific ones.

DimensionReasoningScore

Specificity

"Analyze and fix useCallback anti-patterns in your code" names the domain and two actions (analyze, fix), which fits the level-3 anchor ("Names domain and 1-2 concrete actions, but not comprehensive"), but the rubric mandates a 1-point reduction for second-person voice — the imperative "Analyze... in your code" addresses the reader directly rather than using third person ("Analyzes..."). Not level 1-2 on its own merits: the domain is concrete and the actions, while minimal, are real.

2 / 5

Completeness

The "what" is clear (analyze and fix useCallback anti-patterns), but there is no "Use when..." clause or equivalent explicit trigger guidance, which the judging guidelines cap at 3. It is not level 2 because the "what" half is specific and unambiguous, not vague.

3 / 5

Trigger Term Quality

"useCallback" is exactly the natural term a user would say, and "anti-patterns" and "fix" add relevant triggers, but common variations and synonyms are missing ("memoization", "hook", "stale closure", "React performance", "unnecessary memoization"). This matches anchor 3 ("Some relevant keywords but missing common variations or synonyms") rather than anchor 4's "good keyword coverage".

3 / 5

Distinctiveness Conflict Risk

"useCallback anti-patterns" is a precise, unambiguous niche (React hook memoization) with distinct triggers; a user mentioning useCallback would not be routed to a general code-review or document skill. Minimal conflict risk matches anchor 5; it is above anchor 4 because the scope is narrower than the "PDF and Word" overlap example.

5 / 5

Total

13

/

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

frontmatter_unknown_keys

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

Warning

Total

15

/

16

Passed

Repository
simstudioai/sim
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.