CtrlK
BlogDocsLog inGet started
Tessl Logo

no-explicit-any

Use when reviewing TypeScript files for type safety regressions, during code review of functions that handle external data, or when the codebase has ESLint warnings for @typescript-eslint/no-explicit-any.

61

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 ./skills/no-explicit-any/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%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 lean, well-structured overview for a simple skill: clear task sections and a properly signaled one-level reference containing the full code examples. The main costs are a conceptual intro paragraph duplicated from the reference file and overlapping Check/Code Review sections.

Suggestions

Delete the duplicated 'Why It Matters' prose from SKILL.md — Claude knows why `any` is unsafe, and the paragraph already exists in references/rule.md.

Merge the Check and Code Review sections, which both instruct scanning the file for `any` usages, into one section listing the full set of things to flag (explicit, implicit, unguarded assertions, `any`-inferred returns).

Inline one minimal before/after snippet (`any` → `unknown` + narrowing) in the Fix section so the most common case is executable without opening the reference.

DimensionReasoningScore

Conciseness

The opening paragraph ('The any type is a local opt-out that becomes a global problem... turning latent runtime errors into compile-time failures') is conceptual background Claude already knows, and it is duplicated verbatim in the 'Why It Matters' section of references/rule.md. The rest is tight, but this unnecessary explanation matches anchor 3 ('Mostly efficient but includes some unnecessary explanation or could be tightened') rather than 4, where only minor trimming would be needed.

3 / 5

Actionability

Each section gives a concrete directive with specific alternatives named per scenario — 'unknown (for values of unknown shape), appropriate generics..., or Zod validation (for external data)' — and the Code Review section enumerates exactly what to flag ('explicit or implicit any, any type assertion that lacks a preceding type guard, any return types inferred as any'). As an instruction-only skill the absence of inline code is acceptable per the rubric notes, but key implementation detail (how to narrow, guard patterns) is deferred entirely to the reference, leaving minor gaps consistent with anchor 4 rather than fully copy-paste-ready guidance at 5.

4 / 5

Workflow Clarity

The four task sections (Check, Fix, Explain, Code Review) each present a single unambiguous directive, and as a simple non-destructive skill no validation checkpoints are required. It falls short of 5 because the Check and Code Review sections substantially overlap ('Scan this TypeScript file for uses of the any type... Report each location' vs 'Flag every explicit or implicit any'), creating mild ambiguity about which procedure applies, matching anchor 4 ('clear sequence with most checkpoints present; minor validation gaps') in structural terms.

4 / 5

Progressive Disclosure

The 45-line body is a well-organized overview (Quick Reference, then per-task sections) with a clearly signaled, one-level-deep pointer at the end: 'For full implementation details, code examples, and framework-specific guidance, see references/rule.md' — and references/rule.md exists and contains exactly that. This matches anchor 5 (clear overview, well-signaled one-level-deep reference, easy navigation); the duplicated prose is a conciseness issue, not a structural one.

5 / 5

Total

16

/

20

Passed

Description

73%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, trigger-rich description with excellent distinctiveness thanks to the specific ESLint rule reference. Its main weakness is that it never states what the skill does (replace `any` with `unknown`/generics/validation), making the 'what' implicit.

Suggestions

Lead with the 'what': e.g. 'Replaces TypeScript `any` types with `unknown`, generics, or Zod validation at API boundaries' before the 'Use when...' clauses.

Add common user phrasings as triggers, such as 'explicit any', 'any type', or 'remove any from this file', to broaden natural keyword coverage.

DimensionReasoningScore

Specificity

The description names the domain ('reviewing TypeScript files for type safety regressions', 'functions that handle external data') and one concrete action (reviewing for regressions), but never states what the skill actually does — e.g. replacing `any` with `unknown`, generics, or Zod validation. It matches the anchor 'Names domain and 1-2 concrete actions, but not comprehensive' rather than 4, which expects several specific listed actions; it is above 2 because the actions named are concrete, not generic.

3 / 5

Completeness

The 'when' is explicit and specific with three well-formed 'Use when...' triggers, but the 'what' is only implied: 'reviewing TypeScript files for type safety regressions' gestures at the skill's function without stating it. This fits anchor 4 ('Has both what and when; when could be more explicit or specific') — inverted here, with the weakness on 'what' — and not 5, which requires both to be clearly and explicitly stated with concrete trigger phrases.

4 / 5

Trigger Term Quality

Natural phrases users would say are present: 'TypeScript files', 'type safety regressions', 'code review', 'external data', 'ESLint warnings', '@typescript-eslint/no-explicit-any'. A few common variations are missing — users would plausibly say 'any type', 'explicit any', 'remove any', or mention 'unknown' — so it does not reach the comprehensive-synonym coverage of 5, but coverage is clearly good rather than partial.

4 / 5

Distinctiveness Conflict Risk

The triggers are highly niche — the exact ESLint rule id '@typescript-eslint/no-explicit-any' and TypeScript type-safety review — giving a clear niche with minimal conflict risk against generic TypeScript, linting, or review skills. It matches anchor 5; nothing pushes it toward the overlap risk described at 4.

5 / 5

Total

16

/

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

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
thedaviddias/Front-End-Checklist
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.