Learn-skills.dev modern-accessible-html-jsx
Write clean, modern, and highly accessible HTML & JSX code, using semantically correct elements and attributes
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/academind/ai-config/modern-accessible-html-jsx" ~/.claude/skills/neversight-learn-skills-dev-modern-accessible-html-jsx && rm -rf "$T"
manifest:
data/skills-md/academind/ai-config/modern-accessible-html-jsx/SKILL.mdsource content
Clean & Accessible HTML
We write semantic, accessible, standards-compliant HTML by default. Accessibility is a baseline requirement, not an enhancement.
Semantics First
- PREFER semantic elements (
,header
,nav
,main
,section
,article
)footer - AVOID generic
/div
usage when a semantic element existsspan - Use correct heading hierarchy (
→h1
) without skipping levelsh6
Accessibility
- ALWAYS ensure interactive elements are keyboard accessible
- PREFER native HTML elements over ARIA whenever possible
- DO NOT use ARIA to fix bad HTML semantics
- Provide accessible names for all interactive controls
- Labels for inputs
or visible text where requiredaria-label
Forms & Inputs
- ALWAYS associate labels with form controls
- PREFER native validation and input types (
,email
,url
, etc.)number - Ensure error messages are accessible and announced properly
Images & Media
- ALWAYS provide meaningful
text for imagesalt - Use empty
only for purely decorative imagesalt="" - Provide captions (
) where context mattersfigcaption
Landmarks & Structure
- Use landmark roles implicitly via semantic elements
- Ensure a single, clear
regionmain - Structure content for screen readers, not just visual layout
General Principles
- HTML is the foundation — do not fight it
- Accessibility is non-negotiable
- If it works without CSS or JS, it’s probably correct