aiskillstore/css-development
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.
This is a copy. The original lives at comeonoliver/css-development.
npx skills add https://github.com/aiskillstore/marketplace --skill css-development
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 elements/* 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 tests
Works with React, Vue, Svelte, or vanilla HTML:
React:
const classes = `button-primary ${className}`.trim();
<button className={classes}>...</button>
Vanilla HTML:
<button class="button-primary custom-class">...</button>
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:
it('should have button component classes', () => {
const content = readFileSync('styles/components.css', 'utf-8');
expect(content).toContain('.button-primary');
});
Component Rendering Tests:
it('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.
Take aiskillstore/css-development from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.