kobar-project/kobar/kobar-ui-ux-designer
Claude Code and agent skill by kobar-project/kobar
- community
Checking that the SKILL.md file is still in the repository.
Guide for writing UI for the KoBar host app (remastered design system, KoBar 1.4.0 and later). Covers the three windows and where state lives, the --kb-* tokens and Tailwind utilities, the src/ui primitives with TSX examples, z-index layers, motion, focus ring, accessibility, icons, typography, i18n (locale JSON + useT), platform differences, and the known exceptions in current code. Use it when building or reviewing any KoBar host UI.
Install
npx vskill@latest install kobar-project/kobar/kobar-ui-ux-designerSKILL.md
KoBar UI Guide (remastered design system)
Visual rules: KoBar now uses the Canlı visual language. Colours, shapes, type, icons, the bar's tiles and thecard/panel patterns are defined in the Canlı design guide; where this guide andthat one disagree on a visual rule, Canlı wins. The structural rules below (windows, state, hit-testing, i18n,layers, primitives) still apply.
This file documents the KoBar design system for agents writing host UI in src/. The source of truth is the design tokens in src/index.css and the primitives in src/ui/. It documents the current system; it is not binding on plugin authors. Plugin authors follow for-agents/kobar-plugin-developer/SKILL.md. Anything marked LEGACY below exists only so v1 plugins keep working; never use it in new host code.
1. Character
Native-calm: a quiet shell, with colour only for state, selection, focus and the single primary action. No glow, no gradients, no grow-on-hover, no decorative animation. Light and dark schemes both exist; never assume dark. Corners are modest (6 / 8 / 12 / 16 px), not "as round as possible".
2. Windows and where state lives
KoBar renders host UI in three windows. Know which one you are in before you read state or add an interaction.
| Window | Entry | State | Notes | |
|---|---|---|---|---|
| Main (bar, notes, plugin panels) | index.html, src/main.tsx, src/App.tsx | useAppStore (persisted, migrated) | Transparent click-through overlay (section 12). The only window with the plugin runtime and window.api. Mounts the one <ToastRegion>. | |
| Settings | settings.html, src/settings/main.tsx, src/settings/SettingsApp.tsx, pages in src/settings/pages/ | No `useAppStore`. Read the main window's mirrored snapshot with useSettingsState(selector) / useSystemSummary(); change things only through dispatchSettingsAction, dispatchPluginAction, dispatchSystemAction (src/settings/mirror.ts). Actions are allow-listed and validated by the main window. | Normal framed window with its own narrow preload; no plugin runtime, no toasts. Pages receive t through SettingsPageProps. Anything that needs plugin code (a plugin's settings panel, the GitHub install form) is opened in the main window via an action. | |
| PiP | pip.html, src/pip/ | Local only | Mini browser for KoPlayer; narrow preload. |
3. Root attributes (set on :root, do not set them in components)
| Attribute | Values | |
|---|---|---|
data-scheme | dark / light | |
data-accent | amber (default) orange red pink violet blue green graphite custom | |
data-density | compact / normal / comfortable | |
data-material | solid / translucent (bar and panel shells only) | |
data-platform | win32 / darwin / linux (set by setDocumentPlatform, src/platform.ts, before the first render) | |
data-theme, data-design | LEGACY, kept read-only for v1 plugins (data-design = style1/style2, the v1 view of material) |
Components never branch on these; the tokens change underneath them. In JS, use isMacPlatform() / getDocumentPlatform() from src/platform.ts when behaviour (not styling) depends on the platform.
4. Tokens and utilities
Use semantic utilities. Never use raw palette utilities (bg-slate-800, text-white, bg-blue-500) for structure.
| Need | Utility (token) | |
|---|---|---|
| Bar / panel background | bg-shell (--kb-bg-shell) | |
| Card, popover, menu, dialog | bg-surface (--kb-bg-surface) | |
| Input, editor background | bg-inset (--kb-bg-inset) | |
| Text | text-fg-1 (primary), text-fg-2 (secondary, icons), text-fg-3 (placeholder/disabled only, never meaningful text) | |
| Border | border-stroke (subtle decorative, --kb-stroke-subtle); --kb-stroke-strong; form control borders use --kb-stroke-control (primitives do this) | |
| Elevation | shadow-e1 card, shadow-e2 tooltip/menu/popover, shadow-e3 bar/panel/dialog; always with a 1 px subtle stroke | |
| Accent | var(--kb-accent) (e.g. bg-[var(--kb-accent)]); text on accent is --kb-on-accent; --kb-accent-hover, --kb-accent-pressed, --kb-accent-subtle | |
| Status | --kb-success, --kb-warning, --kb-danger, --kb-info (always paired with an icon or text). Only danger has utilities (text-danger, bg-danger); write the others as text-[var(--kb-success)] | |
| Interaction fills | bg-fill-hover, bg-fill-selected (utilities); --kb-fill-pressed, --kb-accent-subtle (via var()) | |
| Radius | rounded-xs 4 (checkbox), rounded-sm 6 (button/input), rounded-md 8 (row, card, bar item), rounded-lg 12 (panel, popover, dialog), rounded-xl 16 (bar shell), rounded-full (avatar, Toggle, mini-mode button) | |
| Spacing | Tailwind 4 px scale only (0.5, 1, 2, 3, 4, 5, 6, 8, 10). No arbitrary values like p-[13px]. Panel padding 16, row vertical 8-10, between controls 8, between groups 24 | |
| Density-driven sizes | --kb-bar-thickness, --kb-bar-item, --kb-bar-icon, --kb-control-h, --kb-row-h (change with data-density) | |
| Blur (translucent material) | backdrop-blur-(--kb-blur-bar), --kb-blur-eye, --kb-blur-notification, --kb-blur-toggle; macOS gets lighter values automatically. Never hard-code a blur radius. | |
| Other | --kb-scrim (dialog backdrop), --kb-opacity-disabled, --kb-opacity-drag |
Colour rules:
- ESLint forbids `#hex` and `rgb(`/`rgba(` inside any JSX `className` (string or template literal, including
conditionals; eslint.config.js, error level). If you need a colour, use a token utility or bg-[var(--kb-...)].
- The accent never paints backgrounds of large areas; it marks selection, focus and the one primary action.
- On a translucent shell, accent is never the only signal for state; add an icon, fill or text. Cards with text stay solid.
- Never use pure black text. Use
text-fg-1. - Contrast: text 4.5:1, controls/indicators 3:1. If you add a colour, compute it.
5. Typography
- System font stack via tokens (
--kb-font,--kb-font-display,--kb-font-mono); Segoe UI Variable on Windows, SF Pro on
macOS (the darwin block reorders the stack). The body default is already set; do not apply font-display or a font family.
- Roles: caption 11/16, body 13/20, body-strong 13/20 weight 600 (buttons, row titles, section headers in sentence case,
text-fg-2), subtitle 15/22 (panel title), title 20/28, display 28/36 (note title only). - No uppercase, wide-tracked micro labels (
text-[10px] uppercase tracking-wideris gone). - LEGACY: Space Grotesk stays only as an
@font-facealias for v1 plugins. Host code never uses it.
6. Icons
- Material Symbols Outlined, loaded locally (variable font, default
wght 300,opsz 20). - Use
<Icon>; sizes 16 / 20 / 24 only. Active/selected state usesfilled(FILL axis 1), not a different icon. - Icon names are part of the plugin contract; the family does not change. Do not add SVG icon libraries.
- Decorative icons are hidden from assistive tech automatically; give
labelonly if the icon alone carries meaning.
7. Primitives (import { ... } from '../ui' / src/ui/index.ts)
All primitives use only --kb-* tokens and already apply no-drag-region, pointer-events-auto, the focus ring and reduced-motion handling. Do not re-add those classes on top. Primitives contain no i18n: pass translated strings.
Pick the primitive first; hand-written <button className=...> is the exception.
| Need | Use | |
|---|---|---|
| Text action | Button (variant: primary / secondary / subtle / danger; size: sm / md; icon, loading, fullWidth). At most one `primary` per screen. | |
| Icon-only action | IconButton (icon, `label` required, size 28/32/40, pressed, tooltip (false to hide, or a string), tooltipSide). Label is the aria-label and default tooltip. | |
| Container | Surface (as, level shell/surface/inset, elevation e0..e3, radius none/sm/md/lg/xl, material (boolean, shells only)) | |
| Hint on hover/focus | Tooltip (content, one focusable child, side auto/top/bottom/left/right, delay, disabled, describe) | |
| On/off setting | Toggle (checked, onChange(checked), label required, description, hideLabel, fullWidth) | |
| List/settings row | ListItem (title, description, leading, trailing, onClick, selected, current, disabled, as="li") | |
| Switch views | Tabs (variant underline/segmented, items, value, onChange, fullWidth) | |
| Choose 1 of few | Segmented (items, value, onChange, fullWidth) | |
| Text input | TextField (label required, hideLabel, hint, error, icon) | |
| Dropdown choice | Select (label required, options or <option> children, hint, error) | |
| Anchored floating content | Popover (trigger, placement, open/defaultOpen/onOpenChange, initialFocus, returnFocus; usePopoverClose() inside) | |
| Action list | Menu (trigger, items: item / checkbox / radio / separator) | |
| Blocking dialog | Dialog (open, onClose(reason), title, description, footer, size sm/md/lg, closeLabel, role dialog/alertdialog) | |
| Confirm a (destructive) action | ConfirmDialog (danger focuses Cancel first; loading) | |
| Transient feedback | toast.success/info/warning/error(message, opts) + the one <ToastRegion dismissLabel=... /> (main window only) | |
| Nothing to show | EmptyState (icon, title, description, action) | |
| Loading placeholder | Skeleton (shape line/block/circle, width, height, lines); static, no shimmer | |
| Host panel | PanelShell (see section 8) |
Examples:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingfor-agents/kobar-ui-ux-designer/SKILL.md
Popularity
- Repository stars
- 68
- Repository forks
- 7
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kobar-project/kobar/kobar-ui-ux-designer)