What problem does it solve? Inline SVG icons scattered across a codebase lead to duplicated imports, hardcoded colors that break on dark surfaces, and inaccessible icon-only controls. This Skill enforces one registry-based icon system in an Astro project so every icon renders consistently, inherits text color, and stays accessible. ## Core Features & Use Cases - Single icon registry: All SVGs live in src/components/Icon/ and are imported only by Icon.astro, making the icon set greppable and typo-safe via a derived IconName type. - Color and sizing contract: SVGs use currentColor to inherit the host's text color, and icons default to size-[1em] so they track the surrounding font size unless a size-* utility overrides it. - Accessible multi-state icons: State-dependent icons server-render every variant and switch with CSS off a data-* attribute, never a JS innerHTML swap, while accessible names always come from the host control. - Use Case: When adding a new arrow icon to an Astro site, drop the prepared SVG into the Icon folder, register it in Icon.astro, and render it with <Icon name="arrow-right" />. ## Quick Start Add a new icon to the project by placing the SVG in the Icon folder, registering it in Icon.astro, and rendering it with the Icon component.