pseudo-elements

raphaelsalaja/skill · Agent Skill

Провести аудит CSS псевдоэлементов и использования View Transitions для эффектов наведения, декоративных слоев и переходов.

Перейти к установке ↓

Обзор

АвторraphaelsalajaСообщество
Репозиторийraphaelsalaja/skill ↗
Папка скиллаpseudo-elements
Звёзды42
Форки5
Файлы1
ЛицензияMIT
Обновлён17 марта 2026 г.
СсылкиИсходник скилла ↗ · Репозиторий ↗

Проверка Mozgi

Что мы нашли в файлах скилла. Подробности — по подписке.

Безопасность
низкий риск · явных рисков не найдено — полный отчёт покажет детали
Совместимость
только инструкции — подходит большинству агентов
Похожие скиллы
найдено 58 похожих скиллов
Ещё в подписке

Установка

Скилл — это папка с файлом SKILL.md. Выберите своего агента и скопируйте команды в терминал (macOS, Linux или Git Bash на Windows) в корне проекта.

Скопируйте промпт и вставьте в Claude, Codex или другого ассистента: он сам проверит скилл и подключит его.

Установи мне скилл «pseudo-elements» с mozgi.io (https://mozgi.io/skills/raphaelsalaja-pseudo-elements/).

1. Скачай архив: https://mozgi.io/skills/raphaelsalaja-pseudo-elements/download
   Если не скачивается — возьми папку скилла из исходника: https://github.com/raphaelsalaja/skill/tree/main/skills/pseudo-elements
2. Прочитай SKILL.md и остальные файлы. Проверь, что скилл безопасен: нет скрытых команд, отправки данных наружу или скриптов, которые делают не то, что описано. Если что-то подозрительно — остановись и скажи мне.
3. Положи папку «pseudo-elements» в папку скиллов своего агента: .claude/skills/ для Claude Code, .agents/skills/ для Codex, .cursor/skills/ для Cursor, .gemini/skills/ для Gemini CLI. В проекте — внутри проекта, иначе в домашней папке (~/.claude/skills/ и т. п.).
4. Убедись, что получилось <папка скиллов>/pseudo-elements/SKILL.md.
5. Коротко расскажи, что умеет этот скилл, и предложи попробовать его на моей задаче.

Если какой-то шаг не можешь сделать сам — подскажи, что нажать или ввести.

Файлы скилла

1 файл Скачать ZIP

Просмотрите SKILL.md и сопутствующие файлы перед установкой. Клик по файлу — предпросмотр.

Содержимое SKILL.md

Оригинальный текст автора · только чтение

Pseudo Elements

Review CSS and JavaScript for pseudo-element best practices and View Transitions API usage.

How It Works

1. Read the specified files (or prompt user for files/pattern)

2. Check against all rules below

3. Output findings in file:line format

Rule Categories

| Priority | Category | Prefix |

|----------|----------|--------|

| 1 | Before/After | pseudo- |

| 2 | View Transitions | transition- |

| 3 | Native Styling | native- |

Rules

Before/After Rules

pseudo-content-required

::before and ::after require content property to render.

Fail:

.button::before {
  position: absolute;
  background: var(--gray-3);
}

Pass:

.button::before {
  content: "";
  position: absolute;
  background: var(--gray-3);
}
pseudo-over-dom-node

Use pseudo-elements for decorative content instead of extra DOM nodes.

Fail:

<button className={styles.button}>
  <span className={styles.background} /> {/* Unnecessary DOM node */}
  Click me
</button>

Pass:

<button className={styles.button}>
  Click me
</button>
.button::before {
  content: "";
  /* decorative background */
}
pseudo-position-relative-parent

Parent must have position: relative for absolute pseudo-elements.

Fail:

.button::before {
  content: "";
  position: absolute;
  inset: 0;
}
/* .button has no position */

Pass:

.button {
  position: relative;
}

.button::before {
  content: "";
  position: absolute;
  inset: 0;
}
pseudo-z-index-layering

Pseudo-elements need z-index to layer correctly with content.

Fail:

.button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gray-3);
}
/* Covers button text */

Pass:

.button {
  position: relative;
  z-index: 1;
}

.button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gray-3);
  z-index: -1;
}
pseudo-hit-target-expansion

Use negative inset values to expand hit targets without extra markup.

Fail:

<div className={styles.wrapper}> {/* Extra wrapper for hit target */}
  <a className={styles.link}>Link</a>
</div>

Pass:

.link {
  position: relative;
}

.link::before {
  content: "";
  position: absolute;
  inset: -8px -12px;
}

View Transitions Rules

transition-name-required

Elements participating in view transitions need view-transition-name.

Fail:

document.startViewTransition(() => {
  // No view-transition-name assigned
  targetImg.src = newSrc;
});

Pass:

sourceImg.style.viewTransitionName = "card";
document.startViewTransition(() => {
  sourceImg.style.viewTransitionName = "";
  targetImg.style.viewTransitionName = "card";
});
transition-name-unique

Each view-transition-name must be unique on the page during transition.

Fail:

.card {
  view-transition-name: card;
}
/* Multiple cards with same name */

Pass:

// Assign unique name only to transitioning element
element.style.viewTransitionName = `card-${id}`;
transition-name-cleanup

Remove view-transition-name after transition completes.

Fail:

