theme-system
Enforces the use of semantic theme tokens for all UI styling and component development.
Install
mkdir -p .claude/skills/theme-system && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7480" && unzip -o skill.zip -d .claude/skills/theme-system && rm skill.zipInstalls to .claude/skills/theme-system
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when creating or modifying OpenChamber UI components, styling, colors, buttons, visual states, themes, or icons.Key capabilities
- →Apply semantic theme tokens
- →Implement standardized button variants
- →Manage sprite-based iconography
- →Apply status and interactive states
How it works
It enforces a strict design system where UI components must consume predefined semantic tokens instead of raw values. It mandates the use of specific shared primitives for buttons and icons.
Inputs & outputs
When to use theme-system
- →Style UI components using theme tokens
- →Add new interface icons via system sprites
- →Implement standardized button variants
- →Apply status colors for user feedback
About this skill
Theme System
Core Rules
- Use semantic OpenChamber theme tokens; never hardcode hex colors or generic Tailwind palette colors.
- Use shared UI primitives before introducing feature-local controls.
- Use the shared
Button; do not create button wrappers such asButtonSmallorButtonLarge. - Every dropdown-style value-picker trigger takes its chrome from
dropdownTriggerVariantsinpackages/ui/src/components/ui/dropdown-trigger.ts; call sites add layout classes only. Deliberately chrome-less pickers in composers or headers are the exception. - Use the sprite-based
Icon; never import icons directly from@remixicon/react. - Apply hover tokens only to interactive elements.
- Use status colors only for actual status/feedback.
- Use selection tokens for selected state and primary tokens for primary actions.
Load References By Task
| Task | Required reference |
|---|---|
| Choosing colors/tokens or reviewing styled examples | references/tokens-and-examples.md |
| Adding, converting, storing, or generating icons | references/icons.md |
| Adding built-in or custom themes | references/adding-themes.md |
Load every matching reference before editing. User-facing or accessible text must load locale-ui-patterns. Settings composition is owned by settings-ui-patterns, which declares theme-system as its one-way companion.
Token Decision
- Code display ->
syntax.* - Error/warning/success/info ->
status.* - Primary CTA ->
primary.* - Hover/pressed/focus ->
interactive.* - Selected/active state ->
interactive.selection* - Background/text/border layer ->
surface.*and semantic utility classes
Prefer CSS variables/classes for component styling. Use useThemeSystem() only when an API requires resolved color values.
Button Contract
Use Button from packages/ui/src/components/ui/button.tsx.
| Variant | Use |
|---|---|
default | Primary local action |
outline | Visible secondary action |
secondary | Soft secondary action |
ghost | Quiet row/toolbar action |
destructive | Destructive action |
chip | Compact selectable option with aria-pressed |
link | Rare inline text action |
| Size | Use |
|---|---|
xs | Dense row/list control |
sm | Compact action |
default | Standard action |
lg | Prominent action |
icon | Icon-only square action |
Do not hardcode button height/padding when a size variant exists. Do not recreate selection/destructive styling with ad-hoc classes.
Icon Contract
import { Icon } from '@/components/icon/Icon';
<Icon name="check" className="size-4" />
Use IconName for icon values stored in arrays, objects, state, or config. Icon has no size prop. Run bun run icons:generate when introducing a sprite name, and never edit sprite.ts manually. Load references/icons.md for the complete workflow.
Animation Contract
Animate only transform and opacity. Use transform: rotate(...), not the individual rotate property. Non-composited properties recalculate style continuously; geometry also triggers layout, and wrappers, will-change, contain, or stepped timing do not remove that cost. Animate only while conveying live information.
For any other technique, load performance-engineering and scripts/perf/DOCUMENTATION.md, measure it with bun run profile:animation, and add a fixture variant when needed. This skill owns animation styling; performance-engineering owns performance evidence.
Completion Criteria
- Animations are limited to
transformandopacity, or their cost was measured and accepted. - No hardcoded/palette colors were introduced.
- Buttons use shared variants and sizes.
- Icons use
Icon/IconName, and generated sprite changes are intentional. - Hover, selection, primary, and status semantics are distinct.
- Light/dark/high-contrast and long-text states remain legible.
- Every applicable contract and loaded task reference was verified with relevant type-check, visual/runtime validation, and generated-asset checks.
When not to use it
- →Hardcoding hex colors
- →Using generic Tailwind palette colors
- →Creating custom button wrappers
Limitations
- →No hardcoded hex or palette colors allowed
- →Must use shared Button and Icon primitives
How it compares
It replaces ad-hoc styling with a centralized token-based contract that prevents visual drift and hardcoded color values.
Compared to similar skills
theme-system side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| theme-system (this skill) | 1 | 27d | No flags | Beginner |
| web-design-reviewer | 7 | 7mo | No flags | Intermediate |
| baseline-ui | 3 | 6mo | No flags | Intermediate |
| bencium-innovative-ux-designer | 1 | 5mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
web-design-reviewer
github
This skill enables visual inspection of websites running locally or remotely to identify and fix design issues. Triggers on requests like "review website design", "check the UI", "fix the layout", "find design problems". Detects issues with responsive design, accessibility, visual consistency, and layout breakage, then performs fixes at the source code level.
baseline-ui
agentset-ai
Enforces an opinionated UI baseline to prevent AI-generated interface slop.
bencium-innovative-ux-designer
bencium
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
frontend-system
ZroZoom
UI/UX expert. Use for creating components, styling (Tailwind), accessibility, and translations (I18n). Trigger when: create a component, change appearance, add a chart, translate, stwórz komponent, zmień wygląd, dodaj wykres, przetłumacz.
ui-skills
Ktasl
Apply strict, opinionated UI constraints to any UI work (React/Tailwind) in this conversation.
userinterface-wiki
raphaelsalaja
UI/UX best practices for web interfaces. Use when reviewing animations, CSS, audio, typography, UX patterns, prefetching, or icon implementations. Covers 11 categories from animation principles to typography. Outputs file:line findings.