CtrlK
BlogDocsLog inGet started
Tessl Logo

lang-attribute

Use when applies to all HTML documents. Check the `<html>` opening tag for a `lang` attribute with a non-empty, valid BCP 47 language code. Also check for `lang` attribute changes on individual elements when the document contains content in multiple languages (inline quotes, foreign terms, multilingual sections). The `lang` attribute is inherited — child elements inherit the language from their nearest ancestor with `lang`.

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/lang-attribute/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%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-structured, actionable body for a simple checklist rule: clear check sequence, concrete fix guidance, and a clean pointer to a real one-level-deep reference. The main cost is redundancy — the same BCP 47/empty-lang facts are restated across Quick Reference, Check, and Explain, which could be tightened without losing information.

Suggestions

Deduplicate across sections: state BCP 47 validity and the empty-lang rule once (Quick Reference or Check) instead of four times across Quick Reference, Check, Fix, and Explain.

Drop or compress the BCP 47 subtag anatomy in Explain (primary subtag required, region subtags optional) — Claude already knows this; keep only the WCAG citations and the IANA registry pointer.

Move the Fix section's long enumeration of language codes (`en`, `fr`, `es`, `de`, `ja`, `zh-Hans`, `zh-Hant`, `ar`) into references/rule.md, keeping two or three examples inline.

DimensionReasoningScore

Conciseness

The body is compact (~35 lines), but there is noticeable redundancy across sections: BCP 47 validity is stated in Quick Reference, Check, Fix, and Explain; empty `lang=''` is flagged in both Quick Reference and Check; and the Explain section re-describes BCP 47 subtag structure (primary vs. region subtags) that Claude already knows. Not a 2 because nothing is padded filler and each section has a distinct purpose (Check/Fix/Explain).

3 / 5

Actionability

The Check section gives a concrete numbered verification ("(1) a `lang` attribute is present; (2) its value is non-empty; (3) its value is a valid BCP 47 language code") plus an explicit flag list ("missing `lang`, empty `lang=''`, language codes using full names ... mismatches"), and Fix provides copy-paste-ready snippets like `<html lang='fr'>`. Not a 5 because the body itself has no executable code example (correct/incorrect HTML lives in references/rule.md) and no command for validating against the IANA registry.

4 / 5

Workflow Clarity

This is a simple, single-purpose skill and the action is unambiguous: a numbered inspect-and-verify sequence in Check, explicit flag conditions, a Fix section with exact remediation per case, and a validation directive ("Validate language codes against the IANA Language Subtag Registry"). The simple-skill exception applies; no destructive or batch operation requires a feedback loop.

5 / 5

Progressive Disclosure

The SKILL.md body is a well-organized overview under 50 lines with clear sections (Quick Reference / Check / Fix / Explain / Code Review), and the one bundle file `references/rule.md` exists and is clearly signaled at the end ("For full implementation details, code examples, and framework-specific guidance, see `references/rule.md`"). References are one level deep with no nested chaining.

5 / 5

Total

17

/

20

Passed

Description

67%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 mostly strong description with concrete, technically precise actions and an explicit 'Use when' clause. Main weaknesses are the broken-grammar trigger clause, overly broad scope wording, and missing natural synonyms like accessibility or screen readers.

Suggestions

Fix the garbled trigger clause — replace "Use when applies to all HTML documents" with something like "Use when reviewing or editing HTML documents, checking accessibility, or when the user mentions the lang attribute, page language, or multilingual content".

Add natural trigger synonyms users would actually say: "accessibility", "screen readers", "language tag", "i18n", "page language".

Trim the informational sentence about lang inheritance ("child elements inherit the language from their nearest ancestor") — it is background knowledge, not a trigger or capability statement.

DimensionReasoningScore

Specificity

Quotes like "Check the `<html>` opening tag for a `lang` attribute with a non-empty, valid BCP 47 language code" and "check for `lang` attribute changes on individual elements when the document contains content in multiple languages" list several concrete actions with precise technical criteria. Not a 5 because the closing sentence about inheritance is informational rather than an action, and the "Use when applies to all HTML documents" clause is garbled.

4 / 5

Completeness

It answers both: 'what' ("Check the `<html>` opening tag for a `lang` attribute with a non-empty, valid BCP 47 language code" plus checking per-element lang changes) and 'when' ("Use when applies to all HTML documents"). Not a 5 because the 'when' clause is ungrammatical and maximally broad rather than giving concrete trigger phrases; not a 3 because an explicit 'Use when' trigger is clearly present.

4 / 5

Trigger Term Quality

Relevant keywords are present ("HTML documents", "lang attribute", "BCP 47", "multilingual"), but common natural variations a user would say are missing: "accessibility", "screen readers", "language tag", "i18n", "locale". Better than a 2 because the core term users would naturally use for this exact task (`lang` attribute) is present and repeated.

3 / 5

Distinctiveness Conflict Risk

The niche is well defined — validating the `lang` attribute and BCP 47 codes — so it would rarely trigger for unrelated skills. Minor overlap risk with general HTML/accessibility skills because "applies to all HTML documents" makes the trigger extremely broad rather than scoped to language/accessibility concerns.

4 / 5

Total

15

/

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.