CtrlK
BlogDocsLog inGet started
Tessl Logo

react-ban-use-effect

Review or replace React useEffect calls, or enforce a no-direct-effect policy. Use for effect implementation, refactoring, or lint policy; excludes unrelated React work and non-React effect systems.

71

Quality

86%

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

86%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-crafted, terse policy/workflow skill body: lean prose, an ordered replacement taxonomy, concrete anti-patterns, and correctly factored-out reference files. The remaining gaps are a concrete example lint rule for enforcement and an explicit error-recovery loop after the verification gates.

Suggestions

Add a minimal, copy-paste-ready eslint rule config (e.g., no-restricted-imports/no-restricted-syntax patterns for useEffect) to the Enforcement section or to references/replacements.md, since 'extend the repository's existing linter' currently leaves the rule shape to inference.

Add an explicit feedback loop after step 4: what to do when lint, type, or test gates fail (fix, re-run, and only report completion once gates pass).

Make the review-path protocol's verification concrete — e.g., how a finding should be demonstrated (touched lines, effect classification) so a review produces consistent, checkable findings.

DimensionReasoningScore

Conciseness

The body never explains React or effect basics Claude already knows; it is dense directive prose ("Components do not call it; a reviewed, domain-specific hook for a real external system may") with every token earning its place. Matches the lean-and-efficient top anchor.

5 / 5

Actionability

Concrete guidance throughout: a 7-item ordered replacement preference list, named anti-patterns with exact signatures ("useUpdateEffect(fn, deps)", "useAsyncEffect(fn, deps)"), and a specific lint surface (reject named imports and React.useEffect calls, allow only named reviewed hook files). Below 5 because the enforcement section lacks a concrete example lint rule/config, and directives like "state the external synchronization contract" are abstract.

4 / 5

Workflow Clarity

The 4-step workflow (find → classify/replace → preserve constraints → run gates) is clearly sequenced with a named validation checkpoint ("Run lint, type, and test gates plus the smallest real UI or hook check"), and review-mode behavior is separately specified. Not 5 because there is no explicit fix-and-re-run error-recovery loop after the gates, and the review path's findings protocol has no verification step.

4 / 5

Progressive Disclosure

The ~80-line SKILL.md is an overview that correctly splits non-obvious detail into references/replacements.md (52 well-sectioned lines) and references/upstream.md, both real files linked one level deep at point of use ("[Replacements](references/replacements.md) covers the non-obvious cases"). Structure and navigation match the top anchor.

5 / 5

Total

18

/

20

Passed

Description

87%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: concrete capabilities, an explicit 'Use for' trigger clause, and an explicit exclusion boundary that sharply limits conflict risk. Trigger-term coverage is good but could add a couple of natural synonyms.

DimensionReasoningScore

Specificity

"Review or replace React useEffect calls" and "enforce a no-direct-effect policy" name several concrete actions in a named domain, matching the 'several specific actions; minor gaps' anchor. Not a 5 because the action coverage stops short of enumerating what replacement involves (e.g., hooks, data layer, lint rule changes).

4 / 5

Completeness

It explicitly answers both: what ("Review or replace React useEffect calls, or enforce a no-direct-effect policy") and when ("Use for effect implementation, refactoring, or lint policy"), with a concrete exclusion clause. This matches the top anchor of clear what-and-when with explicit trigger guidance.

5 / 5

Trigger Term Quality

"React useEffect", "refactoring", and "lint policy" are natural phrases a user would say when needing this skill, giving good keyword coverage. A few common variations are absent (e.g., "hooks", "dependency arrays", "useEffect cleanup"), keeping it below the comprehensive-synonym anchor.

4 / 5

Distinctiveness Conflict Risk

"React useEffect" is a sharp niche and the explicit scope fence ("excludes unrelated React work and non-React effect systems") actively prevents mis-triggering on adjacent React or effect-system skills. Minimal conflict risk.

5 / 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
uinaf/agent-skills
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.