sourceImg.style.viewTransitionName = "card";
document.startViewTransition(() => {
  targetImg.style.viewTransitionName = "card";
});
// sourceImg still has name, causes conflict on next transition

Pass:

sourceImg.style.viewTransitionName = "card";
document.startViewTransition(() => {
  sourceImg.style.viewTransitionName = "";
  targetImg.style.viewTransitionName = "card";
});
transition-over-js-library

Prefer View Transitions API over JavaScript animation libraries for page transitions.

Fail:

import { motion } from "motion/react";

function ImageLightbox() {
  return (
    <motion.img layoutId="hero" /> // JS-based shared element transition
  );
}

Pass:

function openLightbox(img: HTMLImageElement) {
  img.style.viewTransitionName = "hero";
  document.startViewTransition(() => {
    // Native browser transition
  });
}
transition-style-pseudo-elements

Style view transition pseudo-elements for custom animations.

Fail:

document.startViewTransition(() => { /* ... */ });
// Uses default crossfade

Pass:

::view-transition-group(card) {
  animation-duration: 300ms;
  animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}

Native Styling Rules

native-backdrop-styling

Use ::backdrop pseudo-element for dialog/popover backgrounds.

Fail:

<>
  <div className={styles.overlay} onClick={close} />
  <dialog className={styles.dialog}>{children}</dialog>
</>

Pass:

dialog::backdrop {
  background: var(--black-a6);
  backdrop-filter: blur(4px);
}
native-placeholder-styling

Use ::placeholder for input placeholder styling, not wrapper elements.

Fail:

<div className={styles.inputWrapper}>
  {!value && <span className={styles.placeholder}>Enter text...</span>}
  <input value={value} />
</div>

Pass:

input::placeholder {
  color: var(--gray-9);
  opacity: 1;
}
native-selection-styling

Use ::selection for text selection styling.

Pass:

::selection {
  background: var(--blue-a5);
  color: var(--gray-12);
}

Output Format

When reviewing files, output findings as:

file:line - [rule-id] description of issue

Example:
components/button/styles.module.css:12 - [pseudo-content-required] ::before missing content property
components/lightbox/index.tsx:45 - [transition-over-js-library] Using motion layoutId instead of View Transitions API

Summary Table

After findings, output a summary:

| Rule | Count | Severity |

|------|-------|----------|

| pseudo-content-required | 2 | HIGH |

| pseudo-over-dom-node | 1 | MEDIUM |

| transition-name-cleanup | 1 | MEDIUM |

References

Вопросы и ответы

Что делает скилл pseudo-elements?

Провести аудит CSS псевдоэлементов и использования View Transitions для эффектов наведения, декоративных слоев и переходов.

Как установить pseudo-elements?

Откройте блок «Установка» на этой странице и выберите своего агента — Claude Code, Codex, Cursor или Gemini CLI: там готовые команды, которые копируют папку скилла в нужное место. Либо скопируйте промпт из вкладки «Через ассистента» — ассистент сам проверит и подключит скилл.

С какими нейросетями работает pseudo-elements?

Скиллы — это обычные инструкции в Markdown (формат Agent Skills), поэтому pseudo-elements подходит любому агенту, который читает SKILL.md: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode и другие. Модель загружает инструкции только когда задача подходит под описание скилла.

Скилл pseudo-elements бесплатный?

Скилл опубликован автором raphaelsalaja в открытом доступе под лицензией MIT. Сам скилл ничего не стоит — вы платите только своему провайдеру нейросети за использованные токены.

Безопасно ли устанавливать скиллы?

Скилл — это инструкции, которые агент будет выполнять, поэтому перед установкой прочитайте SKILL.md и сопутствующие файлы. Скрипты из папки скилла запускаются только если их запустит агент — следите за тем, что он делает, и не давайте лишних прав.

Чем скилл отличается от MCP-сервера или плагина?

MCP-сервер и плагин дают модели новые инструменты — код, который выполняется и возвращает результат. Скилл даёт знания и порядок действий: как подходить к задаче, какие шаги делать и как выглядит хороший результат. Ему не нужен сервер или ключ API.

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

Все скиллы →
mastering-animate-presence Проверка шаблонов входа/присутствия Audit Motion и Framer Motion с практическими исправлениями для использования AnimatePresence. raphaelsalaja42 morphing-icons Создайте компоненты иконок, которые морфятся между формами SVG с помощью плавных, линейных преобразований. raphaelsalaja42 to-spring-or-not-to-spring Провести аудит временных параметров анимации, чтобы решить, когда лучше использовать пружины или кривые затухания для создания более качественного движения. raphaelsalaja42 12-principles-of-animation Примените 12 принципов анимации Disney к веб-интерфейсам, чтобы сделать движение естественным, органическим и человеческим. raphaelsalaja42 review-animations Проверьте качество анимации, тайминг и последовательность движения с точки зрения критического производства. emilkowalski49.9k improve-animations Проведите обзор кодовой базы анимации и кода движения в качестве старшего советника по движению, затем создайте приоритизированный аудит и самодостаточные планы реализации. Только для чтения исходного кода - он планирует улучшения, но не применяет их. Используйте, когда пользователь просит улучшить анимации, провести аудит движения, сделать приложение лучше или хочет дорожную карту исправлений анимации, а не обзор одного диффа. emilkowalski49.9k