Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when working with CSS, creating components, styling elements, refactoring styles, or reviewing CSS code. Triggers on "CSS", "styles", "Tailwind", "dark mode", "component styling", "semantic class", "@apply", "stylesheet". Routes to specialized sub-skills for creation, validation, or refactoring.
.claude/skills/aiskillstore-css-development/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 12% | 0% |
| case-08 | ✓→✗ | ▼ Worse | -10% | 0% |
| case-23 | ✓→✗ | ▼ Worse | -14% | 0% |
Comprehensive workflow for CSS development using Tailwind + semantic component patterns. This skill automatically routes you to the appropriate specialized workflow based on context.
This skill will invoke one of three sub-skills:
css-development:create-component - Creating new CSS componentscss-development:validate - Reviewing existing CSScss-development:refactor - Transforming CSS to semantic patternsClaude Code will automatically load this skill when you:
All sub-skills follow these core patterns. Reference this section when working with CSS.
.button-primary, .card-header) not utility names (.btn-blue, .card-hdr)@apply directivedark: variants for all colored/interactive elementscss/* Button component - Primary action button with hover states Usage: <button className="button-primary">Click me</button> */ .button-primary { @apply bg-indigo-500 hover:bg-indigo-700 dark:bg-indigo-600 dark:hover:bg-indigo-800; @apply px-6 py-3 rounded-lg font-medium text-white; @apply transition-all duration-200 hover:-translate-y-0.5; }
Key characteristics:
dark: prefixstyles/
├── components.css # All semantic component classes
└── __tests__/
└── components.test.ts # CSS and component testsWorks with React, Vue, Svelte, or vanilla HTML:
React:
tsxconst classes = `button-primary ${className}`.trim(); <button className={classes}>...</button>
Vanilla HTML:
html<button class="button-primary custom-class">...</button>
Vue:
vue<button :class="['button-primary', customClass]">...</button>
Key principle: Apply semantic class + allow additional classes for customization.
.button, .input, .badge, .spinner).card, .form-field, .empty-state).page-layout, .session-card, .conversation-timeline)Static CSS Tests:
typescriptit('should have button component classes', () => { const content = readFileSync('styles/components.css', 'utf-8'); expect(content).toContain('.button-primary'); });
Component Rendering Tests:
typescriptit('applies semantic class and custom className', () => { render(<Button variant="primary" className="custom" />); expect(screen.getByRole('button')).toHaveClass('button-primary', 'custom'); });
When this skill is invoked, follow these steps to route to the appropriate sub-skill:
Look at the user's request and recent conversation to determine intent:
Creating new components?
Validating existing CSS?
Refactoring CSS?
Based on context analysis:
If creating: Use the Skill tool to invoke css-development:create-component
If validating: Use the Skill tool to invoke css-development:validate
If refactoring: Use the Skill tool to invoke css-development:refactor
If ambiguous: Ask the user using AskUserQuestion tool:
Question: "What would you like to do with CSS?"
Options:
- "Create new component" (Guide creating new semantic CSS component classes)
- "Validate existing CSS" (Review CSS against established patterns)
- "Refactor CSS" (Transform inline/utility styles to semantic components)Use the Skill tool to invoke the chosen sub-skill:
Example:
I'm routing you to the create-component workflow.
[Invoke Skill tool with skill: "css-development:create-component"]Once the sub-skill is invoked, it takes over. The main skill's job is complete.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 26,636 | 1,539 | -94% | 1 | 1 | 0% | 6,181 | 1,596 | -74% | 0 | 0 | — |
case-15 | pass→pass | 4,422 | 2,106 | -52% | 1 | 1 | 0% | 616 | 1,728 | +181% | 0 | 0 | — |
case-02 | fail→fail | 3,247 | 1,821 | -44% | 1 | 1 | 0% | 470 | 1,596 | +240% | 0 | 0 | — |
case-03 | fail→fail | 14,597 | 1,562 | -89% | 1 | 1 | 0% | 3,113 | 1,555 | -50% | 0 | 0 | — |
case-04 | pass→pass | 8,939 | 6,187 | -31% | 1 | 1 | 0% | 1,528 | 2,533 | +66% | 0 | 0 | — |
case-05 | pass→pass | 7,461 | 6,160 | -17% | 1 | 1 | 0% | 1,498 | 2,591 | +73% | 0 | 0 | — |
case-06 | pass→pass | 12,434 | 10,901 | -12% | 1 | 1 | 0% | 2,316 | 3,417 | +48% | 0 | 0 | — |
case-07 | pass→fail | 9,318 | 2,614 | -72% | 1 | 1 | 0% | 1,439 | 1,615 | +12% | 0 | 0 | — |
case-08 | pass→fail | 9,399 | 1,915 | -80% | 1 | 1 | 0% | 1,793 | 1,610 | -10% | 0 | 0 | — |
case-09 | pass→pass | 7,580 | 12,136 | +60% | 1 | 1 | 0% | 1,348 | 3,228 | +139% | 0 | 0 | — |
case-10 | pass→pass | 8,693 | 5,606 | -36% | 1 | 1 | 0% | 1,533 | 2,230 | +45% | 0 | 0 | — |
case-16 | pass→pass | 9,831 | 2,036 | -79% | 1 | 1 | 0% | 1,535 | 1,732 | +13% | 0 | 0 | — |
case-11 | fail→pass | 10,683 | 8,152 | -24% | 1 | 1 | 0% | 1,639 | 1,797 | +10% | 0 | 0 | — |
case-12 | fail→pass | 11,416 | 4,587 | -60% | 1 | 1 | 0% | 1,254 | 2,199 | +75% | 0 | 0 | — |
case-13 | pass→pass | 6,229 | 4,944 | -21% | 1 | 1 | 0% | 1,138 | 2,268 | +99% | 0 | 0 | — |
case-14 | pass→pass | 4,179 | 3,944 | -6% | 1 | 1 | 0% | 743 | 2,068 | +178% | 0 | 0 | — |
case-17 | pass→pass | 7,901 | 2,209 | -72% | 1 | 1 | 0% | 1,306 | 1,701 | +30% | 0 | 0 | — |
case-18 | pass→pass | 15,438 | 5,524 | -64% | 1 | 1 | 0% | 1,797 | 2,311 | +29% | 0 | 0 | — |
case-19 | pass→pass | 13,149 | 10,490 | -20% | 1 | 1 | 0% | 2,171 | 3,346 | +54% | 0 | 0 | — |
case-20 | fail→fail | 12,394 | 4,372 | -65% | 1 | 1 | 0% | 2,559 | 1,516 | -41% | 0 | 0 | — |
case-21 | fail→fail | 6,520 | 1,931 | -70% | 1 | 1 | 0% | 960 | 1,630 | +70% | 0 | 0 | — |
case-22 | fail→fail | 9,224 | 1,996 | -78% | 1 | 1 | 0% | 1,973 | 1,620 | -18% | 0 | 0 | — |
case-23 | pass→fail | 10,266 | 1,909 | -81% | 1 | 1 | 0% | 1,900 | 1,639 | -14% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of -4 percentage points is the difference between those two pass rates over the 23 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.