К основному содержанию
скилл CX Codex

converting-css-to-tailwind — скилл для Claude Code: перенос CSS

Скилл проходит по CSS-файлу и переносит правила в Tailwind-классы прямо в разметке. Полезен при переезде проекта со старого CSS на утилиты.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add spencerpauly/awesome-cursor-skills --skill converting-css-to-tailwind -a claude-code
Открыть на GitHub

Что делает converting-css-to-tailwind

Скилл работает по шагам: сначала читает CSS-файл и составляет список правил, потом находит разметку, которая ссылается на каждый селектор, переводит свойства в утилиты, удаляет отработанные правила и в конце проверяет, что страница выглядит так же. Разметку он ищет в HTML, JSX, TSX, Vue и Svelte.

Внутри лежит таблица соответствий: display: flex → flex, gap: 16px → gap-4, padding: 16px → p-4, font-size: 14px → text-sm, border-radius: 8px → rounded-lg. Медиазапросы превращаются в префиксы sm:, md:, lg:, xl:, 2xl:, состояния — в hover:, focus:, active:, disabled:, first:, last:, odd:, even:, group-hover:, peer-checked:. Для переходов и анимаций тоже есть готовые классы вроде transition-all duration-200 ease-in-out и animate-spin.

Часть CSS перенести не выйдет. Сложные селекторы вида .parent > .child + .sibling придётся перестраивать в разметке, @font-face остаётся в глобальном файле, а кастомные @keyframes и CSS-переменные уезжают в tailwind.config.ts. Если в проекте есть тема, скилл советует брать семантические классы (bg-primary) вместо произвольных hex-значений. И @apply он использовать не велит: воссоздавать через него тот же CSS — значит вернуться к тому, от чего уходили.

Какие задачи решает

  • перевести старую таблицу стилей на Tailwind-утилиты
  • найти разметку, которая ссылается на каждый CSS-селектор
  • переписать медиазапросы в брейкпоинты md: и lg:
  • заменить ховеры и прочие состояния на префиксы hover: и focus:
  • вынести кастомные @keyframes и переменные в tailwind.config.ts

Примеры запросов агенту

  • возьми styles/card.css и перенеси все правила в Tailwind-классы в разметке
  • переведи медиазапросы из layout.css в брейкпоинты Tailwind
  • проверь, что после переноса CSS страница выглядит так же, и покажи, где остались сложные селекторы

Как установить converting-css-to-tailwind

1Через Skills CLI (Vercel)

npx skills add spencerpauly/awesome-cursor-skills --skill converting-css-to-tailwind -a claude-code

2Вручную: положить файлы

~/.claude/skills/converting-css-to-tailwind/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/converting-css-to-tailwind/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о converting-css-to-tailwind

Как установить converting-css-to-tailwind в Claude?

Выполните npx skills add spencerpauly/awesome-cursor-skills --skill converting-css-to-tailwind -a claude-code. Скилл окажется в ~/.claude/skills/converting-css-to-tailwind/SKILL.md.

Что делает converting-css-to-tailwind?

Читает CSS-файл, находит связанную разметку и переводит правила в Tailwind-утилиты, после чего удаляет отработанные правила и сам файл. В конце сверяет страницу на визуальные расхождения.

Что не получится перенести в утилиты?

Сложные селекторы вроде .parent > .child + .sibling, @font-face, кастомные @keyframes и CSS-переменные. Их скилл предлагает перестроить в разметке или унести в tailwind.config.ts.

Исходный текст

SKILL.md · CC0-1.0
---
name: converting-css-to-tailwind
description: Convert plain CSS stylesheets to Tailwind CSS utility classes. Handles selectors, media queries, pseudo-classes, custom properties, and animations.
user-invocable: true
---

# Converting CSS to Tailwind

Migrate plain CSS files to Tailwind utility classes applied directly in markup.

## Workflow

1. **Read the CSS file** and inventory every rule
2. **Find the corresponding markup** (HTML, JSX, TSX, Vue, Svelte) that references each selector
3. **Convert each rule** using the mapping below
4. **Delete the CSS rule** once all its properties are expressed as utilities
5. **Remove the CSS file** (or import) once it's empty
6. **Verify** the page looks identical — check for visual regressions

## Conversion Reference

### Layout & Box Model

| CSS | Tailwind |
|-----|----------|
| `display: flex` | `flex` |
| `display: grid` | `grid` |
| `display: none` | `hidden` |
| `position: relative` | `relative` |
| `position: absolute` | `absolute` |
| `justify-content: center` | `justify-center` |
| `align-items: center` | `items-center` |
| `gap: 16px` | `gap-4` |
| `width: 100%` | `w-full` |
| `max-width: 768px` | `max-w-3xl` |
| `margin: 0 auto` | `mx-auto` |
| `padding: 16px` | `p-4` |
| `overflow: hidden` | `overflow-hidden` |

### Typography

| CSS | Tailwind |
|-----|----------|
| `font-size: 14px` | `text-sm` |
| `font-weight: 700` | `font-bold` |
| `line-height: 1.5` | `leading-normal` |
| `text-align: center` | `text-center` |
| `text-transform: uppercase` | `uppercase` |
| `color: #333` | `text-[#333]` or a theme color |
| `letter-spacing: 0.05em` | `tracking-wide` |

### Backgrounds & Borders

