.kilo/skills/icon-vscode/SKILL.md
Use this skill for icon work in packages/kilo-vscode/, packages/kilo-ui/, and the shared packages/ui/ icon registry. Keep official VS Code workbench rules separate from Kilo's webview design system.
| Surface | Use | Source of truth | Theme handling |
|---|---|---|---|
| VS Code commands, menus, and editor actions | Codicon, for example $(add), or a 16x16 single-color SVG only when needed | packages/kilo-vscode/package.json records usages; VS Code command icons defines the contract | VS Code themes Codicons; SVGs use light/dark contribution fields |
| Activity bar and view containers | 24x24 centered single-color icon by the VS Code convention; existing Kilo branding is an intentional asset exception | packages/kilo-vscode/package.json, packages/kilo-vscode/assets/icons/ | Follow the contribution point; do not redesign the existing brand mark |
| Marketplace and extension branding | Packaged brand asset | packages/kilo-vscode/package.json, packages/kilo-vscode/assets/icons/ | Existing Kilo assets define their own palette and variants |
| Webview buttons and UI | Icon or IconButton from @kilocode/kilo-ui | packages/kilo-ui/src/components/icon.tsx, then packages/ui/src/components/icon.tsx | currentColor and the VS Code theme bridge |
| Extension-contributed product icon | Existing WOFF2 font entry, for example $(kilo-logo) | contributes.icons in packages/kilo-vscode/package.json and its usages | VS Code product-icon theming |
Do not draw a custom SVG when an appropriate Codicon or existing registry icon already exists. Do not use a webview icon directly in package.json, or a VS Code contribution icon directly in the webview.
packages/kilo-ui/src/components/icon.tsx first for Kilo-only icons, then packages/ui/src/components/icon.tsx for shared icons. Preserve the existing key spelling, which is mostly kebab-case, and match a visual sibling before adding a new one.fill="currentColor" or stroke="currentColor"; do not add theme duplicates or literal palettes to registry entries. Standalone brand artwork may use light/dark variants.viewBox. The shared set is mostly 20 20, with existing 16 16 entries; Kilo-only entries also intentionally use 24 24. Icons render at 16px (small), 20px (normal), or 24px (medium/large). Never paste a path onto a different canvas without rebalancing it.kilo-light.svg, kilo-dark.svg, kilo-light.png, kilo-dark.png, and logo-outline-black.png. The WOFF2 file is a packaged contribution font, not an editable icon source.aria-label or visible button text; a tooltip or arbitrary label attribute is not sufficient unless the wrapper maps it to an accessible name.+, status mark, or active-state fill is an acceptable modifier.viewBox, visual weight, caps, joins, and padding. Official command SVGs use a 16x16 canvas with 1px padding; official view-container icons use a centered 24x24 canvas.path, rect, circle, ellipse, line, polyline, polygon, and g. No raster images, external resources, gradients, filters, embedded fonts, or <style> blocks in registry icons.currentColor for every painted shape. Apply semantic colors through the component or CSS token, not inside the SVG path data.packages/kilo-ui/src/components/icon.tsx so the wrapper can fall back to the shared set. Add to packages/ui/src/components/icon.tsx only when the icon is intentionally shared outside Kilo.@kilocode/kilo-ui/icon or an affected extension story; the existing Kilo story imports @opencode-ai/ui/icon and does not exercise Kilo-only entries. Use the icon through Icon or IconButton rather than duplicating path data at a call site.For webview changes, use an affected extension Storybook story or a story importing @kilocode/kilo-ui/icon; the VS Code Storybook discovers webview-ui/src/stories rather than a dedicated icon gallery. For packaged assets, inspect the extension manifest contribution and all applicable theme variants.
packages/kilo-vscode/package.json — contribution-point usages and asset pathspackages/kilo-ui/src/components/icon.tsx — Kilo-only registry entriespackages/ui/src/components/icon.tsx — shared registry and viewBox selection