create-theme
Designs and implements theme specifications using the Clef Surface DSL.
Install
mkdir -p .claude/skills/create-theme && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12921" && unzip -o skill.zip -d .claude/skills/create-theme && rm skill.zipInstalls to .claude/skills/create-theme
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.
Design and create a new Clef Surface theme specification (.theme file). Defines palette, typography, spacing, motion, elevation, radius, and the advanced expressive axes — material, mood, density, motif, iconography, colorScheme, colorSpace, fontMetrics, typeScale, shape, scope, springPhysics, motionChoreography, imageFilter, preference, constraint, tokens — through the unified theme DSL.Key capabilities
- →Define a new visual theme for a Clef Surface application
- →Create a dark mode, high-contrast, or brand-specific variant
- →Extend an existing base theme with overrides
- →Establish design tokens (colors, type, spacing, motion) in a declarative spec
- →Capture an expressive aesthetic through advanced axes
- →Design the palette using oklch for perceptual uniformity
How it works
The skill designs and creates a new Clef Surface theme specification (.theme file) by defining palette, typography, spacing, motion, and advanced expressive axes through a unified theme DSL.
Inputs & outputs
When to use create-theme
- →Creating a new visual theme
- →Defining dark mode variants
- →Setting design tokens
About this skill
Create a Clef Surface Theme
Design and implement a new theme specification named $ARGUMENTS for the Clef Surface system.
When to Use This Skill
Use this skill when you need to:
- Define a new visual theme for a Clef Surface application
- Create a dark mode, high-contrast, or brand-specific variant
- Extend an existing base theme with overrides
- Establish design tokens (colors, type, spacing, motion) in a declarative spec
- Capture an expressive aesthetic (material, mood, density, motif, iconography) through the advanced axes that were previously sidecar
.theme.jsonfiles
Important — the .theme DSL is the single source of truth. The legacy
.theme.json sidecar format has been retired. All advanced sections
(material, mood, density, motif, iconography, colorScheme, colorSpace,
fontMetrics, typeScale, shape, scope, springPhysics, motionChoreography,
imageFilter, preference, constraint, tokens) now live inside the same
.theme file as palette/typography/spacing/motion/elevation/radius. Do
not produce .theme.json output. See references/advanced-sections.md.
Do NOT use this skill for:
- Component styling (use Surface component specs instead)
- Layout definitions (use Surface layout specs)
- One-off CSS overrides (themes are systematic, not ad-hoc)
Core Design Principles
- Perceptual Uniformity -- Use oklch for all color tokens. oklch guarantees that equal lightness values look equally light to human eyes, unlike hsl or hex.
- Accessibility First -- Every foreground/background pair must meet WCAG AA contrast (4.5:1 for normal text, 3:1 for large text). Aim for AAA (7:1) when possible.
- Systematic Scales -- Spacing, typography, and radius use deliberate scales, not arbitrary values. Prefer a base unit with multipliers.
- Token Semantics -- Name tokens by role (e.g.,
on-primary,surface-variant) not by appearance (e.g.,blue-500,light-gray). Semantic names survive theme switching. - Minimal Overrides -- When extending a base theme, override only what changes. Inherited sections need no redeclaration.
Step-by-Step Design Process
Step 1: Define the Theme Identity
Decide:
- Name: A short, lowercase, hyphenated identifier (e.g.,
light,dark,ocean-dark,brand-vivid) - Purpose: A prose description of what this theme is for and when it should be used
- Base theme: If this theme extends another, identify which one. Most themes extend
lightordark.
Step 2: Design the Palette
Read references/color-systems.md for oklch guidance and WCAG contrast requirements.
Design the palette in layers:
- Brand colors -- primary, secondary, tertiary with hover/active/container variants
- Surface colors -- background, surface, surface-dim, surface-bright, surface-variant
- On-colors -- foreground colors for each surface (on-primary, on-surface, etc.)
- Outline colors -- outline, outline-variant, outline-focus
- Status colors -- error, warning, success, info with container and on-variants
- Utility colors -- shadow, scrim, overlay-backdrop
- Interactive state layers -- hover, press, focus, drag, disabled (with alpha)
Palette checklist:
- All colors use oklch (preferred) or hsl/hex (acceptable fallback)
- Every foreground/background pair meets WCAG AA (4.5:1 minimum)
- Brand colors have hover, active, and container variants
- Status colors have container and on-container variants
- Interactive state layers use alpha transparency
- Disabled states use reduced alpha (0.38 for content, 0.12 for containers)
Step 3: Design the Typography Scale
Use a modular scale for consistent size progression. Common ratios:
| Ratio | Name | Use Case |
|---|---|---|
| 1.125 | Major second | Compact UIs, data-dense |
| 1.200 | Minor third | General purpose (recommended) |
| 1.250 | Major third | Marketing, editorial |
| 1.333 | Perfect fourth | Large displays, presentations |
Define these token categories:
- Font families -- sans, mono, serif with full fallback stacks
- Display styles -- display-lg, display-md, display-sm (hero text)
- Heading styles -- heading-lg, heading-md, heading-sm
- Body styles -- body-lg, body-md, body-sm
- Label styles -- label-lg, label-md, label-sm (UI chrome)
- Utility styles -- caption, overline, code, code-sm
Each compound style is a nested block: { size, lineHeight, weight, tracking, family }.
Typography checklist:
- Minimum body text size is 1rem (16px)
- Line heights are between 1.2 (headings) and 1.6 (body)
- Tracking (letter-spacing) is negative for large sizes, positive for small
- Font families include system fallbacks
- Weights are standard values (400, 500, 600, 700, 800)
Step 4: Design the Spacing Scale
Choose a base unit (typically 4px) and build a scale from multiples:
base: 4px
xs: 4px (1x)
sm: 8px (2x)
md: 16px (4x)
lg: 24px (6x)
xl: 32px (8x)
2xl: 48px (12x)
3xl: 64px (16x)
Add semantic aliases for common use cases (gutter, section, page-inline, stack-sm, etc.).
Step 5: Design the Motion Tokens
Define durations, easings, and compound transitions:
Duration scale:
- instant: 50-100ms (micro-interactions)
- fast: 100-200ms (hover, focus)
- normal: 200-300ms (general transitions)
- slow: 300-500ms (complex animations)
- slower: 500-700ms (page transitions)
Easing curves:
- default: Standard deceleration curve
- emphasize: Dramatic entry
- decelerate: Slow to stop (entering elements)
- accelerate: Quick start (exiting elements)
- spring: Overshoot bounce
- linear: Constant rate
Compound transitions combine duration + easing + property:
transition-fade: { duration: duration-fast, easing: easing-default, property: opacity }
Always include reduce-motion: prefers-reduced-motion to respect user preferences.
Step 6: Design Elevation and Radius
Elevation uses 5 levels (level-0 through level-5) with increasing shadow blur and offset. Add semantic aliases (elevation-card, elevation-dialog, etc.).
Radius uses a scale from none to full (9999px for pill shapes). Add semantic aliases (radius-button, radius-card, etc.).
Step 7: Design the Advanced Expressive Axes
The seven foundation sections (palette through radius) define what tokens
exist. The advanced sections define how the theme feels and adapts.
For curated themes (OS imitations, beautiful web-app references, CSS Zen
Garden classics), use ALL of these — that's where most of the aesthetic
character lives. See references/advanced-sections.md for the full menu.
| Section | What it captures | Always-include? |
|---|---|---|
material | physical philosophy: flat | paper | glass | clay | metal | skeuomorphic | neumorphic. Drives shadows + backdrop. | yes |
mood | named aesthetic intent + LLM-friendly prompt | yes |
density | compact | comfortable | spacious + multiplier + exempt list | yes |
motif | structural placement: default (sidebar/topbar/floating-action-button/command-palette) + per-intent overrides | yes |
iconography | outlined | filled | duotone + grade compensation | yes |
colorScheme | activeMode + per-mode color block (light/dark/dim/etc.) | yes |
colorSpace | algorithm: oklch, gamut, optional seed | yes |
fontMetrics | font-family + OpenType features block (liga/onum/tnum/etc.) | yes when typography is bespoke |
typeScale | baseSize + modular ratio + named steps | yes |
shape | family: rounded | sharp | organic + global radius | yes |
scope | depth-banded scoping for nested theme regions | only if nested |
springPhysics | named spring presets (tension + friction) | when motion is signature |
motionChoreography | named choreography sequences (stagger + order) | when motion is signature |
imageFilter | duotones, monochromes, color-grade presets | optional |
preference | priority ordering (accessibility / user / system / brand) | yes |
constraint | contrast, focusRing, touchTarget minimums | yes |
tokens | escape hatch: arbitrary key: value overrides | sparingly |
Skipping any of these for a curated theme is leaving expressive surface
area on the floor. For a minimal brand variant on top of light, you can
omit the optional ones — but you should still set mood, material,
density, motif, iconography, colorScheme, and constraint.
Step 8: Write the .theme File
Place the file at: repertoire/themes/<name>.theme
See references/theme-grammar.md for the complete grammar and references/advanced-sections.md for the full menu of advanced section keys and value shapes.
Section order is always:
@version(1)annotation- File-level comment describing the theme
theme <name> [extends <base>] { ... }purpose { ... }(optional prose block)palette { ... }typography { ... }spacing { ... }motion { ... }elevation { ... }radius { ... }colorSpace { ... }colorScheme { ... }density { ... }motif { ... }iconography { ... }material { ... }mood { ... }fontMetrics { ... }typeScale { ... }shape { ... }scope { ... }(optional)springPhysics { ... }(optional)motionChoreography { ... }(optional)imageFilter { ... }(optional)preference { ... }constraint { ... }tokens { ... }(optional escape hatch)
Step 9: Validate by Parsing
Run the parser to verify the theme is syntactically valid AND that every advanced section parsed (an empty advanced section in the manifest output means a typo or a missing keyword):
npx tsx --tsconfig tsconfig.json scripts/_theme-parse-check.ts repertoire/themes/<name>.theme
The che
Content truncated.
When not to use it
- →Do not use this skill for component styling
- →Do not use this skill for layout definitions
- →Do not use this skill for one-off CSS overrides
Limitations
- →The .theme DSL is the single source of truth
- →Do not produce `.theme.json` output
How it compares
This workflow generates a declarative .theme file as the single source of truth for design tokens and expressive aesthetics, unlike manual CSS styling or fragmented design token management.
Compared to similar skills
create-theme side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| create-theme (this skill) | 0 | 3mo | Review | Advanced |
| theme-factory | 61 | 3mo | No flags | Beginner |
| brand-guidelines | 9 | 3mo | No flags | Beginner |
| canvas-design | 26 | 3mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Itshalffull
View all by Itshalffull →You might also like
theme-factory
anthropics
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
brand-guidelines
anthropics
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
canvas-design
anthropics
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
game-art
davila7
Game art principles. Visual style selection, asset pipeline, animation workflow.
interactive-portfolio
davila7
Expert in building portfolios that actually land jobs and clients - not just showing work, but creating memorable experiences. Covers developer portfolios, designer portfolios, creative portfolios, and portfolios that convert visitors into opportunities. Use when: portfolio, personal website, showcase work, developer portfolio, designer portfolio.
windows-3-1-web-designer
erichowens
Expert in authentic Windows 3.1 aesthetic for modern web applications. Creates pixel-perfect retro UI with beveled borders, system gray palettes, and program manager styling. Use for retro-themed web apps, 90s desktop aesthetics, nostalgic landing pages, pixel-art adjacent experiences. Activate on "windows 3.1", "retro ui", "beveled borders", "win31", "program manager", "90s aesthetic", "pixel art", "hotdog stand". NOT for vaporwave aesthetics (neon gradients, glowing text), glassmorphism, macOS/iOS styling, flat design, material design.