| CSS | Tailwind |
|-----|----------|
| `background-color: #f5f5f5` | `bg-[#f5f5f5]` or `bg-neutral-100` |
| `border: 1px solid #e5e7eb` | `border border-gray-200` |
| `border-radius: 8px` | `rounded-lg` |
| `box-shadow: 0 1px 3px ...` | `shadow-sm` |

### Responsive — Media Queries

```css
@media (min-width: 768px) { .card { flex-direction: row; } }
```
→ `<div class="flex-col md:flex-row">`

Map breakpoints: `sm:` (640), `md:` (768), `lg:` (1024), `xl:` (1280), `2xl:` (1536)

### Pseudo-classes & States

```css
.btn:hover { background-color: #1d4ed8; }
```
→ `<button class="hover:bg-blue-700">`

Prefixes: `hover:`, `focus:`, `active:`, `disabled:`, `first:`, `last:`, `odd:`, `even:`, `group-hover:`, `peer-checked:`

### Animations & Transitions

```css
transition: all 0.2s ease-in-out;
```
→ `transition-all duration-200 ease-in-out`

```css
@keyframes spin { ... }
animation: spin 1s linear infinite;
```
→ `animate-spin` (built-in) or define in `tailwind.config`

### Custom Properties / Arbitrary Values

For anything without a direct utility, use arbitrary values:
- `w-[calc(100%-2rem)]`
- `grid-cols-[200px_1fr_1fr]`
- `text-[clamp(1rem,2vw,1.5rem)]`

## Handling Remaining CSS

Some things can't be expressed purely as utilities:

- **Complex selectors** (`.parent > .child + .sibling`) — restructure the markup or use `@apply` as a last resort
- **`@font-face`** — keep in a global CSS file or `globals.css`
- **Complex `@keyframes`** — define in `tailwind.config.ts` under `theme.extend.keyframes`
- **CSS variables** — migrate to Tailwind theme values in `tailwind.config.ts`

## Rules

- Prefer semantic Tailwind classes (`bg-primary`) over arbitrary hex values when a theme exists
- Don't use `@apply` to recreate the same CSS you're migrating away from — that defeats the purpose
- Group related utilities logically: layout → spacing → typography → colors → effects
- If a component has 10+ utilities, consider extracting a reusable component rather than a CSS class

© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
tailwind-css manutej Скилл по Tailwind CSS: утилитарные классы, адаптивность, тёмная тема и оптимизация сборки. Пригодится, когда верстаешь интерфейс и не хочешь прыгать в CSS-файлы. CX Codex +1 461установок tailwind-ui-refactor pproenca Скилл для рефакторинга HTML с классами Tailwind: подсказывает, как выстроить иерархию, отступы, типографику и цвет. Пригодится, когда верстаешь без дизайнера. CX Codex +1 458установок tailwind-refactor pproenca Скилл для рефакторинга классов Tailwind CSS: миграция с v3 на v4, замена устаревших утилит и чистка кода без изменения внешнего вида. CX Codex +1 308установок tailwind-css-patterns giuseppe-trisciuoglio Скилл с готовыми паттернами Tailwind CSS: адаптивные сетки, карточки, формы, тёмная тема. Пригодится, когда агент верстает компоненты на React, Vue или Svelte. CX Codex +1 17 700установок tailwind PyModel Скилл с 42 правилами по Tailwind CSS v4: сборка, генерация CSS, размер бандла, темизация. Пригодится при миграции и настройке. CX Codex +1 512установок css-animation-creator OneWave-AI Скилл для ИИ-кодинга, который помогает писать CSS-анимации, переходы, микроинтеракции и анимации по скроллу. Пригодится, когда нужно добавить движение в интерфейс без ручного подбора таймингов. CX Codex +1 805установок

Из того же набора60

auto-type-checking Гоняет tsc --noEmit после каждой правки TypeScript-файла и показывает ошибки типов сразу, а не на сборке. CX Codex +1 435установок babysitting-pr Скилл отслеживает открытый пулл-реквест, устраняет сбои линтера, тестов и сборки в CI, разбирает комментарии ревью и правит конфликты слияния. CX Codex +1 427установок finding-dev-server-url Находит адреса запущенных dev-серверов в логах терминала и выводит порты localhost. Помогает сразу открыть работающее приложение или проверить конфликты портов. CX Codex +1 425установок best-of-n-solving Запускает 2–3 подхода к сложной задаче одновременно, каждый в своей git-ветке, и помогает выбрать лучший результат. CX Codex +1 425установок detecting-port-conflicts Скилл находит занятые порты при ошибках вроде EADDRINUSE, вычисляет блокирующий процесс и помогает освободить порт либо сменить его в конфиге dev-сервера. CX Codex +1 418установок setting-up-ci Скилл собирает пайплайн GitHub Actions с линтингом, тестами, проверкой типов и деплоем. Пригодится, когда проект уже есть, а CI в нём ещё нет. CX Codex +1 415установок adding-api-docs Скилл собирает OpenAPI/Swagger-описание вашего API: схемы эндпоинтов, типы запросов и ответов, интерактивную страницу документации. CX Codex +1 413установок parallel-test-fixing Скилл распределяет упавшие файлы тестов между параллельными субагентами, чтобы исправлять ошибки независимо. Он нужен при поломке сразу нескольких тестовых файлов. CX Codex +1 412установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой