mit einem Klick
icons
Use consistent Lucide icons with the <icon-wc> component. Use when adding icons to pages, buttons, or UI elements.
Menü
Use consistent Lucide icons with the <icon-wc> component. Use when adding icons to pages, buttons, or UI elements.
Define and use custom HTML elements. Use when creating new components, defining custom tags, or using project-specific elements beyond standard HTML5.
Write vanilla JavaScript for Web Components with functional core, imperative shell. Use when creating JavaScript files, building interactive components, or writing any client-side code.
Modern CSS organization with native @import, @layer cascade control, CSS nesting, design tokens, and element-focused selectors. AUTO-INVOKED when editing .css files.
Enforce structured git workflow with conventional commits, feature branches, semver versioning, and work logging. Use for all code changes to prevent work loss and maintain history.
INVOKE FIRST before any code work. Validates git workflow (branch, issue, worklog) and checks approach. Use at START of every task and END before completing. Prevents skipped steps.
Umbrella coordinator for image handling. Coordinates responsive-images, placeholder-images, and automation scripts. Use when adding images to any page, optimizing existing images, or setting up image pipelines.
| name | icons |
| description | Use consistent Lucide icons with the <icon-wc> component. Use when adding icons to pages, buttons, or UI elements. |
| allowed-tools | Read, Write, Edit, Bash |
Use the Lucide icon library with local SVG files and the <icon-wc> Web Component for consistent, accessible icons.
ALWAYS use the <icon-wc> component. NEVER use inline SVGs.
| You Are Adding... | USE THIS SKILL |
|---|---|
| Icon button (close, menu, etc.) | YES |
| Navigation icons | YES |
| Status indicators (success, error, warning) | YES |
| Toggle switches with icons (theme, settings) | YES |
| Action buttons (save, delete, edit) | YES |
| Social sharing icons | YES |
| ANY visual indicator or icon | YES |
<!-- WRONG: Inline SVG -->
<button>
<svg viewBox="0 0 24 24"><path d="M12 3v1m0 16v1..."/></svg>
</button>
<!-- CORRECT: icon-wc component -->
<button>
<icon-wc name="sun" label="Light theme"></icon-wc>
</button>
Why? The <icon-wc> component:
<!-- Basic usage -->
<icon-wc name="menu"></icon-wc>
<icon-wc name="arrow-right"></icon-wc>
<icon-wc name="check"></icon-wc>
<!-- With size -->
<icon-wc name="home" size="lg"></icon-wc>
<!-- With accessible label (for functional icons) -->
<button>
<icon-wc name="x" label="Close"></icon-wc>
</button>
<!-- Custom icon set -->
<icon-wc name="logo" set="custom"></icon-wc>
.assets/
├── js/
│ └── components/
│ └── x-icon/ # Icon Web Component
│ ├── icon-wc.js
│ └── x-icon-styles.js
└── icons/
├── lucide/ # Lucide icons (synced from npm)
│ ├── index.json # Icon manifest
│ ├── menu.svg
│ ├── x.svg
│ └── ... # ~1900 icons
└── custom/ # Project-specific icons
└── logo.svg
Run /scaffold-icons to set up icons in a project, or manually:
# 1. Install lucide-static
npm install lucide-static --save-dev
# 2. Sync icons
npm run icons:sync
# 3. Copy icon-wc component
mkdir -p .assets/js/components/icon-wc
cp .claude/skills/icons/templates/icon-wc/*.js .assets/js/components/icon-wc/
# 4. Include in HTML
<script type="module" src="/.assets/js/components/icon-wc/icon-wc.js"></script>
<icon-wc> Component| Attribute | Description | Default |
|---|---|---|
name | Icon name (filename without .svg) | Required |
set | Icon set directory | "lucide" |
size | Size preset: xs, sm, md, lg, xl, 2xl | "md" |
label | Accessible label for functional icons | None |
base-path | Override default icon path | /.assets/icons |
| Size | Dimensions |
|---|---|
| xs | 1em (16px at base) |
| sm | 1.25em (20px) |
| md | 1.5em (24px) |
| lg | 2em (32px) |
| xl | 2.5em (40px) |
| 2xl | 3em (48px) |
Icons inherit currentColor for stroke color:
/* Change icon color */
.danger icon-wc {
color: var(--color-error);
}
/* Custom sizing */
icon-wc.hero-icon {
width: 4rem;
height: 4rem;
}
Icons are sourced from the lucide-static npm package:
# Install package (one-time)
npm install lucide-static --save-dev
# Sync icons to .assets/icons/lucide/
npm run icons:sync
Run icons:sync after:
Icons without a label are hidden from screen readers:
<!-- Decorative - hidden from screen readers -->
<button>
<icon-wc name="save"></icon-wc>
Save Document
</button>
Add label for icon-only buttons or links:
<!-- Functional - announced to screen readers -->
<button aria-label="Close dialog">
<icon-wc name="x" label="Close"></icon-wc>
</button>
| Context | Pattern |
|---|---|
| Icon + visible text | No label needed (decorative) |
| Icon-only button | Add label attribute |
| Status indicator | Add label describing status |
| Purely decorative | No label needed |
.assets/icons/custom/:<!-- .assets/icons/custom/logo.svg -->
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2L2 7l10 5 10-5-10-5z"/>
</svg>
set="custom":<icon-wc name="logo" set="custom"></icon-wc>
viewBox attributewidth/height (component handles sizing)currentColor for strokes/fills to inherit colorTo use a different icon library:
npm uninstall lucide-staticnpm install [other-library]scripts/quality/sync-icons.js source pathnpm run icons:sync.assets/icons/[set-name]/The <icon-wc> component works with any SVG icon library.
Browse available icons:
.assets/icons/lucide/index.json# Search for icons locally
grep -l "arrow" .assets/icons/lucide/*.svg | head -10
| Purpose | Icon Name |
|---|---|
| Navigation | menu, x, arrow-left, arrow-right |
| Actions | plus, minus, edit, trash, save |
| Status | check, x, alert-circle, info |
| Media | play, pause, volume-2, image |
| User | user, users, settings, log-out |
| Files | file, folder, download, upload |
| Social | share, heart, star, message-circle |
When using icons:
.assets/icons/[set]/label attributecurrentColor).assets/icons/custom/